Sisällysluettelo:
- Vaihe 1: Materiaaliluettelo
- Vaihe 2: Työkalut/koneet/ohjelmistovaatimukset
- Vaihe 3: Ilmoita laitteisto
- Vaihe 4: Kerro ohjelmisto
- Vaihe 5: Ilmaisinkokoonpano
- Vaihe 6: Kaiutinlaitteisto
- Vaihe 7: Kaiutinohjelmisto
- Vaihe 8: Kaiutinkokoonpano
- Vaihe 9: Asennus/asennus
- Vaihe 10: Vianetsintä
- Vaihe 11: Mahdolliset seuraavat vaiheet
Video: Purjehduksen äänimerkit: 11 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:01
Ilmaisimet ovat purjehduksessa käytettyjä merkkijonoja, jotka osoittavat, onko purjeen poikki virtaava turbulentti vai laminaarinen virtaus. Purjeen kummallekin puolelle kiinnitetyt eriväriset langat ovat kuitenkin puhtaasti visuaalisia indikaattoreita. Nämä äänimerkit ovat apuväline, jonka tarkoituksena on välittää visuaalinen informaatio kuulomuodossa sekä näkö- että näkövammaisille merimiehille, kuten Pauline.
Laite koostuu tulojärjestelmästä, joka lukee ilmaisimen liikkeen, ja lähtöjärjestelmästä, joka lähettää sarjan äänimerkkejä, jotka välittävät ilmavirtatietoja.
Tämän laitteen valmistuksessa tarvitaan pääsy juotoslaitteisiin ja 3D -tulostimeen.
Vaihe 1: Materiaaliluettelo
BOM, linkit ja hinnat
Huomaa: tarvitset 2 sarjaa kaikista seuraavista.
Syöttöjärjestelmä
- Arduino Nano
- Adafruit-perma-proto-puolikokoinen leipälevy-piirilevy
- nRF24L01 langaton lähetinvastaanotinmoduuli
- Valokuvien keskeytin
- Sparkfun Photo Interrupter Breakout Board
- Arduino -yhteensopiva 9 V: n akku
- 9V akku
- Useita 22 -mittaisia johtimia
- Lanka
- Neodyymimagneetit
- Epoksi
Lähtöjärjestelmä
- Arduino Nano
- Adafruit-perma-proto-puolikokoinen leipälevy-piirilevy
- nRF24L01 langaton lähetinvastaanotinmoduuli
- Arduino -yhteensopiva 9 V: n akku
- 1K ohmin potentiometri
- 120 ohmin vastus
- 2N3904 transistori
- 0,1 uF kondensaattori
- Arduino -yhteensopiva kaiutin
GitHub -tiedostot
- Kaikki näiden merkkivalojen rakentamiseen tarvittavat koodi- ja STL -tiedostot löytyvät tästä GitHub -reposta.
- Tarvitset kaksi koteloa ja yhden kaiutinkotelon.
Vaihe 2: Työkalut/koneet/ohjelmistovaatimukset
Arduinon ohjelmoimiseksi sinun on ladattava Arduino IDE. Latauslinkki löytyy täältä.
Jos haluat ohjelmoida nRF24L01 -moduulin, sinun on ladattava sen kirjasto Arduino IDE: n kautta. Työkalut> Hallitse kirjastoja…> asenna kirjasto RF24
Elektronisten komponenttien kokoamiseen tarvitaan pääsy perusjuotoslaitteisiin. Juotospoistopumppu voi myös olla hyödyllinen, mutta ei välttämätön.
Ilmaisinkehyksen ja kaiutinkotelon rakentaminen edellyttää pääsyä 3D-tulostimeen.
Vaihe 3: Ilmoita laitteisto
Kokoa piiri yllä olevien kaavioiden mukaisesti. Arduino Nano tulee kohdistaa protoboardin yläosan kanssa. Näin voit käyttää USB -porttia, vaikka kaikki elektroniikka on liitetty.
Jotta vältettäisiin elektroniikan oikosulku, leikkaa protoboardin jäljet riveille, joita nRF24 käyttää, kuten yllä olevassa kuvassa.
Muussa tapauksessa tarvitset hyppyjohtoja nRF24: n liittämiseksi protoboardiin.
Kuvassa ei ole kuvattu vastusliitäntää, GND -liitäntää ja 5 V -johtoa valokeskeytimeen. Kytke valokuvan keskeytin johdotuslevyn osoittamalla tavalla. Mukana on katkaisulaudan kuva.
Oikean ja vasemman merkkivalon piirit ovat täsmälleen samat.
Vaihe 4: Kerro ohjelmisto
Tässä on oikean ilmaisimen koodi. Liitä oikeanpuoleisen ilmaisimen nano tietokoneeseen, avaa Arduino IDE, kopioi ja liitä tämä koodi siihen ja lataa se taululle.
/** Ohjelma, joka käyttää valoporttia ilmaisimen tutkimiseen
*/ #sisällytä #sisällytä #sisällytä #sisällytä RF24 -radio (9, 10); // CE, CSN -vakitavun osoite [6] = "00010"; // --- ohjelmatiedot --- // aika 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; // aseta muuttuja yllä omien kokeellisten kokeidesi perusteella 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 // --- ohjelma vars --- int num_string_seen = 0; int num_loops = 0; void setup () {// while (! Serial); // kasvistolle // viive (500); num_string_seen = 0; lukusilmukat = 0; pinMode (GATE_PIN, INPUT); pinMode (GATE_PIN_2, INPUT); Sarja.alku (115200); // radion virheenkorjausta varten.begin (); radio.openWritingPipe (osoite); radio.setPALevel (RF24_PA_MIN); radio.stopListening (); } void loop () {// laita pääkoodisi tänne toistettavaksi: if (num_loops % string_check_time == 0) {// tarkista merkkijonon tila check_string (); } if (num_loops == flow_check_time) {// tutkia flow //Serial.println(num_string_seen); int flow_num = exam_flow (); // lähetä arvot send_out (flow_num); // nollaa vars num_string_seen = 0; lukusilmukat = 0; delay (flow_check_delay); } num_loops ++; viive (base_delay); } / * *Tapa tarkistaa, ylittääkö merkkijono portin * / void check_string () {int string_state = digitalRead (GATE_PIN); //Sarja.println (merkkijonon tila); if (merkkijono_tila == 0) {num_string_seen ++; //Sarja.println ("Sahajono!"); }
int bot_state = digitalRead (GATE_PIN_2);
if (bot_state == 0) {num_string_seen--; //Serial.println ("merkkijono alhaalla!"); } //Sarja.print ("Lukujonojen kulku: "); //Sarja.println (numero_merkkijono_näkymä); palata; }/ * * Menetelmä analysoida, mikä aikajonon osa kattoi portin */int exam_flow () {double percent_seen = double (num_string_seen)/max_in_flow; Serial.print ("Katettu prosenttiosuus:"); printDouble (prosenttiosuus, 100); // skaalaa arvo viestintäasteikolle int scaled_flow = int (prosenttiosuus * msg_max_val); if (skaalattu_virtaus> msg_max_val) {skaalattu_virtaus = msg_max_val; } if (skaalattu_virtaus = 0) frac = (val - int (val)) * tarkkuus; else frac = (int (val)- val) * tarkkuus; Serial.println (frac, DEC); }
Tässä on vasemman merkkivalon koodi. Noudata vasemman merkkivalon samoja vaiheita kuin edellä. Kuten näette, ainoa ero on osoite, johon ilmaisin lähettää tulokset.
/** Ohjelma, joka käyttää valoporttia ilmaisimen tutkimiseen
*/ #sisällytä #sisällytä #sisällytä #sisällytä RF24 -radio (9, 10); // CE, CSN -vakitavun osoite [6] = "00001"; // --- ohjelmatiedot --- // aika 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; // aseta muuttuja yllä omien kokeellisten kokeidesi perusteella 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 // --- ohjelma vars --- int num_string_seen = 0; int num_loops = 0; void setup () {// while (! Serial); // kasvistolle // viive (500); num_string_seen = 0; lukusilmukat = 0;
pinMode (GATE_PIN, INPUT);
pinMode (GATE_PIN_2, INPUT); Sarja.alku (115200); // radion virheenkorjausta varten.begin (); radio.openWritingPipe (osoite); radio.setPALevel (RF24_PA_MIN); radio.stopListening (); } void loop () {// laita pääkoodisi tänne toistettavaksi: if (num_loops % string_check_time == 0) {// tarkista merkkijonon tila check_string (); } if (num_loops == flow_check_time) {// tutkia flow //Serial.println(num_string_seen); int flow_num = exam_flow (); // lähetä arvot send_out (flow_num); // nollaa vars num_string_seen = 0; lukusilmukat = 0; delay (flow_check_delay); } num_loops ++; viive (base_delay); } / * *Tapa tarkistaa, ylittääkö merkkijono portin * / void check_string () {int string_state = digitalRead (GATE_PIN); //Sarja.println (merkkijonon tila); if (merkkijono_tila == 0) {num_string_seen ++; //Sarja.println ("Sahajono!"); }
int bot_state = digitalRead (GATE_PIN_2);
if (bot_state == 0) {num_string_seen--; //Serial.println ("merkkijono alhaalla!"); } //Sarja.print ("Lukujonojen kulku: "); //Sarja.println (numero_merkkijono); palata; }/ * * Menetelmä analysoida, mikä aikajonon osa kattoi portin */int exam_flow () {double percent_seen = double (num_string_seen)/max_in_flow; Serial.print ("Katettu prosenttiosuus:"); printDouble (prosenttiosuus, 100); // skaalaa arvo viestintäasteikolle int scaled_flow = int (prosenttiosuus * msg_max_val); if (skaalattu_virtaus> msg_max_val) {skaalattu_virtaus = msg_max_val; } if (skaalattu_virtaus = 0) frac = (val - int (val)) * tarkkuus; else frac = (int (val)- val) * tarkkuus; Serial.println (frac, DEC); }
Vaihe 5: Ilmaisinkokoonpano
Yksittäiset osat
- Ilmaisinkehys
- Lanka
- Rakennettu ilmaisinpiiri
- Akku
- Sähköteippi
- Epoksi tai liima
STL: t 3D -tulostuksen merkkivalokomponenteille
- STL ilmaisinkehykselle: vasen, oikea
- Elektroniikkalaatikon STL: t: ylhäältä, alhaalta
Kokoamisohjeet
- Aseta palkkimagneetit 3D -tulostetun ilmaisinkehyksen aukkoihin. Varmista, että magneetit ovat oikein oikean ja vasemman kehyksen välissä, ja käytä sitten epoksi (tai liimaa) magneettien kiinnittämiseen runkoon. Anna epoksin (tai liiman) kovettua kokonaan.
- Aseta valokuvan keskeytin kehyksen takana olevaan ylä- ja alarakoon. Epoksi (tai liimaa) varovasti valokuvan keskeytyslevyt runkoon. Anna epoksin (tai liiman) kovettua kokonaan
- Katkaise ~ 7 lankaa. Sido langan toinen pää ensimmäisen pystytangon loveen. Leikkaa pieni pala sähköteippiä ja kääri sähköteippi langan osan päälle, joka on valokuvien katkaisijoiden alueella. Pujota lanka kehyksen läpi niin, että se kulkee valokuvan keskeytysportin raon läpi.
- Aseta palkkimagneetit 3D -tulostetun elektroniikkalaatikon pohjan aukkoihin. Varmista, että magneetit ovat oikein oikean ja vasemman laatikon välissä, ja käytä sitten epoksi (tai liimaa) magneettien kiinnittämiseen runkoon. Anna epoksin (tai liiman) kovettua kokonaan.
- Aseta rakennettu merkkivalopiiri elektroniikkalaatikkoon ja kohdista eri komponentit niiden aukkoihin. Sulje laatikko 3D -tulostetulla elektroniikkalaatikolla. Epoksi (tai liimaa) akku kotelon yläosaan niin, että kytkin on näkyvissä.
Vaihe 6: Kaiutinlaitteisto
Lähtöjärjestelmä koostuu kahdesta kaiutinpiiristä, yksi kullekin ilmaisimelle, joissa on langaton yhteys ja äänenvoimakkuuden säätönuppi. Valmistele ensin protoboards käytettäväksi nRF24L01 -moduulien kanssa, kuten me teimme ilmaisupiireille leikkaamalla johdot, jotka erottavat kaksi tapiriviä, joihin levy asetetaan.
Kokoa sitten piiri yllä olevan kaavion mukaisesti viitaten valmiin piirin valokuviin.
Hallituksen kokoonpano -ohjeet
Jotta levyt voidaan pinota kaiutinkoteloon, pääkomponentit on sijoitettava tietyille levyn alueille. Seuraavissa ohjeissa tarkoitan koordinaatistoa, jota käytetään rivien ja sarakkeiden merkitsemiseen Adafruit -esilevyllä:
- Arduino Nano on asetettava levyn yläreunaa vasten keskelle niin, että Vin -tappi on G16: ssa. Tämä mahdollistaa Arduino Nanon helpon uudelleenohjelmoinnin sen jälkeen, kun piiri on koottu.
- NRF24L01 -kortti on asetettava levyn oikeaan alakulmaan, joka ulottuu kahdeksan asentoa välillä C1 - D5. Tämä jättää nRF24L01 riippumaan protoboardista, mikä mahdollistaa paremman langattoman viestinnän.
- Kaiutinjärjestelmän akku käyttää molempia protoboleja, joten muista liittää kaksi Arduino Nanon GND -kiskoa ja Vin -nastaa virtalähteeseen.
-
"Ala" -piiriä varten potentiometri tulee sijoittaa levyn yläosaan ulospäin siten, että sen tapit on sijoitettu kohtiin J2, J4 ja J6
- J2 ↔ Arduino Nano -lähtö digitaalitapista 3 (D3)
- 2N3904 -transistorin J4 ↔ kanta
- J6 ↔ kytketty
-
Yläpiiriä varten potentiometri tulee sijoittaa levyn pohjaan ulospäin siten, että sen tapit on sijoitettu kohtiin J9, J11 ja J13
- J13 ↔ Arduino Nano -lähtö digitaalitapista 3 (D3)
- J11 ↔ 2N3904 -transistorin pohjatappi
- J9 ↔ kytketty
Vaihe 7: Kaiutinohjelmisto
Tässä on vasemman merkkivalon kanssa kommunikoivan kaiuttimen koodi. Liitä alemman kaiutinlevyn Arduino Nano tietokoneeseen, avaa Arduino IDE, kopioi ja liitä tämä koodi siihen ja lataa se taululle.
#sisältää
#Sisällytä #Sisällytä RF24 -radio (7, 8); // CE, CSN // vasen merkkivalo, yläkaiutinlevyn vakio tavuosoite [6] = "00001"; const int pitch = 2000; const int pitch_duration = 200; const int kaiutin = 3; const int delay_gain = 100; int -tila = 0; int cur_delay = 0; char lukea [2]; void setup () {pinMode (kaiutin, OUTPUT); Sarja.alku (115200); Serial.println ("Langattoman viestinnän aloittaminen …"); radio.begin (); radio.openReadingPipe (0, osoite); radio.setPALevel (RF24_PA_MIN); radio.startListening (); } void loop () {if (radio.available ()) {radio.read (& read, sizeof (read)); tila = (int) (lue [0]-'0'); Serial.print ("Vastaanotettu:"); Serial.println (tila); cur_delay = delay_gain*tila; } if (cur_delay) {ääni (kaiutin, äänenkorkeus, pitch_duration); viive (cur_delay + pitch_duration); Serial.println ("Piip!"); }}
Tässä on koodi kaiuttimelle, joka kommunikoi oikean ilmaisimen kanssa. Liitä ylimmän kaiutinlevyn Arduino Nano tietokoneeseen, avaa Arduino IDE, kopioi ja liitä tämä koodi siihen ja lataa se taululle.
#sisältää
#Sisällytä #Sisällytä RF24 -radio (7, 8); // CE, CSN // oikea merkkivalo, alakaiutinlevyn konstitavu tavuosoite [6] = "00010"; const int pitch = 1500; const int pitch_duration = 200; const int kaiutin = 3; const int delay_gain = 100; int -tila = 0; int cur_delay = 0; char lukea [2]; void setup () {pinMode (kaiutin, OUTPUT); Sarja.alku (115200); Serial.println ("Langattoman viestinnän aloittaminen …"); radio.begin (); radio.openReadingPipe (0, osoite); radio.setPALevel (RF24_PA_MIN); radio.startListening (); } void loop () {if (radio.available ()) {radio.read (& read, sizeof (read)); tila = (int) (lue [0]-'0'); Serial.print ("Vastaanotettu:"); Serial.println (tila); cur_delay = delay_gain*tila; } if (cur_delay) {ääni (kaiutin, äänenkorkeus, pitch_duration); viive (cur_delay+pitch_duration); Serial.println ("Piip!"); }}
Vaihe 8: Kaiutinkokoonpano
Yksittäiset osat
- 2 rakennettua kaiutinpiiriä
- 2 kaiutinta
- 1 akku
STL: t 3D -tulostukseen
- Laatikon yläosa
- Laatikon pohja
Fyysisen kokoamisen ohjeet
- Aseta kaiutinpiirit varovasti laatikon pohjaan, yksi levy toisen päälle niin, että äänenvoimakkuuden säätimet ovat vierekkäin ja liukuvat reikiin. Viestintäpiirit tulee paljastaa laatikon takana.
- Aseta kaiuttimet piirilevyn vasemmalle ja oikealle puolelle ja varmista, että kaiuttimet vastaavat oikeita ilmaisinpuolia. Kohdista kaiuttimet laatikon sivuilla oleviin aukkoihin.
- Vie akkujohdot laatikon takana olevan pienen reiän läpi. Epoksi (tai liimaa) akku pakkauksen takaosaan siten, että kytkin on näkyvissä.
- Aseta 3D -tulostettu laatikko laatikon pohjan päälle, jotta se sisältää kaiken.
Vaihe 9: Asennus/asennus
- Kytke merkkivalot päälle kääntämällä akkujen kytkimet ON -asentoon. Tee sama kaiutinkokoonpanolle kytkeäksesi lähtöjärjestelmän päälle.
- Äänimerkkivalojen asentaminen on helpointa kahden henkilön kanssa, mutta se voidaan tehdä yhdellä. Jos laite asennetaan ei-pyörivälle puomille, sen ilmaisimet on helpointa laittaa päälle ennen purjeen nostamista.
- Varmistaaksesi, että ilmaisinkehys on suunnattu oikein, katso yhden pystytangon lovi. Kun pidät kehystä pystyasennossa, loven tulee olla ylöspäin. Rungon sivun, jossa on tanko, tulee olla myös veneen etuosaa kohti.
- Aseta yksi ilmaisimista halutulle korkeudelle ja paikalle purjeelle. Se on sijoitettava siten, että lanka on samassa paikassa kuin se olisi, jos se olisi osa perinteistä ilmaisinta.
- Kun sinulla on yksi kertomus halutussa asennossa. Aseta toinen ilmaisin purjeen toiselle puolelle, aivan ensimmäistä asettamaasi vastapäätä, niin että magneetit ovat linjassa. Kohdista elektroniikkakotelojen magneetit kullekin ilmaisimelle purjeen kummallakin puolella siten, että ne myös yhdistyvät.
- Jos huomaat, että kun merkkijono virtaa suoraan taaksepäin, se ei mene yläportin eteen, kierrä ilmaisinkehystä niin, että kehyksen takapuoli on alaspäin. Pyöritä kehystä, kunnes merkkijono kulkee ylemmän valokuvakatkaisijan läpi, kun lanka virtaa suoraan takaisin.
Vaihe 10: Vianetsintä
Kaikissa koodikappaleissa on virheenkorjauspainatus, joka osoittaa, että ne lähettävät, vastaanottavat ja käsittelevät tietoja. Kun avaat COM -portin käyttämällä Arduino IDE: tä ja liitetty tietokoneeseen yksi Arduino Nano -alijärjestelmistä, voit tarkastella näitä tilaviestejä.
Jos järjestelmä ei toimi kunnolla, kytke kaikkien komponenttien kytkimet päälle.
Vaihe 11: Mahdolliset seuraavat vaiheet
- Vedeneristys
- Pidemmän kantaman viestintä. WiFi on lupaava vaihtoehto.
- Nykyinen kokoonpanomme käyttää tällä hetkellä 2 valokuvan keskeytintä ilmaisinta kohti. Lisää valokuvan keskeytyksiä järjestelmään voisi olla mielenkiintoista kokeilla.
Suositeltava:
DIY Raspberry Pi Downloadbox: 4 vaihetta
DIY Raspberry Pi Downloadbox: Löydätkö usein itsesi lataamasta suuria tiedostoja, kuten elokuvia, torrentteja, kursseja, TV -sarjoja jne., Niin tulet oikeaan paikkaan. Tässä Instructable -ohjelmassa muuttaisimme Raspberry Pi zero -laitteemme latauskoneeksi. Joka voi ladata minkä tahansa
Akustinen levitaatio Arduino Unon kanssa Askel askeleelta (8 vaihetta): 8 vaihetta
Akustinen levitaatio Arduino Unon kanssa Askel askeleelta (8 vaihetta): ultraäänikaiuttimet L298N DC-naarasadapterin virtalähde urospuolisella dc-nastalla ja analogiset portit koodin muuntamiseksi (C ++)
4G/5G HD -videon suoratoisto DJI Dronesta alhaisella latenssilla [3 vaihetta]: 3 vaihetta
4G/5G HD -videon suoratoisto DJI Dronesta alhaisella latenssilla [3 vaihetta]: Seuraava opas auttaa sinua saamaan live-HD-videovirtoja lähes mistä tahansa DJI-dronesta. FlytOS -mobiilisovelluksen ja FlytNow -verkkosovelluksen avulla voit aloittaa videon suoratoiston droonilta
Pultti - DIY -langaton latauskello (6 vaihetta): 6 vaihetta (kuvilla)
Pultti - DIY -langaton latausyökello (6 vaihetta): Induktiiviset lataukset (tunnetaan myös nimellä langaton lataus tai langaton lataus) on langattoman voimansiirron tyyppi. Se käyttää sähkömagneettista induktiota sähkön tuottamiseen kannettaville laitteille. Yleisin sovellus on langaton Qi -latauslaite
4 vaihetta akun sisäisen vastuksen mittaamiseksi: 4 vaihetta
4 vaihetta akun sisäisen vastuksen mittaamiseksi: Tässä on 4 yksinkertaista vaihetta, joiden avulla voit mitata taikinan sisäisen vastuksen