- Potrebne komponente
- MPU6050 senzorski modul - kratek uvod
- Shema števca korakov Attiny85
- Izdelava PCB za števec korakov Attiny85
- Naročanje PCB pri PCBWay
- Sestavljanje tiskane plošče števca korakov ATtiny85
- Razlaga kode števca korakov ATtiny85
- Na sprehod popeljimo naš števec korakov Arduino
V tej vadnici bomo z uporabo ATtiny85 IC, MPU6050 Accelerometer & Gyroscope in OLED Display Module izdelali enostaven in poceni pedometer. Ta preprost števec korakov, ki temelji na Arduinu, poganja 3V kovanska celica, kar omogoča enostavno prenašanje, ko greste na sprehod ali tek. Za izdelavo zahteva tudi zelo malo komponent, koda pa je tudi razmeroma preprosta. Program v tem projektu uporablja MPU6050 za merjenje velikosti pospeška vzdolž 3 osi (X, Y in Z). Nato izračuna razliko stopnje pospeška med prejšnjo in trenutno vrednostjo. Če je razlika večja od določenega praga (pri hoji večji od 6 in pri teku večji od 10), potem ustrezno poveča število korakov. Skupni koraki so nato prikazani na OLED zaslonu.
Za izdelavo tega prenosnega števca korakov na PCB smo iz PCBWay izdelali naše plošče PCB in jih bomo v tem projektu sestavili in preizkusili. Če želite dodati več funkcij, lahko tej nastavitvi dodate tudi monitor Heartbeat in že smo z ADXL335 izdelali števec korakov merilnika pospeška Arduino, preverite jih, če vas zanima.
Potrebne komponente
Če želite ta pedometer izdelati z uporabo Arduina, boste potrebovali naslednje komponente.
- Attiny85 IC
- MPU6050
- Zaslonski modul OLED
- 2 × gumbi
- 5 × 10KΩ upori (SMD)
MPU6050 senzorski modul - kratek uvod
MPU6050 temelji na tehnologiji mikro-mehanskih sistemov (MEMS). Ta senzor ima 3-osni merilnik pospeška, 3-osni žiroskop in vgrajen temperaturni senzor. Z njim lahko merimo parametre, kot so pospešek, hitrost, orientacija, premik itd. MPU6050 smo že povezali z Arduino in Raspberry pi in z njim zgradili nekaj projektov, kot so robot Self Balancing, Arduino Digital Protractor in Arduino Inclinometer.
Modul MPU6050 je majhen in ima majhno porabo energije, veliko ponovitev, visoko toleranco na udarce in nizke uporabniške cene. MPU6050 ima vmesnik vodila I2C in pomožnega vodila I2C ter lahko zlahka moti druge senzorje, kot so magnetometri in mikrokrmilniki.
Shema števca korakov Attiny85
Shema števca korakov MPU6050 je podana spodaj:
Zgornja slika prikazuje diagram vezja za povezovanje MPU6050 in OLED zaslona z Attiny85 IC. Vmesnik med MPU6050, OLED Display in Arduino mora biti izveden s protokolom I2C. Tako je SCLPin (PB2) ATtiny85 povezan s SCLPinom MPU6050 oziroma OLED zaslona. Podobno je SDAPin (PB0) ATtiny85 povezan s SDAPinom MPU6050 in OLED zaslona. Dve tipki sta povezani tudi na zatič PB3 in PB4 ATtiny85 IC. S temi gumbi lahko premikate besedilo ali spreminjate besedilo na zaslonu.
Opomba: Upoštevajte našo prejšnjo vadnico Programiranje ATtiny85 IC neposredno prek USB z uporabo Digispark Bootloaderja za programiranje ATtiny85 IC prek USB in Digispark Boot-loader.
Izdelava PCB za števec korakov Attiny85
Shema je narejena in lahko nadaljujemo s postavitvijo tiskanega vezja. PCB lahko oblikujete s katero koli programsko opremo PCB po vaši izbiri. Za izdelavo PCB-ja za ta projekt smo uporabili EasyEDA.
Spodaj so pogledi 3D-modela zgornje in spodnje plasti PCB števca korakov:
Postavitev tiskanega vezja za zgornje vezje je na voljo tudi za prenos kot Gerber s spodnje povezave:
- Datoteka Gerber za števec korakov ATtiny85
Naročanje PCB pri PCBWay
Po dokončnem oblikovanju lahko nadaljujete z naročanjem PCB:
1. korak: Pojdite na https://www.pcbway.com/, prijavite se, če ste prvič. Nato na zavihku Prototype PCB vnesite dimenzije PCB, število slojev in število PCB, ki ga potrebujete.
2. korak: Nadaljujte s klikom na gumb »Citiraj zdaj«. Preusmerjeni boste na stran, kjer boste nastavili nekaj dodatnih parametrov, kot so vrsta plošče, sloji, material za tiskano vezje, debelina in drugo, večina jih je privzeto izbranih, če se odločite za katere koli posebne parametre, lahko izberete tukaj.
3. korak: Zadnji korak je nalaganje datoteke Gerber in nadaljevanje plačila. Da bi zagotovil nemoten postopek, PCBWAY pred nadaljevanjem plačila preveri, ali je vaša datoteka Gerber veljavna. Tako boste lahko prepričani, da je vaš PCB prijazen do izdelave in vas bo sprejel kot predan.
Sestavljanje tiskane plošče števca korakov ATtiny85
Po nekaj dneh smo dobili PCB v ličnem paketu in kakovost PCB je bila kot vedno dobra. Zgornja in spodnja plast plošče sta prikazani spodaj:
Po prepričanju, da so sledi in odtisi pravilni. Nadaljeval sem s sestavljanjem tiskanega vezja. Popolnoma spajkana plošča je videti spodaj:
Razlaga kode števca korakov ATtiny85
Popolna koda števca korakov Arduino je podana na koncu dokumenta. Tukaj razlagamo nekatere pomembne dele kode.
Koda uporablja knjižnici TinyWireM.h in TinyOzOLED.h. Knjižnico TinyWireM lahko prenesete iz upravitelja knjižnic v IDE Arduino in jo namestite od tam. Za to odprite Arduino IDE in pojdite na Sketch <Include Library <Manage Libraries . Zdaj poiščite TinyWireM.h in namestite knjižnico TinyWireM podjetja Adafruit.
Medtem ko je knjižnico TinyOzOLED.h mogoče prenesti z danih povezav.
Po namestitvi knjižnic v Arduino IDE zaženite kodo tako, da vključite potrebne datoteke knjižnic.
#include "TinyWireM.h" #include "TinyOzOLED.h"
Po vključitvi knjižnic definirajte spremenljivke za shranjevanje odčitkov merilnika pospeška.
intaccelX, AccLY, AcclZ;
Znotraj nastavitev () zanki, inicializacijo knjižnice žice in ponastaviti senzor z upravljanjem moči register tudi inicializacijo komunikacija I2C za zaslon OLED. Nato v naslednjih vrsticah nastavite usmerjenost zaslona in vnesite naslov registra za merilnike pospeška in ž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);
V funkciji getAccel () začnite z branjem podatkov merilnika pospeška. Podatki za vsako os so shranjeni v dveh bajtih (zgornji in spodnji) ali registrih. Če jih želite prebrati, začnite s prvim registrom in s funkcijo RequiestFrom () zahtevamo branje vseh 6 registrov za osi X, Y in Z. Nato preberemo podatke iz vsakega registra in ker izhodi dopolnjujejo dva, jih primerno združimo, da dobimo celotne vrednosti merilnika pospeška.
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 (); }
Zdaj znotraj funkcije zanke najprej preberite vrednosti osi X, Y in Z. Po pridobitvi vrednosti osi 3 izračunajte skupni vektor pospeška tako, da vzamete kvadratni koren vrednosti osi X, Y in Z. Nato izračunajte razliko med trenutnim in prejšnjim vektorjem in če je razlika večja od 6, nato povečajte število korakov.
getAccel (); vektor = sqrt ((accelX * accelX) + (accelY * accelY) + (accelZ * accelZ)); totalvector = vektor - vektorprejšnji; if (totalvector> 6) {Koraki ++; } OzOled.printString ("Koraki", 0, 4); OzOled.printNumber (koraki, 0, 8, 4); vectorprevious = vektor; zamuda (600);
Na sprehod popeljimo naš števec korakov Arduino
Ko končate z montažo tiskanega vezja, priključite ATtiny85 na ploščo programerja in naložite kodo. Zdaj vzemite v roke nastavitev števca korakov in začnite hoditi korak za korakom, prikazal naj bi število korakov na OLED. Včasih poveča število korakov, ko namestitev zavibrira zelo hitro ali zelo počasi.
Tako lahko z ATtiny85 in MPU6050 ustvarite svoj lastni števec korakov. Popolno delovanje projekta lahko najdete tudi v spodnjem videoposnetku. Upam, da vam je bil projekt všeč in se vam je zdelo zanimivo zgraditi svojega. Če imate kakršna koli vprašanja, jih pustite v spodnjem oddelku za komentarje.