Índice:

Indicadores audíveis para velejar: 11 etapas
Indicadores audíveis para velejar: 11 etapas

Vídeo: Indicadores audíveis para velejar: 11 etapas

Vídeo: Indicadores audíveis para velejar: 11 etapas
Vídeo: Live #11: Análise Exploratória de Dados (Passo a Passo com Python) 2024, Novembro
Anonim
Image
Image
Hardware Indicador
Hardware Indicador

Indicadores são pedaços de barbante usados na navegação para indicar se há fluxo turbulento ou laminar na vela. No entanto, os diferentes pedaços de fios coloridos presos a cada lado da vela são indicadores puramente visuais. Esses avisadores audíveis são um dispositivo auxiliar que visa comunicar a informação visual de forma auditiva para velejadores com deficiência visual, como Pauline.

O dispositivo consiste em um sistema de entrada, que lê o movimento do avisador, e um sistema de saída, que emite uma série de bipes transmitindo informações sobre o fluxo de ar.

O acesso a equipamentos de solda e uma impressora 3D é necessário para a fabricação deste dispositivo.

Etapa 1: Lista de materiais

BOM com links e preços

Observação: você precisará de 2 conjuntos de todos os itens a seguir.

Sistema de entrada

  • Arduino Nano
  • Adafruit perma-proto placa de ensaio de meio tamanho PCB
  • Módulo transceptor sem fio nRF24L01
  • Interruptor de foto
  • Sparkfun Photo Interrupter Breakout Board
  • Pacote de bateria de 9 V compatível com Arduino
  • Bateria 9V
  • Vários comprimentos de fio de bitola 22
  • Fio
  • Ímãs de neodímio
  • Epóxi

Sistema de Saída

  • Arduino Nano
  • Adafruit perma-proto placa de ensaio de meio tamanho PCB
  • Módulo transceptor sem fio nRF24L01
  • Pacote de bateria de 9 V compatível com Arduino
  • Potenciômetro de 1K Ohm
  • Resistor de 120 ohms
  • Transistor 2N3904
  • Capacitor 0,1 uF
  • Alto-falante compatível com Arduino

Arquivos GitHub

  • Todo o código e arquivos STL necessários para construir esses indicadores podem ser encontrados neste repositório GitHub.
  • Você precisará de dois conjuntos de gabinete e um de caixa de alto-falante.

Etapa 2: Ferramentas / Máquinas / Requisitos de software

Para programar o Arduino, você precisará baixar o IDE do Arduino. O link para download pode ser encontrado aqui.

Para programar o módulo nRF24L01, você precisará baixar sua biblioteca por meio do IDE do Arduino. Ferramentas> Gerenciar Bibliotecas…> instalar biblioteca RF24

Para montar os componentes eletrônicos, é necessário o acesso às ferramentas básicas de solda. Uma bomba de dessoldagem também pode ser útil, mas não é necessária.

Para construir a moldura reveladora e a caixa do alto-falante, você precisará de acesso a uma impressora 3D.

Etapa 3: Hardware Indicador

Hardware Indicador
Hardware Indicador
Hardware Indicador
Hardware Indicador

Monte o circuito de acordo com os diagramas acima. O Arduino Nano deve ser alinhado com a parte superior do protoboard. Isso permite que você tenha acesso à porta USB mesmo depois que todos os componentes eletrônicos estiverem conectados.

Para evitar curto-circuito na eletrônica, certifique-se de cortar os traços do protoboard nas filas que o nRF24 ocupará conforme mostrado na imagem acima.

Caso contrário, você precisará de cabos de jumper para conectar o nRF24 ao protoboard.

A conexão do resistor, GND e fios de 5 V para o fotointerruptor não são mostrados. Conecte o interruptor fotográfico conforme indicado em sua placa de breakout. Uma imagem da placa de apoio está incluída.

Os circuitos para os indicadores da direita e da esquerda são exatamente os mesmos.

Etapa 4: Software Telltale

Aqui está o código para a revelação certa. Conecte o nano do Telltale Right ao seu computador, abra o IDE do Arduino, copie e cole este código nele e carregue-o na placa.

/ ** Programa que usa photogate para examinar o avisador

* / #include #include #include #include RF24 radio (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; // definir a var acima com base em seus próprios testes experimentais 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; void setup () {// while (! Serial); // para flora // delay (500); num_string_seen = 0; num_loops = 0; pinMode (GATE_PIN, INPUT); pinMode (GATE_PIN_2, INPUT); Serial.begin (115200); // para depuração radio.begin (); radio.openWritingPipe (endereço); radio.setPALevel (RF24_PA_MIN); radio.stopListening (); } void loop () {// coloque seu código principal aqui, para executar repetidamente: if (num_loops% string_check_time == 0) {// verifique o estado da string check_string (); } if (num_loops == flow_check_time) {// examinar o fluxo //Serial.println(num_string_seen); int flow_num = examine_flow (); // enviar valores send_out (flow_num); // redefine vars num_string_seen = 0; num_loops = 0; atraso (flow_check_delay); } num_loops ++; atraso (base_delay); } / * * Método para verificar se a string cruza a 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); Retorna; } / * * Método para analisar qual fração da string de tempo cobriu o portão * / int examine_flow () {double percent_seen = double (num_string_seen) / max_in_flow; Serial.print ("Porcentagem coberta:"); printDouble (percent_seen, 100); // escala o valor para a escala de comunicação int scaled_flow = int (percent_seen * msg_max_val); if (scaled_flow> msg_max_val) {scaled_flow = msg_max_val; } if (scaled_flow = 0) frac = (val - int (val)) * precisão; else frac = (int (val) - val) * precisão; Serial.println (frac, DEC); }

Aqui está o código para o avisador esquerdo. Siga os mesmos passos acima para o indicador esquerdo. Como você pode ver, a única diferença é o endereço para o qual o indicador envia seus resultados.

/ ** Programa que usa photogate para examinar o avisador

* / #include #include #include #include rádio 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; // definir a var acima com base em seus próprios testes experimentais 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; void setup () {// while (! Serial); // para flora // delay (500); num_string_seen = 0; num_loops = 0;

pinMode (GATE_PIN, INPUT);

pinMode (GATE_PIN_2, INPUT); Serial.begin (115200); // para depuração radio.begin (); radio.openWritingPipe (endereço); radio.setPALevel (RF24_PA_MIN); radio.stopListening (); } void loop () {// coloque seu código principal aqui, para executar repetidamente: if (num_loops% string_check_time == 0) {// verificar o estado da string check_string (); } if (num_loops == flow_check_time) {// examinar o fluxo //Serial.println(num_string_seen); int flow_num = examine_flow (); // enviar valores send_out (flow_num); // redefine vars num_string_seen = 0; num_loops = 0; atraso (flow_check_delay); } num_loops ++; atraso (base_delay); } / * * Método para verificar se a string cruza a 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); Retorna; } / * * Método para analisar qual fração da string de tempo cobriu o portão * / int examine_flow () {double percent_seen = double (num_string_seen) / max_in_flow; Serial.print ("Porcentagem coberta:"); printDouble (percent_seen, 100); // escala o valor para a escala de comunicação int scaled_flow = int (percent_seen * msg_max_val); if (scaled_flow> msg_max_val) {scaled_flow = msg_max_val; } if (scaled_flow = 0) frac = (val - int (val)) * precisão; else frac = (int (val) - val) * precisão; Serial.println (frac, DEC); }

Etapa 5: Montagem do Indicador

Conjunto Indicador
Conjunto Indicador

Partes Individuais

  • Quadro revelador
  • Fio
  • Circuito revelador construído
  • Pacote de bateria
  • Fita isolante
  • Epóxi ou cola

STLs para componentes indicadores de impressão 3D

  • STL para quadro revelador: esquerda, direita
  • STLs para caixa de eletrônicos: superior, inferior

Instruções de montagem

  1. Coloque ímãs em barra nas ranhuras da moldura reveladora impressa em 3D. Certifique-se de que os ímãs estejam alinhados corretamente entre a moldura direita e a moldura esquerda e, em seguida, use epóxi (ou cola) para prendê-los à moldura. Deixe o epóxi (ou cola) endurecer completamente.
  2. Coloque os interruptores de foto nos slots superior e inferior na parte de trás do porta-retratos. Com cuidado, coloque epóxi (ou cole) as placas do interruptor fotográfico na moldura. Deixe o epóxi (ou cola) endurecer completamente
  3. Corte um pedaço de fio de ~ 7. Amarre uma ponta do fio no entalhe da primeira barra vertical. Corte um pequeno pedaço de fita isolante e enrole a fita isolante sobre a seção do fio que ficará na região dos interruptores fotográficos. Passe o fio pela moldura de modo que passe pela abertura da porta do interruptor fotográfico.
  4. Coloque ímãs em barra nos slots da parte inferior da caixa de eletrônicos impressos em 3D. Certifique-se de que os ímãs estejam alinhados corretamente entre a caixa da direita e da esquerda e, em seguida, use epóxi (ou cola) para prendê-los à estrutura. Deixe o epóxi (ou cola) endurecer completamente.
  5. Coloque o circuito revelador construído na caixa de eletrônicos, alinhando os diferentes componentes em seus slots. Feche a caixa com a parte superior da caixa de eletrônicos impressos em 3D. Epoxy (ou cola) a bateria na parte superior da caixa para que o interruptor fique exposto.

Etapa 6: Hardware do alto-falante

Hardware de alto-falante
Hardware de alto-falante
Hardware de alto-falante
Hardware de alto-falante
Hardware de alto-falante
Hardware de alto-falante

O sistema de saída consiste em dois circuitos de alto-falantes, um para cada indicador, equipado com comunicação sem fio e um botão de ajuste de volume. Primeiro, prepare os protoboards para uso com os módulos nRF24L01 como fizemos para os circuitos reveladores, cortando os cabos que separam as duas fileiras de pinos onde a placa será colocada.

Em seguida, monte o circuito conforme mostrado no diagrama acima, referindo-se às fotos dos circuitos concluídos.

Instruções de montagem da placa

Para empilhar as placas no gabinete do alto-falante, os componentes principais devem ser colocados em certas áreas da placa. Nas instruções a seguir, estarei me referindo ao sistema de coordenadas usado para denotar linhas e colunas no protoboard Adafruit:

  1. O Arduino Nano deve ser colocado contra a borda superior da placa no centro para que o pino Vin seja posicionado em G16. Isso permitirá a fácil reprogramação do Arduino Nano após a montagem do circuito.
  2. A placa nRF24L01 deve ser colocada no canto inferior direito da placa abrangendo as oito posições de C1 a D5. Isso deixará o nRF24L01 pendurado no protoboard para permitir uma melhor comunicação sem fio.
  3. O pacote de bateria para o sistema de alto-falantes alimenta ambos os protoboards, portanto, certifique-se de conectar os dois trilhos / pinos GND do Arduino Nano e os pinos Vin à fonte de alimentação.
  4. Para o circuito "inferior", o potenciômetro deve ser colocado na parte superior da placa voltado para fora, de modo que seus pinos sejam colocados nas posições J2, J4 e J6

    1. Saída J2 ↔ Arduino Nano do pino digital 3 (D3)
    2. Pino de base J4 ↔ do transistor 2N3904
    3. J6 ↔ desconectado
  5. Para o circuito 'superior', o potenciômetro deve ser colocado na parte inferior da placa voltado para fora, de modo que seus pinos sejam colocados nas posições J9, J11 e J13

    1. Saída J13 ↔ Arduino Nano do pino digital 3 (D3)
    2. Pino de base J11 ↔ do transistor 2N3904
    3. J9 ↔ desconectado

Etapa 7: software de alto-falante

Aqui está o código para o locutor se comunicar com o avisador da esquerda. Conecte o Arduino Nano na placa do alto-falante inferior ao seu computador, abra o IDE do Arduino, copie e cole este código nele e carregue-o na placa.

#incluir

#include #include rádio RF24 (7, 8); // CE, CSN // avisador esquerdo, placa do alto-falante superior const byte address [6] = "00001"; const int pitch = 2000; const int pitch_duration = 200; const int alto-falante = 3; const int delay_gain = 100; status interno = 0; int cur_delay = 0; char read [2]; void setup () {pinMode (alto-falante, SAÍDA); Serial.begin (115200); Serial.println ("Iniciando comunicação sem fio …"); radio.begin (); radio.openReadingPipe (0, endereço); radio.setPALevel (RF24_PA_MIN); radio.startListening (); } void loop () {if (radio.available ()) {radio.read (& read, sizeof (read)); status = (int) (leia [0] - '0'); Serial.print ("Recebido:"); Serial.println (status); cur_delay = delay_gain * status; } if (cur_delay) {tone (locutor, pitch, pitch_duration); atraso (cur_delay + pitch_duration); Serial.println ("Beep!"); }}

Aqui está o código para o locutor se comunicar com o avisador certo. Conecte o Arduino Nano na placa de alto-falante superior ao seu computador, abra o IDE do Arduino, copie e cole este código nele e carregue-o na placa.

#incluir

#include #include rádio RF24 (7, 8); // CE, CSN // indicador direito, painel do alto-falante inferior const byte address [6] = "00010"; const int pitch = 1500; const int pitch_duration = 200; const int alto-falante = 3; const int delay_gain = 100; status interno = 0; int cur_delay = 0; char read [2]; void setup () {pinMode (alto-falante, SAÍDA); Serial.begin (115200); Serial.println ("Iniciando comunicação sem fio…"); radio.begin (); radio.openReadingPipe (0, endereço); radio.setPALevel (RF24_PA_MIN); radio.startListening (); } void loop () {if (radio.available ()) {radio.read (& read, sizeof (read)); status = (int) (leia [0] - '0'); Serial.print ("Recebido:"); Serial.println (status); cur_delay = delay_gain * status; } if (cur_delay) {tone (locutor, pitch, pitch_duration); atraso (cur_delay + pitch_duration); Serial.println ("Beep!"); }}

Etapa 8: Montagem do alto-falante

Partes Individuais

  • 2 circuitos de alto-falante construídos
  • 2 alto-falantes
  • 1 bateria

STLs para impressão 3D

  • Tampo da caixa
  • Fundo da caixa

Instruções de montagem física

  1. Coloque cuidadosamente os circuitos dos alto-falantes na parte inferior da caixa, uma placa em cima da outra, de forma que os botões de volume fiquem próximos um do outro e deslizem para dentro dos orifícios. Os chips de comunicação devem ser expostos na parte traseira da caixa.
  2. Coloque os alto-falantes à esquerda e à direita da placa de circuito, certificando-se de que os alto-falantes correspondam aos lados indicadores corretos. Alinhe os alto-falantes com os slots nas laterais da caixa.
  3. Passe os fios da bateria pelo pequeno orifício na parte traseira da caixa. Epoxy (ou cola) a bateria na parte de trás da caixa de forma que a chave fique exposta.
  4. Coloque a parte superior da caixa impressa em 3D sobre a parte inferior da caixa para conter tudo.

Etapa 9: configuração / montagem

Configuração / Montagem
Configuração / Montagem
  1. Ligue os indicadores girando os interruptores nas baterias para a posição 'ON'. Faça o mesmo para o conjunto do alto-falante para ligar o sistema de saída.
  2. A montagem de contadores audíveis é mais fácil de ser realizada com duas pessoas, mas pode ser realizada com uma. Para montagem em uma lança sem enrolar, os indicadores seriam mais facilmente colocados antes de içar a vela.
  3. Para certificar-se de que o quadro do contador está orientado corretamente, observe o entalhe em uma das barras verticais. Ao segurar a estrutura na vertical, o entalhe deve estar voltado para cima. O lado da estrutura com essa barra também deve estar voltado para a frente do barco.
  4. Coloque um dos contos na altura e posição desejadas na vela. Deve ser colocado de forma que o fio fique no mesmo lugar em que estaria se fizesse parte de um conto tradicional.
  5. Depois de contar uma história na posição desejada. Coloque o outro narrador do outro lado da vela, exatamente oposto ao primeiro que você colocou, de modo que os ímãs se alinhem. Depois que os ímãs fizerem uma conexão, eles devem segurar a estrutura com segurança à vela. Alinhe os ímãs dos invólucros eletrônicos, para cada história em cada lado da vela, de modo que eles se conectem também.
  6. Se você notar que quando a corda flui direto para trás, ela não se cruza na frente do portão superior, gire a moldura contadora de modo que a metade posterior da moldura fique voltada para baixo. Gire a moldura até que o barbante passe pelo interruptor fotográfico superior, quando o fio flui direto para trás.

Etapa 10: Solução de problemas

Todas as partes do código têm instruções de impressão de depuração para indicar que estão enviando, recebendo e processando dados. Abrir a porta COM usando o Arduino IDE com um dos subsistemas Arduino Nano conectado a um computador permitirá que você visualize essas mensagens de status.

Se o sistema não estiver funcionando corretamente, alterne as chaves em todos os componentes.

Etapa 11: Próximas etapas possíveis

  • Impermeabilização
  • Comunicação de longo alcance. O WiFi é uma opção promissora.
  • Nossa configuração atual atualmente usa 2 interruptores de foto por revelador. Pode ser interessante tentar adicionar mais interruptores de fotos ao sistema.

Recomendado: