Obsah:
- Krok 1: Postavte štít/breadboard
- Krok 2: Naprogramujte Arduino
- Krok 3: Načítajte aplikáciu pre Android zo služby Google Play alebo pobočky GitHub
- Krok 4: Pripojte sa k Arduinu k niečomu zaujímavému (použil som auto R/C)
- Krok 5: Pripojte sa k Arduinu pomocou zariadenia Android
- Krok 6: Získať a vykresliť údaje
- Krok 7: Importujte do Pythonu (alebo inej platformy) na ďalšie použitie
Video: Zaznamenávanie údajov v reálnom čase MPU-6050/A0 s Arduino a Android: 7 krokov (s obrázkami)
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 12:00
Zaujalo ma používanie Arduina na strojové učenie. Ako prvý krok chcem vybudovať zobrazenie údajov a záznamník údajov v reálnom čase (alebo celkom blízko k nemu) so zariadením Android. Chcem zachytiť údaje akcelerometra z MPU-6050, takže som navrhol zostavu tak, aby používala HC-05 pri 115200 baudoch. S touto konfiguráciou je možné prenášať 4 kanály dát rýchlosťou 250 vzoriek za sekundu.
Zostavenie má niekoľko krokov:
- Postavte štít alebo nepájivú dosku
- Naprogramujte Arduino
- Načítajte aplikáciu pre Android zo služby Google Play alebo rozbaľte GitHub a zostavte si ju sami
- Pripojte MPU-6050 k niečomu zaujímavému, čo vibruje (použil som auto R/C)
- Na pripojenie k Arduinu použite zariadenie Android
- Načrtnite údaje, v prípade záujmu ich uložte
- Importujte do Pythonu (alebo inej platformy) na ďalšie použitie
Začnime!
Krok 1: Postavte štít/breadboard
Toto je schéma zapojenia pre Arduino, HC-05 a MPU-6050. Okrem MPU-6050 mám analógový vstup A0 prepojený so svetelným senzorom, ktorý ukazuje, že ADC funguje. Do A0 ADC je možné priviesť akýkoľvek 0-5 voltový signál. Toto sú komponenty, ktoré som použil na stavbu:
- Arduino Uno
- HC-05 (HC-06 by mal tiež fungovať, ale moja konštrukcia bola s HC-05)
- MPU-6050
- Sparkfun fotorezistor
- Rezistor 10 kOhm (hnedo-čierno-oranžový)
Väčšina modulov Bluetooth HC-05 je predvolene nastavená na 9600 baudov. Aby boli údaje úspešne prenášané, budete ich musieť preprogramovať na prenosovú rýchlosť 115 200 baudov. Existuje dobrý príkazový návod HC-05/HC-06 AT, ktorý vysvetľuje, ako to urobiť.
Krok 2: Naprogramujte Arduino
Na programovanie Arduina som použil vydanie Arduino IDE 1.6.7. Kód je možné stiahnuť z odkazov v tomto kroku alebo z repo služby GitHub. Zahrnul som tri verzie: Firmware125.ino je verzia 125 hertzov, Firmware250.ino je verzia 250 hertzov a Firmware500.ino je verzia 500 hertz. Aby sa Arduino dostalo do cyklu 500 hertzov, A0 ADC sa nezbiera.
Firmvér obsahuje hodiny na pine 9, ktoré som použil na kontrolu načasovania. Stopa ukazuje, že doba cyklu je 4 ms (ekvivalent 1/250 hertzov). Zistil som, že ak dôjde k problémom so sériovým prepojením, načasovanie nebude jednotné.
Kód Arduino používa bitové maskovanie na pridanie čísla kanála do každého paketu, pretože vzorky niekedy prechádzajú cez Bluetooth. Na uloženie čísla kanála používam tri najdôležitejšie bity. Pre celé čísla so znamienkom je pre znak vyhradený najdôležitejší bit (MSB). Pretože chcem pre svoju adresu použiť MSB, a nie znak celého čísla, musím previesť všetky hodnoty podpísaného akcelerometra na celé čísla bez znamienka. Vykonám to tak, že ku každej hodnote pripočítam 32768 (počet ADC akcelerometra MPU je +32768 až -32768) a prenášam ako celé čísla bez znamienka:
(nepodpísaný int) ((dlhý) iAccelData+32767);
Číslo kanála je rovnaké pre každý akcelerometer a port A0, aby bolo možné detekovať vypadnutý paket, ak sú čísla kanálov mimo prevádzky. Pre pakety pochádzajúce z Bluetooth na Arduine je binárny vzorec (znaky sa bitovo menia):
(xacc 3 adresové bity = 0x00, 13bit bez znamienka) (yacc 3 adresové bity = 0x01, 13bit bez znamienka) (zacc 3 adresové bity = 0x02, 13bit bez znamienka) (3 adresové bity = 0x03, iadc13bit bez znamienka)
(xacc 3 adresové bity = 0x00, 13bit bez znamienka) (yacc 3 adresové bity = 0x01, 13bit bez znamienka) (zacc 3 adresové bity = 0x02, 13bit bez znamienka) (3 adresové bity = 0x03, iadc13bit bez znamienka) (xacc 3 adresové bity = 0x00, 13bit bez znamienka) (yacc 3 adresové bity = 0x01, 13bit bez znamienka) (zacc 3 adresové bity = 0x02, 13bit bez znamienka) (3 adresové bity = 0x03, iadc13bit bez znamienka)…
Ak na čítanie údajov Bluetooth používate niečo iné ako aplikáciu Accel Plot pre Android, tu sú kroky na extrakciu adresy (používam názvy premenných zo súboru Accel Plot Bluetooth.java zo služby GitHub repo):
- Prečítajte si 16 nepodpísaných int
- Extrahujte vysoký bajt a uložte ho do btHigh.
- Extrahujte nízky bajt a uložte ho do btLow.
- Načítajte adresu z btHigh pomocou: (btHigh >> 5) & 0x07. Tento príkaz posunie btHigh o 5 bitov doprava, čím sa tri bity adresy presunú do najnižších troch registrov. Znak & je logické A, ktoré núti bity 4 a vyššie byť nulové a posledné tri bity zodpovedať bitom adresy. Výsledkom tohto vyhlásenia je vaša adresa.
Ak používate Accel Plot, s extrakciou adresy si nemusíte robiť starosti.
Krok 3: Načítajte aplikáciu pre Android zo služby Google Play alebo pobočky GitHub
Na načítanie aplikácie pre Android do zariadenia máte niekoľko možností. Ak sa chcete vyhnúť kódovaniu, môžete vyhľadať „Accel Plot“a aplikácia by sa mala objaviť v obchode Google Play. Pri inštalácii postupujte podľa pokynov v obchode.
Mojou túžbou s týmto Instructable je skutočne povzbudiť ostatných, aby stavali projekty, preto som kód zverejnil aj v repo GitHub. Mali by ste byť schopní to vetviť, stavať a upravovať podľa vlastného uváženia. Kód som zverejnil pod licenciou MIT, takže sa bavte!
Krok 4: Pripojte sa k Arduinu k niečomu zaujímavému (použil som auto R/C)
Nakoniec chcem zariadenie použiť na detekciu povrchu vozovky, takže som si myslel, že by bolo vhodné malé diaľkovo ovládané (R/C) auto. Myslím si, že v nasledujúcom kroku pomôže, ak accesly môžu byť na niečom, čo sa pohybuje alebo vibruje.
Krok 5: Pripojte sa k Arduinu pomocou zariadenia Android
Ak ste to ešte neurobili, budete musieť HC-05 najskôr spárovať so svojim zariadením Android. Verím, že na väčšine zariadení to môžete urobiť tak, že prejdete do nastavení. Predvolený pin pre väčšinu zariadení HC-05 bude 1234 alebo 1111.
Na zariadení Android otvorte aplikáciu AccelPlot. Keď sa aplikácia otvorí a predtým, ako sa pripojíte k HC-05, môžete zmeniť vzorkovaciu frekvenciu (tá je nastavená v kóde Arduino), stupnice akcelerometra (tiež nastavené v kóde Arduino) a počet vzoriek, ktoré sa majú uložiť.
Po vykonaní týchto nastavení kliknite na tlačidlo „Pripojiť“. Malo by sa zobraziť zariadenie Bluetooth a vaše zariadenie by malo byť uvedené v zozname. Vyberte ho a akonáhle kód nadviaže spojenie, zobrazí sa vyskakovacie okno „Pripojené“.
Pomocou tlačidla šípky späť sa vráťte do Accel Plot. Klepnutím na tlačidlo „Spustiť stream“zobrazíte údaje zo zariadenia HC-05. Mali by ste mať k dispozícii aj tlačidlá na uloženie údajov alebo prehrávanie frekvenčne modulovaného obsahu prostredníctvom zvukového konektora.
Krok 6: Získať a vykresliť údaje
Malo by byť povolené tlačidlo „Spustiť stream“. Klepnutím na ňu spustíte streamovanie údajov na obrazovku.
Aktivované bude aj tlačidlo „Uložiť údaje“, kliknutím naň uložíte údaje.
Accel Plot tiež obsahuje možnosť výstupu modulovaného signálu na zvukové kanály. Dva kanály v aplikácii Accel Plot odkazujú na ľavý a pravý kanál konektora zvukového výstupu na zariadení Android. Je to užitočné, ak chcete preniesť údaje MPU-6050 do samostatného systému protokolovania údajov, napríklad do národných nástrojov.
Video zobrazuje príklad systému, ktorý zhromažďuje údaje o vozidle R/C.
Krok 7: Importujte do Pythonu (alebo inej platformy) na ďalšie použitie
Súbory sa ukladajú do zariadenia Android. Súbory budú uložené v adresári „AccelPlot“pre Android API 18 a staršie. Kód umiestni súbory.dat do priečinka „\ Tablet / Documents / AccelPlot“pre API 19 (KitKat 4.4) a vyššie. Mal som problém s niektorými zariadeniami Android, ktoré zobrazovali súbory pri pripojení cez USB. V niektorých prípadoch som musel reštartovať zariadenie Android, aby sa ukázalo. Nie ste si istí, prečo to tak je, ale mali by existovať štyri súbory, jeden pre každý kanál. Môžu byť skopírované do miestneho adresára pre ďalšiu prácu.
Na otvorenie súborov a zobrazenie údajov som použil Anaconda/Python 2.7. Súbor „ExploratoryAnalysis.ipynb“obsahuje súbor IPython Notebook, ktorý otvorí všetky súbory s údajmi a vykreslí vzorové údaje. V repo GitHub sú zahrnuté ukážkové súbory. Dáta sú uložené ako big-endian 4-bajtové plaváky ('> f'), takže by ich mal byť schopný otvoriť akýkoľvek analytický program.
Zahrnul som tiež jednoduchší súbor s názvom „ReadDataFiles.ipynb“, ktorý ukazuje, ako čítať v jednom súbore podľa mena.
Odporúča:
Vykreslenie grafu v reálnom čase pre Android od systému Arduino prostredníctvom krokov HC-05: 3
Vykreslenie grafu v reálnom čase pre Android od Arduina cez HC-05: Ahoj, tu je návod, ako vykresliť graf hodnôt v reálnom čase z mikroovládača, akým je napríklad Arduino, do aplikácie. Využíva modul Bluetooth, ako je HC-05, aby slúžil ako zariadenie na odosielanie správ na prenos a príjem údajov medzi
Ako vytvoriť záznamník vlhkosti a teploty v reálnom čase s Arduino UNO a kartou SD - Simulácia záznamníka údajov DHT11 v Proteuse: 5 krokov
Ako vytvoriť záznamník vlhkosti a teploty v reálnom čase s Arduino UNO a kartou SD | Simulácia záznamníka údajov DHT11 v Proteuse: Úvod: Ahoj, toto je Liono Maker, tu je odkaz na YouTube. Vytvárame kreatívny projekt s Arduino a pracujeme na vstavaných systémoch. Záznamník údajov: Záznamník údajov (tiež záznamník údajov alebo záznamník údajov) je elektronické zariadenie, ktoré zaznamenáva údaje v priebehu času
Samostatný anemometer na zaznamenávanie údajov: 11 krokov (s obrázkami)
Samostatný anemometer na zaznamenávanie údajov: Milujem zber a analýzu údajov. Tiež milujem stavbu elektronických pomôcok. Pred rokom, keď som objavil produkty Arduino, som si okamžite pomyslel: „Rád by som zbieral údaje o životnom prostredí.“ V Portlande bol veterný deň, a tak som
Program MicroPython: Aktualizácia údajov o chorobe koronavírusu (COVID-19) v reálnom čase: 10 krokov (s obrázkami)
Program MicroPython: Aktualizácia údajov o koronavíruse (COVID-19) v reálnom čase: Za posledných niekoľko týždňov počet potvrdených prípadov koronavírusovej choroby (COVID 19) na celom svete prekročil 100 000 a Svetová zdravotnícka organizácia (WHO) vyhlásila vypuknutie novej pneumónie spôsobenej koronavírusom je globálnou pandémiou. Bol som veľmi
Nastavte od začiatku Raspberry Pi na zaznamenávanie údajov z Arduina: 5 krokov
Nastavte úplne od začiatku Raspberry Pi na zaznamenávanie údajov z Arduina: Tento tutoriál je pre tých, ktorí nemajú skúsenosti s inštaláciou nového hardvéru alebo softvéru, nehovoriac o Pythone alebo Linuxe. Povedzme, že ste si objednali Raspberry Pi (RPi) s SD karta (najmenej 8 GB, použil som 16 GB, typ I) a napájanie (5 V, najmenej 2