- Componentes requeridos
- Módulo de sensor MPU6050: breve introducción
- Diagrama del circuito del contador de pasos Attiny85
- Fabricación de PCB para contador de pasos Attiny85
- Pedido de PCB de PCBWay
- Montaje de la PCB del contador de pasos ATtiny85
- Explicación del código del contador de pasos ATtiny85
- Demos un paseo a nuestro contador de pasos Arduino
En este tutorial, vamos a construir un podómetro fácil y económico usando ATtiny85 IC, acelerómetro y giroscopio MPU6050 y módulo de pantalla OLED. Este simple contador de pasos basado en Arduino está alimentado por una celda de moneda de 3V, lo que facilita su transporte cuando sale a caminar o trotar. También requiere muy pocos componentes para construir y el código también es relativamente simple. El programa de este proyecto utiliza el MPU6050 para medir la magnitud de la aceleración a lo largo de los 3 ejes (X, Y y Z). Luego calcula la diferencia de la magnitud de la aceleración entre los valores anteriores y actuales. Si la diferencia es mayor que un cierto umbral (para caminar más de 6 y para correr más de 10), entonces aumenta el recuento de pasos en consecuencia. A continuación, se muestran los pasos totales realizados en la pantalla OLED.
Para construir este contador de pasos portátil en una PCB, hemos fabricado nuestras placas de PCB de PCBWay y las ensamblaremos y probaremos en este proyecto. Si desea agregar más funciones, también puede agregar un monitor Heartbeat a esta configuración y también hemos construido previamente un contador de pasos del acelerómetro Arduino usando ADXL335, compruébelos si está interesado.
Componentes requeridos
Para construir este podómetro usando Arduino, necesitará los siguientes componentes.
- Attiny85 IC
- MPU6050
- Módulo de pantalla OLED
- 2 × botones pulsadores
- Resistencias de 5 × 10KΩ (SMD)
Módulo de sensor MPU6050: breve introducción
MPU6050 se basa en la tecnología Micro-Mechanical Systems (MEMS). Este sensor tiene un acelerómetro de 3 ejes, un giroscopio de 3 ejes y un sensor de temperatura incorporado. Se puede usar para medir parámetros como Aceleración, Velocidad, Orientación, Desplazamiento, etc. Anteriormente hemos interconectado MPU6050 con Arduino y Raspberry pi y también hemos construido algunos proyectos usándolo como: Robot de autoequilibrio, Transportador digital Arduino e Inclinómetro Arduino.
El módulo MPU6050 es de tamaño pequeño y tiene bajo consumo de energía, alta repetición, alta tolerancia a los golpes y precios bajos para el usuario. El MPU6050 viene con un bus I2C y una interfaz de bus I2C auxiliar y puede interferir fácilmente con otros sensores como magnetómetros y microcontroladores.
Diagrama del circuito del contador de pasos Attiny85
El esquema del contador de pasos MPU6050 se muestra a continuación:
La imagen de arriba muestra el diagrama de circuito para la interfaz MPU6050 y la pantalla OLED con Attiny85 IC. La interfaz entre MPU6050, OLED Display y Arduino debe implementarse mediante el protocolo I2C. Por lo tanto, el SCLPin (PB2) del ATtiny85 está conectado al SCLPin del MPU6050 y la pantalla OLED respectivamente. De manera similar, el SDAPin (PB0) del ATtiny85 está conectado al SDAPin del MPU6050 y la pantalla OLED. También se conectan dos botones pulsadores al pin PB3 y PB4 del ATtiny85 IC. Estos botones se pueden utilizar para desplazar el texto o cambiar el texto en pantalla.
Nota: Siga nuestro tutorial anterior Programando ATtiny85 IC directamente a través de USB usando Digispark Bootloader para programar el ATtiny85 IC a través de USB y Digispark Boot-loader.
Fabricación de PCB para contador de pasos Attiny85
El esquema está hecho y podemos proceder con el diseño de la PCB. Puede diseñar la PCB utilizando cualquier software de PCB de su elección. Hemos utilizado EasyEDA para fabricar PCB para este proyecto.
A continuación se muestran las vistas del modelo 3D de la capa superior y la capa inferior de la PCB del contador de pasos:
El diseño de PCB para el circuito anterior también está disponible para descargar como Gerber desde el enlace que se proporciona a continuación:
- Archivo Gerber para contador de pasos ATtiny85
Pedido de PCB de PCBWay
Ahora, después de finalizar el diseño, puede proceder con el pedido de la PCB:
Paso 1: Ingrese a https://www.pcbway.com/, regístrese si esta es su primera vez. Luego, en la pestaña Prototipo de PCB, ingrese las dimensiones de su PCB, el número de capas y el número de PCB que necesita.
Paso 2: Continúe haciendo clic en el botón 'Cotizar ahora'. Se lo llevará a una página donde establecer algunos parámetros adicionales como el tipo de placa, capas, material para PCB, grosor y más, la mayoría de ellos están seleccionados de forma predeterminada, si está optando por algún parámetro específico, puede seleccionar esto aquí.
Paso 3: El paso final es cargar el archivo Gerber y proceder con el pago. Para asegurarse de que el proceso sea fluido, PCBWAY verifica si su archivo Gerber es válido antes de proceder con el pago. De esta manera, puede estar seguro de que su PCB es amigable con la fabricación y le llegará cuando esté comprometido.
Montaje de la PCB del contador de pasos ATtiny85
Después de unos días, recibimos nuestra PCB en un paquete ordenado y la calidad de la PCB fue buena como siempre. La capa superior y la capa inferior del tablero se muestran a continuación:
Después de asegurarse de que las huellas y las huellas fueran correctas. Procedí a ensamblar la PCB. La placa completamente soldada se parece a la siguiente:
Explicación del código del contador de pasos ATtiny85
El código completo del contador de pasos de Arduino se proporciona al final del documento. A continuación, explicamos algunas partes importantes del código.
El código usa las bibliotecas TinyWireM.h y TinyOzOLED.h. La biblioteca TinyWireM se puede descargar desde el Administrador de bibliotecas en el IDE de Arduino e instalar desde allí. Para eso, abra el IDE de Arduino y vaya a Sketch <Incluir biblioteca <Administrar bibliotecas . Ahora busque TinyWireM.h e instale la biblioteca TinyWireM de Adafruit.
Mientras que la biblioteca TinyOzOLED.h se puede descargar desde los enlaces dados.
Después de instalar las bibliotecas en Arduino IDE, inicie el código incluyendo los archivos de bibliotecas necesarios.
#include "TinyWireM.h" #include "TinyOzOLED.h"
Después de incluir las bibliotecas, defina las variables para almacenar las lecturas del acelerómetro.
intaccelX, accelY, accelZ;
Dentro del bucle setup () , inicialice la biblioteca de cables y restablezca el sensor a través del registro de administración de energía, también inicialice la comunicación I2C para la pantalla OLED. Luego, en las siguientes líneas, configure la orientación de la pantalla e ingrese la dirección de registro para los valores del acelerómetro y del giroscopio.
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);
En la función getAccel () , comience leyendo los datos del acelerómetro. Los datos de cada eje se almacenan en dos bytes (superior e inferior) o registros. Para leerlos todos, comience con el primer registro, y usando la función requiestFrom () , solicitamos leer los 6 registros para los ejes X, Y y Z. Luego leemos los datos de cada registro y, dado que las salidas son el complemento de dos, las combinamos adecuadamente para obtener los valores completos del 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 (); }
Ahora, dentro de la función de bucle, primero lea los valores de los ejes X, Y y Z y, después de obtener los valores de los 3 ejes, calcule el vector de aceleración total tomando la raíz cuadrada de los valores de los ejes X, Y y Z. Luego, calcule la diferencia entre el vector actual y el vector anterior y, si la diferencia es mayor que 6, aumente el recuento de pasos.
getAccel (); vector = sqrt ((accelX * accelX) + (accelY * accelY) + (accelZ * accelZ)); totalvector = vector - vectorprevious; if (vector total> 6) {Pasos ++; } OzOled.printString ("Pasos", 0, 4); OzOled.printNumber (Pasos, 0, 8, 4); vectorprevious = vector; retraso (600);
Demos un paseo a nuestro contador de pasos Arduino
Una vez que haya terminado de ensamblar la PCB, conecte el ATtiny85 a la placa programadora y cargue el código. Ahora tome la configuración del contador de pasos en sus manos y comience a caminar paso a paso, debería mostrar el número de pasos en OLED. A veces aumenta el número de pasos cuando la configuración vibra muy rápidamente o muy lentamente.
Así es como puede construir su propio contador de pasos usando el ATtiny85 y MPU6050. El funcionamiento completo del proyecto también se puede encontrar en el video vinculado a continuación. Espero que hayas disfrutado del proyecto y te haya parecido interesante construir el tuyo. Si tiene alguna pregunta, déjela en la sección de comentarios a continuación.