- Tarvittavat komponentit
- ADXL335-kiihtyvyysanturi
- Piirikaavio
- Kuinka askelmittari toimii?
- Arduino Step Counter -ohjelmointi
- Arduino-askelmittarin testaus
Kuntobändit ovat tulossa erittäin suosittuja nykyään, mikä paitsi laskee askeleet, mutta myös seuraa poltetut kalorit, näyttää syke, esitysaika ja paljon muuta. Ja nämä IoT-laitteet synkronoidaan pilven kanssa, jotta voit helposti saada kaiken fyysisen aktiviteettisi historian älypuhelimella. Olemme myös rakentaneet IoT-pohjaisen potilasvalvontajärjestelmän, jossa kriittiset tiedot on lähetetty ThingSpeakille seurattavaksi mistä tahansa.
Askelmittarit ovat laitteita, joita käytetään vain askelten laskemiseen. Joten tässä opetusohjelmassa aiomme rakentaa helpon ja halvan DIY-askelmittarin Arduinolla ja kiihtyvyysmittarilla. Tämä askelmittari laskee askelten määrän ja näyttää ne 16x2 LCD-moduulilla. Tämä askelmittari voidaan integroida tämän Arduino Smart Watchin kanssa.
Tarvittavat komponentit
- Arduino Nano
- ADXL 335 -kiihtyvyysanturi
- 16 * 2 LCD-näyttö
- LCD I2C -moduuli
- Akku
ADXL335-kiihtyvyysanturi
ADXL335 on täydellinen 3-akselinen analoginen kiihtyvyysanturi, ja se toimii kapasitiivisen tunnistuksen periaatteella. Se on pieni, ohut, pienitehoinen moduuli, jossa on monikiteinen pinta-mikrokoneistettu anturi ja signaalien säätöpiiri. ADXL335-kiihtyvyysanturi voi mitata sekä staattisen että dynaamisen kiihtyvyyden. Tässä tässä Arduino-askelmittariprojektissa ADXL335-kiihtyvyysanturi toimii askelmittarianturina.
Kiihtyvyysmittari on laite, joka voi muuntaa kiihtyvyys mihin tahansa suuntaan sen vastaava vaihteleva jännite. Tämä saavutetaan käyttämällä kondensaattoreita (viite kuva), kun Accel liikkuu, sen sisällä oleva kondensaattori muuttuu myös liikkeen perusteella (katso kuva), koska kapasitanssi vaihtelee, voidaan myös saada vaihteleva jännite.
Alla on kiihtyvyysmittarin kuvat edestä ja takaa sekä tapin kuvaus-
Tappi Kiihtyvyysanturin kuvaus:
- Vcc- 5 voltin syöttö tulisi liittää tähän tapiin.
- X-OUT - Tämä tappi antaa analogisen lähdön x-suuntaan
- Y-OUT - Tämä tappi antaa analogisen lähdön y-suuntaan
- Z-OUT - Tämä tappi antaa analogisen lähdön z-suuntaan
- GND - maa
- ST- Tätä tapia käytetään anturin herkkyyden asettamiseen
Rakennamme monia projekteja kiihtyvyysmittarilla ADXL335, mukaan lukien eleohjattu robotti, maanjäristystunnistin, Ping Pong -peli jne.
Piirikaavio
Piirikaaviohahmotelma Arduino kiihtyvyysanturi Askelmittari on alla.
Tässä piirissä olemme yhteydessä Arduino Nanoon ADXL335-kiihtyvyysmittarilla. Kiihtyvyysanturin X-, Y- ja Z-nastat on kytketty Arduino Nanon analogisiin nastoihin (A1, A2 ja A3). 16x2 LCD-moduulin liittämiseksi Arduinoon käytämme I2C-moduulia. I2C-moduulin SCL- ja SDA-nastat on kytketty Arduino nanon A5- ja A4-nastoihin. Täydelliset liitännät on annettu alla olevassa taulukossa:
Arduino Nano | ADXL335 |
3,3 V | VCC |
GND | GND |
A1 | X |
A2 | Y |
A3 | Z |
Arduino Nano | LCD I2C -moduuli |
5 V | VCC |
GND | GND |
A4 | SDA |
A5 | SCL |
Rakensimme tämän askelmittarin ensin Arduino- asetuksella leipälaudalle
Ja onnistuneen testauksen jälkeen kopioimme sen Perfboardille juotamalla kaikki komponentit Perfboardille alla olevan kuvan mukaisesti:
Kuinka askelmittari toimii?
Askelmittari laskee henkilön tekemien askeleiden kokonaismäärän käyttämällä kolmea liikkeen komponenttia, jotka ovat eteenpäin, pystysuorassa ja sivussa. Askelmittarijärjestelmä käyttää kiihtyvyysanturia näiden arvojen saamiseen. Kiihtyvyysanturi päivittää jatkuvasti 3-akselisen kiihtyvyyden maksimiarvot ja vähimmäisarvot jokaisen määritetyn numeron jälkeen. näytteitä. Näiden 3-akselisten keskiarvoa (Max + Min) / 2 kutsutaan dynaamiseksi kynnystasoksi, ja tätä kynnysarvoa käytetään päättämään, tehdäänkö vai ei.
Juoksun aikana askelmittari voi olla missä tahansa suunnassa, joten askelmittari laskee askeleet akselilla, jonka kiihtyvyyden muutos on suurin.
Anna minun nyt antaa sinulle nopea esittely tämän Arduino-askelmittarin toiminnasta:
- Ensinnäkin askelmittari aloittaa kalibroinnin heti, kun se saa virran.
- Sitten void loop -toiminnossa se saa jatkuvasti tietoja X-, Y- ja Z-akselilta.
- Sen jälkeen se laskee kiihtyvyysvektorin lähtökohdasta.
- Kiihtyvyysvektori on X-, Y- ja Z-akselin arvojen neliöjuuri (x ^ 2 + y ^ 2 + z ^ 2).
- Sitten se vertaa keskimääräisiä kiihtyvyysarvoja kynnysarvoihin laskeaksesi vaiheen numeron.
- Jos kiihtyvyysvektori ylittää kynnysarvon, se lisää askelmäärää; muuten se hylkää virheelliset värähtelyt.
Arduino Step Counter -ohjelmointi
Koko Arduino Step Counter -koodi on tämän asiakirjan lopussa. Tässä selitämme joitain tärkeitä koodinpätkiä.
Käynnistä koodi tavalliseen tapaan sisällyttämällä kaikki vaaditut kirjastot. ADXL335-kiihtyvyysanturi ei vaadi kirjastoa, koska se antaa analogisen lähdön.
#sisältää
Määritä sen jälkeen Arduino-nastat, johon kiihtyvyysanturi on kytketty.
const int xpin = A1; const int ypin = A2; const int zpin = A3;
Määritä kiihtyvyysanturin kynnysarvo. Tätä kynnysarvoa verrataan kiihtyvyysvektoriin vaiheiden määrän laskemiseksi.
kellukynnys = 6;
Tyhjän asennuksen sisällä toiminto kalibroi järjestelmän, kun siihen kytketään virta.
kalibroida();
Void loop -toiminnon sisällä se lukee X-, Y- ja Z-akseliarvot 100 näytteelle.
for (int a = 0; a <100; a ++) {xaccl = kelluva (analogRead (xpin) - 345); viive (1); yaccl = kelluva (analoginenLue (ypin) - 346); viive (1); zaccl = kelluva (analoginenLue (zpin) - 416); viive (1);
Kun olet saanut 3-akseliset arvot, laske kokonaiskiihtyvyysvektori ottamalla X-, Y- ja Z-akseliarvojen neliöjuuri.
totvect = sqrt (((xaccl - xavg) * (xaccl - xavg)) + ((yaccl - yavg) * (yaccl - yavg)) + ((zval - zavg) * (zval - zavg)));
Laske sitten kiihtyvyysvektorin suurimman ja pienimmän arvon keskiarvo.
totave = (totvect + totvect) / 2;
Vertaa nyt keskimääräistä kiihtyvyyttä kynnykseen. Jos keskiarvo on suurempi kuin kynnys, lisää askelmäärää ja nosta lippua.
if (totave> kynnys && lippu == 0) {vaiheet = vaiheet + 1; lippu = 1; }
Jos keskiarvo on suurempi kuin kynnysarvo, mutta lippu on nostettu, älä tee mitään.
else if (totave> kynnys && flag == 1) {// Ei lasketa}
Jos kokonaiskeskiarvo on alle kynnyksen ja lippu nostetaan, aseta lippu alas.
if (totave <kynnys && lippu == 1) {lippu = 0; }
Tulosta vaiheiden määrä sarjamoduulilla ja LCD-näytöllä.
Serial.println (vaiheet); lcd.print ("Vaiheet:"); lcd.print (vaiheet);
Arduino-askelmittarin testaus
Kun laitteisto ja koodi ovat valmiit, liitä Arduino kannettavaan tietokoneeseen ja lataa koodi. Ota nyt askelmittarin asetukset käsiin ja aloita kävely askel askeleelta. Joskus se lisää portaiden määrää, kun askelmittari värisee erittäin nopeasti tai hyvin hitaasti.
Täydellinen video ja koodi ADXL335-askelmittarille Arduino on annettu alla.