Innehållsförteckning:

Hörbara telltaler för segling: 11 steg
Hörbara telltaler för segling: 11 steg

Video: Hörbara telltaler för segling: 11 steg

Video: Hörbara telltaler för segling: 11 steg
Video: Part 2 - The Adventures of Tom Sawyer Audiobook by Mark Twain (Chs 11-24) 2024, Juli
Anonim
Image
Image
Telltale -hårdvara
Telltale -hårdvara

Telltales är bitar av strängar som används vid segling för att indikera om det är turbulent eller laminärt flöde över seglet. Emellertid är de olika färgade garnbitarna fästa på varje sida av seglet rent visuella indikatorer. Dessa hörbara telltaler är en hjälpmedel som syftar till att kommunicera den visuella informationen i en hörselform för både seende och synskadade seglare, till exempel Pauline.

Enheten består av ett ingångssystem, som läser av telltalets rörelse, och ett utmatningssystem, som avger en serie pip som överför luftflödesinformation.

Tillgång till lödutrustning och en 3D -skrivare krävs vid tillverkningen av denna enhet.

Steg 1: Materialförteckning

BOM med länkar och priser

Obs: du behöver 2 uppsättningar av alla följande.

Ingångssystem

  • Arduino Nano
  • Adafruit perma-proto halvstor brödbräda
  • nRF24L01 Trådlös sändtagarmodul
  • Fotoavbrytare
  • Sparkfun Photo Interrupter Breakout Board
  • Arduino -kompatibelt 9V -batteri
  • 9V batteri
  • Flera längder på 22 gauge tråd
  • Garn
  • Neodymmagneter
  • Epoxi

Utmatningssystem

  • Arduino Nano
  • Adafruit perma-proto halvstor brödbräda
  • nRF24L01 modul för trådlös sändare
  • Arduino -kompatibelt 9V -batteri
  • 1K Ohm potentiometer
  • 120 Ohm motstånd
  • 2N3904 transistor
  • 0,1 uF kondensator
  • Arduino -kompatibel högtalare

GitHub -filer

  • Alla koder och STL -filer som behövs för att konstruera dessa telltaler finns i denna GitHub -repo.
  • Du behöver två uppsättningar av höljet och ett av högtalarhuset.

Steg 2: Verktyg/maskiner/programvarukrav

För att programmera Arduino måste du ladda ner Arduino IDE. Nedladdningslänken hittar du här.

För att programmera nRF24L01 -modulen måste du ladda ner dess bibliotek via Arduino IDE. Verktyg> Hantera bibliotek …> installera bibliotek RF24

För att montera de elektroniska komponenterna krävs tillgång till grundläggande lödverktyg. En avlödningspump kan också vara användbar men är inte nödvändig.

För att kunna konstruera berättarramen och högtalarfodralet behöver du tillgång till en 3D-skrivare.

Steg 3: Telltale Hardware

Telltale -hårdvara
Telltale -hårdvara
Telltale -hårdvara
Telltale -hårdvara

Montera kretsen enligt diagrammen ovan. Arduino Nano ska vara i linje med toppen av protoboardet. Detta gör att du har tillgång till USB -porten även efter att all elektronik är ansluten.

För att undvika kortslutning av elektroniken, se till att klippa av spåren av protoboardet på raderna som nRF24 kommer att uppta som visas på bilden ovan.

Annars behöver du bygelkablar för att ansluta nRF24 till protoboardet.

Motståndsanslutningen, GND och 5V ledningar till fotobrytaren visas inte. Anslut fotobrytaren enligt anvisningarna på dess utbrottstavla. En bild av utbrottskortet ingår.

Kretsarna för höger och vänster telltal är exakt desamma.

Steg 4: Telltale -programvara

Här är koden för Right telltale. Anslut höger telltalers nano till din dator, öppna Arduino IDE, kopiera och klistra in den här koden och ladda upp den till kortet.

/** Program som använder photogate för att undersöka displayen

*/ #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; // ställ in var ovan baserat på dina egna experimentella försö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; void setup () {// while (! Serial); // för flora // fördröjning (500); num_string_seen = 0; num_loops = 0; pinMode (GATE_PIN, INPUT); pinMode (GATE_PIN_2, INPUT); Serial.begin (115200); // för felsökning av radio.begin (); radio.openWritingPipe (adress); radio.setPALevel (RF24_PA_MIN); radio.stopListening (); } void loop () {// lägg din huvudkod här för att köra upprepade gånger: if (num_loops % string_check_time == 0) {// check string state check_string (); } if (num_loops == flow_check_time) {// undersöka flöde //Serial.println(num_string_seen); int flödesnummer = undersöka_flöde (); // skicka värden send_out (flow_num); // reset vars num_string_seen = 0; num_loops = 0; fördröjning (flow_check_delay); } num_loops ++; fördröjning (bas_fördröjning); } / * *Metod för att kontrollera om strängen passerar gate * / void check_string () {int string_state = digitalRead (GATE_PIN); //Serial.println(string_state); if (string_state == 0) {num_string_seen ++; //Serial.println("Såg sträng! "); }

int bot_state = digitalRead (GATE_PIN_2);

om (bot_state == 0) {num_string_seen--; //Serial.println("sträng på botten! "); } //Serial.print("Counting string passes: "); //Serial.println(num_string_seen); lämna tillbaka; }/ * * Metod för att analysera vilken bråkdel av tidsträngen som täckte porten */int exam_flow () {double percent_seen = double (num_string_seen)/max_in_flow; Serial.print ("Procent täckt:"); printDouble (procent_seen, 100); // skala värdet till kommunikationsskala int scaled_flow = int (percent_seen * msg_max_val); om (skalat_flöde> msg_max_val) {skalat_flöde = msg_max_val; } om (skalat_flöde = 0) frac = (val - int (val)) * precision; annars frac = (int (val)- val) * precision; Serial.println (frac, DEC); }

Här är koden för den vänstra telltalaren. Följ samma steg som ovan för den vänstra talaren. Som du kan se är den enda skillnaden adressen till vilken talaren skickar sina resultat.

/** Program som använder photogate för att undersöka displayen

*/ #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; // ställ in var ovan baserat på dina egna experimentella försö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; void setup () {// while (! Serial); // för flora // fördröjning (500); num_string_seen = 0; num_loops = 0;

pinMode (GATE_PIN, INPUT);

pinMode (GATE_PIN_2, INPUT); Serial.begin (115200); // för felsökning av radio.begin (); radio.openWritingPipe (adress); radio.setPALevel (RF24_PA_MIN); radio.stopListening (); } void loop () {// lägg din huvudkod här för att köra upprepade gånger: if (num_loops % string_check_time == 0) {// check string state check_string (); } if (num_loops == flow_check_time) {// undersöka flöde //Serial.println(num_string_seen); int flödesnummer = undersöka_flöde (); // skicka värden send_out (flow_num); // reset vars num_string_seen = 0; num_loops = 0; fördröjning (flow_check_delay); } num_loops ++; fördröjning (bas_fördröjning); } / * *Metod för att kontrollera om strängen passerar gate * / void check_string () {int string_state = digitalRead (GATE_PIN); //Serial.println(string_state); if (string_state == 0) {num_string_seen ++; //Serial.println("Såg sträng! "); }

int bot_state = digitalRead (GATE_PIN_2);

om (bot_state == 0) {num_string_seen--; //Serial.println("sträng på botten! "); } //Serial.print("Counting string passes: "); //Serial.println(num_string_seen); lämna tillbaka; }/ * * Metod för att analysera vilken bråkdel av tidsträngen som täckte porten */int exam_flow () {double percent_seen = double (num_string_seen)/max_in_flow; Serial.print ("Procent täckt:"); printDouble (procent_syn, 100); // skala värdet till kommunikationsskala int scaled_flow = int (percent_seen * msg_max_val); om (skalat_flöde> msg_max_val) {skalat_flöde = msg_max_val; } om (skalat_flöde = 0) frac = (val - int (val)) * precision; annars frac = (int (val)- val) * precision; Serial.println (frac, DEC); }

Steg 5: Telltale Assembly

Telltale Assembly
Telltale Assembly

Enskilda delar

  • Telltale -ram
  • Garn
  • Konstruerad talarkrets
  • Batteripaket
  • Eltejp
  • Epoxi eller lim

STL för 3D -utskrifter berättande komponenter

  • STL för upplysningsram: vänster, höger
  • STL för elektroniklåda: topp, botten

Monteringsanvisningar

  1. Placera stångmagneter i spåren på den 3D -tryckta upplysningsramen. Se till att magneterna ligger rätt mellan den högra ramen och den vänstra ramen och använd sedan epoxi (eller lim) för att fästa magneterna på ramen. Låt epoxi (eller lim) stelna helt.
  2. Placera fotobrytarna i de övre och nedre facken på baksidan av ramen. Epoxi (eller lim) försiktigt fotobrytaren på ramen. Låt epoxi (eller lim) stelna helt
  3. Klipp en ~ 7 i garnbit. Knyt ena änden av garnet i skåran på den första vertikala stången. Klipp en liten bit tejp och linda den elektriska tejpen över den del av garnet som kommer att ligga i området för fotobrytarna. Trä garnet genom ramen så att det passerar genom gapet på fotobrytaren.
  4. Placera stångmagneter i spåren på den 3D -tryckta elektronikboxens botten. Se till att magneterna ligger rätt mellan rätt låda och vänster låda, använd sedan epoxi (eller lim) för att fästa magneterna på ramen. Låt epoxi (eller lim) stelna helt.
  5. Placera den konstruerade signalkretsen i elektroniklådan och anpassa de olika komponenterna till deras fack. Stäng lådan med 3D -tryckt elektroniklåda. Epoxi (eller limma) batteripaketet till lådans överdel så att omkopplaren exponeras.

Steg 6: Högtalarhårdvara

Högtalarhårdvara
Högtalarhårdvara
Högtalarhårdvara
Högtalarhårdvara
Högtalarhårdvara
Högtalarhårdvara

Utgångssystemet består av två högtalarkretsar, en för varje talare, utrustad med trådlös kommunikation och en volymjusteringsknapp. Förbered först prototavlorna för användning med nRF24L01 -modulerna som vi gjorde för tellkretsarna genom att klippa av ledningarna som skiljer de två raderna av stift där kortet kommer att placeras.

Montera sedan kretsen som visas i diagrammet ovan medan du hänvisar till bilderna på de färdiga kretsarna.

Styrelsens monteringsanvisningar

För att stapla brädorna i högtalarhöljet måste huvudkomponenterna placeras i vissa delar av kortet. I följande instruktioner kommer jag att hänvisa till koordinatsystemet som används för att beteckna rader och kolumner på Adafruit protoboard:

  1. Arduino Nano måste placeras mot brädans övre kant i mitten så att Vin -stiftet placeras vid G16. Detta möjliggör enkel omprogrammering av Arduino Nano efter att kretsen har monterats.
  2. Kortet nRF24L01 måste placeras i det nedre högra hörnet av brädet som sträcker sig över de åtta positionerna från C1 till D5. Detta kommer att låta nRF24L01 hänga av protoboardet för att möjliggöra bättre trådlös kommunikation.
  3. Batteripaketet för högtalarsystemet driver båda protoborden, så se till att ansluta de två Arduino Nanos GND -skenor/stift och Vin -stift till strömförsörjningen.
  4. För kretsen 'botten' bör potentiometern placeras på toppen av brädet vänd utåt så att dess stift placeras i positionerna J2, J4 och J6

    1. J2, Arduino Nano -utgång från digital stift 3 (D3)
    2. J4 ↔ basstift på 2N3904 transistor
    3. J6, inte ansluten
  5. För kretsen 'topp' bör potentiometern placeras på undersidan av brädet vänd utåt så att stiften placeras i positionerna J9, J11 och J13

    1. J13, Arduino Nano -utgång från digital stift 3 (D3)
    2. J11 ↔ basstift på 2N3904 transistor
    3. J9 ↔ ansluten

Steg 7: Högtalarprogramvara

Här är koden för högtalaren som kommunicerar med den vänstra telltalaren. Anslut Arduino Nano på det nedre högtalarkortet till din dator, öppna Arduino IDE, kopiera och klistra in den här koden och ladda upp den till kortet.

#omfatta

#include #include RF24 radio (7, 8); // CE, CSN // vänster telltale, högtalarkortets konstant byte -adress [6] = "00001"; const int pitch = 2000; const int pitch_duration = 200; const int högtalare = 3; const int delay_gain = 100; int status = 0; int cur_delay = 0; rödläsning [2]; void setup () {pinMode (högtalare, OUTPUT); Serial.begin (115200); Serial.println ("Starta trådlös kommunikation …"); radio.begin (); radio.openReadingPipe (0, adress); radio.setPALevel (RF24_PA_MIN); radio.startListening (); } void loop () {if (radio.available ()) {radio.read (& read, sizeof (read)); status = (int) (läs [0]-'0'); Serial.print ("Mottaget:"); Serial.println (status); cur_delay = delay_gain*status; } if (cur_delay) {ton (högtalare, pitch, pitch_duration); fördröjning (cur_delay + pitch_duration); Serial.println ("pip!"); }}

Här är koden för högtalaren som kommunicerar med den rätta talaren. Anslut Arduino Nano på högtalarkortet till din dator, öppna Arduino IDE, kopiera och klistra in den här koden och ladda upp den till kortet.

#omfatta

#include #include RF24 radio (7, 8); // CE, CSN // höger upplysande, nedre högtalarkortets konstbyte -adress [6] = "00010"; const int pitch = 1500; const int pitch_duration = 200; const int högtalare = 3; const int delay_gain = 100; int status = 0; int cur_delay = 0; rödläsning [2]; void setup () {pinMode (högtalare, OUTPUT); Serial.begin (115200); Serial.println ("Starta trådlös kommunikation …"); radio.begin (); radio.openReadingPipe (0, adress); radio.setPALevel (RF24_PA_MIN); radio.startListening (); } void loop () {if (radio.available ()) {radio.read (& read, sizeof (read)); status = (int) (läs [0]-'0'); Serial.print ("Mottaget:"); Serial.println (status); cur_delay = delay_gain*status; } if (cur_delay) {ton (högtalare, pitch, pitch_duration); fördröjning (cur_delay+pitch_duration); Serial.println ("pip!"); }}

Steg 8: Högtalarmontering

Enskilda delar

  • 2 konstruerade högtalarkretsar
  • 2 högtalare
  • 1 batteri

STL för 3D -utskrift

  • Box top
  • Lådans botten

Fysisk monteringsanvisning

  1. Placera försiktigt högtalarkretsarna i lådans botten, det ena kortet ovanpå det andra så att volymknapparna ligger bredvid varandra och glider in i hålen. Kommunikationschipsen ska exponeras på baksidan av lådan.
  2. Placera högtalarna till vänster och höger om kretskortet, se till att högtalarna överensstämmer med de korrekta indikatorerna. Rikta in högtalarna efter facken på lådans sidor.
  3. Mata batteripackets ledningar genom det lilla hålet på baksidan av lådan. Epoxi (eller lim) batteripaketet på baksidan av lådan så att omkopplaren exponeras.
  4. Placera 3D -tryckt låda ovanpå lådans botten för att innehålla allt.

Steg 9: Installation/montering

Installation/montering
Installation/montering
  1. Slå på kontrollpanelen genom att vrida omkopplarna på batterierna till läge "ON". Gör samma sak för högtalarenheten för att slå på utmatningssystemet.
  2. Montering av hörbara telltal görs enklast med två personer, men kan göras med en. För montering på en fock utan fästning skulle telltalen lättast sättas på innan segeln hissas.
  3. För att se till att berättarramen är rätt orienterad, titta på skåran på en av de vertikala staplarna. När du håller ramen upprätt ska skåran vara uppåt. Rammens sida med stången bör också vända mot båtens framsida.
  4. Placera en av berättelserna på önskad höjd och position på seglet. Det ska placeras så att garnet är på samma ställe som det skulle vara om det var en del av en traditionell berättelse.
  5. När du har en berättelse i önskad position. Placera den andra berättelsen på andra sidan av seglet, precis mittemot den första du placerade, så att magneterna står i linje. När magneterna gör en anslutning bör de hålla ramen säkert mot seglet. Ställ upp magneterna på elektronikhöljena för varje berättelse på vardera sidan av seglet, så att de också ansluts.
  6. Om du märker att när strängen flyter rakt bakåt går den inte över framför den övre grinden, vrid berättarramen så att den bakre halvan av ramen går nedåt. Vrid ramen tills strängen passerar genom den övre fotobrytaren när garnet rinner rakt bakåt.

Steg 10: Felsökning

Alla kodbitar har felsökningsutskrifter för att indikera att de skickar, tar emot och bearbetar data. Om du öppnar COM -porten med Arduino IDE med ett av Arduino Nano -delsystemen anslutna till en dator kan du se dessa statusmeddelanden.

Om systemet inte fungerar som det ska, växla omkopplarna på alla komponenter.

Steg 11: Möjliga nästa steg

  • Impregnering
  • Långare kommunikation. WiFi vara ett lovande alternativ.
  • Vår nuvarande installation använder för närvarande 2 fotobrytare per telltale. Att lägga till fler fotobrytare till systemet kan vara intressant att prova.

Rekommenderad: