quarta-feira, 28 de agosto de 2019

DIY Speedometer em Arduino e Android

Neste projeto, criamos um velocímetro legal para bicicletas ou qualquer automóvel, usando o Arduino que transmite a velocidade usando Bluetooth para um aplicativo Android que criamos usando o Processing. O projeto completo é alimentado por uma célula de lítio 18650 e, portanto, altamente portátil junto com o seu veículo. Para incrementar um pouco mais, eu adicionei a opção & nbsp; de carregar seu telefone celular, pois ele exibe sua velocidade. & nbsp; Sim, você também pode use-o como um banco de potência para seus celulares onde estiver, pois o 18650 possui alta densidade de carga e pode ser facilmente carregado e descarregado.
Vou guiá-lo completamente do zero até a conclusão. O velocímetro pode ser conectado ao nosso veículo e testado. O recurso interessante aqui é que você pode personalizar seu aplicativo Android para sua personalização e adicionar mais recursos, de acordo com sua criatividade. Mas, se você não deseja criar o aplicativo sozinho e apenas construir a parte do Arduino, não se preocupe, basta baixar o arquivo APK (leia mais) e instalar no seu telefone Android. Verifique também o vídeo completo no final.
Então, vamos ver quais materiais precisaríamos para construir este projeto e planejar nosso orçamento. Todos esses componentes estão facilmente disponíveis; se você tiver problemas para comprar um desses, entre em contato na seção de comentários.

Requisitos de hardware:

  • Arduino Pro Mini (5V 16MHz)
  • FTDI board (para programar mini você também pode usar o UNO)
  • Conversor de impulso de 3V a 5V DC-DC com carregador de saída USB
  • Módulo de bateria de lítio TP4056
  • Módulo Bluetooth (HC-05 / HC-06)
  • Sensor de efeito Hall (US1881 / 04E)
  • 18650 Lithium Cell
  • Pequeno pedaço de ímãs
  • ProtoBoard
  • Conectores Berg Sticks (Macho e Fêmea)
  • Kit de solda
  • Pequenas caixas de proteção para montar o kit.

Programming Requirements:

  • Arduino IDE
  • Processando o IDE com o Android ADK (apenas se você quiser codificar seu próprio aplicativo.)
  • Windows/Mac PC
  • Celular Android.
Pode parecer um punhado de componentes e materiais, mas confie em mim depois de concluir este projeto, você sentirá que eles valem o tempo que o esforço.


Medindo a velocidade usando o sensor Hall e o Arduino:

Antes de colocarmos as mãos no hardware, informe-nos como vamos realmente medir a velocidade usando o Arduino. Existem várias maneiras de medir a velocidade de um veículo usando o Arduino, mas usar um sensor de salão é a maneira mais econômica e fácil de fazê-lo. A & nbsp; Hall Sensor & nbsp; é um componente que detecta a polaridade de um ímã. Por exemplo, sempre que um polo específico do ímã é aproximado do sensor, ele muda de estado. Existem muitos tipos de sensores de salão disponíveis. Você pode usar qualquer um dos deste projeto, mas verifique se é um sensor de salão digital .
Para medir a velocidade, temos que prender um pequeno pedaço de ímã na roda do veículo, cada vez que o ímã cruza o sensor do salão, ele o detecta e envia as informações ao Arduino.
Uma interrupção será recebida pelo Arduino toda vez que o ímã for detectado. Executamos um timer contínuo usando a função millis() e calculamos o tempo necessário para a roda concluir duas rotações (para minimizar o erro) usando as fórmulas abaixo:
Timetaken = millis() – pevtime;

Depois de saber o tempo gasto, podemos calcular as rpm usando as fórmulas abaixo:
rpm = (1000/timetaken) * 60;
Onde (1000 / intervalo de tempo) fornece os rps (rotações por segundo) e é multiplicado por 60 para converter rps em rpm (rotações por minuto). 

Depois de calcular a rotação, podemos calcular a velocidade do veículo usando as fórmulas abaixo, desde que conheçamos o raio da roda.
v= radius_of_wheel * rpm * 0.37699;
O Arduino, depois de calcular a velocidade, irá transmiti-lo usando o módulo Bluetooth. O & nbsp; código completo foi fornecido abaixo na seção Código .

Parte de esquemas e hardware:

O diagrama completo do circuito do projeto é dado abaixo:
Speedometer-using-Arduino-and-Processing-Android-app-circuit-diagram
Aqui, a parte de hardware é dividida em duas partes: uma é a placa principal que contém todos os arquivos principais. A outra placa consiste apenas de um sensor de corredor e um resistor que será montado perto da roda. Deixe-nos   começar a construir o quadro principal.
Building-Perf-board-for-Arduino-speedometer
Speedometer-using-Arduino-and-Processing-Android-app
Uma vez que a conexão é feita, vamos testar a configuração usando nosso   18650 bateria de lítio . A bateria de lítio é altamente explosiva por natureza, portanto, deve ser manuseada com extrema cautela. É por essa razão que usamos um Módulo de Carregamento de Bateria de Lítio TP4056 . Este módulo possui proteção contra sobrecarga / descarga e proteção contra inversão de polaridade. Portanto, a bateria pode ser facilmente carregada usando um carregador micro USB normal e pode ser descarregada com segurança até atingir os limites de corte de subtensão. Alguns detalhes importantes do módulo de carga TP4056 são fornecidos na tabela abaixo.
Parâmetros :
Valor por célula :
Corte sob tensão
2.4V
Sobre a tensão de corte
4.2V
Corrente de carregamento
1A
Protecção
Sobre a tensão e proteção reversa da polaridade
IC's presentes
TP4056 (carregador IC) e DW01 Protection IC
Indication LED’s
Vermelho- Carregamento em andamento
Verde – Cobrança concluída

Agora, vamos começar com o   Hall Sensor Board. Esta placa contém apenas dois componentes: um resistor de 10K e o outro é o sensor do hall. &Nbsp; As conexões podem ser feitas conforme mostrado nos esquemas acima. Quando a placa estiver pronta, conecte-os usando fios de jumper, conforme os esquemas. Uma vez feito, deve ser algo como isto.
Hall-sensor-board-for-Speedometer-using-Arduino-and-Android

Outro passo crucial no projeto é   conectando a bateria 18650 aos terminais B + e B- do módulo TP4056   usando um fio. Como as células Li + são explosivas, não é recomendável usar um ferro de solda sobre essas células. Embora as pessoas tenham feito isso, é altamente arriscado e pode facilmente acabar em uma grande confusão. Portanto, a maneira mais fácil de fazer isso é usar ímãs, como mostrado abaixo
18650-Lithium-battery-for-Arduino-speedometer
Simplesmente solde o fio a um pequeno pedaço de ímã e cole os ímãs nos terminais & nbsp; da bateria (eles são atraídos pelos terminais muito bem) como mostrado acima. Você pode usar uma torneira de pato para garantir ainda mais a posição do ímã.

Programando o Arduino:

O programa para este projeto é muito simples. Nós apenas temos que calcular a velocidade da roda giratória usando as entradas de interrupção do sensor de hall e transmitir a velocidade calculada pelo ar usando o Módulo Bluetooth. O programa completo do & nbsp; é fornecido na seção Código abaixo   e explicado usando as linhas de comentário.
Cada vez que o sensor do hall detecta o ímã, ele aciona uma interrupção. Essa função de interrupção é chamada pela função   magnet_detect ()   function& nbsp; Este é o local onde é calculada a rpm do veículo.
Uma vez calculada a rpm, a velocidade da roda é calculada na função   loop()   Quando o código estiver pronto, vamos despejá-lo no nosso Arduino pro mini e testar seu funcionamento, conforme mostrado no vídeo fornecido no final.

Aplicativo para Android para velocímetro:

O aplicativo Android para este projeto é feito usando o software chamado Processing. Se você não está interessado em criar seu próprio aplicativo Android e gostaria de instalar o usado aqui, pode fazer o download do arquivo APK e instalá-lo diretamente no seu smartphone, seguindo as etapas abaixo.
1. Você pode baixar diretamente o arquivo APK do link abaixo. Este arquivo APK é feito para a versão Android 4.4.2 e posterior (Kitkat acima). Extraia o arquivo APK do arquivo zip.
2. Transfira o arquivo .Apk do seu computador para o seu celular.
3. Habilite a instalação do aplicativo de fontes desconhecidas nas configurações do Android.
4. Instale o aplicativo.

Se instalado com sucesso, você encontrará o aplicativo denominado   “ Processing_code ”   instalado no telefone, como mostrado abaixo:
Android-app-for-Arduino-speedometer-using-processing

Desenvolva seu próprio aplicativo usando Processing:
Você pode usar o arquivo .APK fornecido acima ou criar seu próprio aplicativo usando o Processing, conforme explicado aqui. Você pode fazer o download de todos os Processando o código do aplicativo Android a partir daqui. O programa é auto-explicado usando as linhas de comentário. Mas se você tiver algum problema ou quiser modificar um pouco o aplicativo, use a seção de comentários e eu o ajudarei.
O programa android estabelece uma conexão com nosso módulo Bluetooth durante a inicialização do aplicativo e recebe a velocidade do veículo que foi calculada e transmitida pelo Arduino Pro mini. Criei gráficos pequenos também para exibir a velocidade usando um velocímetro analógico para torná-lo um pouco atraente. Você pode criar suas próprias idéias e ajustar o código para personalizá-lo para suas necessidades. Verifique também nossos outros Projetos de Processamento para saber mais sobre isso:  
Depois de instalar o aplicativo no seu celular, é hora de testar o nosso projeto. Mas ainda não montamos nosso kit em um veículo. Vamos fazer isso.

Montagem do kit Velocímetro em um veículo:

Montei este kit no meu bi-ciclo e o testei, e funciona como um encanto. A montagem do kit é deixada para a sua criatividade. você pode obter sua própria caixinha numa loja e fazer furos para os fios  e conexões e montou no seu veículo. Uma coisa importante a ser observada é que o ímã deve estar preso na borda da roda e o sensor do hall deve ser montado o mais próximo possível do ímã, para que cada vez que o ímã cruze o sensor do hall, ele possa detectá-lo , o arranjo é mostrado abaixo.
Place-for-installing-3D-printed-arduino-speedometer-box-on-bicycle Installing-3D-printed-hall-sensor-board-box-on-bicycle

Se você decidiu usar meus arquivos de design e imprimir seus gabinetes, verifique se sua placa principal está perto das dimensões abaixo.
Perf-board-for-Arduino-speedometer
O completo Arquivos de design e STL para impressão 3D podem ser baixados aqui. Se a placa for semelhante à que foi criada aqui, você poderá imprimir diretamente em 3D seus gabinetes usando os arquivos STL fornecidos, ou então poderá usar os arquivos de design e modificá-los de acordo com a sua placa.

Vamos começar com o Gabinete pequeno impresso em 3D que será usado para o módulo do sensor de hall. Imprima o gabinete, coloque o circuito dentro dele e use os fios através do orifício fornecido e monte-o em seu veículo para que o sensor do hall fique próximo ao imã, conforme mostrado abaixo.
3D-printed-box-for-Hall-sensor-perf-board-for-Speedometer Installing-3D-printed-hall-sensor-board-box-on-bicycle

Recomenda-se modelar a placa principal antes de projetar o gabinete para que possamos garantir que ele se encaixe corretamente, porque confie em mim, seria um pesadelo quando você imprimir seu gabinete por 6 longas horas e, no final, ele não se encaixará na sua placa de desempenho.   A placa modelo para minha placa principal de perf é mostrada abaixo.
Speedometer-using-Arduino-and-Processing-Android
Speedometer-using-Arduino-and-Processing-Android-3D-model

Agora será fácil & nbsp; projetar a caixa principal do gabinete . Projetei a caixa principal em dois arquivos, para que uma parte da caixa retenha os componentes eletrônicos e a outra fique permanentemente fixa ao ciclo usando grampos e parafusos. Essas duas partes podem ser facilmente consertadas para formar um invólucro completo e depois serem separadas quando precisarmos recarregar nossa bateria de lítio ou trabalhar em nossos eletrônicos. 
Uma vez que a primeira parte do recinto é projetada e impressa, vamos colocar todos os nossos componentes dentro como mostrado abaixo e deve ser algo como isto.
3D-printed-case-for-Speedometer-using-Arduino-and-Processing-1 3D-printed-case-for-Speedometer-using-Arduino-and-Processing-2
Como você pode ver, existem duas aberturas na frente da caixa, uma é usada para o USB através do qual podemos carregar nosso telefone celular. O outro é para o micro USB usando o qual podemos carregar nossa bateria de lítio.

Agora vamos imprimir a segunda parte do gabinete principal e verificar se ela se encaixa na primeira parte conforme o esperado.
3D-printed-case-for-Speedometer-using-Arduino-and-Processing-3 3D-printed-case-for-Speedometer-using-Arduino-and-Processing-4
Quando estivermos satisfeitos com as peças, podemos montar a segunda parte do gabinete usando uma braçadeira C e algumas porcas e parafusos, conforme mostrado abaixo:
nut-bolts-for-tightening-3D-printed-speedometer-box Installing-3D-printed-arduino-speedometer-box-on-bicycle

Agora, vamos conectar a bateria ao nosso circuito principal usando ímãs e fita, conforme discutido acima, e mantê-la permanentemente segura dentro de nosso gabinete.
Perf-board-inside-3D-printed-speedometer-box-with-battery-1
Perf-board-inside-3D-printed-speedometer-box-with-battery-2
É isso que o nosso hardware está pronto para a montagem final. Simplesmente conecte o módulo sensor do hall com a placa principal e deslize o compartimento móvel para dentro do gabinete fixo e pronto para a ação.
Arduino-speedometer-setup-mounted-on-bicycle Installed-3D-printed-arduino-speedometer-box-on-bicycle

Explicação de trabalho:

Depois de certificar-se de que sua bateria de lítio está carregada, basta ligar o kit usando a chave de alternância e abra o aplicativo Android. Se tudo correr bem, você deve obter a tela abaixo e mostrar que seu aplicativo está conectado ao seu módulo Bluetooth HC-05, como mostrado abaixo. Lembre-se de emparelhar o seu módulo Bluetooth com o telefone antes de abrir o aplicativo.
measuring-speed-using-android-app-and-arduino-Speedometer-1 measuring-speed-using-android-app-and-arduino-Speedometer-2
Agora simplesmente monte seu veículo e você deve notar o velocímetro mostrando a velocidade atual do seu veículo. Você também pode cobrar seu celular enquanto dirige usando um cabo carregador normal. Depois de terminar o seu passeio, você pode deslizar para fora da caixa do ciclo e carregá-lo de corrente alternada usando qualquer carregador móvel do telefone inteligente.

Então, como você pode não só medir a velocidade do seu veículo, mas também carregar o celular ao mesmo tempo. Espero que você tenha gostado do projeto. Você pode adicionar muito mais recursos ao aplicativo, apenas ajustando os códigos. Você pode calcular a distância percorrida pelo seu percurso, o topo e a velocidade média do seu percurso, etc. Deixe-me saber se você tem algum quires através dos comentários e eu ficarei feliz em ajudá-lo.
Código: 
/*Código Arduino para medir a velocidade do veículo usando o sensor Hall
 */
 /*CONNECTION DETIALS
  * Arduino D11 -> RX do módulo BT
  * Arduino D12 -> Tx de BT
  * Arduino D2  -> Pino do sensor Hall 3
  */
#include <SoftwareSerial.h>// importar a biblioteca serial
SoftwareSerial Cycle_BT(11, 12);  // RX, TX
int ledpin=13; // led on D13 will show blink on / off
int BluetoothData; // the data given from Computer
float radius_of_wheel = 0.33;  //Meça o raio da sua roda e insira aqui
volatile byte rotation; //variável para interrupção divertida deve ser volátil
float timetaken,rpm,dtime;
int v;
unsigned long pevtime;

void setup()
 {
   Cycle_BT.begin(9600); //iniciar a comunicação Bluetooth a 9600 baudrate
   //pinMode(ledpin,OUTPUT); //Saída de pinos LED para depuração
   attachInterrupt(0, magnet_detect, RISING); //segundo pino de arduino usado como interrupção e magnet_detect será chamado para cada interrupção
   rotation = rpm = pevtime = 0; //Inicialize todas as variáveis para zero
 }

void loop()
{
  /*Para cair para zero se o veículo parar*/
 if(millis()-dtime>1500) //nenhum imã encontrado para 1500ms
 {
  rpm= v = 0; //faça rpm e velocidade como zero
  Cycle_BT.write(v);
  dtime=millis();
 }
 v = radius_of_wheel * rpm * 0.37699; //0,33 é o raio da roda em metro
}

void magnet_detect() //Chamado sempre que um ímã é detectado
{
  rotation++;
  dtime=millis();
  if(rotation>=2)
  {
    timetaken = millis()-pevtime; //tempo em milissegundos para duas rotações
    rpm=(1000/timetaken)*60;    //formular para calcular rpm
    pevtime = millis();
    rotation=0;
    Cycle_BT.write(v);
    //Cycle_BT.println("Magnet detected...."); //ativar durante o teste do hardware
  }
}

Nenhum comentário:

Postar um comentário

Peço que use somente caixa baixa, não todo escrito em letra grande.