Tabla de contenido:

Indicadores audibles para navegar: 11 pasos
Indicadores audibles para navegar: 11 pasos

Video: Indicadores audibles para navegar: 11 pasos

Video: Indicadores audibles para navegar: 11 pasos
Video: Cómo configurar tu terminal para que sea asombrosa en Windows 11 2024, Mes de julio
Anonim
Image
Image
Hardware delator
Hardware delator

Los indicadores son trozos de cuerda que se utilizan en la navegación para indicar si hay un flujo turbulento o laminar a través de la vela. Sin embargo, los trozos de hilo de diferentes colores unidos a cada lado de la vela son indicadores puramente visuales. Estos indicadores audibles son un dispositivo de asistencia que tiene como objetivo comunicar la información visual en forma auditiva tanto para los marineros videntes como para los discapacitados visuales, como Pauline.

El dispositivo consta de un sistema de entrada, que lee el movimiento del indicador, y un sistema de salida, que emite una serie de pitidos que transmiten información sobre el flujo de aire.

Se requiere acceso a equipos de soldadura y una impresora 3D para la fabricación de este dispositivo.

Paso 1: Lista de materiales

Lista de materiales con enlaces y precios

Nota: necesitará 2 juegos de todo lo siguiente.

Sistema de entrada

  • Arduino Nano
  • Placa de pruebas de tamaño medio perma-proto de Adafruit
  • Módulo transceptor inalámbrico nRF24L01
  • Interruptor de fotos
  • Tablero de ruptura del interruptor de fotos Sparkfun
  • Paquete de batería de 9V compatible con Arduino
  • Batería de 9V
  • Varias longitudes de cable de calibre 22
  • Hilo
  • Imanes de neodimio
  • Epoxy

Sistema de salida

  • Arduino Nano
  • Placa de pruebas de tamaño medio perma-proto de Adafruit
  • Módulo transceptor inalámbrico nRF24L01
  • Paquete de batería de 9V compatible con Arduino
  • Potenciómetro de 1K Ohm
  • Resistencia de 120 ohmios
  • Transistor 2N3904
  • Condensador de 0.1 uF
  • Altavoz compatible con Arduino

Archivos de GitHub

  • Todo el código y los archivos STL necesarios para construir estos indicadores se pueden encontrar en este repositorio de GitHub.
  • Necesitará dos juegos del gabinete y uno de la carcasa del altavoz.

Paso 2: Herramientas / Máquinas / Requisitos de software

Para programar el Arduino, deberá descargar el IDE de Arduino. El enlace de descarga se puede encontrar aquí.

Para programar el módulo nRF24L01, deberá descargar su biblioteca a través del IDE de Arduino. Herramientas> Administrar bibliotecas…> instalar biblioteca RF24

Para ensamblar los componentes electrónicos se requiere acceso a herramientas básicas de soldadura. Una bomba desoldadora también puede ser útil, pero no es necesaria.

Para construir el marco revelador y la caja del altavoz, necesitará acceso a una impresora 3D.

Paso 3: hardware indicador

Hardware delator
Hardware delator
Hardware delator
Hardware delator

Ensamble el circuito de acuerdo con los diagramas anteriores. El Arduino Nano debe estar alineado con la parte superior del protoboard. Esto le permite tener acceso al puerto USB incluso después de que todos los componentes electrónicos estén conectados.

Para evitar cortocircuitos en la electrónica, asegúrese de cortar los rastros del protoboard en las filas que ocupará el nRF24 como se muestra en la imagen de arriba.

De lo contrario, necesitará cables de puente para conectar el nRF24 al protoboard.

La conexión de la resistencia, GND y los cables de 5 V al fotointerruptor no se muestran. Conecte el fotointerruptor como se indica en su tablero de conexiones. Se incluye una imagen del tablero de ruptura.

Los circuitos de los indicadores derecho e izquierdo son exactamente los mismos.

Paso 4: Software Telltale

Aquí está el código del indicador derecho. Conecte el nano del indicador derecho a su computadora, abra el IDE de Arduino, copie y pegue este código en él y cárguelo en la placa.

/ ** Programa que utiliza la puerta fotoeléctrica para examinar el indicador

* / #incluir #incluir #incluir #incluir radio RF24 (9, 10); // CE, CSN const byte address [6] = "00010"; // --- programa 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; // establece la var anterior según tus propias pruebas experimentales 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 // --- programa vars --- int num_string_seen = 0; int num_loops = 0; configuración vacía () {// while (! Serial); // para flora // retraso (500); num_string_seen = 0; num_loops = 0; pinMode (GATE_PIN, INPUT); pinMode (PUERTA_PIN_2, ENTRADA); Serial.begin (115200); // para depurar radio.begin (); radio.openWritingPipe (dirección); radio.setPALevel (RF24_PA_MIN); radio.stopListening (); } void loop () {// ponga su código principal aquí, para que se ejecute repetidamente: if (num_loops% string_check_time == 0) {// verifique el estado de la cadena check_string (); } if (num_loops == flow_check_time) {// examinar el flujo //Serial.println(num_string_seen); int núm_flujo = examinar_flujo (); // enviar valores send_out (flow_num); // restablecer vars num_string_seen = 0; num_loops = 0; delay (flow_check_delay); } num_loops ++; retraso (demora_base); } / * * Método para verificar si la cadena cruza la puerta * / 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 (PUERTA_PIN_2);

if (bot_state == 0) {num_string_seen--; //Serial.println("string on bottom! "); } //Serial.print("Contar pasadas de cadena: "); //Serial.println(num_string_seen); regreso; } / * * Método para analizar qué fracción de tiempo la cadena cubrió la puerta * / int examine_flow () {double percent_seen = double (num_string_seen) / max_in_flow; Serial.print ("Porcentaje cubierto:"); printDouble (porcentaje_visto, 100); // escala el valor a la escala de comunicación int scaled_flow = int (percent_seen * msg_max_val); if (flujo_escalado> msg_max_val) {flujo_escalado = msg_max_val; } if (flujo_escalado = 0) frac = (val - int (val)) * precisión; si no frac = (int (val) - val) * precisión; Serial.println (frac, DEC); }

Aquí está el código del indicador izquierdo. Siga los mismos pasos que los anteriores para el indicador izquierdo. Como puede ver, la única diferencia es la dirección a la que el indicador envía sus resultados.

/ ** Programa que utiliza la puerta fotoeléctrica para examinar el indicador

* / #incluir #incluir #incluir #incluir radio RF24 (9, 10); // CE, CSN const byte address [6] = "00001"; // --- programa 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; // establece la var anterior según tus propias pruebas experimentales 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 // --- programa vars --- int num_string_seen = 0; int num_loops = 0; configuración vacía () {// while (! Serial); // para flora // retraso (500); num_string_seen = 0; num_loops = 0;

pinMode (GATE_PIN, INPUT);

pinMode (PUERTA_PIN_2, ENTRADA); Serial.begin (115200); // para depurar radio.begin (); radio.openWritingPipe (dirección); radio.setPALevel (RF24_PA_MIN); radio.stopListening (); } void loop () {// ponga su código principal aquí, para que se ejecute repetidamente: if (num_loops% string_check_time == 0) {// verifique el estado de la cadena check_string (); } if (num_loops == flow_check_time) {// examinar el flujo //Serial.println(num_string_seen); int núm_flujo = examinar_flujo (); // enviar valores send_out (flow_num); // restablecer vars num_string_seen = 0; num_loops = 0; delay (flow_check_delay); } num_loops ++; retraso (base_delay); } / * * Método para verificar si la cadena cruza la puerta * / 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 (PUERTA_PIN_2);

if (bot_state == 0) {num_string_seen--; //Serial.println("string on bottom! "); } //Serial.print("Contar pasadas de cadena: "); //Serial.println(num_string_seen); regreso; } / * * Método para analizar qué fracción de tiempo la cadena cubrió la puerta * / int examine_flow () {double percent_seen = double (num_string_seen) / max_in_flow; Serial.print ("Porcentaje cubierto:"); printDouble (porcentaje_visto, 100); // escala el valor a la escala de comunicación int scaled_flow = int (percent_seen * msg_max_val); if (flujo_escalado> msg_max_val) {flujo_escalado = msg_max_val; } if (flujo_escalado = 0) frac = (val - int (val)) * precisión; si no frac = (int (val) - val) * precisión; Serial.println (frac, DEC); }

Paso 5: Ensamblaje del indicador

Ensamblaje delator
Ensamblaje delator

Partes individuales

  • Marco delator
  • Hilo
  • Circuito indicador construido
  • Paquete de baterías
  • Cinta eléctrica
  • Epoxi o pegamento

STL para componentes reveladores de impresión 3D

  • STL para marco indicador: izquierda, derecha
  • STL para caja de electrónica: superior, inferior

Instrucciones de montaje

  1. Coloque imanes de barra en las ranuras del marco indicador impreso en 3D. Asegúrese de que los imanes se alineen correctamente entre el marco derecho y el marco izquierdo, luego use epoxi (o pegamento) para asegurar los imanes al marco. Deje que el epoxi (o pegamento) se seque por completo.
  2. Coloque los interruptores fotográficos en las ranuras superior e inferior en la parte posterior del marco. Con cuidado, aplique epoxi (o pegue) las placas del fotointerruptor al marco. Deje que el epoxi (o pegamento) se seque por completo
  3. Corta un ~ 7 en un trozo de hilo. Ate un extremo del hilo en la muesca de la primera barra vertical. Corta un pequeño trozo de cinta aislante y envuelve la cinta aislante sobre la sección del hilo que estará en la región de los fotointerruptores. Pase el hilo a través del marco para que pase a través del espacio de la puerta del fotointerruptor.
  4. Coloque barras magnéticas en las ranuras de la parte inferior de la caja de electrónica impresa en 3D. Asegúrese de que los imanes se alineen correctamente entre la caja derecha y la caja izquierda, luego use epoxi (o pegamento) para asegurar los imanes al marco. Deje que el epoxi (o pegamento) se seque por completo.
  5. Coloque el circuito indicador construido en la caja de la electrónica, alineando los diferentes componentes con sus ranuras. Cierre la caja con la parte superior de la caja de electrónica impresa en 3D. Epoxi (o pegamento) el paquete de baterías a la parte superior de la caja para que el interruptor quede expuesto.

Paso 6: hardware de los altavoces

Hardware de altavoz
Hardware de altavoz
Hardware de altavoz
Hardware de altavoz
Hardware de altavoz
Hardware de altavoz

El sistema de salida consta de dos circuitos de altavoces, uno para cada indicador, equipados con comunicación inalámbrica y una perilla de ajuste de volumen. Primero, prepare los protoboards para usar con los módulos nRF24L01 como hicimos para los circuitos indicadores cortando los cables que separan las dos filas de pines donde se colocará el tablero.

Luego, ensamble el circuito como se muestra en el diagrama anterior mientras consulta las fotos de los circuitos completados.

Instrucciones de montaje de la placa

Para apilar las placas en la caja del altavoz, los componentes principales deben colocarse en determinadas áreas de la placa. En las siguientes instrucciones, me referiré al sistema de coordenadas utilizado para denotar filas y columnas en el protoboard de Adafruit:

  1. El Arduino Nano debe colocarse contra el borde superior de la placa en el centro para que el pin Vin se coloque en G16. Esto permitirá una fácil reprogramación del Arduino Nano después de que se haya ensamblado el circuito.
  2. La placa nRF24L01 debe colocarse en la esquina inferior derecha de la placa abarcando las ocho posiciones de C1 a D5. Esto dejará el nRF24L01 colgando del protoboard para permitir una mejor comunicación inalámbrica.
  3. El paquete de baterías para el sistema de altavoces alimenta ambas protoboards, así que asegúrese de conectar los dos rieles / pines GND y los pines Vin de Arduino Nano a la fuente de alimentación.
  4. Para el circuito "inferior", el potenciómetro debe colocarse en la parte superior de la placa mirando hacia afuera para que sus pines se coloquen en las posiciones J2, J4 y J6

    1. Salida J2 ↔ Arduino Nano desde el pin digital 3 (D3)
    2. J4 ↔ pin de base del transistor 2N3904
    3. J6 ↔ desconectado
  5. Para el circuito "superior", el potenciómetro debe colocarse en la parte inferior de la placa mirando hacia afuera para que sus pines se coloquen en las posiciones J9, J11 y J13

    1. Salida J13 ↔ Arduino Nano desde el pin digital 3 (D3)
    2. J11 ↔ pin de base del transistor 2N3904
    3. J9 ↔ desconectado

Paso 7: Software de altavoz

Aquí está el código para el altavoz que se comunica con el indicador izquierdo. Conecte el Arduino Nano en la placa del altavoz inferior a su computadora, abra el IDE de Arduino, copie y pegue este código en él y cárguelo en la placa.

#incluir

#incluye #incluye radio RF24 (7, 8); // CE, CSN // indicador izquierdo, placa de altavoz superior const byte address [6] = "00001"; const int tono = 2000; const int pitch_duration = 200; const int altavoz = 3; const int delay_gain = 100; int status = 0; int cur_delay = 0; char leído [2]; configuración vacía () {pinMode (altavoz, SALIDA); Serial.begin (115200); Serial.println ("Iniciando comunicación inalámbrica …"); radio.begin (); radio.openReadingPipe (0, dirección); radio.setPALevel (RF24_PA_MIN); radio.startListening (); } bucle void () {if (radio.available ()) {radio.read (& read, sizeof (read)); estado = (int) (leer [0] - '0'); Serial.print ("Recibido:"); Serial.println (estado); cur_delay = delay_gain * estado; } if (cur_delay) {tono (altavoz, tono, tono_duration); delay (cur_delay + pitch_duration); Serial.println ("¡Bip!"); }}

Aquí está el código para que el hablante se comunique con el indicador correcto. Conecte el Arduino Nano en la placa del altavoz superior a su computadora, abra el IDE de Arduino, copie y pegue este código en él y cárguelo en la placa.

#incluir

#incluye #incluye radio RF24 (7, 8); // CE, CSN // indicador derecho, placa de altavoz inferior const byte address [6] = "00010"; tono int const = 1500; const int pitch_duration = 200; const int altavoz = 3; const int delay_gain = 100; int status = 0; int cur_delay = 0; char leído [2]; configuración vacía () {pinMode (altavoz, SALIDA); Serial.begin (115200); Serial.println ("Iniciando comunicación inalámbrica …"); radio.begin (); radio.openReadingPipe (0, dirección); radio.setPALevel (RF24_PA_MIN); radio.startListening (); } bucle void () {if (radio.available ()) {radio.read (& read, sizeof (read)); estado = (int) (leer [0] - '0'); Serial.print ("Recibido:"); Serial.println (estado); cur_delay = delay_gain * estado; } if (cur_delay) {tono (altavoz, tono, tono_duration); delay (cur_delay + pitch_duration); Serial.println ("¡Bip!"); }}

Paso 8: Montaje del altavoz

Partes individuales

  • 2 circuitos de altavoces construidos
  • 2 altavoces
  • 1 paquete de baterías

STL para impresión 3D

  • Tapa de caja
  • Fondo de caja

Instrucciones de montaje físico

  1. Coloque con cuidado los circuitos de los altavoces en la parte inferior de la caja, una placa encima de la otra, de modo que las perillas de volumen estén una al lado de la otra y se deslicen por los orificios. Los chips de comunicación deben estar expuestos en la parte posterior de la caja.
  2. Coloque los altavoces a la izquierda y a la derecha de la placa de circuito, asegurándose de que los altavoces correspondan a los lados indicadores correctos. Alinee los altavoces con las ranuras a los lados de la caja.
  3. Pase los cables del paquete de baterías a través del pequeño orificio en la parte posterior de la caja. Ponga epoxi (o pegue) el paquete de baterías en la parte posterior de la caja de manera que el interruptor quede expuesto.
  4. Coloque la parte superior de la caja impresa en 3D sobre la parte inferior de la caja para contener todo.

Paso 9: Configuración / Montaje

Configuración / Montaje
Configuración / Montaje
  1. Encienda los indicadores girando los interruptores de los paquetes de baterías a la posición 'ENCENDIDO'. Haga lo mismo con el conjunto de altavoces para encender el sistema de salida.
  2. El montaje de los indicadores acústicos se realiza más fácilmente con dos personas, pero se puede hacer con una. Para montar en un foque que no se enrolla, los indicadores se colocarían más fácilmente antes de izar la vela.
  3. Para asegurarse de que el marco del indicador esté orientado correctamente, mire la muesca en una de las barras verticales. Al sostener el marco en posición vertical, la muesca debe estar hacia arriba. El lado del marco con esa barra también debe mirar hacia la parte delantera del barco.
  4. Coloque uno de los indicadores a la altura y posición deseadas en la vela. Debe colocarse de manera que el hilo esté en el mismo lugar en el que estaría si fuera parte de un testigo tradicional.
  5. Una vez que tenga un testigo en la posición deseada. Coloque el otro indicador en el otro lado de la vela, exactamente opuesto al primero que colocó, de modo que los imanes se alineen. Una vez que los imanes hagan una conexión, deben sujetar el marco de forma segura a la vela. Alinee los imanes de los recintos electrónicos, para cada indicador a cada lado de la vela, de modo que también se conecten.
  6. Si nota que cuando la cuerda fluye directamente hacia atrás, no cruza frente a la puerta superior, gire el marco indicador de manera que la mitad posterior del marco se dirija hacia abajo. Gire el marco hasta que el hilo pase a través del fotointerruptor superior cuando el hilo fluya hacia atrás.

Paso 10: solución de problemas

Todos los fragmentos de código tienen declaraciones de impresión de depuración para indicar que están enviando, recibiendo y procesando datos. Abrir el puerto COM usando el IDE de Arduino con uno de los subsistemas Arduino Nano conectado a una computadora le permitirá ver estos mensajes de estado.

Si el sistema no funciona correctamente, active los interruptores de todos los componentes.

Paso 11: posibles pasos siguientes

  • Impermeabilización
  • Comunicación de mayor alcance. WiFi será una opción prometedora.
  • Nuestra configuración actual utiliza actualmente 2 fotointerruptores por indicador. Podría ser interesante intentar agregar más interruptores de fotos al sistema.

Recomendado: