Sadržaj:
- Korak 1: Opis materijala
- Korak 2: Alati/Strojevi/Softverski zahtjevi
- Korak 3: Telltale hardver
- Korak 4: Telltale softver
- Korak 5: Sustav kazivanja
- Korak 6: Hardver zvučnika
- Korak 7: Softver zvučnika
- Korak 8: Sklop zvučnika
- Korak 9: Postavljanje/montaža
- Korak 10: Rješavanje problema
- Korak 11: Mogući sljedeći koraci
Video: Zvučni signali za jedrenje: 11 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:06
Signali su dijelovi žice koji se koriste u jedrenju da pokažu 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 oštećenjem vida, poput Pauline.
Uređaj se sastoji od ulaznog sistema koji očitava kretanje kontrolne lampice i izlaznog sistema koji emituje niz zvučnih signala koji prenose informacije o protoku vazduha.
Za izradu ovog uređaja potreban je pristup opremi za lemljenje i 3D štampaču.
Korak 1: Opis materijala
BOM sa linkovima i cijenama
Napomena: trebat će vam 2 seta od svega navedenog.
Ulazni sistem
- Arduino Nano
- Adabruit perma-proto matična ploča pola veličine
- nRF24L01 Bežični primopredajnički modul
- Photo Interrupter
- Sparkfun ploča za prekidanje fotografija
- Arduino kompatibilna 9V baterija
- 9V baterija
- Nekoliko dužina žice kalibra 22
- Pređa
- Neodimijumski magneti
- Epoksid
Izlazni sistem
- Arduino Nano
- Adabruit perma-proto matična ploča pola veličine
- nRF24L01 Bežični primopredajnički modul
- Arduino kompatibilna 9V baterija
- Potenciometar od 1K ohma
- 120 Ohm otpornik
- 2N3904 tranzistor
- 0,1 uF kondenzator
- Arduino kompatibilan zvučnik
GitHub datoteke
- Svi kodovi i STL datoteke potrebni za konstrukciju ovih indikatora mogu se pronaći u ovom GitHub repo -u.
- Potrebna su vam dva kompleta kućišta i jedan od kućišta zvučnika.
Korak 2: Alati/Strojevi/Softverski zahtjevi
Da biste programirali Arduino, morate preuzeti Arduino IDE. Link za preuzimanje možete pronaći ovdje.
Da biste programirali nRF24L01 modul, morat ćete preuzeti njegovu biblioteku putem Arduino IDE -a. Alati> Upravljanje bibliotekama …> instalirajte biblioteku RF24
Za sastavljanje elektroničkih komponenti potreban je pristup osnovnim alatima za lemljenje. Pumpa za odleđivanje takođe može biti korisna, ali nije neophodna.
Za konstrukciju okvira i kućišta zvučnika potreban vam je pristup 3D štampaču.
Korak 3: Telltale hardver
Sastavite krug prema gornjim dijagramima. Arduino Nano bi trebao biti poravnat s vrhom protoboard -a. Ovo vam omogućava pristup USB priključku čak i nakon što je priključena sva elektronika.
Kako biste izbjegli kratki spoj elektronike, svakako izrežite tragove protobora na redove koje će nRF24 zauzeti kao što je prikazano na gornjoj slici.
U suprotnom će vam trebati kratkospojni kablovi za povezivanje nRF24 na protoboard.
Veza otpornika, žica GND i 5V na foto prekidaču nisu prikazane. 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. Povežite Nano Right Telltale nano s računarom, otvorite Arduino IDE, kopirajte i zalijepite ovaj kod u njega i postavite ga na ploču.
/** Program koji koristi photogate za ispitivanje indikatora
*/ #include #include #include #include RF24 radio (9, 10); // CE, CSN const bajt adresa [6] = "00010"; // --- program consts --- // vrijeme 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 osnovu vaših eksperimentalnih ispitivanja 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 (! Serial); // 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 () {// unesite glavni kod ovde, da bi se ponavljao: if (num_loops % string_check_time == 0) {// proveri 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; num_loops = 0; kašnjenje (flow_check_delay); } num_loops ++; kašnjenje (base_delay); } / * *Metoda provjere da li string prelazi 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 prolaze: "); //Serial.println(num_string_seen); return; }/ * * 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 (percent_seen, 100); // skalirajte vrijednost na komunikacijsku skalu 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; Serial.println (razlomka, DEC); }
Evo koda za lijevu kontrolnu tablu. Slijedite iste korake kao gore za lijevu kontrolnu tablu. Kao što vidite, jedina razlika je adresa na koju kontrolni uređaj šalje svoje rezultate.
/** Program koji koristi photogate za ispitivanje indikatora
*/ #include #include #include #include RF24 radio (9, 10); // CE, CSN const bajt adresa [6] = "00001"; // --- program consts --- // vrijeme 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 osnovu vaših eksperimentalnih ispitivanja 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 (! Serial); // 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 () {// unesite glavni kod ovde, da bi se ponavljao: if (num_loops % string_check_time == 0) {// proveri 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; num_loops = 0; kašnjenje (flow_check_delay); } num_loops ++; kašnjenje (base_delay); } / * *Metoda provjere da li string prelazi 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 prolaze: "); //Serial.println(num_string_seen); return; }/ * * 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 (percent_seen, 100); // skalirajte vrijednost na komunikacijsku skalu 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; Serial.println (razlomka, DEC); }
Korak 5: Sustav kazivanja
Pojedinačni dijelovi
- Izdavački okvir
- Pređa
- Konstruisan kontrolni krug
- Baterija
- Električna traka
- Epoksid ili ljepilo
STL -ovi za značajne komponente 3D štampanja
- STL za kontrolni okvir: lijevo, desno
- STL -ovi za elektroničku kutiju: gore, dolje
Upute za montažu
- Postavite šipkaste magnete u proreze na 3D štampanom okviru. Uvjerite se da su 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.
- Prekidače za fotografije postavite u gornji i donji otvor 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
- 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 biti u području foto prekidača. Provucite pređu kroz okvir tako da prođe kroz otvor na vratima prekidača za fotografije.
- Postavite šipkaste magnete u utore na dnu 3D štampane elektroničke kutije. Uvjerite se da su 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.
- Postavite izgrađeno kontrolno kolo u kutiju za elektroniku, poravnavajući različite komponente s njihovim utorima. Zatvorite kutiju sa 3D štampanom elektronikom na vrhu. Epoksid (ili zalijepite) bateriju na vrh kutije tako da je prekidač izložen.
Korak 6: Hardver zvučnika
Izlazni sistem se sastoji od dva kruga zvučnika, po jedan za svaku kontrolnu lampicu, opremljen bežičnom komunikacijom i dugmetom za podešavanje jačine zvuka. Prvo, pripremite protoborove za upotrebu s modulima nRF24L01, kao što smo to učinili za kontrolne krugove, tako što ćete presjeći vodiče koji razdvajaju 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 završenih krugova.
Upute za sastavljanje odbora
Da biste složili ploče u kućište zvučnika, glavne komponente moraju biti postavljene na određena područja ploče. U sljedećim uputama referirat ću se na koordinatni sistem koji se koristi za označavanje redova i stupaca na proto ploči Adafruit:
- 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.
- Ploča nRF24L01 mora biti postavljena u donji desni ugao ploče u rasponu od osam pozicija od C1 do D5. Ovo će ostaviti nRF24L01 da visi sa protobora kako bi se omogućila bolja bežična komunikacija.
- Komplet baterija za sistem zvučnika napaja obje protoborove, stoga svakako spojite dvije Arduino Nano GND šine/pinove i Vin pinove na izvor napajanja.
-
Za "donji" krug, potenciometar treba postaviti na vrh ploče okrenute prema van, tako da se njegovi pinovi postave na položaje J2, J4 i J6
- J2, Arduino Nano izlaz sa digitalnog pina 3 (D3)
- J4 ↔ osnovni pin 2N3904 tranzistora
- J6 ↔ nepovezan
-
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
- J13 ↔ Arduino Nano izlaz sa digitalnog pina 3 (D3)
- J11 ↔ osnovni pin 2N3904 tranzistora
- 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čunarom, otvorite Arduino IDE, kopirajte i zalijepite ovaj kod u njega i postavite ga na ploču.
#include
#include #include RF24 radio (7, 8); // CE, CSN // lijevi pokazivač, gornja ploča zvučnika const bajt 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 (govornik, visina, visina_dužine); kašnjenje (cur_delay + pitch_duration); Serial.println ("Bip!"); }}
Ovdje je kôd za zvučnik koji komunicira s desnim kontrolnim uređajem. Spojite Arduino Nano na gornjoj ploči zvučnika s računarom, otvorite Arduino IDE, kopirajte i zalijepite ovaj kod u njega i postavite ga na ploču.
#include
#include #include RF24 radio (7, 8); // CE, CSN // desni pokazivač, donja adresa konstovne bajt 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 (govornik, visina, visina_dužine); kašnjenje (cur_delay+pitch_duration); Serial.println ("Bip!"); }}
Korak 8: Sklop zvučnika
Pojedinačni dijelovi
- 2 izgrađena kola zvučnika
- 2 zvučnika
- 1 baterija
STL -ovi za 3D štampanje
- Box top
- Dno kutije
Upute za fizičko sastavljanje
- Pažljivo postavite krugove zvučnika na dno kutije, jednu ploču jednu na drugu tako da su dugmad za jačinu zvuka jedno pored drugog i uvuku se u rupe. Komunikacijski čipovi trebaju biti izloženi na stražnjoj strani kutije.
- Postavite zvučnike 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.
- Provucite žice kompleta baterija kroz mali otvor na poleđini kutije. Epoksid (ili ljepilo) bateriju na stražnjoj strani kutije tako da je prekidač izložen.
- Postavite 3D štampanu kutiju na vrh kutije da sadrži sve.
Korak 9: Postavljanje/montaža
- 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 sistem.
- Montiranje zvučnih pokazivača najjednostavnije je s dvije osobe, ali se može i s jednom. Za postavljanje na upravljač bez namotaja, kontrolne poluge bi se najlakše stavile prije podizanja jedra.
- Kako biste bili sigurni da je okvir za pričanje dobro 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 čamca.
- Postavite jednu od kazivanja na željenu visinu i položaj na jedru. Trebalo bi ga postaviti tako da pređa bude na istom mjestu na kojem bi bilo da je dio tradicionalne priče.
- Kad jednom postavite priču na željeno mjesto. Drugu priču postavite na drugu stranu 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 sa svake strane jedra tako da se i oni spoje.
- Ako primijetite da kada žica teče ravno unatrag ne prelazi ispred gornje kapije, okrenite okvir priče tako da zadnja polovica okvira ide prema dolje. Rotirajte okvir dok žica ne prođe kroz gornji prekidač fotografija kada pređa teče ravno natrag.
Korak 10: Rješavanje problema
Svi dijelovi koda imaju ispis ispisa za otklanjanje grešaka koji označava da šalju, primaju i obrađuju podatke. Otvaranje COM porta pomoću Arduino IDE -a s jednim od Arduino Nano podsistema priključenim na računalo omogućit će vam pregled ovih poruka o statusu.
Ako sistem ne radi ispravno, uključite sve komponente.
Korak 11: Mogući sljedeći koraci
- Hidroizolacija
- Komunikacija većeg dometa. WiFi je opcija koja obećava.
- Naša trenutna postavka trenutno koristi 2 prekidača fotografija po kontrolnoj lampici. Dodavanje više prekidača fotografija u sistem moglo bi biti zanimljivo isprobati.
Preporučuje se:
Kućni zvučni sistem: 6 koraka (sa slikama)
Kućni zvučni sistem: Ovaj audio sistem je jednostavan za izradu i jeftin (manje od 5 USD plus neki oporabljeni materijali pronađeni u mojoj radionici). Omogućava dovoljno jaku audiciju za veliku prostoriju. Kao izvori signala mogu se koristiti: -Bluetooth sa bilo kojeg mobilnog telefona telefon. -MP3 iz memorije
Zvučni signal za upravljanje projektom Arduino+Blynk: 8 koraka
Arduino+Blynk projektni zujalica: Blynk se koristi za omogućavanje IoT -a na vrlo prikladan način. U ovom projektu ne koristim nijedan bluetooth ili Wifi modul za bežičnu komunikaciju. To je moguće pomoću Blynk aplikacije koja vam može pomoći da dizajnirate vlastitu aplikaciju u
Zvučni zatvarači: 6 koraka (sa slikama)
Zvučni zatvarači: Zvučni ogrtač je vrhunski mikrofon zasnovan na kapsuli mikrofona PUI 5024. Zaista su tihi i osjetljivi, čineći savršen mikrofon za prirodu. Oni su i jeftini po cijeni ispod 3 USD svaki u količini od 10. Imaju interni FET koji
Jeftini Dirt-O-metar za prljavštinu-9 USD Arduino zvučni visinomjer: 4 koraka (sa slikama)
Jeftini Dirt-O-metar za prljavštinu-9 USD Arduino zvučni visinomjer: Dytters (A.K.A Audible Altimeters) spasili su živote padobrancima toliko godina. Sada će i Audible Abby uštedjeti novac. Bašić Dytters ima četiri alarma, jedan na putu prema gore, a tri na putu prema dolje. Tokom vožnje avionom, padobranci moraju znati kada
Vjetro stanica za jedrenje na bazi MQTT & AWS: 3 koraka (sa slikama)
Vjetropostaja za jedrenje na bazi MQTT & AWS: U Shenzhenu postoji mnogo prekrasnih plaža. U ljetnim danima najomiljeniji sport mi je jedrenje. Za sport u jedrenju i dalje sam starter, sviđa mi se osjećaj morske vode koji mi dodiruje lice, i još više, dobio sam mnogo novih prijatelja sa ovim sportom. Ali za