Obsah:

Zaznamenávanie údajov v reálnom čase MPU-6050/A0 s Arduino a Android: 7 krokov (s obrázkami)
Zaznamenávanie údajov v reálnom čase MPU-6050/A0 s Arduino a Android: 7 krokov (s obrázkami)

Video: Zaznamenávanie údajov v reálnom čase MPU-6050/A0 s Arduino a Android: 7 krokov (s obrázkami)

Video: Zaznamenávanie údajov v reálnom čase MPU-6050/A0 s Arduino a Android: 7 krokov (s obrázkami)
Video: Profesionálna kamera do auta pre sledovanie GPS + kamery v reálnom čase PROFIO X2 2024, Júl
Anonim
Protokolovanie údajov v reálnom čase MPU-6050/A0 s Arduino a Android
Protokolovanie údajov v reálnom čase MPU-6050/A0 s Arduino a Android

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

Postavte štít/breadboard
Postavte štít/breadboard
Postavte štít/breadboard
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

Naprogramujte Arduino
Naprogramujte Arduino
Naprogramujte Arduino
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čítajte aplikáciu pre Android zo služby Google Play alebo pobočky GitHub
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)

Pripojte sa k Arduinu k niečomu zaujímavému (použil som auto R/C)
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

Na pripojenie k Arduinu použite zariadenie Android
Na pripojenie k Arduinu použite zariadenie Android
Na pripojenie k Arduinu použite zariadenie Android
Na pripojenie k Arduinu použite zariadenie Android
Na pripojenie k Arduinu použite zariadenie Android
Na pripojenie k Arduinu použite zariadenie 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

Image
Image
Importujte do Pythonu (alebo inej platformy) na ďalšie použitie
Importujte do Pythonu (alebo inej platformy) na ďalšie použitie

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

Importujte do Pythonu (alebo inej platformy) na ďalšie použitie
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: