Passos de caminhada e calculadora de distância baseados em Arduino

Passos de caminhada e calculadora de distância baseados em Arduino

Um recurso muito comum em aplicativos de fitness para Android e iOS é calcular o número de passos que o usuário dá e a distância que ele percorre. Esses aplicativos calculam o número de passos percorridos pelo usuário usando a localização GPS e manipulando os dados geoespaciais ou monitorando o vetor de aceleração do dispositivo usando um sensor acelerômetro.

Neste projeto, projetamos uma calculadora de passos de caminhada semelhante na plataforma Arduino. O método utilizado neste projeto é monitorar o vetor de aceleração do dispositivo. Para isso, o acelerômetro ADXL345 faz interface com o Arduino. O número de passos percorridos pelo usuário e a distância percorrida por ele são exibidos em uma tela OLED. A lógica utilizada neste projeto pode ser facilmente replicada em uma aplicação smartwatch. Você pode facilmente portar a lógica do código para qualquer outra linguagem, pois ela simplesmente lê os dados do sensor do acelerômetro e manipula esses dados para detectar o movimento do usuário.

Componentes necessários

  1. Arduino UNO x1
  2. Sensor Acelerômetro ADXL345 x1
  3. Tela OLED SSD1306 x1
  4. Conectando fios/fios de jumper

Conexões de circuito
Para a concepção deste projeto, o sensor acelerômetro ADXL345 e o OLED SSD1306 fazem interface com o Arduino. Para fazer isso, conecte seus pinos GND e VCC ao terra do Arduino e aos pinos de saída de 3,3V. Em seguida, conecte os pinos SDA e SCL do sensor do acelerômetro aos pinos SDA e SCL na porta I2C do Arduino.

Neste projeto, um módulo OLED SSD1306 de 7 pinos é conectado ao Arduino UNO. O módulo é conectado ao Arduino da seguinte maneira.

Diagrama de circuito do pedômetro baseado em Arduino

Diagrama de circuito do pedômetro baseado em Arduino

Esboço do Arduino

Como funciona
Quando o dispositivo é ligado, o display OLED SSD1306 é inicializado e o logotipo “EEWORLDONLINE” e o nome do dispositivo “Contador de passos” piscam na tela. O número inicial de etapas é exibido como 0 e a distância percorrida também é exibida como 0. Agora, tudo o que o usuário precisa fazer é manter o dispositivo consigo.

O dispositivo monitora continuamente seu vetor de aceleração com a ajuda do sensor acelerômetro ADXL345. Quando o usuário caminha, ocorre uma mudança no vetor de aceleração. Quando o usuário dá um passo à frente, a mudança imediata no vetor de aceleração torna-se negativa. À medida que o usuário pisa com o outro pé equilibrando-se no pé anterior, a mudança imediata no vetor de aceleração torna-se positiva.

Os valores médios de aceleração são calculados quando o dispositivo é ligado e as mensagens iniciais aparecem na tela. Os valores médios também são derivados da média de 50 leituras consecutivas do acelerômetro ADXL345. Esses valores médios para a aceleração do dispositivo nos eixos x, y e z servem como ponto de referência.

Após a conclusão da configuração inicial, o dispositivo calcula novamente a aceleração nos eixos x, y e z 50 vezes consecutivas e deriva uma média desses valores. O vetor de aceleração do dispositivo é calculado calculando a raiz quadrada da diferença dos valores atuais de aceleração em comparação com os valores de referência.

Após um atraso de 250 milissegundos, o dispositivo calcula novamente a aceleração nos eixos x, y e z por 50 vezes consecutivas e deriva a média desses valores. O vetor de aceleração do dispositivo é calculado novamente em um intervalo de 250 ms, extraindo a raiz quadrada da diferença dos valores atuais de aceleração em comparação com os valores de referência. A diferença entre o vetor de aceleração agora e o vetor de aceleração 250 ms antes é calculada e, se a diferença for superior a 0,05, um passo é incrementado. O valor da distância percorrida é calculado multiplicando o número de passos por um pé ou 0,3048 metros, assumindo que um passo médio tem um pé de comprimento.

O número de passos e a distância percorrida são atualizados na tela OLED, com atraso de 400 ms. O processo de cálculo da diferença entre dois vetores de aceleração consecutivos do dispositivo em um intervalo de 250 ms é continuado para monitorar o movimento do usuário.

Deve-se notar que o atraso de 250 ms entre o cálculo de dois vetores de aceleração médios consecutivos e a diferença de 0,05 é obtido após calibração cuidadosa do dispositivo.

Confira este link para saber mais sobre como o acelerômetro ADXL345 se comunica com o Arduino através do protocolo I2C.

Para saber mais sobre a interface do SSD1306 OLED com o Arduino, confira este link.

Você deve observar que o botão de reinicialização do Arduino atua como um botão de reinicialização do dispositivo e zera o número de etapas e a distância percorrida.

O código
O código começa importando wire.h para comunicação I2C com o sensor acelerômetro ADXL345 e SPI.h para comunicação com display OLED SSD1306. As bibliotecas Adafruit para trabalhar com display OLED são importadas e as constantes necessárias para interface OLED e parâmetros definidos. Uma exibição de objeto é inicializada para a classe SSD1306. O bitmap do logotipo EEWORLDONLINE é armazenado no PROGMEM do Arduino e convertido em um objeto array. As variáveis ​​para armazenar os valores de aceleração média, atual e imediatamente seguinte são declaradas. Uma variável para armazenar o número de etapas é declarada.

Na função setup , três funções diferentes são chamadas. O ssd1306_init é chamado para inicializar o display OLED SSD1306 e exibir mensagens iniciais nele. O adxl345_init é chamado para inicializar o sensor de aceleração. A função read_av_acc é chamada para calcular valores de aceleração de referência quando o dispositivo está em repouso.

Na função loop , o vetor de aceleração é calculado duas vezes em um intervalo de 250 ms, e se a diferença entre dois valores for maior que 0,05, um passo é incrementado. O número de passos e a distância percorrida são atualizados no display OLED.

Resultado

Pedômetro baseado em Arduino usando ADXL345 e SSD1306

Pedômetro baseado em Arduino usando ADXL345 e SSD1306

Vídeo de demonstração

Conteúdo Relacionado

ESP32-CAM é um módulo de câmera compacto que combina...
Uma rede de sensores é incorporada em todos os...
O controlador do motor é um dos componentes mais...
A evolução dos padrões USB foi fundamental para moldar...
A SCHURTER anuncia um aprimoramento para sua conhecida série...
A Sealevel Systems anuncia o lançamento da Interface Serial...
A STMicroelectronics introduziu Diodos retificadores Schottky de trincheira de...
Determinar uma localização precisa é necessário em várias indústrias...
O novo VIPerGaN50 da STMicroelectronics simplifica a construção de...
A Samsung Electronics, fornecedora de tecnologia de memória avançada,...
O mercado embarcado tem uma necessidade de soluções de...
Você provavelmente já se deparou com o termo 'arrastar'...
Você provavelmente tem um Isolador de suporte Se você...
Você provavelmente já viu permanecer um isolante sente-se em...
Você provavelmente já viu Isoladores de manilha entronizados em...
Você provavelmente já passou por situações em que o...
Zurück zum Blog

Hinterlasse einen Kommentar

Bitte beachte, dass Kommentare vor der Veröffentlichung freigegeben werden müssen.