Kazalo:

Zvočni signali za jadranje: 11 korakov
Zvočni signali za jadranje: 11 korakov

Video: Zvočni signali za jadranje: 11 korakov

Video: Zvočni signali za jadranje: 11 korakov
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Julij
Anonim
Image
Image
Strojna oprema Telltale
Strojna oprema Telltale

Kontrolni kazalci so vrvice, ki se uporabljajo pri jadranju, da pokažejo, ali je čez jadro turbulenten ali laminarni tok. Vendar so različni barvni kosi preje, pritrjeni na vsaki strani jadra, zgolj vizualni kazalci. Ti zvočni signali so pomožna naprava, katere namen je sporočiti vizualne informacije v slušni obliki tako za vidne kot za slabovidne mornarje, kot je Pauline.

Naprava je sestavljena iz vhodnega sistema, ki bere gibanje opozorilnega signala, in izhodnega sistema, ki oddaja vrsto piskov, ki prenašajo informacije o pretoku zraka.

Za izdelavo te naprave je potreben dostop do spajkalne opreme in 3D tiskalnika.

1. korak: Predmet materiala

BOM s povezavami in cenami

Opomba: Potrebovali boste 2 kompleta vsega naslednjega.

Vhodni sistem

  • Arduino Nano
  • PCB plošča polovice velikosti Adafruit perma-proto
  • nRF24L01 brezžični oddajniški modul
  • Prekinitelj fotografij
  • Sparkfun Photo Interrupter Breakout Board
  • Arduino združljiv 9V akumulator
  • 9V baterija
  • Več dolžin žice 22 Gauge
  • Preja
  • Neodimijski magneti
  • Epoksi

Izhodni sistem

  • Arduino Nano
  • Adapruit perma-proto polovična vezja PCB
  • nRF24L01 brezžični oddajniški modul
  • Arduino združljiv 9V akumulator
  • 1K ohmski potenciometer
  • 120 ohmski upor
  • 2N3904 tranzistor
  • 0,1 uF kondenzator
  • Zvočnik, združljiv z Arduino

Datoteke GitHub

  • Vse kode in datoteke STL, potrebne za izdelavo teh kontrolnikov, najdete v tem repoju GitHub.
  • Potrebovali boste dva kompleta ohišja in enega ohišja zvočnikov.

2. korak: Orodja/stroji/zahteve programske opreme

Za programiranje Arduina morate prenesti Arduino IDE. Povezavo za prenos najdete tukaj.

Za programiranje modula nRF24L01 boste morali prenesti njegovo knjižnico prek Arduino IDE. Orodja> Upravljanje knjižnic …> namestite knjižnico RF24

Za sestavljanje elektronskih komponent je potreben dostop do osnovnih orodij za spajkanje. Črpalka za spajkanje je lahko tudi koristna, ni pa nujna.

Za izdelavo okvirja in ohišja zvočnikov potrebujete dostop do 3D tiskalnika.

3. korak: Telltale Hardware

Strojna oprema Telltale
Strojna oprema Telltale
Strojna oprema Telltale
Strojna oprema Telltale

Sestavite vezje v skladu z zgornjimi shemami. Arduino Nano mora biti poravnan z vrhom protoboarda. To vam omogoča dostop do vrat USB tudi po priključitvi vse elektronike.

Da ne bi prišlo do kratkega stika elektronike, ne pozabite izrezati sledi protoboard -a na vrsticah, ki jih bo nRF24 zasedel, kot je prikazano na zgornji sliki.

V nasprotnem primeru boste za priključitev nRF24 na protoboard potrebovali mostične kable.

Uporni priključek, žice GND in 5V do prekinitve fotografije niso prikazani. Priključite prekinjevalec fotografij, kot je označeno na plošči. Priložena je slika odmične plošče.

Vezja za desni in levi kontrolnik sta popolnoma enaka.

4. korak: programska oprema Telltale

Tu je koda za desno opozorilno napravo. Nano desnega kazalca povežite z računalnikom, odprite Arduino IDE, kopirajte in prilepite to kodo vanj in jo naložite na ploščo.

/** Program, ki uporablja photogate za pregledovanje opozorilnih elementov

*/ #include #include #include #include RF24 radio (9, 10); // CE, CSN const bajt naslov [6] = "00010"; // --- program consts --- // časovna omejitev 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; // nastavite zgornjo vrednost var na podlagi lastnih poskusnih poskusov 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 // --- programske spremenljivke --- int num_string_seen = 0; int num_loops = 0; void setup () {// while (! Serial); // za floro // zakasnitev (500); num_string_seen = 0; število_zank = 0; pinMode (GATE_PIN, INPUT); pinMode (GATE_PIN_2, INPUT); Serial.begin (115200); // za odpravljanje napak radio.begin (); radio.openWritingPipe (naslov); radio.setPALevel (RF24_PA_MIN); radio.stopListening (); } void loop () {// vnesite svojo glavno kodo sem, da se zažene večkrat: if (num_loops % string_check_time == 0) {// preverite stanje niza check_string (); } if (num_loops == flow_check_time) {// preuči tok //Serial.println(num_string_seen); int število_toka = preuči_pretok (); // pošlji vrednosti send_out (flow_num); // ponastavi vars num_string_seen = 0; število_zank = 0; zamuda (flow_check_delay); } num_loops ++; zamuda (base_delay); } / * *Metoda za preverjanje, ali niz prečka vrata * / void check_string () {int string_state = digitalRead (GATE_PIN); //Serial.println(string_state); if (string_state == 0) {num_string_seen ++; //Serial.println("Žaga niz! "); }

int bot_state = digitalRead (GATE_PIN_2);

če (stanje_bota == 0) {num_string_seen--; //Serial.println("niz na dnu! "); } //Serial.print("Oštevanje nizov: "); //Serial.println(broj_string_seen); vrnitev; }/ * * Metoda za analizo, kateri del časovnega niza je zajel vrata */int exam_flow () {double percent_seen = double (num_string_seen)/max_in_flow; Serial.print ("Odstotek pokritosti:"); printDouble (odstotkov_pogledov, 100); // vrednost povečam v komunikacijsko lestvico int scaled_flow = int (percent_seen * msg_max_val); if (scaled_flow> msg_max_val) {scaled_flow = msg_max_val; } if (scaled_flow = 0) frac = (val - int (val)) * natančnost; drugače frac = (int (val)- val) * natančnost; Serial.println (zlom, DEC); }

Tu je koda za levo opozorilno napravo. Sledite istim korakom kot zgoraj za levo kontrolno svetilko. Kot lahko vidite, je edina razlika naslov, na katerega kontrolna naprava pošlje svoje rezultate.

/** Program, ki uporablja photogate za pregledovanje opozorilnih elementov

*/ #include #include #include #include RF24 radio (9, 10); // CE, CSN const bajt naslov [6] = "00001"; // --- program consts --- // časovna omejitev 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; // nastavite zgornjo vrednost var na podlagi lastnih poskusnih poskusov 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 // --- programske spremenljivke --- int num_string_seen = 0; int num_loops = 0; void setup () {// while (! Serial); // za floro // zakasnitev (500); num_string_seen = 0; število_zank = 0;

pinMode (GATE_PIN, INPUT);

pinMode (GATE_PIN_2, INPUT); Serial.begin (115200); // za odpravljanje napak radio.begin (); radio.openWritingPipe (naslov); radio.setPALevel (RF24_PA_MIN); radio.stopListening (); } void loop () {// vnesite svojo glavno kodo sem, da se zažene večkrat: if (num_loops % string_check_time == 0) {// preverite stanje niza check_string (); } if (num_loops == flow_check_time) {// preuči tok //Serial.println(num_string_seen); int število_toka = preuči_pretok (); // pošlji vrednosti send_out (flow_num); // ponastavi vars num_string_seen = 0; število_zank = 0; zamuda (flow_check_delay); } num_loops ++; zamuda (base_delay); } / * *Metoda za preverjanje, ali niz prečka vrata * / void check_string () {int string_state = digitalRead (GATE_PIN); //Serial.println(string_state); if (string_state == 0) {num_string_seen ++; //Serial.println("Žaga niz! "); }

int bot_state = digitalRead (GATE_PIN_2);

če (stanje_bota == 0) {num_string_seen--; //Serial.println("niz na dnu! "); } //Serial.print("Oštevanje nizov: "); //Serial.println(broj_string_seen); vrnitev; }/ * * Metoda za analizo, kateri del časovnega niza je zajel vrata */int exam_flow () {double percent_seen = double (num_string_seen)/max_in_flow; Serial.print ("Odstotek pokritosti:"); printDouble (odstotkov_pogledov, 100); // vrednost povečam v komunikacijsko lestvico int scaled_flow = int (percent_seen * msg_max_val); if (scaled_flow> msg_max_val) {scaled_flow = msg_max_val; } if (scaled_flow = 0) frac = (val - int (val)) * natančnost; drugače frac = (int (val)- val) * natančnost; Serial.println (zlom, DEC); }

5. korak: Sestavljanje opozoril

Kontrolna skupščina
Kontrolna skupščina

Posamezni deli

  • Opozorilni okvir
  • Preja
  • Sestavljen kontrolni krog
  • Baterija
  • Električni trak
  • Epoksid ali lepilo

STL -ji za 3D -tiskanje pomembnih komponent

  • STL za kontrolni okvir: levo, desno
  • STL za elektronsko škatlo: zgoraj, spodaj

Navodila za montažo

  1. Magnetne palice vstavite v reže 3D natisnjenega okvirja opozoril. Prepričajte se, da so magneti pravilno poravnani med desnim okvirjem in levim okvirjem, nato pa z epoksidom (ali lepilom) pritrdite magnete na okvir. Pustite, da se epoksid (ali lepilo) popolnoma strdi.
  2. Prekinjevalce fotografij postavite v zgornjo in spodnjo režo na zadnji strani okvirja. Previdno epoksi (ali lepite) plošče za prekinitev fotografij na okvir. Pustite, da se epoksid (ali lepilo) popolnoma strdi
  3. Odrežite ~ 7 kosov preje. En konec preje zavežite na zarezi prve navpične palice. Odrežite majhen kos električnega traku in zavijte električni trak na del preje, ki bo v območju motilcev fotografij. Prejo previjte skozi okvir tako, da gre skozi režo vrat za prekinitev fotografij.
  4. Magnetne palice vstavite v reže na dnu škatle za elektroniko s 3D tiskanjem. Prepričajte se, da so magneti pravilno poravnani med desno in levo škatlo, nato pa z epoksidom (ali lepilom) pritrdite magnete na okvir. Pustite, da se epoksid (ali lepilo) popolnoma strdi.
  5. Konstruirano kontrolno vezje postavite v škatlo za elektroniko, tako da različne komponente poravnate z njihovimi režami. Zaprite škatlo z elektronsko 3D -tiskano elektroniko. Epoksi (ali lepite) baterijo na vrh škatle, tako da je stikalo izpostavljeno.

6. korak: Strojna oprema zvočnikov

Strojna oprema zvočnikov
Strojna oprema zvočnikov
Strojna oprema zvočnikov
Strojna oprema zvočnikov
Strojna oprema zvočnikov
Strojna oprema zvočnikov

Izhodni sistem je sestavljen iz dveh tokokrogov zvočnikov, enega za vsako opozorilno napravo, opremljenih z brezžično komunikacijo in gumbom za nastavitev glasnosti. Najprej pripravimo protobore za uporabo z moduli nRF24L01, kot smo to storili za kontrolna vezja, tako da prerežemo vodi, ki ločujeta dve vrsti zatičev, kamor bo plošča postavljena.

Nato sestavite vezje, kot je prikazano na zgornjem diagramu, pri tem pa se sklicujte na fotografije zaključenih vezij.

Navodila za sestavo odbora

Če želite plošče zložiti v ohišje zvočnikov, morate glavne komponente postaviti na določena področja plošče. V naslednjih navodilih se bom skliceval na koordinatni sistem, ki se uporablja za označevanje vrstic in stolpcev na plošči Adafruit:

  1. Arduino Nano je treba namestiti ob zgornji rob plošče na sredini, tako da je pin Vin nameščen na G16. To bo omogočilo enostavno reprogramiranje Arduino Nano po montaži vezja.
  2. Ploščo nRF24L01 je treba postaviti v spodnji desni kot plošče in se raztezati na osem položajev od C1 do D5. To bo pustilo nRF24L01 viseti na protoboru, da bo omogočila boljšo brezžično komunikacijo.
  3. Akumulatorska baterija za sistem zvočnikov napaja obe protobordi, zato priključite dve GND tirnici/zatiči Arduino Nano in vtiče Vin na napajalnik.
  4. Pri "spodnjem" vezju je treba potenciometer postaviti na vrh plošče navzven, tako da so njegovi zatiči nameščeni v položajih J2, J4 in J6

    1. J2, Arduino Nano izhod iz digitalnega zatiča 3 (D3)
    2. J4 ↔ osnovni zatič 2N3904 tranzistorja
    3. J6 con nepovezan
  5. Pri "zgornjem" vezju je treba potenciometer postaviti na dno plošče navzven, tako da so njegovi zatiči nameščeni v položajih J9, J11 in J13

    1. J13, Arduino Nano izhod iz digitalnega zatiča 3 (D3)
    2. J11 ↔ osnovni pin 2N3904 tranzistorja
    3. J9 ↔ nepovezan

7. korak: Programska oprema za zvočnike

Tu je koda za zvočnik, ki komunicira z levo opozorilno napravo. Arduino Nano na spodnji plošči zvočnikov povežite z računalnikom, odprite Arduino IDE, kopirajte in prilepite to kodo vanj in jo naložite na ploščo.

#vključi

#include #include radio RF24 (7, 8); // CE, CSN // levi indikator, naslov bajta zgornje plošče zvočnikov [6] = "00001"; const int pitch = 2000; const int pitch_duration = 200; const int zvočnik = 3; const int delay_gain = 100; int status = 0; int cur_delay = 0; char brati [2]; void setup () {pinMode (zvočnik, OUTPUT); Serial.begin (115200); Serial.println ("Zagon brezžične komunikacije …"); radio.begin (); radio.openReadingPipe (0, naslov); radio.setPALevel (RF24_PA_MIN); radio.startListening (); } void loop () {if (radio.available ()) {radio.read (& read, sizeof (read)); status = (int) (beri [0]-'0'); Serial.print ("Prejeto:"); Serial.println (status); cur_delay = delay_gain*status; } if (cur_delay) {ton (zvočnik, višina tona, višina_zvoka); zamuda (cur_delay + pitch_duration); Serial.println ("Beep!"); }}

Tu je koda za zvočnik, ki komunicira z desnim opozorilnikom. Arduino Nano na zgornji plošči zvočnikov povežite z računalnikom, odprite Arduino IDE, kopirajte in prilepite to kodo vanj in jo naložite na ploščo.

#vključi

#include #include radio RF24 (7, 8); // CE, CSN // desni indikator, spodnji naslov bajta konstovne plošče zvočnikov [6] = "00010"; const int pitch = 1500; const int pitch_duration = 200; const int zvočnik = 3; const int delay_gain = 100; int status = 0; int cur_delay = 0; char brati [2]; void setup () {pinMode (zvočnik, OUTPUT); Serial.begin (115200); Serial.println ("Zagon brezžične komunikacije …"); radio.begin (); radio.openReadingPipe (0, naslov); radio.setPALevel (RF24_PA_MIN); radio.startListening (); } void loop () {if (radio.available ()) {radio.read (& read, sizeof (read)); status = (int) (beri [0]-'0'); Serial.print ("Prejeto:"); Serial.println (status); cur_delay = delay_gain*status; } if (cur_delay) {ton (zvočnik, višina tona, višina_zvoka); zamuda (cur_delay+pitch_duration); Serial.println ("Beep!"); }}

8. korak: Sklop zvočnika

Posamezni deli

  • 2 sestavljena vezja zvočnikov
  • 2 zvočnika
  • 1 paket baterij

STL za 3D tiskanje

  • Škatla na vrhu
  • Dno škatle

Navodila za fizično montažo

  1. Vezja zvočnikov previdno položite na dno škatle, eno ploščo eno nad drugo, tako da so gumbi za glasnost drug poleg drugega in zdrsnejo v luknje. Komunikacijski čipi morajo biti izpostavljeni na zadnji strani škatle.
  2. Zvočnike postavite na levo in desno stran tiskanega vezja, pri tem pazite, da zvočniki ustrezajo pravilnim stranicam. Zvočnike poravnajte z režami na straneh škatle.
  3. Žice akumulatorja vstavite skozi majhno luknjico na zadnji strani škatle. Epoksi (ali lepilo) baterijo na zadnji strani škatle, tako da je stikalo izpostavljeno.
  4. 3D natisnjeno škatlo postavite na dno škatle, da vsebuje vse.

9. korak: Namestitev/montaža

Namestitev/montaža
Namestitev/montaža
  1. Vklopite kontrolne svetilke tako, da stikala na baterijskih sklopih pomaknete v položaj "ON". Enako storite za sklop zvočnikov, da vklopite izhodni sistem.
  2. Zvočne kontrolne svetilke najlažje namestite z dvema osebama, lahko pa z eno. Za pritrditev na neobdelan drog bi opozorilne enote najlažje postavili pred dviganjem jadra.
  3. Če želite, da je okvir pripovedke pravilno usmerjen, poglejte zarezo na eni od navpičnih palic. Ko okvir držite pokonci, mora biti zareza obrnjena proti vrhu. Stran okvirja s to palico mora biti obrnjena tudi proti sprednjemu delu čolna.
  4. Postavite eno od pripovedk na želeno višino in položaj na jadru. Postavljena naj bo tako, da bo preja na istem mestu, kot bi bila, če bi bila del tradicionalne pripovedi.
  5. Ko imate eno pripovedko na želenem mestu. Drugo pripovedko postavite na drugo stran jadra, točno nasproti prve, ki ste jo postavili, tako da se magneti poravnajo. Ko magneti vzpostavijo povezavo, morajo okvir držati varno ob jadru. Poravnajte magnete ohišij elektronike za vsako pripovedno zgodbo na obeh straneh jadra, tako da se tudi povežejo.
  6. Če opazite, da ko vrvica teče naravnost nazaj, ne prečka pred zgornjimi vrati, zavrtite okvir pripovedke tako, da je zadnja polovica okvirja obrnjena navzdol. Obrnite okvir, dokler niz ne preide skozi zgornji prekinjevalec fotografij, ko preja teče naravnost nazaj.

10. korak: Odpravljanje težav

Vsi deli kode imajo izjave o odpravljanju napak, ki označujejo pošiljanje, sprejemanje in obdelavo podatkov. Odpiranje vrat COM s pomočjo Arduino IDE z enim od podsistemov Arduino Nano, priključenim na računalnik, vam bo omogočilo ogled teh sporočil o stanju.

Če sistem ne deluje pravilno, preklopite stikala na vseh komponentah.

11. korak: Možni naslednji koraki

  • Hidroizolacija
  • Komunikacija na daljše razdalje. WiFi je obetavna možnost.
  • Naša trenutna nastavitev trenutno uporablja 2 motilca fotografij na opozorilno napravo. Dodajanje več motilcev fotografij v sistem bi bilo lahko zanimivo poskusiti.

Priporočena: