Kazalo:
- 1. korak: Zgradite ščit/ploščo
- 2. korak: Programirajte Arduino
- 3. korak: Naložite aplikacijo za Android iz Googla Play ali razvejajte GitHub
- 4. korak: Povežite se z Arduinom na nekaj zanimivega (uporabljal sem avtomobil R/C)
- 5. korak: Uporabite napravo Android za povezavo z Arduinom
- 6. korak: Pridobite in narišite podatke
- Korak 7: Uvozite v Python (ali drugo platformo) za nadaljnjo uporabo
Video: Zapis podatkov MPU-6050/A0 v realnem času z Arduinom in Androidom: 7 korakov (s slikami)
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:07
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
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
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
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)
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
Č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
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
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:
Merilnik vodostaja v realnem času: 6 korakov (s slikami)
Merilnik vodostaja v realnem času: Ta navodila opisujejo, kako zgraditi poceni merilnik nivoja vode v realnem času za uporabo v izkopanih vodnjakih. Merilnik nivoja vode je zasnovan tako, da visi v izkopanem vodnjaku, izmeri nivo vode enkrat na dan in podatke pošlje prek WiFi ali mobilne povezave
Kako narediti snemalnik podatkov o vlažnosti in temperaturi v realnem času z Arduino UNO in kartico SD - Simulacija zapisovalnika podatkov DHT11 v Proteusu: 5 korakov
Kako narediti snemalnik podatkov o vlažnosti in temperaturi v realnem času z Arduino UNO in kartico SD | Simulacija zapisovalnika podatkov DHT11 v Proteusu: Uvod: zdravo, to je Liono Maker, tukaj je povezava YouTube. Z Arduinom ustvarjamo projekt in delamo na vgrajenih sistemih. Data-Logger: Zapisovalnik podatkov (tudi zapisovalnik podatkov ali zapisovalnik podatkov) je elektronska naprava, ki sčasoma beleži podatke z
Ura v realnem času z Arduinom: 3 koraki
Ura v realnem času z Arduinom: V tem projektu bomo izdelali uro s pomočjo modula Arduino in RTC. Kot vemo, Arduino ne more prikazati dejanskega časa, zato bomo z modulom RTC prikazali pravi čas na LCD -prikazovalniku. Pozorno preberite vse korake, ki vam bodo pomagali
Uporaba modulov ure v realnem času DS1307 in DS3231 z Arduinom: 3 koraki
Uporaba modulov ure v realnem času DS1307 in DS3231 z Arduinom: Nenehno prejemamo zahteve o uporabi modulov ure v realnem času DS1307 in DS3231 z Arduinom iz različnih virov-zato je to prvi od dveh delov, kako jih uporabljati. Za to vadnico Arduino imamo na voljo dva modula ure v realnem času
DS1307 Ura v realnem času RTC z Arduinom: 4 koraki
DS1307 Ura v realnem času RTC z Arduinom: V tem vodiču bomo spoznali uro v realnem času (RTC) in kako Arduino & Ura za realni čas IC DS1307 sta skupaj sestavljena kot časovna naprava. Ura realnega časa (RTC) se uporablja za spremljanje časa in vzdrževanje koledarja