- Componente necesare
- Modulul senzor MPU6050 - o scurtă introducere
- Diagrama circuitului de contorizare a pasului Attiny85
- Fabricarea PCB-ului pentru contorul de trepte Attiny85
- Comandarea PCB-ului de la PCBWay
- Asamblarea plăcii ATtiny85 Step Counter
- ATtiny85 Explicare cod contor pas
- Să luăm Contorul nostru Arduino pentru o plimbare
În acest tutorial, vom construi un pedometru ușor și ieftin folosind ATtiny85 IC, accelerometru și giroscop MPU6050 și modul de afișare OLED. Acest contor de pași simplu pe bază de Arduino este alimentat de o celulă de monede de 3V, ceea ce îl face ușor de transportat când ieșiți la plimbare sau jogging. De asemenea, necesită foarte puține componente pentru a construi, iar codul este, de asemenea, relativ simplu. Programul din acest proiect folosește MPU6050 pentru a măsura magnitudinea accelerației de-a lungul celor 3 axe (X, Y și Z). Apoi calculează diferența de magnitudine a accelerației dintre valorile anterioare și curente. Dacă diferența este mai mare decât un anumit prag (pentru mers mai mare de 6 și pentru alergare mai mare de 10), atunci crește numărul de pași în consecință. Etapele totale făcute sunt apoi afișate pe afișajul OLED.
Pentru a construi acest contor de pași portabil pe un PCB, am fabricat plăcile noastre PCB de la PCBWay și vom asambla și testa același lucru în acest proiect. Dacă doriți să adăugați mai multe funcții, puteți adăuga și un monitor Heartbeat la această configurare și, de asemenea, am construit anterior un contor de trepte accelerometru Arduino folosind ADXL335, verificați-le dacă sunteți interesat.
Componente necesare
Pentru a construi acest pedometru folosind Arduino, veți avea nevoie de următoarele componente.
- Attiny85 IC
- MPU6050
- Modul de afișare OLED
- 2 × Butoane de apăsare
- Rezistoare 5 × 10KΩ (SMD)
Modulul senzor MPU6050 - o scurtă introducere
MPU6050 se bazează pe tehnologia sistemelor micro-mecanice (MEMS). Acest senzor are un accelerometru pe 3 axe, un giroscop pe 3 axe și un senzor de temperatură încorporat. Poate fi folosit pentru măsurarea parametrilor precum Accelerare, Viteză, Orientare, Deplasare etc. Am interfațat anterior MPU6050 cu Arduino și Raspberry pi și am construit, de asemenea, câteva proiecte folosindu-l, cum ar fi: robotul de auto-echilibrare, Arduino Digital Protractor și Arduino Inclinometer.
Modulul MPU6050 are dimensiuni reduse și are un consum redus de energie, repetare ridicată, toleranță ridicată la șoc și prețuri scăzute pentru utilizator. MPU6050 vine cu o magistrală I2C și o interfață auxiliară I2C și poate interfera cu ușurință cu alți senzori, cum ar fi magnetometrele și microcontrolerele.
Diagrama circuitului de contorizare a pasului Attiny85
Schema contorului de pași MPU6050 este prezentată mai jos:
Imaginea de mai sus arată schema circuitului pentru interfața MPU6050 și afișajul OLED cu Attiny85 IC. Interfața dintre MPU6050, afișaj OLED și Arduino trebuie implementată utilizând protocolul I2C. Prin urmare, SCLPin (PB2) al ATtiny85 este conectat la SCLPin al MPU6050 și, respectiv, al ecranului OLED. În mod similar, SDAPin (PB0) al ATtiny85 este conectat la SDAPin al MPU6050 și al afișajului OLED. Două butoane sunt, de asemenea, conectate la pinul PB3 și PB4 al ATtiny85 IC. Aceste butoane pot fi utilizate pentru a derula textul sau a modifica textul afișat.
Notă: Urmați tutorialul nostru anterior Programarea ATtiny85 IC direct prin USB utilizând Digispark Bootloader pentru a programa ATtiny85 IC prin USB și Digispark Boot-loader.
Fabricarea PCB-ului pentru contorul de trepte Attiny85
Schema este gata și putem continua cu așezarea PCB-ului. Puteți proiecta PCB utilizând orice software PCB la alegere. Am folosit EasyEDA pentru a fabrica PCB pentru acest proiect.
Mai jos sunt prezentările modelului 3D ale stratului superior și al stratului inferior al PCB Counter Step:
Aspectul PCB pentru circuitul de mai sus este, de asemenea, disponibil pentru descărcare ca Gerber de pe linkul de mai jos:
- Fișier Gerber pentru ATtiny85 Step Counter
Comandarea PCB-ului de la PCBWay
Acum, după finalizarea proiectării, puteți continua cu comanda PCB-ului:
Pasul 1: intrați pe https://www.pcbway.com/, înscrieți-vă dacă este prima dată. Apoi, în fila Prototip PCB, introduceți dimensiunile PCB-ului, numărul de straturi și numărul de PCB de care aveți nevoie.
Pasul 2: Continuați făcând clic pe butonul „Cotați acum”. Veți fi direcționat către o pagină unde să setați câțiva parametri suplimentari, cum ar fi tipul de placă, straturi, material pentru PCB, grosime și multe altele, majoritatea sunt selectate în mod implicit, dacă alegeți parametrii specifici, puteți selecta aici.
Pasul 3: ultimul pas este să încărcați fișierul Gerber și să continuați plata. Pentru a vă asigura că procesul este ușor, PCBWAY verifică dacă fișierul dvs. Gerber este valid înainte de a continua plata. În acest fel, puteți să vă asigurați că PCB-ul dvs. este prietenos cu fabricarea și vă va ajunge la fel de angajat.
Asamblarea plăcii ATtiny85 Step Counter
După câteva zile, am primit PCB-ul nostru într-un pachet elegant, iar calitatea PCB-ului a fost bună ca întotdeauna. Stratul superior și cel inferior al plăcii sunt prezentate mai jos:
După ce ne-am asigurat că urmele și amprentele erau corecte. Am continuat cu asamblarea PCB-ului. Placa complet lipită arată ca cea de mai jos:
ATtiny85 Explicare cod contor pas
Codul complet al contorului de pași Arduino este dat la sfârșitul documentului. Aici explicăm câteva părți importante ale codului.
Codul utilizează bibliotecile TinyWireM.h și TinyOzOLED.h. Biblioteca TinyWireM poate fi descărcată din Library Manager în Arduino IDE și instalată de acolo. Pentru aceasta, deschideți IDE-ul Arduino și accesați Sketch <Include Library <Manage Libraries . Acum căutați TinyWireM.h și instalați biblioteca TinyWireM de la Adafruit.
În timp ce biblioteca TinyOzOLED.h poate fi descărcată de pe linkurile date.
După instalarea bibliotecilor pe Arduino IDE, porniți codul incluzând fișierele bibliotecilor necesare.
#include "TinyWireM.h" #include "TinyOzOLED.h"
După includerea bibliotecilor, definiți variabilele pentru a stoca citirile accelerometrului.
intaccelX, accelY, accelZ;
În interiorul buclei setup () , inițializați biblioteca de fire și resetați senzorul prin registrul de gestionare a energiei, inițializați și comunicarea I2C pentru afișajul OLED. Apoi, în rândurile următoare, setați orientarea afișajului și introduceți adresa de registru pentru valorile accelerometrului și giroscopului.
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);
În funcția getAccel () , începeți citind datele accelerometrului. Datele pentru fiecare axă sunt stocate în doi octeți (superior și inferior) sau registre. Pentru a le citi pe toate, începeți cu primul registru și folosind funcția requiestFrom () , solicităm să citiți toate cele 6 registre pentru axele X, Y și Z. Apoi citim datele din fiecare registru și, deoarece ieșirile sunt complementul a două, combinați-le în mod corespunzător pentru a obține valorile complete ale accelerometrului.
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 (); }
Acum, în funcția buclă, citiți mai întâi valorile axelor X, Y și Z și după obținerea valorilor pe 3 axe, calculați vectorul de accelerație totală luând rădăcina pătrată a valorilor axei X, Y și Z. Apoi calculați diferența dintre vectorul curent și vectorul anterior și dacă diferența este mai mare de 6, atunci creșteți numărul de pași.
getAccel (); vector = sqrt ((accelX * accelX) + (accelY * accelY) + (accelZ * accelZ)); totalvector = vector - vectorprevious; if (totalvector> 6) {Pași ++; } OzOled.printString („Pași”, 0, 4); OzOled.printNumber (Pași, 0, 8, 4); vectorprevious = vector; întârziere (600);
Să luăm Contorul nostru Arduino pentru o plimbare
Odată ce ați terminat asamblarea PCB-ului, conectați ATtiny85 la placa de programare și încărcați codul. Acum luați setarea contorului de pași în mâini și începeți să mergeți pas cu pas, ar trebui să afișeze numărul de pași pe OLED. Uneori crește numărul de pași când setarea vibrează foarte rapid sau foarte lent.
Acesta este modul în care vă puteți construi propriul contor de pași folosind ATtiny85 și MPU6050. Funcționarea completă a proiectului poate fi găsită și în videoclipul legat mai jos. Sper că ți-a plăcut proiectul și ți s-a părut interesant să-ți construiești propriul. Dacă aveți întrebări, vă rugăm să le lăsați în secțiunea de comentarii de mai jos.