Innholdsfortegnelse:
- Trinn 1: Materialregning
- Trinn 2: Verktøy/maskiner/programvarekrav
- Trinn 3: Tellingale maskinvare
- Trinn 4: Telltale -programvare
- Trinn 5: Telltale Assembly
- Trinn 6: Høyttalermaskinvare
- Trinn 7: Høyttalerprogramvare
- Trinn 8: Høyttalermontering
- Trinn 9: Oppsett/montering
- Trinn 10: Feilsøking
- Trinn 11: Mulige neste trinn
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-23 15:02
Telltales er snorstykker som brukes i seiling for å indikere om det er turbulent eller laminær strømning over seilet. Imidlertid er de forskjellige fargede garnbitene festet til hver side av seilet rent visuelle indikatorer. Disse hørbare telltalene er et hjelpemiddel som tar sikte på å kommunisere den visuelle informasjonen i en hørbar form for både seende og synshemmede seilere, for eksempel Pauline.
Enheten består av et inngangssystem som leser bevegelsen til telltaleren og et utgangssystem som sender ut en rekke pip som formidler luftstrøminformasjon.
Tilgang til loddeutstyr og en 3D -skriver er nødvendig ved fremstilling av denne enheten.
Trinn 1: Materialregning
BOM med lenker og priser
Merk: du trenger to sett av alt det følgende.
Inngangssystem
- Arduino Nano
- Adafruit perma-proto halvstort kretskort
- nRF24L01 modul for trådløs mottaker
- Fotoavbryter
- Sparkfun Photo Interrupter Breakout Board
- Arduino kompatibel 9V batteripakke
- 9V batteri
- Flere lengder på 22 gauge wire
- Garn
- Neodym magneter
- Epoksy
Utgangssystem
- Arduino Nano
- Adafruit perma-proto halvstort kretskort
- nRF24L01 modul for trådløs mottaker
- Arduino kompatibel 9V batteripakke
- 1K Ohm potensiometer
- 120 Ohm motstand
- 2N3904 transistor
- 0,1 uF kondensator
- Arduino -kompatibel høyttaler
GitHub -filer
- Alle koder og STL -filer som trengs for å konstruere disse telltalene, finnes i denne GitHub -repoen.
- Du trenger to sett med kabinettet og ett av høyttalerhuset.
Trinn 2: Verktøy/maskiner/programvarekrav
For å programmere Arduino må du laste ned Arduino IDE. Nedlastingskoblingen finner du her.
For å programmere nRF24L01 -modulen må du laste ned biblioteket gjennom Arduino IDE. Verktøy> Administrer biblioteker …> installer bibliotek RF24
For å montere de elektroniske komponentene er tilgang til grunnleggende loddeverktøy nødvendig. En avloddingspumpe kan også være nyttig, men er ikke nødvendig.
For å konstruere fortellerrammen og høyttalerkassen trenger du tilgang til en 3D-skriver.
Trinn 3: Tellingale maskinvare
Monter kretsen i henhold til diagrammene ovenfor. Arduino Nano bør justeres med toppen av protoboardet. Dette gir deg tilgang til USB -porten selv etter at all elektronikken er koblet til.
For å unngå kortslutning av elektronikken, sørg for å kutte sporene av protoboardet på radene som nRF24 vil oppta som vist på bildet ovenfor.
Ellers trenger du jumperkabler for å koble nRF24 til protoboardet.
Motstandsforbindelsen, GND og 5V ledninger til fotobryteren er ikke avbildet. Koble til fotobryteren som angitt på utbruddstavlen. Et bilde av utbruddstavlen er inkludert.
Kretsene for høyre og venstre telltales er nøyaktig de samme.
Trinn 4: Telltale -programvare
Her er koden for Right telltale. Koble Right telltale's nano til datamaskinen din, åpne Arduino IDE, kopier og lim inn denne koden og last den opp til brettet.
/** Program som bruker photogate for å undersøke fortelleren
*/ #include #include #include #include RF24 radio (9, 10); // CE, CSN const byte address [6] = "00010"; // --- programkonst --- // tid const int string_check_time = 1; const int flow_check_time = 30; const int base_delay = 5; const int flow_check_delay = 0; const int GATE_PIN = 6; const int GATE_PIN_2 = 7; const int max_when_testing = flow_check_time * 0,6; // angi var ovenfor basert på dine egne eksperimentelle forsøk const int max_in_flow = min (max_when_testing, int (flow_check_time/string_check_time)); const int msg_max_val = 9; // const int string_thresh = 20; #define STRING_THRESH 0.2 // --- program vars --- int num_string_seen = 0; int num_loops = 0; ugyldig oppsett () {// while (! Serial); // for flora // forsinkelse (500); num_string_seen = 0; num_loops = 0; pinMode (GATE_PIN, INPUT); pinMode (GATE_PIN_2, INPUT); Serial.begin (115200); // for feilsøking av radio.begin (); radio.openWritingPipe (adresse); radio.setPALevel (RF24_PA_MIN); radio.stopListening (); } void loop () {// legg hovedkoden din her for å kjøre gjentatte ganger: if (num_loops % string_check_time == 0) {// check string state check_string (); } if (num_loops == flow_check_time) {// undersøke flyt //Serial.println(num_string_seen); int flow_num = undersøke_flyt (); // send verdier send_out (flow_num); // reset vars num_string_seen = 0; num_loops = 0; forsinkelse (flow_check_delay); } num_loops ++; forsinkelse (base_delay); } / * *Metode for å sjekke om strengen krysser gate * / void check_string () {int string_state = digitalRead (GATE_PIN); //Serial.println(string_state); hvis (string_state == 0) {num_string_seen ++; //Serial.println("Saw string! "); }
int bot_state = digitalRead (GATE_PIN_2);
hvis (bot_state == 0) {num_string_seen--; //Serial.println("string on bottom! "); } //Serial.print("Counting string passes: "); //Serial.println(num_string_seen); komme tilbake; }/ * * Metode for å analysere hvilken brøkdel av tidsstrengen som dekket porten */int exam_flow () {double percent_seen = double (num_string_seen)/max_in_flow; Serial.print ("Prosent dekket:"); printDouble (prosent_ sett, 100); // skalere verdien til kommunikasjonsskala int scaled_flow = int (percent_seen * msg_max_val); hvis (scaled_flow> msg_max_val) {scaled_flow = msg_max_val; } hvis (skalert_flyt = 0) frac = (val - int (val)) * presisjon; annet frac = (int (val)- val) * presisjon; Serial.println (frac, DEC); }
Her er koden for Venstre telltale. Følg de samme trinnene som ovenfor for den venstre telltaleren. Som du kan se, er den eneste forskjellen adressen som telltaleren sender resultatene til.
/** Program som bruker photogate for å undersøke fortelleren
*/ #include #include #include #include RF24 radio (9, 10); // CE, CSN const byte address [6] = "00001"; // --- programkonst --- --- // tid const int string_check_time = 1; const int flow_check_time = 30; const int base_delay = 5; const int flow_check_delay = 0; const int GATE_PIN = 6; const int GATE_PIN_2 = 7; const int max_when_testing = flow_check_time * 0,6; // angi var ovenfor basert på dine egne eksperimentelle forsøk const int max_in_flow = min (max_when_testing, int (flow_check_time/string_check_time)); const int msg_max_val = 9; // const int string_thresh = 20; #define STRING_THRESH 0.2 // --- program vars --- int num_string_seen = 0; int num_loops = 0; ugyldig oppsett () {// while (! Serial); // for flora // forsinkelse (500); num_string_seen = 0; num_loops = 0;
pinMode (GATE_PIN, INPUT);
pinMode (GATE_PIN_2, INPUT); Serial.begin (115200); // for feilsøking av radio.begin (); radio.openWritingPipe (adresse); radio.setPALevel (RF24_PA_MIN); radio.stopListening (); } void loop () {// legg hovedkoden din her for å kjøre gjentatte ganger: if (num_loops % string_check_time == 0) {// check string state check_string (); } if (num_loops == flow_check_time) {// undersøke flyt //Serial.println(num_string_seen); int flow_num = undersøke_flyt (); // send verdier send_out (flow_num); // reset vars num_string_seen = 0; num_loops = 0; forsinkelse (flow_check_delay); } num_loops ++; forsinkelse (base_delay); } / * *Metode for å kontrollere om strengen krysser gate * / void check_string () {int string_state = digitalRead (GATE_PIN); //Serial.println(string_state); hvis (string_state == 0) {num_string_seen ++; //Serial.println("Saw string! "); }
int bot_state = digitalRead (GATE_PIN_2);
hvis (bot_state == 0) {num_string_seen--; //Serial.println("string on bottom! "); } //Serial.print("Counting string passes: "); //Serial.println(num_string_seen); komme tilbake; }/ * * Metode for å analysere hvilken brøkdel av tidsstrengen som dekket porten */int exam_flow () {double percent_seen = double (num_string_seen)/max_in_flow; Serial.print ("Prosent dekket:"); printDouble (prosent_ sett, 100); // skalere verdien til kommunikasjonsskala int scaled_flow = int (percent_seen * msg_max_val); hvis (scaled_flow> msg_max_val) {scaled_flow = msg_max_val; } hvis (skalert_flyt = 0) frac = (val - int (val)) * presisjon; annet frac = (int (val)- val) * presisjon; Serial.println (frac, DEC); }
Trinn 5: Telltale Assembly
Individuelle deler
- Tellerale ramme
- Garn
- Konstruert telltale krets
- Batteri pakke
- Elektrisk tape
- Epoxy eller lim
STL -er for 3D -utskrift som forteller komponenter
- STL for taleramme: venstre, høyre
- STLer for elektronikkboks: topp, bunn
Monteringsinstruksjoner
- Plasser stangmagneter i sporene på den 3D -trykte rammen. Sørg for at magnetene står på riktig måte mellom høyre ramme og venstre ramme, og bruk deretter epoxy (eller lim) for å feste magnetene til rammen. La epoxy (eller lim) stivne helt.
- Plasser fotobryterne i de øverste og nederste åpningene på baksiden av rammen. Epoxy (eller lim) forsiktig fotoforbryterplatene til rammen. La epoxy (eller lim) stivne helt
- Klipp en ~ 7 i garnbit. Fest den ene enden av garnet i hakket på den første vertikale stangen. Klipp et lite stykke tape og pakk det elektriske båndet over delen av garnet som vil være i området til fotobryterne. Tre garnet gjennom rammen slik at det passerer gjennom gapet til fotoavbryterporten.
- Plasser stangmagneter i sporene på den 3D -trykte elektronikkboksen. Sørg for at magnetene står på riktig måte mellom den høyre boksen og den venstre boksen, og bruk deretter epoxy (eller lim) for å feste magnetene til rammen. La epoxy (eller lim) stivne helt.
- Plasser den konstruerte telltalekretsen i elektronikkboksen, og juster de forskjellige komponentene etter sporene. Lukk esken med 3D -trykt elektronikkboks. Epoxy (eller lim) batteripakken til boksens topp slik at bryteren blir avslørt.
Trinn 6: Høyttalermaskinvare
Utgangssystemet består av to høyttalerkretser, en for hver telltale, utstyrt med trådløs kommunikasjon og en volumjusteringsknapp. Først må du forberede protobordene for bruk med nRF24L01 -modulene slik vi gjorde for tellet -kretsene ved å kutte ledningene som skiller de to radene med tavler der brettet skal plasseres.
Monter deretter kretsen som vist i diagrammet ovenfor mens du refererer til bildene av de ferdige kretsene.
Instruksjoner for styret
For å stable brettene i høyttalerkabinettet, må hovedkomponentene plasseres i visse områder av brettet. I de følgende instruksjonene vil jeg referere til koordinatsystemet som brukes til å angi rader og kolonner på Adafruit protoboard:
- Arduino Nano må plasseres mot den øvre kanten av brettet i midten slik at Vin -pinnen er plassert på G16. Dette vil tillate enkel omprogrammering av Arduino Nano etter at kretsen er satt sammen.
- NRF24L01 -kortet må plasseres i nedre høyre hjørne av brettet som strekker seg over de åtte posisjonene fra C1 til D5. Dette vil la nRF24L01 henge av protoboardet for å muliggjøre bedre trådløs kommunikasjon.
- Batteripakken til høyttalersystemet driver begge protobordene, så sørg for å koble de to Arduino Nanos GND -skinner/pins og Vin -pins til strømforsyningen.
-
For den "nederste" kretsen bør potensiometeret plasseres på toppen av brettet vendt utover slik at pinnene plasseres i posisjonene J2, J4 og J6
- J2, Arduino Nano -utgang fra digital pin 3 (D3)
- J4 ↔ grunnpinne på 2N3904 transistor
- J6 ↔ uten tilkobling
-
For den "øverste" kretsen bør potensiometeret plasseres på bunnen av brettet vendt utover slik at pinnene plasseres i posisjonene J9, J11 og J13
- J13, Arduino Nano -utgang fra digital pin 3 (D3)
- J11 ↔ grunnpinne på 2N3904 transistor
- J9 ↔ uten tilkobling
Trinn 7: Høyttalerprogramvare
Her er koden for høyttaleren som kommuniserer med den venstre telltaleren. Koble Arduino Nano på det nederste høyttalerkortet til datamaskinen din, åpne Arduino IDE, kopier og lim inn denne koden og last den opp til kortet.
#inkludere
#include #include RF24 radio (7, 8); // CE, CSN // left telltale, top speaker board const byte address [6] = "00001"; const int pitch = 2000; const int pitch_duration = 200; const int høyttaler = 3; const int delay_gain = 100; int status = 0; int cur_delay = 0; røye lest [2]; ugyldig oppsett () {pinMode (høyttaler, OUTPUT); Serial.begin (115200); Serial.println ("Start trådløs kommunikasjon …"); radio.begin (); radio.openReadingPipe (0, adresse); radio.setPALevel (RF24_PA_MIN); radio.startListening (); } void loop () {if (radio.available ()) {radio.read (& read, sizeof (read)); status = (int) (les [0]-'0'); Serial.print ("Mottatt:"); Serial.println (status); cur_delay = delay_gain*status; } if (cur_delay) {tone (høyttaler, tonehøyde, pitch_duration); forsinkelse (cur_delay + pitch_duration); Serial.println ("Beep!"); }}
Her er koden for høyttaleren som kommuniserer med den riktige telltalen. Koble Arduino Nano på det øverste høyttalerkortet til datamaskinen din, åpne Arduino IDE, kopier og lim inn denne koden og last den opp til kortet.
#inkludere
#include #include RF24 radio (7, 8); // CE, CSN // høyre telltale, nedre høyttalerkort konst byte adresse [6] = "00010"; const int pitch = 1500; const int pitch_duration = 200; const int høyttaler = 3; const int delay_gain = 100; int status = 0; int cur_delay = 0; røye lest [2]; ugyldig oppsett () {pinMode (høyttaler, OUTPUT); Serial.begin (115200); Serial.println ("Start trådløs kommunikasjon …"); radio.begin (); radio.openReadingPipe (0, adresse); radio.setPALevel (RF24_PA_MIN); radio.startListening (); } void loop () {if (radio.available ()) {radio.read (& read, sizeof (read)); status = (int) (les [0]-'0'); Serial.print ("Mottatt:"); Serial.println (status); cur_delay = delay_gain*status; } if (cur_delay) {tone (høyttaler, tonehøyde, pitch_duration); forsinkelse (cur_delay+pitch_duration); Serial.println ("Beep!"); }}
Trinn 8: Høyttalermontering
Individuelle deler
- 2 konstruerte høyttalerkretser
- 2 høyttalere
- 1 batteripakke
STLer for 3D -utskrift
- Boks topp
- Boks nederst
Instruksjoner for fysisk montering
- Plasser høyttalerkretsene forsiktig i bunnen av esken, det ene brettet på toppen av det andre slik at volumknappene er ved siden av hverandre og glir inn i hullene. Kommunikasjonsbrikkene skal avsløres på baksiden av esken.
- Plasser høyttalerne til venstre og høyre for kretskortet, og sørg for at høyttalerne samsvarer med de riktige siderne. Juster høyttalerne etter sporene på sidene av esken.
- Før batteripakningskablene gjennom det lille hullet på baksiden av esken. Epoxy (eller lim) batteripakken på baksiden av esken slik at bryteren blir utsatt.
- Plasser 3D -trykt boks øverst over boksens bunn for å inneholde alt.
Trinn 9: Oppsett/montering
- Slå på kontrollpanelet ved å snu bryterne på batteripakkene til "PÅ" -posisjonen. Gjør det samme for høyttalerenheten for å slå på utgangssystemet.
- Montering av hørbare tellere gjøres lettest med to personer, men kan gjøres med én. For montering på en jib uten rulle ville telltalene lettest settes på før seilet ble heist.
- For å forsikre deg om at rammen for fortelleren er riktig orientert, se på hakket på en av de vertikale stolpene. Når du holder rammen oppreist, skal hakket være mot toppen. Siden av rammen med den stangen skal også vende mot forsiden av båten.
- Plasser en av fortellerne i ønsket høyde og posisjon på seilet. Det bør plasseres slik at garnet er på samme sted som det ville vært hvis det var en del av en tradisjonell fortelling.
- Når du har én fortelling i ønsket posisjon. Plasser den andre fortellingen på den andre siden av seilet, akkurat motsatt den første du plasserte, slik at magnetene står i kø. Når magnetene får en forbindelse, skal de holde rammen forsvarlig mot seilet. Sett opp magnetene på elektronikkskapene for hver fortelling på hver side av seilet, slik at de også kobles til.
- Hvis du merker at når strengen flyter rett tilbake, krysser den ikke foran den øverste porten, roter fortellerrammen slik at den bakre halvdelen av rammen går nedover. Roter rammen til strengen passerer gjennom den øverste fotobryteren når garnet flyter rett tilbake.
Trinn 10: Feilsøking
Alle kodebitene har feilsøkingsutskriftserklæringer for å indikere at de sender, mottar og behandler data. Å åpne COM -porten ved hjelp av Arduino IDE med et av Arduino Nano -delsystemene koblet til en datamaskin, lar deg se disse statusmeldingene.
Hvis systemet ikke fungerer som det skal, slår du på bryterne på alle komponentene.
Trinn 11: Mulige neste trinn
- Vanntetting
- Kommunikasjon over lengre rekkevidde. WiFi være et lovende alternativ.
- Vårt nåværende oppsett bruker for tiden 2 fotobrytere per telltale. Å legge til flere fotobrytere til systemet kan være interessant å prøve.
Anbefalt:
Arduino bilvarslingssystem for omvendt parkering - Trinn for trinn: 4 trinn
Arduino Car Reverse Parking Alert System | Trinn for trinn: I dette prosjektet skal jeg designe en enkel Arduino Car Reverse Parking Sensor Circuit ved hjelp av Arduino UNO og HC-SR04 Ultrasonic Sensor. Dette Arduino -baserte bilreverseringssystemet kan brukes til autonom navigasjon, robotavstand og andre områder
Trinn for trinn PC -bygging: 9 trinn
Steg for trinn PC -bygging: Rekvisita: Maskinvare: HovedkortCPU & CPU -kjøler PSU (strømforsyningsenhet) Lagring (HDD/SSD) RAMGPU (ikke nødvendig) CaseTools: Skrutrekker ESD -armbånd/mathermal pasta m/applikator
Tre høyttalerkretser -- Trinn-for-trinn opplæring: 3 trinn
Tre høyttalerkretser || Trinn-for-trinn opplæring: Høyttalerkretsen styrker lydsignalene som mottas fra miljøet til MIC og sender den til høyttaleren der forsterket lyd produseres. Her vil jeg vise deg tre forskjellige måter å lage denne høyttalerkretsen på:
Slik laster du fôr til kyr: 9 trinn
Slik laster du fôr til kyr: Alt som lever trenger mat for å overleve. I vinter- og vårmånedene er det ikke gress for kyr å beite på. Dette gjør det veldig viktig at kuene blir matet skikkelig slik at de produserer sunne kalver. I de følgende trinnene vil pr
RC -sporet robot ved hjelp av Arduino - Trinn for trinn: 3 trinn
RC -sporet robot ved bruk av Arduino - Steg for trinn: Hei folkens, jeg er tilbake med et annet kult Robot -chassis fra BangGood. Håper du har gått gjennom våre tidligere prosjekter - Spinel Crux V1 - Gesture Controlled Robot, Spinel Crux L2 - Arduino Pick and Place Robot with Robotic Arms og The Badland Braw