- Súčasti sú povinné
- Modul snímača MPU6050 - stručný úvod
- Schéma zapojenia počítadla krokov Attiny85
- Výroba DPS pre počítadlo krokov Attiny85
- Objednávanie DPS z PCBWay
- Montáž dosky plošných spojov ATtiny85
- Vysvetlenie kódu počítadla krokov ATtiny85
- Zoberme si náš počítadlo krokov Arduino na prechádzku
V tomto výučbe sa chystáme vytvoriť jednoduchý a lacný krokomer pomocou ATtiny85 IC, akcelerometra a gyroskopu MPU6050 a OLED displeja. Toto jednoduché počítadlo krokov založené na Arduine je napájané z 3V mincového článku, ktorý uľahčuje prenášanie, keď idete na prechádzku alebo zabehať. Vyžaduje tiež veľmi málo komponentov na zostavenie a kód je tiež pomerne jednoduchý. Program v tomto projekte používa MPU6050 na meranie veľkosti zrýchlenia pozdĺž 3 osí (X, Y a Z). Potom vypočíta rozdiel veľkosti zrýchlenia medzi predchádzajúcou a aktuálnou hodnotou. Ak je rozdiel väčší ako určitý prah (pre chôdzu viac ako 6 a pre beh viac ako 10), potom sa podľa toho zvýši počet krokov. Celkový počet vykonaných krokov sa potom zobrazí na OLED displeji.
Na zostavenie tohto prenosného počítadla krokov na doske plošných spojov sme vyrobili naše dosky plošných spojov z programu PCBWay a v tomto projekte ich zostavíme a otestujeme. Ak chcete pridať ďalšie funkcie, môžete do tohto nastavenia pridať aj monitor Heartbeat. Tiež sme už predtým vytvorili čítač krokov akcelerometra Arduino pomocou ADXL335, ak máte záujem, pozrite si ich.
Súčasti sú povinné
Aby ste mohli tento krokomer postaviť pomocou Arduina, budete potrebovať nasledujúce komponenty.
- Attiny85 IC
- MPU6050
- OLED displejový modul
- 2 × tlačidlá
- Rezistory 5 × 10 KΩ (SMD)
Modul snímača MPU6050 - stručný úvod
MPU6050 je založený na technológii Micro-Mechanical Systems (MEMS). Tento snímač má 3-osový akcelerometer, 3-osový gyroskop a zabudovaný teplotný snímač. Môže byť použitý na meranie parametrov ako zrýchlenie, rýchlosť, orientácia, posunutie atď. Predtým sme prepojili MPU6050 s Arduino a Raspberry pi a tiež sme pomocou neho vytvorili niekoľko projektov ako - Self Balancing robot, Arduino Digital Protractor a Arduino Inclinometer.
Modul MPU6050 je malý a má nízku spotrebu energie, vysoké opakovanie, vysokú toleranciu nárazov a nízke ceny pre používateľa. MPU6050 sa dodáva so zbernicou I2C a rozhraním pomocnej zbernice I2C a môže ľahko interferovať s inými snímačmi, ako sú magnetometre a mikrokontroléry.
Schéma zapojenia počítadla krokov Attiny85
Schéma počítadla krokov MPU6050 je uvedená nižšie:
Vyššie uvedený obrázok zobrazuje schému zapojenia rozhrania MPU6050 a OLED displeja s procesorom Attiny85 IC. Rozhranie medzi MPU6050, OLED Display a Arduino musí byť implementované pomocou protokolu I2C. Preto je SCLPin (PB2) ATtiny85 pripojený k SCLPin na displeji MPU6050 a OLED. Podobne je SDAPin (PB0) ATtiny85 pripojený k SDAPin na MPU6050 a OLED displeji. Dve tlačidlá sú tiež pripojené k pinu PB3 a PB4 ATtiny85 IC. Tieto tlačidlá sa dajú použiť na posúvanie textu alebo na zmenu textu na displeji.
Poznámka: Postupujte podľa nášho predchádzajúceho tutoriálu Programovanie ATtiny85 IC priamo cez USB pomocou programu Digispark Bootloader a programujte ATtiny85 IC cez USB a zavádzač Digispark.
Výroba DPS pre počítadlo krokov Attiny85
Schéma je hotová a môžeme pokračovať rozložením PCB. DPS môžete navrhnúť pomocou ľubovoľného softvéru DPS podľa vášho výberu. Použili sme program EasyEDA na výrobu DPS pre tento projekt.
Nižšie sú zobrazené 3D modely vrchnej a spodnej vrstvy dosky plošných spojov:
Rozloženie dosiek plošných spojov pre vyššie uvedený obvod je tiež k dispozícii na stiahnutie ako Gerber z odkazu uvedeného nižšie:
- Pilník Gerber pre počítadlo krokov ATtiny85
Objednávanie DPS z PCBWay
Teraz po dokončení návrhu môžete pokračovať v objednávaní DPS:
Krok 1: Prejdite na stránku https://www.pcbway.com/ a zaregistrujte sa, ak ste prvýkrát. Potom na karte Prototyp PCB zadajte rozmery vašej PCB, počet vrstiev a požadovaný počet PCB.
Krok 2: Pokračujte kliknutím na tlačidlo „Citovať teraz“. Dostanete sa na stránku, kde môžete nastaviť niekoľko ďalších parametrov, ako napríklad Typ dosky, Vrstvy, Materiál pre PCB, Hrúbka a ďalšie. Väčšina z nich je vybratá predvolene, pokiaľ sa rozhodnete pre akékoľvek konkrétne parametre, môžete zvoliť je to tu.
Krok 3: Posledným krokom je nahranie súboru Gerber a pokračovanie v platbe. Pred pokračovaním v platbe PCBWAY overuje, či je váš súbor Gerber platný, aby sa ubezpečil, že proces je hladký. Týmto spôsobom si môžete byť istí, že vaša doska s plošnými spojmi je vhodná pre výrobu a že sa k vám dostane ako zaviazaná.
Montáž dosky plošných spojov ATtiny85
Po niekoľkých dňoch sme dostali náš DPS v úhľadnom balení a kvalita DPS bola ako vždy dobrá. Horná a spodná vrstva dosky sú zobrazené nižšie:
Po skontrolovaní správnosti stôp a stôp. Pokračoval som montážou DPS. Kompletne spájkovaná doska vyzerá takto:
Vysvetlenie kódu počítadla krokov ATtiny85
Celý kód počítadla krokov Arduino je uvedený na konci dokumentu. Tu vysvetľujeme niektoré dôležité časti kódu.
Tento kód používa knižnice TinyWireM.h a TinyOzOLED.h. Knižnicu TinyWireM je možné stiahnuť z aplikácie Library Manager v Arduino IDE a odtiaľ ju nainštalovať. Za týmto účelom otvorte Arduino IDE a choďte na Skica <Zahrnúť knižnicu <Spravovať knižnice . Teraz vyhľadajte TinyWireM.h a nainštalujte si knižnicu TinyWireM od spoločnosti Adafruit.
Zatiaľ čo knižnicu TinyOzOLED.h je možné stiahnuť z uvedených odkazov.
Po inštalácii knižníc do Arduino IDE spustite kód zahrnutím potrebných súborov knižníc.
#include "TinyWireM.h" #include "TinyOzOLED.h"
Po zahrnutí knižníc definujte premenné, do ktorých sa majú ukladať údaje akcelerometra.
intaccelX, accelY, accelZ;
Vo vnútri slučky setup () inicializujte knižnicu vodičov a resetujte snímač prostredníctvom registra správy napájania a inicializujte komunikáciu I2C pre OLED displej. Potom v ďalších riadkoch nastavte orientáciu displeja a zadajte adresu registra pre hodnoty akcelerometra a gyroskopu.
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);
Vo funkcii getAccel () začnite načítaním údajov akcelerometra. Údaje pre každú os sú uložené v dvoch bytoch (horný a dolný) alebo registroch. Aby sme ich mohli prečítať všetky, začnite prvým registrom a pomocou funkcie requiestFrom () požadujeme prečítať všetkých 6 registrov pre osi X, Y a Z. Potom načítame údaje z každého registra a pretože výstupy sú dvojitým doplnkom, vhodne ich skombinujte, aby ste získali úplné hodnoty akcelerometra.
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 (); }
Teraz vo vnútri funkcie slučky najskôr prečítajte hodnoty na osiach X, Y a Z a po získaní hodnôt na 3 osách vypočítajte vektor celkovej akcelerácie tak, že vezmete druhú odmocninu hodnôt X, Y a Z. Potom vypočítajte rozdiel medzi aktuálnym vektorom a predchádzajúcim vektorom, a ak je rozdiel väčší ako 6, potom zvýšte počet krokov.
getAccel (); vektor = sqrt ((accelX * accelX) + (accelY * accelY) + (accelZ * accelZ)); totalvector = vektor - vektorprevious; if (totalvector> 6) {Steps ++; } OzOled.printString ("Kroky", 0, 4); OzOled.printNumber (kroky, 0, 8, 4); vectorprevious = vektor; oneskorenie (600);
Zoberme si náš počítadlo krokov Arduino na prechádzku
Po dokončení montáže PCB pripojte ATtiny85 k doske programátora a nahrajte kód. Teraz vezmite nastavenie počítadla krokov do rúk a začnite kráčať krok za krokom, malo by sa na OLED zobraziť počet krokov. Niekedy nastavenie zvyšuje počet krokov, keď nastavenie vibruje veľmi rýchlo alebo veľmi pomaly.
Takto si môžete zostaviť svoj vlastný Counter Counter pomocou ATtiny85 a MPU6050. Kompletné fungovanie projektu nájdete tiež vo videu, na ktoré odkazujete nižšie. Dúfam, že sa vám projekt páčil a bolo pre vás zaujímavé vytvoriť si vlastný. Ak máte nejaké otázky, nechajte ich prosím v sekcii komentárov nižšie.