Taula de continguts:

Contes sonors per a la vela: 11 passos
Contes sonors per a la vela: 11 passos

Vídeo: Contes sonors per a la vela: 11 passos

Vídeo: Contes sonors per a la vela: 11 passos
Vídeo: Dangerous Liaisons | Critical Role | Campaign 2, Episode 37 - Live from New York! 2024, Juliol
Anonim
Image
Image
Maquinari revelador
Maquinari revelador

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

Maquinari revelador
Maquinari revelador
Maquinari revelador
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

Assemblea reveladora
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

  1. 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.
  2. 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
  3. 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.
  4. 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.
  5. 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

Maquinari dels altaveus
Maquinari dels altaveus
Maquinari dels altaveus
Maquinari dels altaveus
Maquinari dels altaveus
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:

  1. 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.
  2. 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.
  3. 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ó.
  4. 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

    1. J2 ↔ Arduino Nano sortida des del pin digital 3 (D3)
    2. J4 ↔ pin base del transistor 2N3904
    3. J6 ↔ sense connexió
  5. 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

    1. J13 ↔ Arduino Nano sortida des del pin digital 3 (D3)
    2. J11 ↔ pin base del transistor 2N3904
    3. 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

  1. 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.
  2. 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.
  3. 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.
  4. Col·loqueu la caixa impresa en 3D a la part inferior de la caixa per contenir-ho tot.

Pas 9: configuració / muntatge

Configuració / muntatge
Configuració / muntatge
  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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: