INHOUDSOPGAWE:
- Stap 1: Staatsbrief
- Stap 2: Gereedskap/masjiene/sagtewarevereistes
- Stap 3: Tellingale hardeware
- Stap 4: Tellingale sagteware
- Stap 5: Taalvergadering
- Stap 6: Luidsprekerhardeware
- Stap 7: Luidsprekerprogrammatuur
- Stap 8: Sprekerbyeenkoms
- Stap 9: Opstel/montering
- Stap 10: Probleemoplossing
- Stap 11: Moontlike volgende stappe
Video: Hoorbare tellers vir seil: 11 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:25
Telltales is stukke tou wat in seil gebruik word om aan te dui of daar onstuimige of laminaire vloei oor die seil is. Die stukke gare wat aan elke kant van die seil vasgemaak is, is egter suiwer visuele aanwysers. Hierdie hoorbare tellers is 'n hulpmiddel wat daarop gemik is om die visuele inligting in 'n gehoorvorm te kommunikeer vir beide siende en gesiggestremde matrose, soos Pauline.
Die toestel bestaan uit 'n insetstelsel wat die beweging van die verteller lees, en 'n uitsetstelsel wat 'n reeks piepboodskappe gee wat lugvloei -inligting oordra.
Toegang tot soldeertoerusting en 'n 3D -drukker is nodig vir die vervaardiging van hierdie toestel.
Stap 1: Staatsbrief
BOM met skakels en pryse
Let wel: u benodig 2 stelle van al die volgende.
Invoerstelsel
- Arduino Nano
- Adafruit perma-proto half-groot broodbord PCB
- nRF24L01 Module vir draadlose ontvanger
- Foto onderbrekers
- Sparkfun Photo Interrupter Breakout Board
- Arduino versoenbare 9V battery
- 9V battery
- Verskeie lengtes van 22 meter draad
- Gare
- Neodymium magnete
- Epoksie
Uitsetstelsel
- Arduino Nano
- Adafruit perma-proto half-groot broodbord PCB
- nRF24L01 Module vir draadlose ontvanger
- Arduino versoenbare 9V battery
- 1K Ohm potensiometer
- 120 Ohm weerstand
- 2N3904 transistor
- 0,1 uF kapasitor
- Arduino -verenigbare luidspreker
GitHub -lêers
- Al die kode- en STL -lêers wat nodig is om hierdie tellings te bou, kan gevind word in hierdie GitHub -repo.
- U benodig twee stelle omhulsel en een van die luidsprekerbehuizing.
Stap 2: Gereedskap/masjiene/sagtewarevereistes
Om die Arduino te programmeer, moet u die Arduino IDE aflaai. Die aflaai skakel kan hier gevind word.
Om die nRF24L01 -module te programmeer, moet u die biblioteek daarvan aflaai deur die Arduino IDE. Gereedskap> Bestuur biblioteke …> installeer biblioteek RF24
Toegang tot basiese soldeergereedskap is nodig om die elektroniese komponente te monteer. 'N Ontsoldeerpomp kan ook nuttig wees, maar is nie nodig nie.
Om 'n raam en luidsprekerkas te bou, benodig u toegang tot 'n 3D-drukker.
Stap 3: Tellingale hardeware
Monteer die stroombaan volgens die diagramme hierbo. Die Arduino Nano moet in lyn wees met die bokant van die protobord. Dit stel u in staat om toegang tot die USB -poort te hê, selfs nadat al die elektronika aangeslote is.
Om te voorkom dat die elektronika kortkom, moet u die spore van die protobord sny op die rye wat die nRF24 sal inneem, soos in die prent hierbo getoon.
Andersins het u jumperkabels nodig om die nRF24 aan te sluit op die protobord.
Die weerstandsverbinding, GND en 5V -drade na die fotoonderbreker word nie uitgebeeld nie. Verbind die fotoonderbreker soos aangedui op die uitbreekbord. 'N Beeld van die uitbreekbord is ingesluit.
Die kringe vir die regter- en linkervertalers is presies dieselfde.
Stap 4: Tellingale sagteware
Hier is die kode vir die regte verteller. Koppel die Right telltale's nano aan u rekenaar, maak die Arduino IDE oop, kopieer en plak die kode daarin en laai dit op die bord.
/** Program wat photogate gebruik om die storie te ondersoek
*/ #include #include #include #include RF24 radio (9, 10); // CE, CSN const byte adres [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; // stel die var hierbo op grond van u eie eksperimentele proewe 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; ongeldige opstelling () {// while (! Serial); // vir flora // vertraging (500); num_string_seen = 0; num_loops = 0; pinMode (GATE_PIN, INPUT); pinMode (GATE_PIN_2, INPUT); Serial.begin (115200); // vir ontfouting van radio.begin (); radio.openWritingPipe (adres); radio.setPALevel (RF24_PA_MIN); radio.stopListening (); } void loop () {// plaas u hoofkode hier om herhaaldelik te hardloop: if (num_loops % string_check_time == 0) {// check string state check_string (); } if (num_loops == flow_check_time) {// ondersoek vloei //Serial.println(num_string_seen); int flow_num = ondersoek_stroom (); // stuur waardes send_out (flow_num); // reset vars num_string_seen = 0; num_loops = 0; vertraging (flow_check_delay); } num_loops ++; vertraging (basis_vertraging); } / * *Metode om na te gaan of die string deur die hek kruis * / void check_string () {int string_state = digitalRead (GATE_PIN); //Serial.println(string_state); as (string_state == 0) {num_string_seen ++; //Serial.println("Saw string! "); }
int bot_state = digitalRead (GATE_PIN_2);
as (bot_state == 0) {num_string_seen--; //Serial.println("string on bottom! "); } //Serial.print("Counting string passes: "); //Serial.println(num_string_seen); terugkeer; }/ * * Metode om te analiseer watter fraksie van die tydstring die hek */int exam_flow () {double percent_seen = double (num_string_seen)/max_in_flow; Serial.print ("Persentasie gedek:"); printDouble (persentasie gesien, 100); // skaal die waarde na kommunikasie skaal int scaled_flow = int (percent_seen * msg_max_val); as (scaled_flow> msg_max_val) {scaled_flow = msg_max_val; } as (scaled_flow = 0) frac = (val - int (val)) * presisie; anders frac = (int (val)- val) * presisie; Serial.println (frac, DEC); }
Hier is die kode vir die linkerverteller. Volg dieselfde stappe as hierbo vir die linkerverteller. Soos u kan sien, is die enigste verskil die adres waarna die verteller die resultate stuur.
/** Program wat photogate gebruik om die storie te ondersoek
*/ #include #include #include #include RF24 radio (9, 10); // CE, CSN const byte adres [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; // stel die var hierbo op grond van u eie eksperimentele proewe 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; ongeldige opstelling () {// while (! Serial); // vir flora // vertraging (500); num_string_seen = 0; num_loops = 0;
pinMode (GATE_PIN, INPUT);
pinMode (GATE_PIN_2, INPUT); Serial.begin (115200); // vir ontfouting van radio.begin (); radio.openWritingPipe (adres); radio.setPALevel (RF24_PA_MIN); radio.stopListening (); } void loop () {// plaas u hoofkode hier om herhaaldelik te hardloop: if (num_loops % string_check_time == 0) {// check string state check_string (); } if (num_loops == flow_check_time) {// ondersoek vloei //Serial.println(num_string_seen); int flow_num = ondersoek_stroom (); // stuur waardes send_out (flow_num); // reset vars num_string_seen = 0; num_loops = 0; vertraging (flow_check_delay); } num_loops ++; vertraging (basis_vertraging); } / * *Metode om te kyk of die string deur die hek kruis * / void check_string () {int string_state = digitalRead (GATE_PIN); //Serial.println(string_state); as (string_state == 0) {num_string_seen ++; //Serial.println("Saw string! "); }
int bot_state = digitalRead (GATE_PIN_2);
as (bot_state == 0) {num_string_seen--; //Serial.println("string on bottom! "); } //Serial.print("Telreeks slaag: "); //Serial.println(num_string_seen); terugkeer; }/ * * Metode om te analiseer watter fraksie van die tydstring die hek */int exam_flow () {double percent_seen = double (num_string_seen)/max_in_flow; Serial.print ("Persentasie gedek:"); printDouble (persentasie gesien, 100); // skaal die waarde na kommunikasie skaal int scaled_flow = int (percent_seen * msg_max_val); as (scaled_flow> msg_max_val) {scaled_flow = msg_max_val; } as (scaled_flow = 0) frac = (val - int (val)) * presisie; anders frac = (int (val)- val) * presisie; Serial.println (frac, DEC); }
Stap 5: Taalvergadering
Individuele onderdele
- Vertelraam
- Gare
- 'N Konstrukteerkringbaan
- Batterypak
- Elektriese band
- Epoksie of gom
STL's vir 3D -druk tellende komponente
- STL vir die raam: links, regs
- STL's vir elektroniese boks: bo, onder
Monteerinstruksies
- Plaas staafmagnete in die gleuwe van die 3D -gedrukte raam. Maak seker dat die magnete behoorlik in lyn is tussen die regte raam en die linker raam, en gebruik dan epoxy (of gom) om die magnete aan die raam vas te maak. Laat epoksie (of gom) heeltemal stol.
- Plaas die fotoonderbrekers in die boonste en onderste gleuwe aan die agterkant van die raam. Maak die fotoonderbrekersplanke versigtig aan die raam vas. Laat epoksie (of gom) heeltemal stol
- Sny 'n stuk van ongeveer 7 in 'n stuk gare. Bind die een kant van die gare vas by die kerf van die eerste vertikale balk. Sny 'n klein stukkie elektriese band en draai die elektriese band oor die gedeelte van die gare wat in die omgewing van die fotoonderbrekers is. Ryg die gare deur die raam sodat dit deur die gaping van die fotoonderbrekerhek gaan.
- Plaas staafmagnete in die gleuwe van die onderkant van die 3D -gedrukte elektroniese boks. Maak seker dat die magnete behoorlik in lyn is tussen die regte boks en die linker boks, en gebruik dan epoxy (of gom) om die magnete aan die raam vas te maak. Laat epoksie (of gom) heeltemal stol.
- Plaas die gekonstrueerde kring in die elektroniese boks, en pas die verskillende komponente by hul gleuwe. Maak die boks toe met die 3D -gedrukte bokant van elektronika. Epoksie (of gom) die battery aan die bokant van die boks sodat die skakelaar blootgestel word.
Stap 6: Luidsprekerhardeware
Die uitsetstelsel bestaan uit twee luidsprekerbane, een vir elke verteller, toegerus met draadlose kommunikasie en 'n volume -verstelknop. Berei eers die protoborde voor vir gebruik met die nRF24L01 -modules, soos ons vir die tellcircuits gedoen het deur die leidings te sny tussen die twee rye penne waar die bord geplaas sal word.
Monteer dan die stroombaan soos in die diagram hierbo getoon, terwyl u na die foto's van die voltooide stroombane verwys.
Raad Vergadering Instruksies
Om die planke in die luidsprekeromhulsel te stapel, moet die hoofkomponente in sekere dele van die bord geplaas word. In die volgende instruksies verwys ek na die koördinaatstelsel wat gebruik word om rye en kolomme op die Adafruit protobord aan te dui:
- Die Arduino Nano moet teen die boonste rand van die bord in die middel geplaas word sodat die Vin -pen op G16 geplaas word. Dit sal die Arduino Nano maklik herprogrammeer nadat die stroombaan saamgestel is.
- Die nRF24L01 -bord moet in die regter onderste hoek van die bord geplaas word wat strek oor die agt posisies van C1 tot D5. Dit laat die nRF24L01 aan die protobord hang om beter draadlose kommunikasie moontlik te maak.
- Die battery vir die luidsprekerstelsel dryf beide protoborde aan, dus maak seker dat u die twee Arduino Nano se GND -rails/penne en Vin -penne aan die kragtoevoer koppel.
-
Vir die 'onderste' kring moet die potensiometer bo -op die bord na buite geplaas word sodat sy penne op posisies J2, J4 en J6 geplaas word
- J2, Arduino Nano -uitvoer vanaf digitale pen 3 (D3)
- J4 ↔ basispen van 2N3904 transistor
- J6, nie gekoppel nie
-
Vir die 'boonste' kring moet die potensiometer aan die onderkant van die bord na buite geplaas word sodat sy penne op posisies J9, J11 en J13 geplaas word
- J13, Arduino Nano -uitvoer vanaf digitale pen 3 (D3)
- J11 ↔ basispen van 2N3904 transistor
- J9 ↔ nie gekoppel nie
Stap 7: Luidsprekerprogrammatuur
Hier is die kode vir die spreker wat met die linkerverteller kommunikeer. Koppel die Arduino Nano op die onderste luidsprekerbord aan op u rekenaar, maak die Arduino IDE oop, kopieer en plak die kode daarin en laai dit op die bord.
#insluit
#include #include RF24 radio (7, 8); // CE, CSN // verteller links, boonste luidsprekerbord const byte adres [6] = "00001"; const int toonhoogte = 2000; const int pitch_duration = 200; const int spreker = 3; const int delay_gain = 100; int status = 0; int cur_delay = 0; char lees [2]; ongeldige opstelling () {pinMode (luidspreker, OUTPUT); Serial.begin (115200); Serial.println ("Begin met draadlose kommunikasie …"); radio.begin (); radio.openReadingPipe (0, adres); radio.setPALevel (RF24_PA_MIN); radio.startListening (); } nietige lus () {if (radio.available ()) {radio.read (& read, sizeof (read)); status = (int) (lees [0]-'0'); Serial.print ("Ontvang:"); Serial.println (status); cur_delay = delay_gain*status; } if (cur_delay) {toon (spreker, toonhoogte, toonhoogte_duur); vertraging (cur_delay + pitch_duration); Serial.println ("Piep!"); }}
Hier is die kode vir die spreker wat met die regte verteller kommunikeer. Koppel die Arduino Nano op die boonste luidsprekerbord aan op u rekenaar, maak die Arduino IDE oop, kopieer en plak hierdie kode en plak dit op die bord.
#insluit
#include #include RF24 radio (7, 8); // CE, CSN // regterkant, onderste luidsprekerbord konst byte adres [6] = "00010"; const int toonhoogte = 1500; const int pitch_duration = 200; const int spreker = 3; const int delay_gain = 100; int status = 0; int cur_delay = 0; char lees [2]; ongeldige opstelling () {pinMode (luidspreker, OUTPUT); Serial.begin (115200); Serial.println ("Begin met draadlose kommunikasie …"); radio.begin (); radio.openReadingPipe (0, adres); radio.setPALevel (RF24_PA_MIN); radio.startListening (); } nietige lus () {if (radio.available ()) {radio.read (& read, sizeof (read)); status = (int) (lees [0]-'0'); Serial.print ("Ontvang:"); Serial.println (status); cur_delay = delay_gain*status; } if (cur_delay) {toon (spreker, toonhoogte, toonhoogte_duur); vertraging (cur_delay+pitch_duration); Serial.println ("Piep!"); }}
Stap 8: Sprekerbyeenkoms
Individuele onderdele
- 2 saamgestelde luidsprekerbane
- 2 sprekers
- 1 battery
STL's vir 3D -drukwerk
- Boks bokant
- Onderkant boks
Fisiese samestellingsinstruksies
- Plaas die luidsprekerkringe versigtig onder in die boks, die een bord bo -op die ander sodat die volumeknoppies langs mekaar is en in die gate gly. Die kommunikasie -skyfies moet aan die agterkant van die boks blootgestel word.
- Plaas die luidsprekers links en regs van die printplaat, en maak seker dat die luidsprekers ooreenstem met die korrekte kenmerkende kante. Pas die luidsprekers by die gleuwe aan die kante van die boks.
- Voer die batterykabels deur die klein gaatjie aan die agterkant van die boks. Epoksie (of gom) die battery aan die agterkant van die boks sodat die skakelaar blootgestel word.
- Plaas die 3D -gedrukte boks bo -op die boks se onderkant om alles te bevat.
Stap 9: Opstel/montering
- Skakel die skakelaars aan deur die skakelaars op die batterye na die 'AAN' posisie te draai. Doen dieselfde met die luidspreker om die uitsetstelsel aan te skakel.
- Die montering van hoorbare tellers word die maklikste gedoen met twee mense, maar kan met een gedoen word. Vir montering op 'n nie-draaibare jib, sou die tellers die maklikste aangetrek word voordat die seil gehys word.
- Om seker te maak dat die raam van die vertelling korrek gerig is, kyk na die kerf op een van die vertikale balke. As die raam regop gehou word, moet die kerf boontoe wees. Die kant van die raam met die staaf moet ook na die voorkant van die boot wys.
- Plaas een van die verhale op die verlangde hoogte en posisie op die seil. Dit moet so geplaas word dat die gare op dieselfde plek is as wat dit sou wees as dit deel was van 'n tradisionele vertelling.
- As u eers een vertelverhaal in die gewenste posisie het. Plaas die ander storie aan die ander kant van die seil, presies teenoor die eerste wat u geplaas het, sodat die magnete in lyn kom. Sodra die magnete 'n verbinding maak, moet hulle die raam styf teen die seil hou. Rangskik die magnete van die elektroniese omhulsels vir elke vertelling aan weerskante van die seil, sodat hulle ook aansluit.
- As u agterkom dat wanneer die tou reguit terugvloei, dit nie voor die boonste hek kruis nie, draai die raamwerk sodat die agterste helfte van die raam afwaarts draai. Draai die raam totdat die tou deur die boonste foto -onderbreker gaan as die gare reguit terugvloei.
Stap 10: Probleemoplossing
Alle stukke kode bevat ontfoutingstate om aan te dui dat hulle data stuur, ontvang en verwerk. Deur die COM -poort oop te maak met die Arduino IDE met een van die Arduino Nano -substelsels wat op 'n rekenaar ingeskakel is, kan u hierdie statusboodskappe sien.
As die stelsel nie behoorlik werk nie, skakel al die komponente aan.
Stap 11: Moontlike volgende stappe
- Waterdigtheid
- Langerreikommunikasie. WiFi is 'n belowende opsie.
- Ons huidige opstelling gebruik tans 2 fotoonderbrekers per verteller. Dit kan interessant wees om meer fotoonderbrekers by die stelsel te voeg.
Aanbeveel:
Arduino motorwaarskuwingstelsel vir omgekeerde parkering - Stap vir stap: 4 stappe
Arduino -waarskuwingstelsel vir omgekeerde parkeerterrein | Stap vir stap: In hierdie projek ontwerp ek 'n eenvoudige Arduino Car Reverse Parking Sensor Circuit met behulp van Arduino UNO en HC-SR04 Ultrasonic Sensor. Hierdie Arduino -gebaseerde motor -omkeerwaarskuwingstelsel kan gebruik word vir 'n outonome navigasie, robotafstand en ander reeks
Opstelling vir eksterne Bluetooth GPS -verskaffer vir Android -toestelle: 8 stappe
Opstelling vir eksterne Bluetooth GPS-verskaffer vir Android-toestelle: hierdie instruksies sal verduidelik hoe u u eie eksterne Bluetooth-gps vir u telefoon kan aanbring, maar dit kan slegs teen ongeveer $ 10 aanbring.Materiaal: NEO 6M U-blox GPSHC-05 bluetooth-moduleKennis van koppelvlak Blutooth lae energie modules Ardui
Maklike skyfomslag vir 'n skootrekenaar vir 'n skootrekenaar: 6 stappe
Maklike skootbedekking vir 'n skootrekenaar vir 'n skootrekenaar: MATERIAAL: Dik materiaal, byvoorbeeld sintetiese leer, isolasieband, 'n deksel van 'n boks koekies of sjokolade.GEREEDSKAPPE
Vuil Goedkoop Dirt-O-Meter-$ 9 op Arduino-gebaseerde hoorbare hoogtemeter: 4 stappe (met foto's)
Dirt-O-Meter-Dirt-gebaseerde hoorbare hoogtemeter van $ 9: Dytters (AKA hoorbare hoogtemeters) het die valskermspringers se lewens vir soveel jare gered. Nou sal Audible Abby ook vir hulle geld bespaar. Basiese Dytters het vier alarms, een op pad omhoog en drie op pad af. Tydens die vliegtuig moet valskermspringers weet wanneer
556 Tyd bied klokinvoer vir 2 dekade tellers wat 20 LED's aandryf: 6 stappe
556 Tyd bied klokinvoer aan 2 dekade tellers wat 20 LED's sal aandryf: hierdie instruksie sal wys hoe 'n 556 -timer klokinsette aan 2 dekades tellers sal lewer. Die dekade tellers sal 20 LED's aandryf