Indholdsfortegnelse:

Hørbare telltales til sejlads: 11 trin
Hørbare telltales til sejlads: 11 trin

Video: Hørbare telltales til sejlads: 11 trin

Video: Hørbare telltales til sejlads: 11 trin
Video: How to Sail - Beginners Course 2024, Juli
Anonim
Image
Image
Telltale hardware
Telltale hardware

Telltales er stykker snor, der bruges i sejlads for at angive, om der er turbulent eller laminært flow hen over sejlet. Imidlertid er de forskellige farvede garnstykker fastgjort til hver side af sejlet rent visuelle indikatorer. Disse hørbare telltales er et hjælpemiddel, der har til formål at kommunikere den visuelle information i en lydform for både seende og svagtseende søfolk, såsom Pauline.

Enheden består af et indgangssystem, der læser telltalens bevægelse, og et udgangssystem, der udsender en række bip, der overfører luftstrømsinformation.

Adgang til loddeudstyr og en 3D -printer er påkrævet ved fremstillingen af denne enhed.

Trin 1: Stykliste

BOM med links og priser

Bemærk: du skal bruge 2 sæt af alle følgende.

Indgangssystem

  • Arduino Nano
  • Adafruit perma-proto halvstort brødbræt PCB
  • nRF24L01 modul til trådløs transceiver
  • Foto Afbrydere
  • Sparkfun Photo Interrupter Breakout Board
  • Arduino kompatibel 9V batteripakke
  • 9V batteri
  • Flere længder på 22 gauge wire
  • Garn
  • Neodym magneter
  • Epoxy

Output system

  • Arduino Nano
  • Adafruit perma-proto halvstort brødbræt PCB
  • nRF24L01 modul til trådløs transceiver
  • Arduino kompatibel 9V batteripakke
  • 1K Ohm potentiometer
  • 120 Ohm modstand
  • 2N3904 transistor
  • 0,1 uF kondensator
  • Arduino -kompatibel højttaler

GitHub -filer

  • Alle de kode- og STL -filer, der er nødvendige for at konstruere disse telltales, findes i denne GitHub -repo.
  • Du skal bruge to sæt af kabinettet og et af højttalerhuset.

Trin 2: Værktøjer/maskiner/softwarekrav

For at programmere Arduino skal du downloade Arduino IDE. Downloadlinket kan findes her.

For at programmere nRF24L01 -modulet skal du downloade dets bibliotek via Arduino IDE. Værktøjer> Administrer biblioteker …> installer bibliotek RF24

For at samle de elektroniske komponenter kræves adgang til grundlæggende loddeværktøjer. En aflodningspumpe kan også være nyttig, men er ikke nødvendig.

For at opbygge fortællerammen og højttalerhuset skal du have adgang til en 3D-printer.

Trin 3: Tellingale hardware

Telltale hardware
Telltale hardware
Telltale hardware
Telltale hardware

Saml kredsløbet i henhold til diagrammerne ovenfor. Arduino Nano skal justeres med toppen af protoboardet. Dette giver dig mulighed for at få adgang til USB -porten, selv efter at al elektronikken er tilsluttet.

For at undgå at kortslutte elektronikken, skal du sørge for at skære sporene af protoboardet på de rækker, som nRF24 vil optage som vist på billedet ovenfor.

Ellers skal du bruge jumperkabler for at slutte nRF24 til protoboardet.

Modstandsforbindelsen, GND og 5V ledninger til fotoafbryderen er ikke afbildet. Tilslut fotoafbryderen som angivet på dens breakout board. Et billede af breakout boardet er inkluderet.

Kredsløbene til højre og venstre telltales er nøjagtig de samme.

Trin 4: Telltale -software

Her er koden til den højre fortæller. Tilslut den højre telltalers nano til din computer, åbn Arduino IDE, kopier og indsæt denne kode i den, og upload den til tavlen.

/** Program, der bruger photogate til at undersøge fortæller

*/ #include #include #include #include RF24 radio (9, 10); // CE, CSN const byte adresse [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; // indstil var ovenfor baseret på dine egne eksperimentelle forsøg 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); // for flora // forsinkelse (500); num_string_seen = 0; num_loops = 0; pinMode (GATE_PIN, INPUT); pinMode (GATE_PIN_2, INPUT); Serial.begin (115200); // til debugging radio.begin (); radio.openWritingPipe (adresse); radio.setPALevel (RF24_PA_MIN); radio.stopListening (); } void loop () {// sæt din hovedkode her for at køre gentagne gange: if (num_loops % string_check_time == 0) {// check string state check_string (); } hvis (num_loops == flow_check_time) {// undersøge flow //Serial.println(num_string_seen); int flow_num = undersøge_flow (); // send værdier send_out (flow_num); // reset vars num_string_seen = 0; num_loops = 0; forsinkelse (flow_check_delay); } num_loops ++; forsinkelse (base_delay); } / * *Metode til at kontrollere, om streng krydser 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); Vend tilbage; }/ * * Metode til at analysere, hvilken brøkdel af tidsstrengen dækkede porten */int exam_flow () {double percent_seen = double (num_string_seen)/max_in_flow; Serial.print ("Procent omfattet:"); printDouble (procent set, 100); // skaler værdien til kommunikationsskala int scaled_flow = int (percent_seen * msg_max_val); hvis (scaled_flow> msg_max_val) {scaled_flow = msg_max_val; } hvis (skaleret_flow = 0) frac = (val - int (val)) * præcision; ellers frac = (int (val)- val) * præcision; Serial.println (frac, DEC); }

Her er koden til Venstre fortæller. Følg de samme trin som ovenfor for den venstre fortæller. Som du kan se, er den eneste forskel den adresse, som taleren sender sine resultater til.

/** Program, der bruger photogate til at undersøge fortæller

*/ #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; // indstil var ovenfor baseret på dine egne eksperimentelle forsøg 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); // for flora // forsinkelse (500); num_string_seen = 0; num_loops = 0;

pinMode (GATE_PIN, INPUT);

pinMode (GATE_PIN_2, INPUT); Serial.begin (115200); // til debugging radio.begin (); radio.openWritingPipe (adresse); radio.setPALevel (RF24_PA_MIN); radio.stopListening (); } void loop () {// sæt din hovedkode her for at køre gentagne gange: if (num_loops % string_check_time == 0) {// check string state check_string (); } hvis (num_loops == flow_check_time) {// undersøge flow //Serial.println(num_string_seen); int flow_num = undersøge_flow (); // send værdier send_out (flow_num); // reset vars num_string_seen = 0; num_loops = 0; forsinkelse (flow_check_delay); } num_loops ++; forsinkelse (base_delay); } / * *Metode til at kontrollere, om streng krydser 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); Vend tilbage; }/ * * Metode til at analysere, hvilken brøkdel af tidsstrengen dækkede porten */int exam_flow () {double percent_seen = double (num_string_seen)/max_in_flow; Serial.print ("Procent omfattet:"); printDouble (procent set, 100); // skaler værdien til kommunikationsskala int scaled_flow = int (percent_seen * msg_max_val); hvis (scaled_flow> msg_max_val) {scaled_flow = msg_max_val; } hvis (skaleret_flow = 0) frac = (val - int (val)) * præcision; ellers frac = (int (val)- val) * præcision; Serial.println (frac, DEC); }

Trin 5: Telltale Assembly

Teltale forsamling
Teltale forsamling

Individuelle dele

  • Fortællingsramme
  • Garn
  • Konstrueret telltale kredsløb
  • Batteri pakke
  • Elektrisk tape
  • Epoxy eller lim

STL'er til 3D -udskrivning telltale komponenter

  • STL til taleramme: venstre, højre
  • STL'er til elektronikboks: top, bund

Monteringsvejledning

  1. Placer stangmagneter i åbningerne i den 3D -trykte fortællerramme. Sørg for, at magneterne flugter korrekt mellem den højre ramme og den venstre ramme, og brug derefter epoxy (eller lim) til at fastgøre magneterne til rammen. Lad epoxy (eller lim) stivne helt.
  2. Placer fotoafbrydere i de øverste og nederste åbninger på bagsiden af rammen. Forsigtigt epoxy (eller lim) fotoafbryderpladerne til rammen. Lad epoxy (eller lim) stivne helt
  3. Klip en ~ 7 i stykke garn. Bind den ene ende af garnet i hakket på den første lodrette stang. Klip et lille stykke elektrisk tape og vikl det elektriske tape over den del af garnet, der vil være i området for fotoforbryderne. Tråd garnet gennem rammen, så det passerer gennem hullet i fotoafbryderporten.
  4. Placer stangmagneter i åbningerne i bunden af den 3D -printede elektronikboks. Sørg for, at magneterne flugter korrekt mellem den højre boks og den venstre boks, og brug derefter epoxy (eller lim) til at fastgøre magneterne til rammen. Lad epoxy (eller lim) stivne helt.
  5. Placer det konstruerede talekredsløb i elektronikboksen, så de forskellige komponenter flugter med deres slots. Luk boksen med 3D -printet elektronikboks. Epoxy (eller lim) batteripakken til boksens top, så kontakten er udsat.

Trin 6: Højttalerhardware

Højttaler hardware
Højttaler hardware
Højttaler hardware
Højttaler hardware
Højttaler hardware
Højttaler hardware

Udgangssystemet består af to højttalerkredsløb, et for hver fortæller, udstyret med trådløs kommunikation og en lydstyrkeknap. Først skal du forberede protoboardene til brug med nRF24L01 -modulerne, som vi gjorde for oplysningskredsløbene ved at afskære ledningerne, der adskiller de to stifterækker, hvor brættet skal placeres.

Saml derefter kredsløbet som vist i diagrammet ovenfor, mens du henviser til fotos af de færdige kredsløb.

Bestyrelsesinstruktioner

For at stable brædderne i højttalerkabinettet, skal hovedkomponenterne placeres i visse områder af kortet. I de følgende instruktioner vil jeg referere til det koordinatsystem, der bruges til at betegne rækker og kolonner på Adafruit protoboard:

  1. Arduino Nano skal placeres mod den øverste kant af brættet i midten, så Vin -stiften er placeret ved G16. Dette giver mulighed for let omprogrammering af Arduino Nano efter kredsløbet er blevet samlet.
  2. NRF24L01 -kortet skal placeres i det nederste højre hjørne af brættet, der spænder over de otte positioner fra C1 til D5. Dette lader nRF24L01 hænge ud af protoboardet for at muliggøre bedre trådløs kommunikation.
  3. Batteripakken til højttalersystemet driver begge protoboards, så sørg for at slutte de to Arduino Nano's GND -skinner/pins og Vin -pins til strømforsyningen.
  4. For 'bunden' kredsløb skal potentiometeret placeres på toppen af brættet vendt udad, så dets ben er placeret i positionerne J2, J4 og J6

    1. J2, Arduino Nano output fra digital pin 3 (D3)
    2. J4 ↔ bundstift af 2N3904 transistor
    3. J6 ↔ uden forbindelse
  5. For 'top' -kredsløbet skal potentiometret placeres på bunden af brættet vendt udad, så dets ben er placeret i positionerne J9, J11 og J13

    1. J13, Arduino Nano output fra digital pin 3 (D3)
    2. J11 ↔ bundstift af 2N3904 transistor
    3. J9 ↔ uden forbindelse

Trin 7: Højttalersoftware

Her er koden til højttaleren, der kommunikerer med den venstre fortæller. Slut Arduino Nano på det nederste højttalerkort til din computer, åbn Arduino IDE, kopier og indsæt denne kode i den, og upload den til kortet.

#omfatte

#include #include RF24 radio (7, 8); // CE, CSN // venstre fortæller, top højttaler board const byte adresse [6] = "00001"; const int pitch = 2000; const int pitch_duration = 200; const int højttaler = 3; const int delay_gain = 100; int status = 0; int cur_delay = 0; char read [2]; void setup () {pinMode (højttaler, OUTPUT); Serial.begin (115200); Serial.println ("Start af trådløs kommunikation …"); 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) (læs [0]-'0'); Serial.print ("Modtaget:"); Serial.println (status); cur_delay = delay_gain*status; } hvis (cur_delay) {tone (højttaler, pitch, pitch_duration); forsinkelse (cur_delay + pitch_duration); Serial.println ("Bip!"); }}

Her er koden til højttaleren, der kommunikerer med den rigtige fortæller. Tilslut Arduino Nano på det øverste højttalerkort til din computer, åbn Arduino IDE, kopier og indsæt denne kode i den, og upload den til kortet.

#omfatte

#include #include RF24 radio (7, 8); // CE, CSN // højre fortæller, bund -højttalerkort konst byte adresse [6] = "00010"; const int pitch = 1500; const int pitch_duration = 200; const int højttaler = 3; const int delay_gain = 100; int status = 0; int cur_delay = 0; char read [2]; void setup () {pinMode (højttaler, OUTPUT); Serial.begin (115200); Serial.println ("Start af trådløs kommunikation …"); 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) (læs [0]-'0'); Serial.print ("Modtaget:"); Serial.println (status); cur_delay = delay_gain*status; } hvis (cur_delay) {tone (højttaler, pitch, pitch_duration); forsinkelse (cur_delay+pitch_duration); Serial.println ("Bip!"); }}

Trin 8: Højttalermontering

Individuelle dele

  • 2 konstruerede højttalerkredsløb
  • 2 højttalere
  • 1 batteripakke

STL'er til 3D -udskrivning

  • Æske top
  • Kassens bund

Fysisk samlevejledning

  1. Placer forsigtigt højttalerkredsløbene i bunden af kassen, det ene bord oven på det andet, så lydstyrkeknapperne er ved siden af hinanden og glider ind i hullerne. Kommunikationschipsne skal udsættes bag på kassen.
  2. Placer højttalerne til venstre og højre for printkortet, og sørg for, at højttalerne svarer til de korrekte telltale sider. Juster højttalerne efter åbningerne på kassens sider.
  3. Før batteripakkens ledninger gennem det lille hul på bagsiden af kassen. Epoxy (eller lim) batteripakken på bagsiden af æsken, så kontakten er udsat.
  4. Placer 3D -printet boks øverst over boksens bund for at indeholde alt.

Trin 9: Opsætning/montering

Opsætning/montering
Opsætning/montering
  1. Tænd for taltalerne ved at vende kontakterne på batteripakkerne til 'ON' positionen. Gør det samme for højttalerenheden for at tænde for outputsystemet.
  2. Montering af hørbare taltales sker lettest med to personer, men kan gøres med en. Til montering på et ikke-rullefok ville telltales lettest blive taget på, før sejlet hejses.
  3. For at sikre, at fortællingsrammen er korrekt orienteret, skal du se på hakket på en af de lodrette stænger. Når rammen holdes oprejst, skal hakket være mod toppen. Rammens side med den bar bør også vende mod forsiden af båden.
  4. Placer en af fortællingerne i den ønskede højde og position på sejlet. Det skal placeres sådan, at garnet er det samme sted, det ville være, hvis det var en del af en traditionel fortælling.
  5. Når du har én fortæller i den ønskede position. Placer den anden fortælling på den anden side af sejlet, præcis modsat den første du placerede, så magneterne står i kø. Når magneterne får forbindelse, skal de holde rammen sikkert til sejlet. Stil magneterne på elektronikskabene op for hver fortællehistorie på hver side af sejlet, så de også forbinder.
  6. Hvis du bemærker, at når snoren flyder lige bagud, krydser den ikke foran den øverste port, skal du dreje fortællerammen, så den bageste halvdel af rammen går nedad. Drej rammen, indtil snoren passerer gennem den øverste fotoafbryder, når garnet flyder lige tilbage.

Trin 10: Fejlfinding

Alle kodestykker har fejlfindingsudskriftsudsagn for at angive, at de sender, modtager og behandler data. Hvis du åbner COM -porten ved hjælp af Arduino IDE med et af Arduino Nano -undersystemerne tilsluttet en computer, kan du se disse statusmeddelelser.

Hvis systemet ikke fungerer korrekt, skal du skifte til alle komponenterne.

Trin 11: Mulige næste trin

  • Vandtæt
  • Længere kommunikation. WiFi være en lovende mulighed.
  • Vores nuværende opsætning bruger i øjeblikket 2 fotoafbrydere pr. Fortæller. Tilføjelse af flere fotoafbrydere til systemet kan være interessant at prøve.

Anbefalede: