- Components necessaris
- Mòdul de sensor MPU6050: una breu introducció
- Diagrama del circuit de comptador de passos Attiny85
- Fabricació de PCB per al comptador de passos Attiny85
- Comanda de PCB a PCBWay
- Muntatge del PCB de comptador de passos ATtiny85
- ATtiny85 Explicació del codi del comptador de passos
- Anem a caminar amb el nostre comptador de passos Arduino
En aquest tutorial, crearem un podòmetre fàcil i econòmic amb ATtiny85 IC, acceleròmetre i giroscopi MPU6050 i mòdul de pantalla OLED. Aquest senzill comptador de passos basat en Arduino funciona amb una cèl·lula de moneda de 3V, cosa que el fa més fàcil de transportar quan surti a passejar o trotar. També requereix molt pocs components per construir i el codi també és relativament senzill. El programa d’aquest projecte utilitza el MPU6050 per mesurar la magnitud de l’acceleració al llarg dels 3 eixos (X, Y i Z). A continuació, calcula la diferència de la magnitud de l’acceleració entre els valors anteriors i els actuals. Si la diferència és superior a un llindar determinat (per caminar més de 6 i per córrer més de 10), augmenta el recompte de passos en conseqüència. A continuació, es mostren els passos totals fets a la pantalla OLED
Per construir aquest comptador de passos portàtil en un PCB, hem fabricat les nostres plaques de PCB de PCBWay i muntarem i provarem el mateix en aquest projecte. Si voleu afegir més funcions, també podeu afegir un monitor Heartbeat a aquesta configuració i prèviament també hem creat un comptador de passos de l’acceleròmetre Arduino mitjançant ADXL335, consulteu-los si esteu interessats.
Components necessaris
Per construir aquest podòmetre amb Arduino, necessitareu els components següents.
- Attiny85 IC
- MPU6050
- Mòdul de pantalla OLED
- 2 × botons de pressió
- Resistors 5 × 10KΩ (SMD)
Mòdul de sensor MPU6050: una breu introducció
MPU6050 es basa en la tecnologia de sistemes micro-mecànics (MEMS). Aquest sensor té un acceleròmetre de 3 eixos, un giroscopi de 3 eixos i un sensor de temperatura incorporat. Es pot utilitzar per mesurar paràmetres com l’acceleració, la velocitat, l’orientació, el desplaçament, etc. Anteriorment hem interfacat MPU6050 amb Arduino i Raspberry pi i també hem construït uns quants projectes utilitzant-lo com: robot d’equilibri automàtic, transportador digital Arduino i inclinòmetre Arduino.

El mòdul MPU6050 és de mida petita i té un baix consum d’energia, una alta repetició, una alta tolerància als xocs i preus baixos per a l’usuari. El MPU6050 ve amb un bus I2C i una interfície auxiliar de bus I2C i pot interferir fàcilment amb altres sensors com magnetòmetres i microcontroladors.
Diagrama del circuit de comptador de passos Attiny85
A continuació es mostra l’esquema del comptador de passos MPU6050:

La imatge anterior mostra el diagrama de circuits per a la interfície de la pantalla MPU6050 i OLED amb Attiny85 IC. La interfície entre MPU6050, pantalla OLED i Arduino s’ha d’implementar mitjançant el protocol I2C. Per tant, el SCLPin (PB2) de l'ATtiny85 està connectat al SCLPin de la pantalla MPU6050 i OLED respectivament. De la mateixa manera, l'SDAPin (PB0) de l'ATtiny85 està connectat a l'SDAPin de la pantalla MPU6050 i OLED. També hi ha dos polsadors connectats al pin PB3 i PB4 de ATtiny85 IC. Aquests botons es poden utilitzar per desplaçar el text o canviar el text que es mostra.
Nota: Seguiu el nostre tutorial anterior Programació ATtiny85 IC directament mitjançant USB mitjançant Digispark Bootloader per programar l'ATtiny85 IC mitjançant USB i Digispark Boot-loader.
Fabricació de PCB per al comptador de passos Attiny85
L'esquema està fet i podem procedir a l'establiment del PCB. Podeu dissenyar el PCB mitjançant qualsevol programari de PCB que trieu. Hem utilitzat EasyEDA per fabricar PCB per a aquest projecte.
A continuació es mostren les vistes del model 3D de la capa superior i inferior de la placa del comptador de passos:

El disseny de PCB del circuit anterior també està disponible per descarregar-lo com a Gerber des de l’enllaç següent:
- Fitxer Gerber per al comptador de passos ATtiny85
Comanda de PCB a PCBWay
Després de finalitzar el disseny, podeu continuar amb la comanda del PCB:
Pas 1: accediu a https://www.pcbway.com/, registreu-vos si és la primera vegada. A continuació, a la pestanya Prototip de PCB, introduïu les dimensions del PCB, el nombre de capes i el nombre de PCB que necessiteu.

Pas 2: continueu fent clic al botó "Cita ara". Se us dirigirà a una pàgina on definiu uns quants paràmetres addicionals, com ara el tipus de tauler, capes, material per a PCB, gruix i més, la majoria d'ells es seleccionen de manera predeterminada; si opteu per algun paràmetre específic, podeu seleccionar aquí.

Pas 3: l'últim pas és carregar el fitxer Gerber i procedir al pagament. Per assegurar-se que el procés és fluix, PCBWAY verifica si el fitxer Gerber és vàlid abans de procedir al pagament. D'aquesta manera, podeu assegurar-vos que el vostre PCB sigui amigable amb la fabricació i us arribi com a compromès.

Muntatge del PCB de comptador de passos ATtiny85
Al cap de pocs dies, vam rebre el nostre PCB en un bon paquet i la qualitat del PCB va ser bona com sempre. A continuació es mostren la capa superior i la capa inferior del tauler:

Després d'assegurar-se que les petjades i les petjades eren correctes. Vaig procedir al muntatge del PCB. El tauler completament soldat té l’aspecte següent:

ATtiny85 Explicació del codi del comptador de passos
El codi complet del comptador de passos Arduino es dóna al final del document. Aquí expliquem algunes parts importants del codi.
El codi utilitza les biblioteques TinyWireM.h i TinyOzOLED.h. La biblioteca TinyWireM es pot descarregar des del gestor de biblioteques a l'IDE Arduino i instal·lar-la des d'allà. Per a això, obriu l'IDE d'Arduino i aneu a Sketch <Inclou biblioteca <Gestiona biblioteques . Ara cerqueu TinyWireM.h i instal·leu la biblioteca TinyWireM d’Adafruit.

Mentre que la biblioteca TinyOzOLED.h es pot descarregar des dels enllaços indicats.
Després d'instal·lar les biblioteques a Arduino IDE, inicieu el codi incloent els fitxers de biblioteques necessaris.
#include "TinyWireM.h" #include "TinyOzOLED.h"
Després d’incloure les biblioteques, definiu les variables per emmagatzemar les lectures de l’acceleròmetre.
intaccelX, accelY, accelZ;
Dins del bucle setup () , inicialitzeu la biblioteca de cables i reinicieu el sensor mitjançant el registre de gestió d’energia, també inicialitzeu la comunicació I2C per a la pantalla OLED. A continuació, a les línies següents, configureu l'orientació de la pantalla i introduïu l'adreça del registre dels valors de l'acceleròmetre i del giroscopi.
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);
A la funció getAccel () , comenceu llegint les dades de l’acceleròmetre. Les dades de cada eix s’emmagatzemen en dos bytes (superior i inferior) o registres. Per llegir-los tots, comenceu pel primer registre i, mitjançant la funció requiestFrom () , sol·licitem la lectura dels 6 registres dels eixos X, Y i Z. A continuació, llegim les dades de cada registre i, com que les sortides són un complement de dos, les combinem adequadament per obtenir els valors complets de l’acceleròmetre.
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 (); }
Ara dins de la funció de bucle, primer llegiu els valors de l’eix X, Y i Z i després d’obtenir els valors de 3 eixos, calculeu el vector d’acceleració total prenent l’arrel quadrada dels valors de l’eix X, Y i Z. A continuació, calculeu la diferència entre el vector actual i el vector anterior i, si la diferència és superior a 6, augmenteu el recompte de passos.
getAccel (); vector = sqrt ((accelX * accelX) + (accelY * accelY) + (accelZ * accelZ)); totalvector = vector - vectorprevious; if (totalvector> 6) {Passos ++; } OzOled.printString ("Passos", 0, 4); OzOled.printNumber (passos, 0, 8, 4); vectorprevious = vector; retard (600);
Anem a caminar amb el nostre comptador de passos Arduino
Un cop hàgiu acabat de muntar el PCB, connecteu l'ATtiny85 a la placa del programador i pengeu el codi. Ara agafeu la configuració del comptador de passos a les mans i comenceu a caminar pas a pas, hauria de mostrar el nombre de passos a OLED. De vegades augmenta el nombre de passos quan la configuració vibra molt ràpidament o molt lentament.

Així és com podeu construir el vostre propi comptador de passos mitjançant ATtiny85 i MPU6050. El funcionament complet del projecte també es pot trobar al vídeo enllaçat a continuació. Espero que us hagi agradat el projecte i us hagi semblat interessant construir el vostre propi. Si teniu cap pregunta, deixeu-les a la secció de comentaris a continuació.
