Taula de continguts:
- Pas 1: llista de materials
- Pas 2: Eines / Màquines / Requisits de programari
- Pas 3: maquinari revelador
- Pas 4: programari Telltale
- Pas 5: Assemblea reveladora
- Pas 6: maquinari dels altaveus
- Pas 7: programari d’altaveus
- Pas 8: Assemblea de ponents
- Pas 9: configuració / muntatge
- Pas 10: resolució de problemes
- Pas 11: possibles passos següents
Vídeo: Contes sonors per a la vela: 11 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:13
Els contes són trossos de corda que s’utilitzen a la vela per indicar si hi ha flux turbulent o laminar a través de la vela. No obstant això, les diferents peces de fil de colors adherides a cada costat de la vela són indicadors purament visuals. Aquests indicadors sonors són un dispositiu d’assistència que té com a objectiu comunicar la informació visual en forma auditiva tant per als navegants amb visió com amb discapacitat visual, com Pauline.
El dispositiu consta d’un sistema d’entrada, que llegeix el moviment de l’indicador, i d’un sistema de sortida, que emet una sèrie de sons sonors que transmeten informació del flux d’aire.
Es requereix accés a equips de soldadura i a una impressora 3D en la fabricació d’aquest dispositiu.
Pas 1: llista de materials
BOM amb enllaços i preus
Nota: necessitareu 2 conjunts de tot el següent.
Sistema d’entrada
- Arduino Nano
- Adafruit perma-proto PCB de mida mitjana
- Mòdul de transceptor sense fils nRF24L01
- Foto Interrupter
- Sparkfun Photo Interrupter Breakout Board
- Bateria de 9V compatible amb Arduino
- Bateria de 9V
- Diverses longituds de filferro de calibre 22
- Filats
- Imants de neodimi
- Epoxi
Sistema de sortida
- Arduino Nano
- Adafruit perma-proto PCB de mida mitjana
- Mòdul de transceptor sense fils nRF24L01
- Bateria de 9V compatible amb Arduino
- Potenciòmetre 1K Ohm
- Resistència de 120 Ohm
- 2N3904 transistor
- Condensador de 0,1 uF
- Altaveu compatible Arduino
Fitxers GitHub
- Tots els fitxers de codi i STL necessaris per construir aquests indicadors es poden trobar en aquest repositori de GitHub.
- Necessitareu dos conjunts de caixa i un de la carcassa dels altaveus.
Pas 2: Eines / Màquines / Requisits de programari
Per programar l’Arduino, heu de descarregar l’IDE Arduino. L’enllaç de descàrrega es pot trobar aquí.
Per programar el mòdul nRF24L01, haureu de descarregar la seva biblioteca a través de l’IDE Arduino. Eines> Gestiona les biblioteques …> instal·la la biblioteca RF24
Per muntar els components electrònics cal accedir a les eines bàsiques de soldadura. Una bomba de dessoldatge també pot ser útil, però no és necessària.
Per construir el marc del quadre i el cas de l’altaveu, necessitareu accedir a una impressora 3D.
Pas 3: maquinari revelador
Munteu el circuit segons els esquemes anteriors. L’Arduino Nano hauria d’estar alineat amb la part superior de la protoborda. Això us permet tenir accés al port USB fins i tot després d’haver connectat tota l’electrònica.
Per evitar un curtcircuit de l'electrònica, assegureu-vos de tallar les traces del protobordo a les files que ocuparà el nRF24 tal com es mostra a la imatge superior.
En cas contrari, necessitareu cables de connexió per connectar el nRF24 al protoboard.
No es mostren la connexió de la resistència, els cables GND i 5V a l'interruptor fotogràfic. Connecteu l'interruptor fotogràfic tal com s'indica al tauler de ruptura. S'inclou una imatge del tauler informatiu.
Els circuits per als indicadors de dreta i esquerra són exactament els mateixos.
Pas 4: programari Telltale
Aquí teniu el codi per a l’indicador correcte. Connecteu el nano de l’indicador adequat a l’ordinador, obriu l’IDE Arduino, copieu i enganxeu-hi el codi i pengeu-lo al tauler.
/ ** Programa que utilitza photogate per examinar el conte
* / #include #include #include #include Ràdio RF24 (9, 10); // CE, CSN const byte address [6] = "00010"; // --- consts del programa --- // temps const int string_check_time = 1; const int flow_check_time = 30; const int demora_base = 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; // configureu la var anterior basada en els vostres propis assaigs experimentals 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; void setup () {// while (! Serial); // per a flora // delay (500); num_string_seen = 0; num_loops = 0; pinMode (GATE_PIN, INPUT); pinMode (GATE_PIN_2, INPUT); Serial.begin (115200); // per depurar radio.begin (); radio.openWritingPipe (adreça); radio.setPALevel (RF24_PA_MIN); radio.stopListening (); } void loop () {// poseu aquí el vostre codi principal per executar-lo repetidament: if (num_loops% string_check_time == 0) {// comproveu l'estat de la cadena check_string (); } if (num_loops == flow_check_time) {// examina flow //Serial.println(num_string_seen); int flow_num = examine_flow (); // enviar valors send_out (flux_num); // restablir vars num_string_seen = 0; num_loops = 0; demora (flow_check_delay); } num_loops ++; demora (base_delay); } / * * Mètode per comprovar si la cadena creua la porta * / 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 passes: "); //Serial.println(num_string_seen); tornar; } / * * Mètode per analitzar quina fracció de cadena de temps va cobrir la porta * / int examine_flow () {double percent_seen = double (num_string_seen) / max_in_flow; Serial.print ("Percentatge cobert:"); printDouble (percentatge_vist, 100); // escalar el valor a escala de comunicació int scaled_flow = int (percent_seen * msg_max_val); if (scaled_flow> msg_max_val) {scaled_flow = msg_max_val; } if (scale_flow = 0) frac = (val - int (val)) * precisió; else frac = (int (val) - val) * precisió; Serial.println (frac, DEC); }
Aquí teniu el codi per a l’indicador esquerre. Seguiu els mateixos passos que els anteriors per a l’indicador esquerre. Com podeu veure, l’única diferència és l’adreça a la qual el revelador envia els seus resultats.
/ ** Programa que utilitza photogate per examinar el conte
* / #include #include #include #include Ràdio RF24 (9, 10); // CE, CSN const byte address [6] = "00001"; // --- consts del programa --- // temps 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; // configureu la var anterior basada en els vostres propis assaigs experimentals 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; void setup () {// while (! Serial); // per a flora // delay (500); num_string_seen = 0; num_loops = 0;
pinMode (GATE_PIN, INPUT);
pinMode (GATE_PIN_2, INPUT); Serial.begin (115200); // per depurar radio.begin (); radio.openWritingPipe (adreça); radio.setPALevel (RF24_PA_MIN); radio.stopListening (); } void loop () {// poseu aquí el vostre codi principal per executar-lo repetidament: if (num_loops% string_check_time == 0) {// comproveu l'estat de la cadena check_string (); } if (num_loops == flow_check_time) {// examina flow //Serial.println(num_string_seen); int flow_num = examine_flow (); // enviar valors send_out (flux_num); // restablir vars num_string_seen = 0; num_loops = 0; demora (flow_check_delay); } num_loops ++; demora (base_delay); } / * * Mètode per comprovar si la cadena creua la porta * / 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 passes: "); //Serial.println(num_string_seen); tornar; } / * * Mètode per analitzar quina fracció de cadena de temps va cobrir la porta * / int examine_flow () {double percent_seen = double (num_string_seen) / max_in_flow; Serial.print ("Percentatge cobert:"); printDouble (percentatge_vist, 100); // escalar el valor a escala de comunicació int scaled_flow = int (percent_seen * msg_max_val); if (scaled_flow> msg_max_val) {scaled_flow = msg_max_val; } if (scale_flow = 0) frac = (val - int (val)) * precisió; else frac = (int (val) - val) * precisió; Serial.println (frac, DEC); }
Pas 5: Assemblea reveladora
Parts individuals
- Marc revelador
- Filats
- Circuit revelador construït
- Bateria
- Cinta elèctrica
- Epoxi o cola
STL per a components reveladors d’impressió 3D
- STL per al quadre revelador: esquerra, dreta
- STLs per a caixa electrònica: superior, inferior
Instruccions de muntatge
- Col·loqueu imants de barres a les ranures del marc revelador imprès en 3D. Assegureu-vos que els imants estiguin alineats correctament entre el marc dret i el marc esquerre i, a continuació, utilitzeu epoxi (o cola) per fixar els imants al marc. Permet que l’epoxi (o la cola) s’estableixi completament.
- Col·loqueu els interruptors fotogràfics a les ranures superior i inferior de la part posterior del marc. Col·loqueu amb cura (o enganxeu) els taulers d’interrupció fotogràfica al marc. Permet que l’epoxi (o la cola) s’estableixi completament
- Tallar un ~ 7 en tros de fil. Lligueu un extrem del fil a la ranura de la primera barra vertical. Tallar un petit tros de cinta elèctrica i embolicar la cinta elèctrica sobre la secció del fil que hi haurà a la regió dels interruptors fotogràfics. Enfileu el fil a través del marc de manera que passi pel buit de la porta d'interrupció de la foto.
- Col·loqueu els imants de barres a les ranures de la part inferior de la caixa electrònica impresa en 3D. Assegureu-vos que els imants s’alineïn correctament entre la caixa dreta i la caixa esquerra i, a continuació, utilitzeu epoxi (o cola) per fixar els imants al marc. Permet que l’epoxi (o la cola) s’estableixi completament.
- Col·loqueu el circuit revelador construït a la caixa electrònica, alineant els diferents components a les seves ranures. Tanqueu la caixa amb la part superior de la caixa electrònica impresa en 3D. Col·loqueu epoxi (o cola) el paquet de bateries a la part superior de la caixa perquè quedi exposat l’interruptor.
Pas 6: maquinari dels altaveus
El sistema de sortida consta de dos circuits d'altaveus, un per a cada indicador, equipats amb comunicació sense fils i un comandament d'ajust de volum. En primer lloc, prepareu els proto-protectors per utilitzar-los amb els mòduls nRF24L01 com hem fet per als circuits reveladors tallant els cables separant les dues files de pins on es col·locarà la placa.
A continuació, munteu el circuit tal com es mostra al diagrama anterior mentre feu referència a les fotos dels circuits completats.
Instruccions de muntatge de la junta
Per apilar les taules al recinte dels altaveus, els components principals s’han de col·locar en determinades zones del tauler. A les instruccions següents, em referiré al sistema de coordenades que s’utilitza per indicar files i columnes a la placa de protecció Adafruit:
- L’Arduino Nano s’ha de col·locar contra la vora superior de la placa al centre de manera que el pin Vin estigui situat a G16. Això permetrà reprogramar fàcilment l'Arduino Nano després de muntar el circuit.
- El tauler nRF24L01 s'ha de col·locar a l'extrem inferior dret del tauler que abasta les vuit posicions de C1 a D5. Això deixarà el nRF24L01 penjat de la protoborda per permetre una millor comunicació sense fils.
- El paquet de bateries del sistema d’altaveus alimenta ambdós proto-protectors, així que assegureu-vos de connectar els dos rails / pins GND d’Arduino Nano i els pins Vin a la font d’alimentació.
-
Per al circuit "inferior", el potenciòmetre s'ha de col·locar a la part superior de la placa mirant cap a l'exterior de manera que els seus passadors es col·loquin a les posicions J2, J4 i J6
- J2 ↔ Arduino Nano sortida des del pin digital 3 (D3)
- J4 ↔ pin base del transistor 2N3904
- J6 ↔ sense connexió
-
Per al circuit "superior", el potenciòmetre s'ha de col·locar a la part inferior de la placa mirant cap a l'exterior de manera que els seus passadors es col·loquin a les posicions J9, J11 i J13
- J13 ↔ Arduino Nano sortida des del pin digital 3 (D3)
- J11 ↔ pin base del transistor 2N3904
- J9 ↔ sense connexió
Pas 7: programari d’altaveus
Aquí teniu el codi per a l’altaveu que es comunica amb l’indicador esquerre. Connecteu l'Arduino Nano a la placa de l'altaveu inferior a l'ordinador, obriu l'Arduino IDE, copieu i enganxeu-hi aquest codi i pengeu-lo a la placa.
#incloure
#include #include RF24 radio (7, 8); // CE, CSN // indicador esquerre, altaveu de la placa principal de l’altaveu const byte address [6] = "00001"; const int pitch = 2000; const int pitch_duration = 200; altaveu int int = 3; const int delay_gain = 100; estat int = 0; int cur_delay = 0; lectura de caràcters [2]; void setup () {pinMode (altaveu, OUTPUT); Serial.begin (115200); Serial.println ("Inici de la comunicació sense fils …"); radio.begin (); radio.openReadingPipe (0, adreça); radio.setPALevel (RF24_PA_MIN); radio.startListening (); } void loop () {if (radio.available ()) {radio.read (& read, sizeof (read)); status = (int) (llegiu [0] - '0'); Serial.print ("Rebut:"); Serial.println (estat); cur_delay = delay_gain * estat; } if (cur_delay) {to (altaveu, to, durada_tono); endarreriment (cur_delay + pitch_duration); Serial.println ("Beep!"); }}
Aquí teniu el codi per a l’altaveu que es comunica amb l’indicador adequat. Connecteu l'Arduino Nano a la placa de l'altaveu superior a l'ordinador, obriu l'Arduino IDE, copieu i enganxeu-hi aquest codi i pengeu-lo a la placa.
#incloure
#include #include RF24 radio (7, 8); // CE, CSN // indicador dret, altaveu de la placa inferior de l’adreça de byte const [6] = "00010"; const int pitch = 1500; const int pitch_duration = 200; altaveu int int = 3; const int delay_gain = 100; estat int = 0; int cur_delay = 0; lectura de caràcters [2]; void setup () {pinMode (altaveu, OUTPUT); Serial.begin (115200); Serial.println ("Inici de la comunicació sense fils …"); radio.begin (); radio.openReadingPipe (0, adreça); radio.setPALevel (RF24_PA_MIN); radio.startListening (); } void loop () {if (radio.available ()) {radio.read (& read, sizeof (read)); status = (int) (llegiu [0] - '0'); Serial.print ("Rebut:"); Serial.println (estat); cur_delay = delay_gain * estat; } if (cur_delay) {to (altaveu, to, durada_tono); endarreriment (cur_delay + pitch_duration); Serial.println ("Beep!"); }}
Pas 8: Assemblea de ponents
Parts individuals
- 2 circuits d'altaveus construïts
- 2 altaveus
- 1 paquet de bateries
STL per a la impressió 3D
- Capsa superior
- Caixa inferior
Instruccions de muntatge físic
- Col·loqueu amb cura els circuits dels altaveus a la part inferior de la caixa, una placa sobre l'altra de manera que els comandaments de volum estiguin l'un al costat de l'altre i rellisquin als forats. Els xips de comunicació haurien d’estar exposats a la part posterior de la caixa.
- Col·loqueu els altaveus a l'esquerra i a la dreta de la placa de circuit, assegurant-vos que els altaveus corresponen als costats indicadors correctes. Alineeu els altaveus a les ranures dels costats de la caixa.
- Introduïu els cables de la bateria pel petit forat de la part posterior de la caixa. Feu epoxi (o enganxeu) la bateria a la part posterior de la caixa de manera que quedi exposat l’interruptor.
- Col·loqueu la caixa impresa en 3D a la part inferior de la caixa per contenir-ho tot.
Pas 9: configuració / muntatge
- Activeu els indicadors posant els interruptors de les bateries a la posició "ON". Feu el mateix amb el conjunt de l’altaveu per activar el sistema de sortida.
- El muntatge d’indicacions sonores es fa més fàcilment amb dues persones, però es pot fer amb una. Per muntar-los en un braç que no s’enrotlla, els indicadors es posarien més fàcilment abans d’aixecar la vela.
- Per assegurar-vos que el marc del conte estigui orientat correctament, mireu la osca d’una de les barres verticals. Quan manteniu el marc en posició vertical, la osca hauria d’estar cap a la part superior. El costat del marc amb aquesta barra també hauria d’estar orientat cap a la part davantera del vaixell.
- Col·loqueu un dels contes a l’alçada i la posició desitjades sobre la vela. S'ha de col·locar de manera que el fil estigui al mateix lloc que si formés part d'un conte tradicional.
- Un cop tingueu un conte a la posició desitjada. Col·loqueu l’altre conte a l’altre costat de la vela, exactament oposat al primer que heu col·locat, de manera que els imants s’alineïn. Un cop els imants facin una connexió, haurien de mantenir el marc de manera segura a la vela. Alineeu els imants dels recintes electrònics per a cada conte a banda i banda de la vela, de manera que també es connectin.
- Si observeu que quan la corda flueix recte cap enrere no es creua per davant de la porta superior, gireu el marc del conte de manera que la meitat posterior del marc es dirigeixi cap avall. Gireu el marc fins que la corda passi per l'interruptor superior de la foto quan el fil flueix cap enrere.
Pas 10: resolució de problemes
Tots els fragments de codi tenen declaracions d’impressió de depuració per indicar que envien, reben i processen dades. L’obertura del port COM mitjançant l’IDE Arduino amb un dels subsistemes Arduino Nano connectats a un ordinador us permetrà visualitzar aquests missatges d’estat.
Si el sistema no funciona correctament, activeu els interruptors de tots els components.
Pas 11: possibles passos següents
- Impermeabilització
- Comunicació de major abast. El WiFi és una opció prometedora.
- Actualment, la nostra configuració actual utilitza 2 interruptors fotogràfics per revelador. Afegeix més interruptors fotogràfics al sistema pot ser interessant.
Recomanat:
La ràdio interactiva de contes: 6 passos (amb imatges)
La ràdio interactiva de contes: en aquest projecte convertim una ràdio d’aspecte ordenat en un narrador interactiu amb veu activada. Futur, aquí arribem
Coneixement del circuit analògic: bricolatge d’un circuit d’efectes sonors de rellotge sense IC: 7 passos (amb imatges)
Coneixement del circuit analògic: bricolatge d’un circuit d’efecte de so de rellotge sense IC: aquest circuit d’efecte de so de rellotge s’ha construït només amb transistors, resistències i condensadors que no tenen cap component IC. És ideal per aprendre els coneixements bàsics del circuit mitjançant aquest circuit pràctic i senzill
Altaveu acrílic de dodecaedre amb LED reactius sonors: 7 passos (amb imatges)
Altaveu acrílic de dodecaedre amb LEDs reactius sonors: Hola, em dic Charlie Schlager. Tinc 15 anys i vaig a l'escola Fessenden de Massachusetts. Aquest altaveu és una versió molt divertida per a qualsevol bricolatge que busqui un projecte interessant. Vaig construir aquest altaveu principalment al laboratori d’innovació Fessenden situat a
Conversió d'un mesurador de vela per a fotografia: 5 passos (amb imatges)
Conversió d’un mesurador de vela per a fotografia: si us agrada la meva feina, voteu per aquest instructiu al Desafiament Fes-lo real abans del 4 de juny de 2012. Gràcies! Pels fotògrafs aficionats que us agradi rodar pel·lícules, de vegades les càmeres antigues no tenen el mesurador de llum adequat
Contes del xip: amplificador d'àudio LM1875: 8 passos (amb imatges)
Contes del xip: amplificador d'àudio LM1875: m'encanten alguns amplificadors de xip: petits paquets de potència d'àudio pura. Amb només uns quants components externs, una font d’alimentació neta i un fort dissipador de calor, podeu obtenir un so de qualitat d'alta fidelitat que rivalitza amb dissenys de transistors discrets i complexos