- Komponente potrebne
- MPU6050 senzorski modul - kratki uvod
- Dijagram kruga brojača koraka Attiny85
- Izrada PCB-a za brojač koraka Attiny85
- Naručivanje PCB-a s PCBWay-a
- Sastavljanje PCB-a brojača koraka ATtiny85
- Objašnjenje ATtiny85 brojača koraka
- Krenimo u šetnju s našim brojačem koraka Arduino
U ovom uputstvu izradit ćemo jednostavan i jeftin pedometar pomoću ATtiny85 IC, MPU6050 akcelerometra i žiroskopa i OLED modula zaslona. Ovaj jednostavni brojač koraka zasnovan na Arduinu napaja 3V ćelijska kovanica, što ga čini lakšim za nošenje kad izađete u šetnju ili jog. Također treba vrlo malo komponenata za izgradnju, a kod je također relativno jednostavan. Program u ovom projektu koristi MPU6050 za mjerenje veličine ubrzanja duž 3 osi (X, Y i Z). Zatim izračunava razliku veličine ubrzanja između prethodne i trenutne vrijednosti. Ako je razlika veća od određenog praga (za hodanje veće od 6 i za trčanje veće od 10), tada se u skladu s tim povećava broj koraka. Ukupni poduzeti koraci zatim se prikazuju na OLED zaslonu.
Da bismo izgradili ovaj prijenosni brojač koraka na PCB-u, izradili smo naše PCB ploče od PCBWay-a i u ovom ćemo projektu sastaviti i testirati iste. Ako želite dodati više značajki, u ovu postavku možete dodati i monitor Heartbeat, a mi smo također već napravili Arduino brojač koraka akcelerometra pomoću ADXL335, provjerite ih ako ste zainteresirani.
Komponente potrebne
Za izgradnju ovog brojača koraka pomoću Arduina trebat će vam sljedeće komponente.
- Attiny85 IC
- MPU6050
- OLED modul zaslona
- 2 × tipke
- Otpornici 5 × 10KΩ (SMD)
MPU6050 senzorski modul - kratki uvod
MPU6050 temelji se na tehnologiji mikro-mehaničkih sustava (MEMS). Ovaj senzor ima 3-osni akcelerometar, 3-osni žiroskop i ugrađeni senzor temperature. Može se koristiti za mjerenje parametara kao što su ubrzanje, brzina, orijentacija, pomicanje itd. Prethodno smo povezali MPU6050 s Arduinom i Raspberry pi, a također smo napravili nekoliko projekata koristeći ga poput - Samo balansirajući robot, Arduino Digitalni kutomjer i Arduino Inclinometer.

Modul MPU6050 male je veličine i ima malu potrošnju energije, veliko ponavljanje, visoku toleranciju na udarce i niske korisničke cijene. MPU6050 dolazi s I2C sabirnicom i pomoćnim sučeljem I2C sabirnice i može lako ometati druge senzore poput magnetometara i mikrokontrolera.
Dijagram kruga brojača koraka Attiny85
Shema za brojač koraka MPU6050 dana je u nastavku:

Gornja slika prikazuje shemu spojeva za povezivanje MPU6050 i OLED zaslona s Attiny85 IC. Sučelje između MPU6050, OLED zaslona i Arduina mora se implementirati pomoću I2C protokola. Stoga je SCLPin (PB2) ATtiny85 spojen na SCLPin MPU6050 i OLED zaslona. Slično tome, SDAPin (PB0) ATtiny85-a povezan je sa SDAPin-om MPU6050 i OLED zaslona. Dvije tipke su također povezane na PB3 i PB4 pin ATtiny85 IC. Ovi se gumbi mogu koristiti za pomicanje teksta ili promjenu teksta na zaslonu.
Napomena: Slijedite naš prethodni vodič Programiranje ATtiny85 IC izravno putem USB-a pomoću Digispark Bootloader za programiranje ATtiny85 IC putem USB-a i Digispark Boot-loader.
Izrada PCB-a za brojač koraka Attiny85
Shema je gotova i možemo nastaviti s postavljanjem PCB-a. PCB možete dizajnirati pomoću bilo kojeg softvera za PCB po vašem izboru. Koristili smo EasyEDA za proizvodnju PCB-a za ovaj projekt.
Ispod su prikazi 3D modela gornjeg i donjeg sloja PCB brojača koraka:

Izgled PCB-a za gornji sklop također je dostupan za preuzimanje kao Gerber s donje veze:
- Gerberova datoteka za brojač koraka ATtiny85
Naručivanje PCB-a s PCBWay-a
Nakon završetka dizajna, možete nastaviti s naručivanjem PCB-a:
1. korak: Uđite na https://www.pcbway.com/, prijavite se ako vam je ovo prvi put. Zatim, na kartici PCB Prototype unesite dimenzije vaše PCB-a, broj slojeva i broj PCB-a koji vam je potreban.

Korak 2: Nastavite klikom na gumb 'Citiraj odmah'. Bit ćete preusmjereni na stranicu na kojoj ćete postaviti nekoliko dodatnih parametara kao što su vrsta ploče, slojevi, materijal za PCB, debljina i drugo, većina njih je odabrana prema zadanim postavkama, ako se odlučite za određene parametre, možete odabrati ovdje.

Korak 3: Posljednji korak je prijenos Gerber datoteke i nastavak plaćanja. Da bi osigurao nesmetan postupak, PCBWAY provjerava je li vaša Gerber datoteka valjana prije nego što nastavi s plaćanjem. Na ovaj način možete biti sigurni da je vaša PCB pogodna za proizvodnju i da će vas kontaktirati kao da ste predani.

Sastavljanje PCB-a brojača koraka ATtiny85
Nakon nekoliko dana dobili smo PCB u urednom pakiranju, a kvaliteta PCB-a bila je dobra kao i uvijek. Gornji i donji sloj ploče prikazani su u nastavku:

Nakon što se uvjerio da su tragovi i otisci stopala točni. Nastavio sam sa sastavljanjem PCB-a. Potpuno zalemljena ploča izgleda dolje:

Objašnjenje ATtiny85 brojača koraka
Kompletni kod brojača koraka Arduino dat je na kraju dokumenta. Ovdje objašnjavamo neke važne dijelove koda.
Kôd koristi knjižnice TinyWireM.h & TinyOzOLED.h. Biblioteku TinyWireM možete preuzeti iz Upravitelja biblioteka u Arduino IDE-u i odatle instalirati. Za to otvorite Arduino IDE i idite na Sketch <Include Library <Manage Libraries . Sada potražite TinyWireM.h i instalirajte knjižnicu TinyWireM tvrtke Adafruit.

Dok se knjižnica TinyOzOLED.h može preuzeti s danih poveznica.
Nakon instalacije knjižnica u Arduino IDE, pokrenite kôd tako što ćete uključiti potrebne datoteke knjižnica.
#include "TinyWireM.h" #include "TinyOzOLED.h"
Nakon uključivanja knjižnica, definirajte varijable za pohranu očitanja akcelerometra.
intaccelX, akcenat, akcelZ;
Unutar petlje setup () , inicijalizirajte knjižnicu žica i resetirajte senzor kroz registar upravljanja napajanjem, a također inicijalizirajte I2C komunikaciju za OLED zaslon. Zatim u sljedećim redovima postavite orijentaciju zaslona i unesite adresu registra za vrijednosti akcelerometra i žiroskopa.
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);
U funkciji getAccel () započnite s čitanjem podataka akcelerometra. Podaci za svaku os pohranjuju se u dva bajta (gornja i donja) ili registri. Da bismo ih pročitali sve, počnite s prvim registrom, a pomoću funkcije RequiestFrom () tražimo da se pročita svih 6 registara za osi X, Y i Z. Zatim čitamo podatke iz svakog registra, a budući da su izlazi dva komplementarna, kombinirajte ih na odgovarajući način da biste dobili cjelovite vrijednosti akcelerometara.
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 (); }
Sada unutar funkcije petlje prvo pročitajte vrijednosti osi X, Y i Z, a nakon dobivanja vrijednosti osi 3 izračunajte ukupni vektor ubrzanja uzimajući kvadratni korijen vrijednosti osi X, Y i Z. Zatim izračunajte razliku između trenutnog vektora i prethodnog vektora, a ako je razlika veća od 6, onda povećajte broj koraka.
getAccel (); vektor = sqrt ((accelX * accelX) + (accelY * accelY) + (accelZ * accelZ)); totalvector = vektor - vektorprethodni; if (totalvector> 6) {Koraci ++; } OzOled.printString ("Koraci", 0, 4); OzOled.printNumber (Koraci, 0, 8, 4); vectorprevious = vektor; kašnjenje (600);
Krenimo u šetnju s našim brojačem koraka Arduino
Kad završite sa sastavljanjem PCB-a, spojite ATtiny85 na ploču programera i prenesite kôd. Sada uzmite postavku brojača koraka u svoje ruke i krenite korak po korak, trebao bi prikazati broj koraka na OLED-u. Ponekad povećava broj koraka kada postavka vibrira vrlo brzo ili vrlo sporo.

Na ovaj način možete izraditi vlastiti brojač koraka pomoću ATtiny85 i MPU6050. Kompletni rad projekta također se može naći u videu dolje povezanom. Nadam se da vam se svidio projekt i bilo vam je zanimljivo izraditi vlastiti. Ako imate pitanja, ostavite ih u odjeljku za komentare u nastavku.

