Kazalo:

Zapis podatkov MPU-6050/A0 v realnem času z Arduinom in Androidom: 7 korakov (s slikami)
Zapis podatkov MPU-6050/A0 v realnem času z Arduinom in Androidom: 7 korakov (s slikami)

Video: Zapis podatkov MPU-6050/A0 v realnem času z Arduinom in Androidom: 7 korakov (s slikami)

Video: Zapis podatkov MPU-6050/A0 v realnem času z Arduinom in Androidom: 7 korakov (s slikami)
Video: Полное руководство по Google Forms - универсальный инструмент для опросов и сбора данных онлайн! 2024, Julij
Anonim
Zapis podatkov MPU-6050/A0 v realnem času z Arduinom in Androidom
Zapis podatkov MPU-6050/A0 v realnem času z Arduinom in Androidom

Zanimala me je uporaba Arduina za strojno učenje. Kot prvi korak želim z napravo Android zgraditi prikaz podatkov in zapisovalnik podatkov v realnem času (ali precej blizu njega). Želim posneti podatke merilnika pospeška iz MPU-6050, zato sem konstrukcijo zasnoval za uporabo HC-05 pri 115200 baud. S to konfiguracijo je mogoče prenašati 4 kanale podatkov s hitrostjo 250 vzorcev na sekundo.

Gradnja ima nekaj korakov:

  • Zgradite ščit ali ploščo
  • Programirajte Arduino
  • Naložite aplikacijo Android iz Googla Play ali podružite GitHub in jo sestavite sami
  • Priključite MPU-6050 na nekaj zanimivega, kar vibrira (uporabil sem avtomobil s klimatsko napravo)
  • Za povezavo z Arduinom uporabite napravo Android
  • Narišite podatke, shranite, če vas zanima
  • Uvozite v Python (ali drugo platformo) za nadaljnjo uporabo

Začnimo!

1. korak: Zgradite ščit/ploščo

Zgradite ščit/ploščo
Zgradite ščit/ploščo
Zgradite ščit/ploščo
Zgradite ščit/ploščo

To je shema ožičenja za Arduino, HC-05 in MPU-6050. Poleg MPU-6050 imam analogni vhod A0 povezan s svetlobnim senzorjem, da pokaže, da ADC deluje. Vsak signal 0-5 voltov se lahko vnese v AD0 A0. To so komponente, ki sem jih uporabil za izdelavo:

  • Arduino Uno
  • HC-05 (Tudi HC-06 bi moral delovati, vendar sem bil sestavljen s HC-05)
  • MPU-6050
  • Sparkfun fotorezistor
  • 10kOhm upor (rjava-črno-oranžna)

Večina modulov Bluetooth HC-05 privzeto uporablja 9600 baud. Če želite, da se podatki uspešno prenašajo, jih morate ponovno programirati za hitrost 115200 baud. Obstaja dober HC-05/HC-06 AT Command Instructable, ki pojasnjuje, kako to storiti.

2. korak: Programirajte Arduino

Programirajte Arduino
Programirajte Arduino
Programirajte Arduino
Programirajte Arduino

Za programiranje Arduina sem uporabil izdajo Arduino IDE 1.6.7. Kodo lahko prenesete s povezav v tem koraku ali iz repoja GitHub. Vključil sem tri različice: Firmware125.ino je različica 125 hercev, Firmware250.ino je različica 250 hercev in Firmware500.ino je različica 500 hercev. Če želite, da Arduino deluje pri 500 hercih, se A0 ADC ne zbira.

Vdelana programska oprema vključuje uro na Pin 9, ki sem jo uporabil za preverjanje časa. Sled kaže, da je čas cikla 4 ms (kar ustreza 1/250 hercev). Ugotovil sem, da v primeru težav s serijsko povezavo čas ne bo enak.

Koda Arduino uporablja bit -maskiranje, da vsakemu paketu doda številko kanala, ker vzorci včasih padejo prek Bluetootha. Za shranjevanje številke kanala uporabljam tri najpomembnejše bite. Za podpisana cela števila je najpomembnejši bit (MSB) rezerviran za znak. Ker želim za svoj naslov uporabiti MSB in ne znak celega števila, moram vse podpisane vrednosti merilnika pospeška pretvoriti v nepodpisana cela števila. To naredim tako, da vsaki vrednosti dodam 32768 (števec ADC merilnika pospeška MPU je od +32768 do -32768) in jih predložim kot nepodpisana cela števila:

(brez podpisane int) ((dolga) iAccelData+32767);

Številka kanala je enaka za vsak merilnik pospeška in vrata A0, tako da je mogoče odkriti paket, če številke kanalov niso v redu. Za pakete, ki prihajajo iz Bluetootha na Arduinu, je binarni vzorec (znaki se bitno premikajo):

(xacc 3 naslovni bitov = 0x00, 13 -bitni podpis

(xacc 3 naslovni bitovi = 0x00, 13 -bitni podpisan) (yacc 3 naslovni bitovi = 0x01, 13 -bitni podpisan) (zacc 3 naslovni bitovi = 0x02, 13 -bitni podpisan) (3 naslovni bitovi = 0x03, iadc13bit brez podpisa) (xacc 3 -bitni naslovi = 0x00, 13 -bitno nepodpisano) (yacc 3 naslovni bitovi = 0x01, 13 -bitni podpisani) (zacc 3 naslovni bitovi = 0x02, 13 -bitni podpisani) (3 bitni naslovi = 0x03, iadc13bit brez podpisa) …

Če za branje podatkov Bluetooth uporabljate kaj drugega kot aplikacijo Accel Plot Android, tukaj so koraki za ekstrahiranje naslova (uporabljam imena spremenljivk iz datoteke Accel Plot Bluetooth.java iz repoja GitHub):

- Preberite v 16 nepodpisanih int

- Izvlecite visoki bajt in ga shranite v btHigh.

- Izvlecite spodnji bajt in ga shranite v btLow.

- Pridobite naslov iz btHigh z: (btHigh >> 5) & 0x07. Ta stavek premakne btHigh 5 bitov v desno in premakne tri naslovne bite v najnižje tri registre. Znak & je logično IN, ki bite 4 in višje prisili, da so nič, zadnji trije pa se ujemajo z naslovi. Rezultat te izjave je vaš naslov.

Če uporabljate Accel Plot, vam ni treba skrbeti za ekstrakcijo naslova.

3. korak: Naložite aplikacijo za Android iz Googla Play ali razvejajte GitHub

Naložite aplikacijo za Android iz Googla Play ali razvejajte GitHub
Naložite aplikacijo za Android iz Googla Play ali razvejajte GitHub

Na voljo imate nekaj možnosti za nalaganje aplikacije za Android v napravo. Če se želite izogniti kodiranju, lahko poiščete »Accel Plot« in aplikacija bi se morala pojaviti v trgovini Google Play. Za namestitev sledite navodilom v trgovini.

Moja želja s tem Instructableom je resnično spodbuditi druge k gradnji projektov, zato sem kodo objavil tudi v repoju GitHub. To bi morali razvejati, zgraditi in spremeniti, kot se vam zdi primerno. Kodo sem objavil pod licenco MIT, zato se zabavajte!

4. korak: Povežite se z Arduinom na nekaj zanimivega (uporabljal sem avtomobil R/C)

Povežite se z Arduinom na nekaj zanimivega (uporabljal sem avtomobil s klimatsko napravo)
Povežite se z Arduinom na nekaj zanimivega (uporabljal sem avtomobil s klimatsko napravo)

Na koncu želim uporabiti napravo za odkrivanje cestne površine, zato sem mislil, da bi bil primeren majhen avto na daljinsko upravljanje (R/C). Mislim, da bo v naslednjem koraku v pomoč, če so lahko naglasi na nečem, kar se premika ali vibrira.

5. korak: Uporabite napravo Android za povezavo z Arduinom

Za povezavo z Arduinom uporabite napravo Android
Za povezavo z Arduinom uporabite napravo Android
Za povezavo z Arduinom uporabite napravo Android
Za povezavo z Arduinom uporabite napravo Android
Za povezavo z Arduinom uporabite napravo Android
Za povezavo z Arduinom uporabite napravo Android

Če tega še niste storili, morate najprej povezati HC-05 z napravo Android. Verjamem, da lahko na večini naprav to storite tako, da odprete nastavitve. Privzeti pin za večino naprav HC-05 bo 1234 ali 1111.

Odprite aplikacijo AccelPlot v napravi Android. Ko se aplikacija odpre in preden se povežete s HC-05, lahko spremenite hitrost vzorčenja (to je nastavljeno v kodi Arduino), merilnike pospeška (nastavljeno tudi v kodi Arduino) in število vzorcev, ki jih želite shraniti.

Ko nastavite te nastavitve, kliknite gumb "Poveži". Prikazati mora naprave Bluetooth in vašo napravo naj bo na seznamu. Izberite ga in ko koda vzpostavi povezavo, se bo pojavil "Povezani" toast.

S puščičnim gumbom za nazaj se vrnite na Accel Plot. Dotaknite se gumba »Začni tok« za prikaz podatkov iz naprave HC-05. Na voljo morajo biti tudi gumbi za shranjevanje podatkov ali predvajanje frekvenčno modulirane vsebine prek avdio priključka.

6. korak: Pridobite in narišite podatke

Image
Image
Uvozite v Python (ali drugo platformo) za nadaljnjo uporabo
Uvozite v Python (ali drugo platformo) za nadaljnjo uporabo

Gumb »Začni tok« mora biti omogočen. Dotaknite se ga, da začnete pretakati podatke na zaslon.

Omogočen bo tudi gumb »Shrani podatke«, dotaknite se ga za shranjevanje podatkov.

Accel Plot vključuje tudi možnost oddajanja moduliranega signala na zvočnih kanalih. Dva kanala v aplikaciji Accel Plot se nanašata na levi in desni kanal vtičnice za avdio izhod v napravi Android. To je uporabno, če želite podatke MPU-6050 prenesti v ločen sistem beleženja podatkov, na primer National Instruments.

Video prikazuje primer sistema, ki zbira podatke o R/C avtomobilu.

Korak 7: Uvozite v Python (ali drugo platformo) za nadaljnjo uporabo

Uvozite v Python (ali drugo platformo) za nadaljnjo uporabo
Uvozite v Python (ali drugo platformo) za nadaljnjo uporabo

Datoteke se shranijo v napravo Android. Datoteke bodo shranjene v imeniku "AccelPlot" za Android API 18 in starejše. Koda postavi datoteke.dat v mapo "\ Tablet / Documents / AccelPlot" za API 19 (KitKat 4.4) in novejše. Imel sem težave z nekaterimi napravami Android, ki prikazujejo datoteke, ko so povezane prek USB -ja. V nekaterih primerih sem moral znova zagnati napravo Android, da so se prikazali. Ne vem, zakaj je tako, vendar bi morale biti štiri datoteke, ena za vsak kanal. Za dodatno delo jih lahko kopirate v lokalni imenik.

Za odpiranje datotek in prikaz podatkov sem uporabil Anacondo/Python 2.7. Datoteka "ExploratoryAnalysis.ipynb" ima datoteko prenosnega računalnika IPython, ki bo odprla vse podatkovne datoteke in narisala vzorčne podatke. Vzorčne datoteke so vključene v repo GitHub. Podatki so shranjeni kot 4-bajtni plavajoči elementi velikega endiana ('> f'), zato bi jih moral odpreti kateri koli program za analizo.

Vključil sem tudi enostavnejšo datoteko z imenom "ReadDataFiles.ipynb", ki prikazuje, kako se bere v eni datoteki po imenu.

Priporočena: