Innholdsfortegnelse:

Hørbare telltaler for seiling: 11 trinn
Hørbare telltaler for seiling: 11 trinn

Video: Hørbare telltaler for seiling: 11 trinn

Video: Hørbare telltaler for seiling: 11 trinn
Video: Какие звуки слышат ваши противники? 2024, Juli
Anonim
Image
Image
Tellingale maskinvare
Tellingale maskinvare

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

Tellingale maskinvare
Tellingale maskinvare
Tellingale maskinvare
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

Telltale Assembly
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

  1. 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.
  2. 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
  3. 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.
  4. 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.
  5. 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

Høyttalermaskinvare
Høyttalermaskinvare
Høyttalermaskinvare
Høyttalermaskinvare
Høyttalermaskinvare
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:

  1. 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.
  2. 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.
  3. 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.
  4. For den "nederste" kretsen bør potensiometeret plasseres på toppen av brettet vendt utover slik at pinnene plasseres i posisjonene J2, J4 og J6

    1. J2, Arduino Nano -utgang fra digital pin 3 (D3)
    2. J4 ↔ grunnpinne på 2N3904 transistor
    3. J6 ↔ uten tilkobling
  5. For den "øverste" kretsen bør potensiometeret plasseres på bunnen av brettet vendt utover slik at pinnene plasseres i posisjonene J9, J11 og J13

    1. J13, Arduino Nano -utgang fra digital pin 3 (D3)
    2. J11 ↔ grunnpinne på 2N3904 transistor
    3. 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

  1. 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.
  2. 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.
  3. Før batteripakningskablene gjennom det lille hullet på baksiden av esken. Epoxy (eller lim) batteripakken på baksiden av esken slik at bryteren blir utsatt.
  4. Plasser 3D -trykt boks øverst over boksens bunn for å inneholde alt.

Trinn 9: Oppsett/montering

Oppsett/montering
Oppsett/montering
  1. Slå på kontrollpanelet ved å snu bryterne på batteripakkene til "PÅ" -posisjonen. Gjør det samme for høyttalerenheten for å slå på utgangssystemet.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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: