Sadržaj:

Zvučni pokazivači za jedrenje: 11 koraka
Zvučni pokazivači za jedrenje: 11 koraka

Video: Zvučni pokazivači za jedrenje: 11 koraka

Video: Zvučni pokazivači za jedrenje: 11 koraka
Video: Экзамен в DMV. 15 ошибок. Авто-Словарь на английском. Ссылки внизу. 2024, Srpanj
Anonim
Image
Image
Telltale hardver
Telltale hardver

Signalizatori su dijelovi žice koji se koriste u plovidbi kako bi se pokazalo postoji li turbulentno ili laminarno strujanje preko jedra. Međutim, komadići pređe različitih boja pričvršćeni sa svake strane jedra čisto su vizualni pokazatelji. Ovi zvučni signali pomoćni su uređaj koji ima za cilj prenijeti vizualne informacije u slušnom obliku za mornare s vidom i slabovidnost, poput Pauline.

Uređaj se sastoji od ulaznog sustava koji očitava kretanje kontrolnog uređaja i izlaznog sustava koji emitira niz zvučnih signala koji prenose informacije o protoku zraka.

Za izradu ovog uređaja potreban je pristup opremi za lemljenje i 3D pisaču.

Korak 1: Opis materijala

BOM s vezama i cijenama

Napomena: trebat će vam 2 seta od svega navedenog.

Ulazni sustav

  • Arduino Nano
  • Adapruit perma-proto matična ploča pola veličine
  • nRF24L01 Bežični primopredajnički modul
  • Prekidač fotografija
  • Sparkfun foto prekidna ploča
  • Arduino kompatibilna 9V baterija
  • 9V baterija
  • Nekoliko duljina žice kalibra 22
  • Pređa
  • Neodimijski magneti
  • Epoksid

Izlazni sustav

  • Arduino Nano
  • Adapruit perma-proto matična ploča pola veličine
  • nRF24L01 Bežični primopredajnički modul
  • Arduino kompatibilna 9V baterija
  • Potenciometar od 1K ohma
  • Otpor 120 Ohma
  • 2N3904 tranzistor
  • 0,1 uF kondenzator
  • Arduino kompatibilan zvučnik

GitHub datoteke

  • Sve kode i STL datoteke potrebne za konstrukciju ovih kontrolnih znakova mogu se pronaći u ovom GitHub repo -u.
  • Trebat će vam dva kompleta kućišta i jedan od kućišta zvučnika.

Korak 2: Alati/Strojevi/Softverski zahtjevi

Za programiranje Arduina morat ćete preuzeti Arduino IDE. Link za preuzimanje možete pronaći ovdje.

Za programiranje nRF24L01 modula morat ćete preuzeti njegovu knjižnicu putem Arduino IDE -a. Alati> Upravljanje knjižnicama …> instaliranje knjižnice RF24

Za sastavljanje elektroničkih komponenti potreban je pristup osnovnim alatima za lemljenje. Pumpa za odmrzavanje također može biti korisna, ali nije nužna.

Za izradu okvira i kućišta zvučnika potreban vam je pristup 3D pisaču.

Korak 3: Telltale hardver

Telltale hardver
Telltale hardver
Telltale hardver
Telltale hardver

Sastavite krug prema gornjim dijagramima. Arduino Nano trebao bi biti poravnat s vrhom protoboarda. To vam omogućuje pristup USB priključku čak i nakon što je priključena sva elektronika.

Kako biste izbjegli kratki spoj elektronike, svakako izrežite tragove ploče na redovima koje će nRF24 zauzeti kao što je prikazano na gornjoj slici.

Inače će vam trebati kratkospojni kablovi za povezivanje nRF24 s protoborom.

Prikaz otpora otpornika, žica GND i 5V na prekidaču fotografija nisu prikazani. Povežite prekidač za fotografije kako je naznačeno na ploči za razbijanje. Uključena je slika ploče za razbijanje.

Krugovi desne i lijeve kontrolne poluge potpuno su isti.

Korak 4: Telltale softver

Ovdje je kôd za Desnu kontrolnu tablu. Priključite nano desnog kazivača na svoje računalo, otvorite Arduino IDE, kopirajte i zalijepite ovaj kod u njega i prenesite ga na ploču.

/** Program koji koristi photogate za ispitivanje kontrolnih točaka

*/ #include #include #include #include RF24 radio (9, 10); // CE, CSN const bajt adresa [6] = "00010"; // --- program consts --- // time 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; // postavite gornji var na temelju vlastitih eksperimentalnih pokusa 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 // --- varijacije programa --- int num_string_seen = 0; int num_loops = 0; void setup () {// while (! Serijski); // za floru // kašnjenje (500); num_string_seen = 0; num_loops = 0; pinMode (GATE_PIN, INPUT); pinMode (GATE_PIN_2, INPUT); Serial.begin (115200); // za ispravljanje pogrešaka radio.begin (); radio.openWritingPipe (adresa); radio.setPALevel (RF24_PA_MIN); radio.stopListening (); } void loop () {// ovdje unesite svoj glavni kôd, za ponavljanje izvođenja: if (num_loops % string_check_time == 0) {// provjerite stanje niza check_string (); } if (num_loops == flow_check_time) {// ispitati tok //Serial.println(num_string_seen); int protok_broj = ispitaj_tok (); // šalje vrijednosti send_out (flow_num); // resetiranje vars num_string_seen = 0; broj_ petlji = 0; kašnjenje (flow_check_delay); } num_loops ++; kašnjenje (base_delay); } / * *Metoda provjere prelazi li niz vrata * / void check_string () {int string_state = digitalRead (GATE_PIN); //Serial.println(string_state); if (string_state == 0) {num_string_seen ++; //Serial.println("Saw string! "); }

int bot_state = digitalRead (GATE_PIN_2);

if (stanje_bota == 0) {num_string_seen--; //Serial.println("string on bottom! "); } //Serial.print("Counting string prolazi: "); //Serial.println(broj_string_seen); povratak; }/ * * Metoda za analizu koji dio vremenskog niza pokriva vrata */int exam_flow () {double percent_seen = double (num_string_seen)/max_in_flow; Serial.print ("Postotak pokrivenosti:"); printDouble (postotak_gledano, 100); // skalirajte vrijednost na komunikacijsku ljestvicu 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)) * preciznost; else frac = (int (val)- val) * preciznost; Serijski.println (prijelom, DEC); }

Ovdje je kôd za lijevu kontrolnu tablu. Slijedite iste korake kao gore za lijevu kontrolnu tablu. Kao što vidite, jedina razlika je adresa na koju kontrolna jedinica šalje svoje rezultate.

/** Program koji koristi photogate za ispitivanje kontrolnih točaka

*/ #include #include #include #include RF24 radio (9, 10); // CE, CSN const bajt adresa [6] = "00001"; // --- program consts --- // time 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; // postavite gornji var na temelju vlastitih eksperimentalnih pokusa 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 // --- varijacije programa --- int num_string_seen = 0; int num_loops = 0; void setup () {// while (! Serijski); // za floru // kašnjenje (500); num_string_seen = 0; broj_ petlji = 0;

pinMode (GATE_PIN, INPUT);

pinMode (GATE_PIN_2, INPUT); Serial.begin (115200); // za ispravljanje pogrešaka radio.begin (); radio.openWritingPipe (adresa); radio.setPALevel (RF24_PA_MIN); radio.stopListening (); } void loop () {// ovdje unesite svoj glavni kôd, za ponavljanje izvođenja: if (num_loops % string_check_time == 0) {// provjerite stanje niza check_string (); } if (num_loops == flow_check_time) {// ispitati tok //Serial.println(num_string_seen); int protok_broj = ispitaj_tok (); // šalje vrijednosti send_out (flow_num); // resetiranje vars num_string_seen = 0; broj_ petlji = 0; kašnjenje (flow_check_delay); } num_loops ++; kašnjenje (base_delay); } / * *Metoda provjere prelazi li niz vrata * / void check_string () {int string_state = digitalRead (GATE_PIN); //Serial.println(string_state); if (string_state == 0) {num_string_seen ++; //Serial.println("Saw string! "); }

int bot_state = digitalRead (GATE_PIN_2);

if (bot_state == 0) {num_string_seen--; //Serial.println("string on bottom! "); } //Serial.print("Counting string prolazi: "); //Serial.println(broj_string_seen); povratak; }/ * * Metoda za analizu koji dio vremenskog niza pokriva vrata */int exam_flow () {double percent_seen = double (num_string_seen)/max_in_flow; Serial.print ("Postotak pokrivenosti:"); printDouble (postotak_gledano, 100); // skalirajte vrijednost na komunikacijsku ljestvicu 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)) * preciznost; else frac = (int (val)- val) * preciznost; Serijski.println (prijelom, DEC); }

Korak 5: Sustav kazivanja

Izdajnička skupština
Izdajnička skupština

Pojedini dijelovi

  • Izdavački okvir
  • Pređa
  • Konstruiran kontrolni krug
  • Pakovanje baterija
  • Električna traka
  • Epoksid ili ljepilo

STL -ovi za značajne komponente 3D ispisa

  • STL za kontrolni okvir: lijevo, desno
  • STL -ovi za elektroničku kutiju: gore, dolje

Upute za montažu

  1. Stavite magnete za šipke u utore okvira 3D ispisanog kontrolnog okvira. Provjerite jesu li magneti pravilno postavljeni između desnog okvira i lijevog okvira, a zatim upotrijebite epoksid (ili ljepilo) za pričvršćivanje magneta na okvir. Dopustite da se epoksid (ili ljepilo) potpuno stegne.
  2. Prekidače za fotografije postavite u gornji i donji utor na stražnjoj strani okvira. Pažljivo epoksid (ili zalijepite) ploče za prekidanje fotografija na okvir. Dopustite da se epoksid (ili ljepilo) potpuno stegne
  3. Izrežite ~ 7 komada pređe. Vežite jedan kraj pređe na zarezu prve okomite šipke. Odrežite mali komad električne trake i omotajte električnu traku preko dijela pređe koji će se nalaziti u području prekidača za fotografije. Provucite pređu kroz okvir tako da prođe kroz otvor na vratima prekidača fotografija.
  4. Stavite magnete za šipke u utore na dnu 3D tiskane elektroničke kutije. Provjerite jesu li magneti pravilno postavljeni između desne i lijeve kutije, a zatim upotrijebite epoksid (ili ljepilo) za pričvršćivanje magneta na okvir. Dopustite da se epoksid (ili ljepilo) potpuno stegne.
  5. Konstruirani kontrolni krug postavite u kutiju za elektroniku, poravnavajući različite komponente s utorima. Zatvorite kutiju s 3D tiskanom elektronikom na vrhu. Epoksid (ili zalijepite) bateriju na vrh kutije tako da je prekidač izložen.

Korak 6: Hardver zvučnika

Hardver zvučnika
Hardver zvučnika
Hardver zvučnika
Hardver zvučnika
Hardver zvučnika
Hardver zvučnika

Izlazni sustav sastoji se od dva kruga zvučnika, po jedan za svaku kontrolnu lampicu, opremljen bežičnom komunikacijom i gumbom za podešavanje glasnoće. Prvo, pripremite protoboarde za uporabu s modulima nRF24L01, kao što smo to učinili za kontrolne krugove, presijecanjem kabela koji odvajaju dva reda pinova na kojima će ploča biti postavljena.

Zatim sastavite krug kao što je prikazano na gornjoj shemi pozivajući se na fotografije dovršenih krugova.

Upute za sastavljanje odbora

Kako bi se ploče složile u kućište zvučnika, glavne komponente moraju se postaviti na određena područja ploče. U sljedećim uputama referirat ću se na koordinatni sustav koji se koristi za označavanje redaka i stupaca na ploči Adafruit:

  1. Arduino Nano mora biti postavljen uz gornji rub ploče u sredini tako da Vin pin bude postavljen na G16. To će omogućiti jednostavno reprogramiranje Arduino Nanoa nakon što je sklop sklopljen.
  2. Ploča nRF24L01 mora biti postavljena u donji desni kut ploče u rasponu od osam položaja od C1 do D5. To će ostaviti nRF24L01 da visi s protobora kako bi se omogućila bolja bežična komunikacija.
  3. Baterija za sustav zvučnika napaja obje protoborove, stoga svakako spojite dvije GND vodilice/pinove Arduino Nano i Vin pinove na izvor napajanja.
  4. Za "donji" krug, potenciometar treba postaviti na vrh ploče okrenute prema van, tako da se njegovi zatiči postave na položaje J2, J4 i J6

    1. J2, Arduino Nano izlaz s digitalnog pina 3 (D3)
    2. J4 ↔ osnovni pin 2N3904 tranzistora
    3. J6 ↔ nepovezan
  5. Za "gornji" krug, potenciometar treba postaviti na dno ploče okrenute prema van, tako da se njegovi pinovi postave na položaje J9, J11 i J13

    1. J13 ↔ Arduino Nano izlaz s digitalnog pina 3 (D3)
    2. J11 pin osnovni pin 2N3904 tranzistora
    3. J9 ↔ nepovezan

Korak 7: Softver zvučnika

Ovdje je kôd za zvučnik koji komunicira s lijevim pokazivačem. Spojite Arduino Nano na donjoj ploči zvučnika s računalom, otvorite Arduino IDE, kopirajte i zalijepite ovaj kod u njega i prenesite ga na ploču.

#uključi

#include #include RF24 radio (7, 8); // CE, CSN // lijevi pokazivač, gornja ploča zvučnika const byte adresa [6] = "00001"; const int pitch = 2000; const int pitch_duration = 200; const int zvučnik = 3; const int delay_gain = 100; int status = 0; int cur_delay = 0; char read [2]; void setup () {pinMode (zvučnik, OUTPUT); Serial.begin (115200); Serial.println ("Pokretanje bežične komunikacije …"); radio.begin (); radio.openReadingPipe (0, adresa); radio.setPALevel (RF24_PA_MIN); radio.startListening (); } void loop () {if (radio.available ()) {radio.read (& read, sizeof (read)); status = (int) (pročitajte [0]-'0'); Serial.print ("Primljeno:"); Serial.println (status); cur_delay = delay_gain*status; } if (cur_delay) {ton (zvučnik, visina, visina_dužine); kašnjenje (cur_delay + pitch_duration); Serial.println ("Bip!"); }}

Ovdje je kôd za zvučnik koji komunicira s desnim pokazivačem. Spojite Arduino Nano na gornjoj ploči zvučnika s računalom, otvorite Arduino IDE, kopirajte i zalijepite ovaj kod u njega i prenesite ga na ploču.

#uključi

#include #include RF24 radio (7, 8); // CE, CSN // desni pokazivač, donja adresa const bajta ploče zvučnika [6] = "00010"; const int pitch = 1500; const int pitch_duration = 200; const int zvučnik = 3; const int delay_gain = 100; int status = 0; int cur_delay = 0; char read [2]; void setup () {pinMode (zvučnik, OUTPUT); Serial.begin (115200); Serial.println ("Pokretanje bežične komunikacije …"); radio.begin (); radio.openReadingPipe (0, adresa); radio.setPALevel (RF24_PA_MIN); radio.startListening (); } void loop () {if (radio.available ()) {radio.read (& read, sizeof (read)); status = (int) (pročitajte [0]-'0'); Serial.print ("Primljeno:"); Serial.println (status); cur_delay = delay_gain*status; } if (cur_delay) {ton (zvučnik, visina, visina_dužine); kašnjenje (cur_delay+pitch_duration); Serial.println ("Bip!"); }}

Korak 8: Sklop zvučnika

Pojedini dijelovi

  • 2 izgrađena kola zvučnika
  • 2 zvučnika
  • 1 baterija

STL -ovi za 3D ispis

  • Vrh kutije
  • Dno kutije

Upute za fizičko sastavljanje

  1. Pažljivo postavite krugove zvučnika na dno kutije, jednu ploču jednu na drugu tako da su gumbi za glasnoću jedan do drugog i uvuku se u rupe. Komunikacijski čipovi trebaju biti izloženi na stražnjoj strani kutije.
  2. Zvučnike postavite s lijeve i desne strane ploče, pazeći da zvučnici odgovaraju ispravnim stranama. Poravnajte zvučnike s utorima na bočnim stranama kutije.
  3. Provucite žice baterije kroz mali otvor na stražnjoj strani kutije. Epoksid (ili zalijepite) bateriju na stražnju stranu kutije tako da je prekidač izložen.
  4. Postavite 3D tiskanu kutiju na dno kutije kako bi sadržala sve.

Korak 9: Postavljanje/montaža

Postavljanje/montaža
Postavljanje/montaža
  1. Uključite pokazivače okretanjem prekidača na baterijama u položaj "UKLJUČENO". Učinite isto za sklop zvučnika kako biste uključili izlazni sustav.
  2. Montiranje zvučnih pokazivača najjednostavnije je s dvije osobe, ali može i s jednom. Za montažu na upravljač bez navoja, pokazivači bi se najlakše stavili prije podizanja jedra.
  3. Kako biste bili sigurni da je okvir za pričanje pravilno orijentiran, pogledajte zarez na jednoj od okomitih šipki. Kad okvir držite uspravno, zarez bi trebao biti prema vrhu. Strana okvira s tom šipkom također bi trebala biti okrenuta prema prednjem dijelu broda.
  4. Postavite jednu od pripovijedaka na željenu visinu i položaj na jedru. Treba ga postaviti tako da pređa bude na istom mjestu na kojem bi bila da je dio tradicionalne priče.
  5. Kad jednom ispričate priču na željenom mjestu. Drugu priču ispričajte s druge strane jedra, točno nasuprot prve koju ste postavili, tako da se magneti poravnaju. Nakon što se magneti povežu, trebali bi držati okvir čvrsto na jedru. Poravnajte magnete kućišta elektronike za svaku priču s obje strane jedra tako da se i oni spoje.
  6. Ako primijetite da kada žica teče ravno natrag ne prelazi ispred gornjih vrata, okrenite okvir pripovijetke tako da stražnja polovica okvira ide prema dolje. Okrećite okvir dok žica ne prođe kroz gornji prekidač fotografija kad pređa teče ravno natrag.

Korak 10: Rješavanje problema

Svi dijelovi koda imaju ispis ispisa za otklanjanje pogrešaka koji označava da šalju, primaju i obrađuju podatke. Otvaranje COM porta pomoću Arduino IDE -a s jednim od podsustava Arduino Nano priključenim na računalo omogućit će vam pregled ovih poruka o statusu.

Ako sustav ne radi ispravno, uključite sve komponente na prekidačima.

Korak 11: Mogući sljedeći koraci

  • Hidroizolacija
  • Komunikacija većeg dometa. WiFi je opcija koja obećava.
  • Naša trenutna postavka trenutačno koristi 2 prekidača fotografija po pokazivaču. Dodavanje više prekidača fotografija u sustav moglo bi biti zanimljivo isprobati.

Preporučeni: