- Súčasti sú povinné
- Akcelerometer ADXL335
- Schéma zapojenia
- Ako funguje krokomer?
- Programovanie počítadla krokov Arduino
- Testovanie krokomera Arduino
V dnešnej dobe sú veľmi populárne fitnes pásky, ktoré nielenže počítajú kroky, ale aj sledujú spálené kalórie, zobrazujú tepovú frekvenciu, čas show a mnoho ďalších. A tieto zariadenia IoT sú synchronizované s cloudom, takže na smartfóne môžete ľahko získať celú históriu svojej fyzickej aktivity. Postavili sme tiež systém monitorovania pacientov založený na IoT, kde sa kritické údaje odosielali do systému ThingSpeak, aby ich bolo možné sledovať odkiaľkoľvek.
Krokomery sú zariadenia, ktoré sa používali iba na počítanie krokov. Takže v tomto výučbe vytvoríme ľahký a lacný krokomer pre domácich majstrov pomocou Arduina a akcelerometra. Tento krokomer spočíta počet krokov a zobrazí ich na 16x2 LCD module. Tento krokomer je možné integrovať do týchto inteligentných hodiniek Arduino.
Súčasti sú povinné
- Arduino Nano
- Akcelerometer ADXL 335
- 16 * 2 LCD
- Modul LCD I2C
- Batéria
Akcelerometer ADXL335
ADXL335 je kompletný 3-osý analógový akcelerometer a pracuje na princípe kapacitného snímania. Je to malý, tenký modul s nízkym výkonom s polysilikónovým povrchovo mikroobrobeným snímačom a obvodmi na úpravu signálu. Akcelerometer ADXL335 dokáže merať statické aj dynamické zrýchlenie. Tu v tomto projekte Arduino Pedometer bude akcelerometer ADXL335 pôsobiť ako snímač Pedometer.
Akcelerometer je zariadenie, ktoré možno previesť zrýchlenie v každom smere v príslušnej premennej napätí. Toho sa dosahuje použitím kondenzátorov (referenčný obrázok), pri ktorých sa Accel pohybuje, kondenzátor prítomný v ňom, tiež podlieha zmenám (referenčný obrázok) na základe pohybu, pretože kapacita sa mení, dá sa získať aj premenlivé napätie.
Nižšie sú obrázky pre akcelerometer z prednej a zadnej strany spolu s popisom kolíka -
Pin Popis akcelerometra:
- Na tomto kolíku by sa malo pripojiť napájanie Vcc - 5 voltov.
- X-OUT - Tento pin poskytuje analógový výstup v smere x
- Y-OUT - Tento pin poskytuje analógový výstup v smere y
- Z-OUT - Tento pin poskytuje analógový výstup v smere z
- GND - zem
- ST- Tento pin slúži na nastavenie citlivosti snímača
Staviame veľa projektov pomocou akcelerometra ADXL335 vrátane robota riadeného gestami, alarmu detektora zemetrasenia, hry Ping Pong atď.
Schéma zapojenia
Schéma zapojenia počítadla krokov akcelerometra Arduino je uvedená nižšie.
V tomto okruhu komunikujeme s Arduino Nano a akcelerometrom ADXL335. Kolíky X, Y a Z akcelerometra sú spojené s analógovými kolíkmi (A1, A2 a A3) Arduino Nano. Na prepojenie 16x2 LCD modulov s Arduino používame modul I2C. Kolíky SCL a SDA modulu I2C sú pripojené k kolíkom A5 a A4 Arduino Nano. Kompletné pripojenia sú uvedené v nasledujúcej tabuľke:
Arduino Nano | ADXL335 |
3,3 V | VCC |
GND | GND |
A1 | X |
A2 | Y. |
A3 | Z |
Arduino Nano | Modul LCD I2C |
5V | VCC |
GND | GND |
A4 | SDA |
A5 | SCL |
Tento krokomer sme najskôr postavili pomocou nastavenia Arduina na doske
A po úspešnom testovaní sme to replikovali na Perfboard spájkovaním všetkých komponentov na Perfboard, ako je uvedené nižšie:
Ako funguje krokomer?
Krokomer počíta celkový počet krokov, ktoré osoba urobila pomocou troch zložiek pohybu, ktoré sú vpred, zvislé a bočné. Systém krokomerov používa na získanie týchto hodnôt akcelerometer. Akcelerometer nepretržite aktualizuje maximálnu a minimálnu hodnotu 3-osového zrýchlenia po každom definovanom č. vzoriek. Priemerná hodnota týchto 3 osí (Max + Min) / 2 sa nazýva úroveň dynamickej prahovej hodnoty a táto prahová hodnota sa používa na rozhodnutie, či sa daný krok uskutoční alebo nie.
Počas behu môže byť krokomer v ľubovoľnej orientácii, takže krokomer počíta kroky pomocou osi, ktorej zmena zrýchlenia je najväčšia.
Teraz mi dovoľte, aby som vám dal stručný návod na prácu s týmto krokomerom Arduino:
- Krokomer najskôr spustí kalibráciu, akonáhle je napájaný.
- Potom vo funkcii neplatnej slučky nepretržite získava údaje z osi X, Y a Z.
- Potom vypočíta z počiatočného bodu vektor celkovej akcelerácie.
- Vektor zrýchlenia je druhá odmocnina (x ^ 2 + y ^ 2 + z ^ 2) hodnôt X, Y a Z.
- Potom porovná priemerné hodnoty zrýchlenia s prahovými hodnotami a spočíta počet krokov.
- Ak vektor zrýchlenia prekročí prahovú hodnotu, potom sa zvýši počet krokov; inak vyradí neplatné vibrácie.
Programovanie počítadla krokov Arduino
Kompletný kód počítadla krokov Arduino je uvedený na konci tohto dokumentu. Tu vysvetľujeme niektoré dôležité úryvky tohto kódu.
Ako obvykle, spustite kód zahrnutím všetkých požadovaných knižníc. Akcelerometer ADXL335 nevyžaduje žiadnu knižnicu, pretože poskytuje analógový výstup.
#include
Potom definujte piny Arduino, kde je pripojený akcelerometer.
const int xpin = A1; const int ypin = A2; konšt int zpin = A3;
Definujte prahovú hodnotu pre akcelerometer. Táto prahová hodnota sa porovná s vektorom zrýchlenia s cieľom vypočítať počet krokov.
plaváková hranica = 6;
Vo vnútri nastavenia neplatnosti funkcia kalibruje systém, keď je napájaný.
kalibrovať ();
Vo vnútri funkcie neplatnej slučky bude čítať hodnoty osy X, Y a Z pre 100 vzoriek.
pre (int a = 0; a <100; a ++) {xaccl = float (analogRead (xpin) - 345); oneskorenie (1); yaccl = float (analogRead (ypin) - 346); oneskorenie (1); zaccl = float (analogRead (zpin) - 416); oneskorenie (1);
Po získaní hodnôt v troch osách vypočítajte celkový vektor zrýchlenia tak, že vezmete druhú odmocninu hodnôt osí X, Y a Z.
totvect = sqrt ((((xaccl - xavg) * (xaccl - xavg)) + ((yaccl - yavg) * (yaccl - yavg)) + ((zval - zavg) * (zval - zavg)));
Potom vypočítajte priemer maximálnych a minimálnych hodnôt vektora zrýchlenia.
totave = (totvect + totvect) / 2;
Teraz porovnajte priemerné zrýchlenie s prahovou hodnotou. Ak je priemer väčší ako prahová hodnota, potom zvýšte počet krokov a zdvihnite vlajku.
if (totave> medzná hodnota && flag == 0) {kroky = kroky + 1; vlajka = 1; }
Ak je priemer väčší ako prahová hodnota, ale vlajka je zvýšená, potom nerobte nič.
else if (totave> threshold && flag == 1) {// Nepočítaj}
Ak je celkový priemer menší ako prahová hodnota a vlajka je zvýšená, potom vlajku položte.
if (totave <prahová hodnota && flag == 1) {flag = 0; }
Vytlačte počet krokov na sériový monitor a LCD.
Serial.println (kroky); lcd.print ("Kroky:"); lcd.print (kroky);
Testovanie krokomera Arduino
Keď je váš hardvér a kód pripravený, pripojte Arduino k notebooku a nahrajte kód. Teraz vezmite nastavenie krokomeru do rúk a začnite kráčať krok za krokom, malo by sa na LCD displeji zobraziť počet krokov. Niekedy krokomer stúpa, keď krokomer vibruje veľmi rýchlo alebo veľmi pomaly.
Kompletné pracovné video a kód pre krokomer ADXL335 Arduino sú uvedené nižšie.