- Tarvittavat komponentit
- MPU6050-anturimoduuli - lyhyt esittely
- Attiny85-vaihelaskurin piirikaavio
- Piirilevyn valmistus Attiny85 Step Counterille
- Piirilevyn tilaaminen PCBWay: lta
- ATtiny85 Step Counter PCB: n kokoaminen
- ATtiny85-vaihelaskurin selitys
- Otetaan Arduino Step Counter kävelylle
Tässä opetusohjelmassa aiomme rakentaa helpon ja halvan askelmittarin ATtiny85 IC: llä, MPU6050-kiihtyvyysmittarilla ja gyroskoopilla sekä OLED-näyttömoduulilla. Tämä yksinkertainen Arduino-pohjainen askelmittari saa virtansa 3 V: n kolikkokennosta, joten sitä on helppo kuljettaa käydessäsi kävelylle tai lenkille. Se vaatii myös vain vähän komponentteja rakentamiseen ja koodi on myös suhteellisen yksinkertainen. Tämän projektin ohjelma käyttää MPU6050: tä mittaamaan kiihtyvyyden suuruuden 3-akselilla (X, Y ja Z). Sitten se laskee kiihtyvyysarvon eron edellisen ja nykyisen arvon välillä. Jos ero on suurempi kuin tietty kynnys (yli 6 kävelemiselle ja yli 10 juoksulle), se lisää askelmäärää vastaavasti. Suoritettujen vaiheiden kokonaismäärä näytetään sitten OLED-näytössä.
Tämän kannettavan askelmittarin rakentamiseksi piirilevylle olemme valmistaneet piirilevyt PCBWay: lta ja koomme ja testaamme saman tässä projektissa. Jos haluat lisätä uusia ominaisuuksia, voit myös lisätä Heartbeat-näytön tähän asetukseen, ja olemme myös aiemmin rakentaneet Arduino-kiihtyvyysanturin askelmittarin ADXL335: n avulla, tarkista ne, jos olet kiinnostunut.
Tarvittavat komponentit
Tämän askelmittarin rakentamiseksi Arduinolla tarvitset seuraavat komponentit.
- Attiny85 IC
- MPU6050
- OLED-näyttömoduuli
- 2 × painonappia
- 5 × 10KΩ vastukset (SMD)
MPU6050-anturimoduuli - lyhyt esittely
MPU6050 perustuu MEMS-tekniikkaan. Tässä anturissa on 3-akselinen kiihtyvyysanturi, 3-akselinen gyroskooppi ja sisäänrakennettu lämpötila-anturi. Sitä voidaan käyttää mittaamaan parametreja, kuten kiihtyvyys, nopeus, suunta, siirtymä jne. Olemme aiemmin liittäneet MPU6050: n Arduino- ja Raspberry pi -laitteisiin ja rakentaneet myös muutaman projektin, kuten - Itsetasapainottava robotti, Arduino Digital Protractor ja Arduino Inclinometer.
MPU6050-moduuli on kooltaan pieni ja sillä on pieni virrankulutus, suuri toistuvuus, korkea iskunkestävyys ja alhaiset käyttäjän hintapisteet. MPU6050: ssä on I2C-väylä ja ylimääräinen I2C-väyläliitäntä, ja se voi helposti häiritä muita antureita, kuten magnetometrejä ja mikro-ohjaimia.
Attiny85-vaihelaskurin piirikaavio
MPU6050-askelmittarin kaavio on annettu alla:
Yllä olevassa kuvassa on piirikaavio MPU6050: n ja OLED-näytön ja Attiny85 IC: n liittämisestä. MPU6050: n, OLED-näytön ja Arduinon välinen liitäntä on toteutettava I2C-protokollalla. Näin ollen ATtiny85: n SCLPin (PB2) on kytketty MPU6050: n ja OLED-näytön SCLPin: iin. Samoin ATtiny85: n SDAPin (PB0) on kytketty MPU6050: n ja OLED-näytön SDAPiniin. Kaksi painonappia on kytketty myös ATtiny85 IC: n PB3- ja PB4-napaan. Näitä painikkeita voidaan käyttää vierittämään tekstiä tai muuttamaan näytössä näkyvää tekstiä.
Huomaa: Seuraa edellistä opetusohjelmaa ATtiny85 IC: n ohjelmointi suoraan USB: n kautta Digispark Bootloader -sovelluksella ATtiny85 IC: n ohjelmointiin USB: n ja Digispark Boot-loader -ohjelman kautta.
Piirilevyn valmistus Attiny85 Step Counterille
Kaavio on valmis, ja voimme jatkaa piirilevyn asettamista. Voit suunnitella piirilevyn millä tahansa valitsemallasi piirilevyohjelmistolla. Olemme käyttäneet EasyEDAa valmistamaan piirilevyä tähän projektiin.
Alla ovat 3D Counter -näkymät Step Counter PCB: n ylä- ja alakerroksesta:
Yllä olevan piirin piirilevyn asettelu on myös ladattavissa Gerberinä alla olevasta linkistä:
- Gerber-tiedosto ATtiny85 Step Counterille
Piirilevyn tilaaminen PCBWay: lta
Nyt kun olet viimeistellyt suunnittelun, voit jatkaa tilaamista piirilevylle:
Vaihe 1: Mene osoitteeseen https://www.pcbway.com/, rekisteröidy, jos olet ensimmäinen kerta. Syötä sitten piirilevyn prototyyppi -välilehdelle piirilevyn mitat, kerrosten määrä ja tarvitsemasi piirilevyn määrä.
Vaihe 2: Jatka napsauttamalla 'Lainaa nyt' -painiketta. Sinut siirretään sivulle, jossa voit asettaa muutamia lisäparametreja, kuten levytyyppi, kerrokset, piirilevyn materiaali, paksuus ja muut, suurin osa niistä valitaan oletusarvoisesti, jos valitset tiettyjä parametreja, voit valita se täällä.
Vaihe 3: Viimeinen vaihe on lähettää Gerber-tiedosto ja jatkaa maksua. Varmistaaksesi prosessin sujuvuuden, PCBWAY tarkistaa ennen maksun suorittamista, onko Gerber-tiedostosi kelvollinen. Näin voit olla varma, että piirilevysi on valmistusystävällinen ja tavoittaa sinut sitoutuneena.
ATtiny85 Step Counter PCB: n kokoaminen
Muutaman päivän kuluttua saimme piirilevyn siistissä pakkauksessa ja piirilevyn laatu oli hyvä kuin aina. Levyn ylin ja alin kerros on esitetty alla:
Kun olet varmistanut, että jäljet ja jalanjäljet olivat oikein. Jatkoin PCB: n kokoamista. Täysin juotettu levy näyttää seuraavalta:
ATtiny85-vaihelaskurin selitys
Täydellinen Arduino-vaihelaskurikoodi on asiakirjan lopussa. Tässä selitämme joitain tärkeitä koodin osia.
Koodi käyttää TinyWireM.h- ja TinyOzOLED.h-kirjastoja. TinyWireM-kirjasto voidaan ladata Arduino IDE: n Library Managerista ja asentaa sieltä. Tätä varten avaa Arduino IDE ja siirry kohtaan Luonnos <Sisällytä kirjasto <Hallitse kirjastoja . Etsi nyt TinyWireM.h ja asenna TinyWireM-kirjasto Adafruitilta.
TinyOzOLED.h-kirjasto voidaan ladata annetuista linkeistä.
Kun olet asentanut kirjastot Arduino IDE -ohjelmaan, käynnistä koodi sisällyttämällä tarvittavat kirjastotiedostot.
#include "TinyWireM.h" #include "TinyOzOLED.h"
Kun olet lisännyt kirjastot, määritä muuttujat kiihtyvyysmittarin lukemien tallentamiseksi.
intaccelX, accelY, accelZ;
Alusta setup () -silmukan sisällä langankirjasto ja nollaa anturi virranhallintarekisterin kautta myös alustaa I2C-tiedonsiirto OLED-näytölle. Aseta sitten seuraavilla riveillä näytön suunta ja kirjoita kiihtyvyysmittarin ja gyroskoopin arvojen rekisteriosoite.
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);
Vuonna getAccel () funktio, alkaa lukemalla akselerometritiedot. Kunkin akselin tiedot tallennetaan kahteen tavuun (ylempi ja alempi) tai rekistereihin. Jotta voisimme lukea ne kaikki, aloita ensimmäisestä rekisteristä, ja funktiota requiestFrom () käyttämällä pyydämme lukemaan kaikki 6 rekisteriä X-, Y- ja Z-akseleille. Sitten luemme jokaisen rekisterin tiedot, ja koska lähdöt ovat kahden komplementteja, yhdistä ne asianmukaisesti saadaksesi täydelliset kiihtyvyysmittarin arvot.
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 (); }
Lue nyt silmukkafunktion sisällä ensin X-, Y- ja Z-akseliarvot ja saatuasi 3-akseliset arvot, laske kiihtyvyysvektori ottamalla X-, Y- ja Z-akseliarvojen neliöjuuri. Laske sitten nykyisen vektorin ja edellisen vektorin välinen ero ja jos ero on suurempi kuin 6, lisää sitten askelmäärää.
getAccel (); vektori = sqrt ((accelX * accelX) + (accelY * accelY) + (accelZ * accelZ)); totalvector = vektori - vektori edellinen; if (kokonaisvektori> 6) {Vaiheet ++; } OzOled.printString ("Vaiheet", 0, 4); OzOled.printNumber (vaiheet, 0, 8, 4); vektori edellinen = vektori; viive (600);
Otetaan Arduino Step Counter kävelylle
Kun olet asentanut piirilevyn, liitä ATtiny85 ohjelmointikorttiin ja lataa koodi. Ota nyt askellaskurin asetukset käsillesi ja aloita kävely askel askeleelta, sen pitäisi näyttää OLED: n vaiheiden määrä. Joskus se lisää vaiheiden määrää, kun asennus tärisee hyvin nopeasti tai hyvin hitaasti.
Näin voit rakentaa oman Askelaskurin ATtiny85: n ja MPU6050: n avulla. Projektin täydellinen toiminta löytyy myös alla olevasta videosta. Toivottavasti pidit projektista ja pidit mielenkiintoisena rakentaa oma. Jos sinulla on kysyttävää, jätä ne alla olevaan kommenttiosioon.