- Componentes necessários
- Módulo de sensor MPU6050 - Uma breve introdução
- Diagrama de circuito do contador de passos Attiny85
- Fabricação de PCB para contador de passos Attiny85
- Solicitando PCB da PCBWay
- Montagem da PCB do contador de passos ATtiny85
- Explicação do código do contador de etapas ATtiny85
- Vamos dar uma caminhada em nosso contador de passos Arduino
Neste tutorial, vamos construir um Pedômetro fácil e barato usando ATtiny85 IC, Acelerômetro e Giroscópio MPU6050 e Módulo de Display OLED. Este simples contador de passos baseado em Arduino é alimentado por uma célula tipo moeda de 3V, tornando-o fácil de transportar quando você sai para uma caminhada ou corrida. Também requer muito poucos componentes para construir e o código também é relativamente simples. O programa neste projeto usa o MPU6050 para medir a magnitude da aceleração ao longo dos 3 eixos (X, Y e Z). Em seguida, ele calcula a diferença da magnitude da aceleração entre os valores anteriores e atuais. Se a diferença for maior que um certo limite (para caminhada maior que 6 e para corrida maior que 10), então aumenta a contagem de passos de acordo. O total de etapas realizadas é então exibido no display OLED.
Para construir este contador de passos portátil em um PCB, fabricamos nossas placas PCB da PCBWay e iremos montar e testar as mesmas neste projeto. Se quiser adicionar mais recursos, você também pode adicionar um monitor Heartbeat a esta configuração e também construímos um contador de passos do acelerômetro Arduino usando ADXL335, verifique-os se estiver interessado.
Componentes necessários
Para construir este pedômetro usando o Arduino, você precisará dos seguintes componentes.
- Attiny85 IC
- MPU6050
- Módulo de exibição OLED
- 2 × botões de pressão
- 5 × 10KΩ Resistores (SMD)
Módulo de sensor MPU6050 - Uma breve introdução
MPU6050 é baseado na tecnologia de sistemas micro-mecânicos (MEMS). Este sensor possui um acelerômetro de 3 eixos, um giroscópio de 3 eixos e um sensor de temperatura embutido. Ele pode ser usado para medir parâmetros como Aceleração, Velocidade, Orientação, Deslocamento, etc. Anteriormente, fizemos a interface do MPU6050 com o Arduino e o Raspberry pi e também construímos alguns projetos usando-o como - robô de auto-equilíbrio, transferidor digital Arduino e inclinômetro Arduino.
O módulo MPU6050 é pequeno e tem baixo consumo de energia, alta repetição, alta tolerância a choques e baixos preços para o usuário. O MPU6050 vem com um barramento I2C e interface de barramento I2C auxiliar e pode interferir facilmente com outros sensores, como magnetômetros e microcontroladores.
Diagrama de circuito do contador de passos Attiny85
O esquema para o contador de passos MPU6050 é fornecido abaixo:
A imagem acima mostra o diagrama de circuito para a interface do MPU6050 e do display OLED com Attiny85 IC. A interface entre MPU6050, display OLED e Arduino deve ser implementada usando o protocolo I2C. Portanto, o SCLPin (PB2) do ATtiny85 é conectado ao SCLPin do MPU6050 e display OLED, respectivamente. Da mesma forma, o SDAPin (PB0) do ATtiny85 é conectado ao SDAPin do MPU6050 e display OLED. Dois botões de pressão também estão conectados ao pino PB3 e PB4 do IC ATtiny85. Esses botões podem ser usados para rolar o texto ou alterar o texto no visor.
Nota: Siga nosso tutorial anterior Programando ATtiny85 IC diretamente por USB usando Digispark Bootloader para programar ATtiny85 IC por USB e Digispark Boot-loader.
Fabricação de PCB para contador de passos Attiny85
O esquema está pronto e podemos prosseguir com o layout do PCB. Você pode projetar o PCB usando qualquer software de PCB de sua escolha. Usamos EasyEDA para fabricar PCB para este projeto.
Abaixo estão as vistas do modelo 3D da camada superior e da camada inferior da PCB do contador de passos:
O layout de PCB para o circuito acima também está disponível para download como Gerber no link fornecido abaixo:
- Arquivo Gerber para ATtiny85 Step Counter
Solicitando PCB da PCBWay
Agora, depois de finalizar o design, você pode prosseguir com o pedido do PCB:
Passo 1: Acesse https://www.pcbway.com/, inscreva-se se esta for a sua primeira vez. Em seguida, na guia Protótipo de PCB, insira as dimensões de seu PCB, o número de camadas e o número de PCB que você precisa.
Passo 2: Continue clicando no botão 'Citar Agora'. Você será levado a uma página onde definir alguns parâmetros adicionais como o tipo de placa, camadas, material para PCB, espessura e mais, a maioria deles são selecionados por padrão, se você está optando por quaisquer parâmetros específicos, você pode selecionar isso aqui.
Etapa 3: A última etapa é fazer o upload do arquivo Gerber e prosseguir com o pagamento. Para ter certeza de que o processo está tranquilo, a PCBWAY verifica se o seu arquivo Gerber é válido antes de prosseguir com o pagamento. Dessa forma, você pode ter certeza de que seu PCB é amigável para a fabricação e chegará até você quando estiver comprometido.
Montagem da PCB do contador de passos ATtiny85
Depois de alguns dias, recebemos nosso PCB em um pacote elegante e a qualidade do PCB estava boa como sempre. A camada superior e a camada inferior da placa são mostradas abaixo:
Depois de se certificar de que as pegadas e pegadas estavam corretas. Prossegui com a montagem do PCB. A placa completamente soldada se parece com o seguinte:
Explicação do código do contador de etapas ATtiny85
O código completo do contador de etapas do Arduino é fornecido no final do documento. Aqui estamos explicando algumas partes importantes do código.
O código usa as bibliotecas TinyWireM.h e TinyOzOLED.h. A biblioteca TinyWireM pode ser baixada do Library Manager no Arduino IDE e instalada a partir daí. Para isso, abra o IDE Arduino e vá para Sketch <Incluir Biblioteca <Gerenciar Bibliotecas . Agora procure por TinyWireM.h e instale a biblioteca TinyWireM da Adafruit.
Enquanto a biblioteca TinyOzOLED.h pode ser baixada dos links fornecidos.
Depois de instalar as bibliotecas no Arduino IDE, inicie o código incluindo os arquivos de bibliotecas necessários.
#include "TinyWireM.h" #include "TinyOzOLED.h"
Após incluir as bibliotecas, defina as variáveis para armazenar as leituras do Acelerômetro.
intaccelX, accelY, accelZ;
Dentro do loop setup () , inicialize a biblioteca de fios e redefina o sensor por meio do registro de gerenciamento de energia e também inicialize a comunicação I2C para Display OLED. Então, nas próximas linhas, defina a orientação do display e insira o endereço de registro para os valores do acelerômetro e do giroscópio.
TinyWireM.begin (); OzOled.init (); OzOled.clearDisplay (); OzOled.setNormalDisplay (); OzOled.sendCommand (0xA1); OzOled.sendCommand (0xC8); TinyWireM.beginTransmission (mpu); TinyWireM.write (0x6B); TinyWireM.write (0b00000000); TinyWireM.write (0x1B);
Na função getAccel () , comece lendo os dados do acelerômetro. Os dados de cada eixo são armazenados em dois bytes (Superior e Inferior) ou registros. Para ler todos eles, comece com o primeiro registro e, usando a função requiestFrom () , solicitamos a leitura de todos os 6 registros para os eixos X, Y e Z. Em seguida, lemos os dados de cada registro e, como as saídas são o complemento de dois, combinamos-as apropriadamente para obter os valores completos do acelerômetro.
voidgetAccel () {TinyWireM.beginTransmission (mpu); TinyWireM.write (0x3B); TinyWireM.endTransmission (); TinyWireM.requestFrom (mpu, 6); accelX = TinyWireM.read () << 8-TinyWireM.read (); accelY = TinyWireM.read () << 8-TinyWireM.read (); accelZ = TinyWireM.read () << 8-TinyWireM.read (); }
Agora, dentro da função de loop, primeiro leia os valores dos eixos X, Y e Z e, depois de obter os valores dos 3 eixos, calcule o vetor de aceleração total tirando a raiz quadrada dos valores dos eixos X, Y e Z. Em seguida, calcule a diferença entre o vetor atual e o vetor anterior e, se a diferença for maior que 6, aumente a contagem de passos.
getAccel (); vector = sqrt ((accelX * accelX) + (accelY * accelY) + (accelZ * accelZ)); vetor total = vetor - vetor anterior; if (vetor total> 6) {Passos ++; } OzOled.printString ("Passos", 0, 4); OzOled.printNumber (etapas, 0, 8, 4); vetor anterior = vetor; atraso (600);
Vamos dar uma caminhada em nosso contador de passos Arduino
Assim que terminar de montar o PCB, conecte o ATtiny85 à placa do programador e carregue o código. Agora pegue a configuração do contador de passos em suas mãos e comece a andar passo a passo, ele deve exibir o número de passos no OLED. Às vezes, aumenta o número de etapas quando a configuração vibra muito rápida ou muito lentamente.
É assim que você pode construir seu próprio contador de passos usando o ATtiny85 e MPU6050. O funcionamento completo do projeto também pode ser encontrado no vídeo no link abaixo. Espero que você tenha gostado do projeto e achado interessante construir o seu próprio. Se você tiver alguma dúvida, deixe-as na seção de comentários abaixo.