Sisukord:

Reaalajas MPU-6050/A0 andmete logimine Arduino ja Androidiga: 7 sammu (koos piltidega)
Reaalajas MPU-6050/A0 andmete logimine Arduino ja Androidiga: 7 sammu (koos piltidega)

Video: Reaalajas MPU-6050/A0 andmete logimine Arduino ja Androidiga: 7 sammu (koos piltidega)

Video: Reaalajas MPU-6050/A0 andmete logimine Arduino ja Androidiga: 7 sammu (koos piltidega)
Video: Reaalajas kauplemine + prognoosid (Forex + Krüpto) 2024, November
Anonim
Reaalajas MPU-6050/A0 andmete logimine Arduino ja Androidiga
Reaalajas MPU-6050/A0 andmete logimine Arduino ja Androidiga

Olen olnud huvitatud Arduino kasutamisest masinõppes. Esimese sammuna soovin Android -seadmega ehitada reaalajas (või sellele üsna lähedal) andmete kuva ja logija. Soovin kiirendusmõõturi andmeid MPU-6050-st jäädvustada, nii et kavandasin konstruktsiooni HC-05 kasutamiseks 115200 baudiga. Selle konfiguratsiooniga saab edastada 4 andmekanalit 250 proovi sekundis.

Ehitamine koosneb mitmest etapist:

  • Ehitage kilp või leivalaud
  • Programmeerige Arduino
  • Laadige Androidi rakendus Google Playst või haru GitHub ja kompileerige see ise
  • Ühendage MPU-6050 millegi huvitavaga, mis vibreerib (kasutasin R/C autot)
  • Kasutage Arduinoga ühenduse loomiseks Android -seadet
  • Joonistage andmed, huvi korral salvestage
  • Importige Pythonisse (või muule platvormile) edasiseks kasutamiseks

Alustame!

Samm: ehitage kilp/leivalaud

Ehitage kilp/leivalaud
Ehitage kilp/leivalaud
Ehitage kilp/leivalaud
Ehitage kilp/leivalaud

See on Arduino, HC-05 ja MPU-6050 ühendusskeem. Lisaks MPU-6050-le on mul analoogsisend A0 ühendatud valgusanduriga, et näidata, et ADC töötab. A0 ADC-sse võib tuua mis tahes 0–5-voldise signaali. Neid komponente kasutasin ehitamiseks:

  • Arduino Uno
  • HC-05 (ka HC-06 peaks töötama, kuid minu versioon oli koos HC-05-ga)
  • MPU-6050
  • Sparkfuni fototakisti
  • 10 kOhm takisti (pruun-must-oranž)

Enamik HC-05 Bluetooth-mooduleid on vaikimisi 9600 baud. Andmete edukaks edastamiseks peate need ümber programmeerima 115200 baudikiiruse jaoks. Seal on hea HC-05/HC-06 AT Command Instructable, mis selgitab, kuidas seda teha.

Samm: programmeerige Arduino

Programmeerige Arduino
Programmeerige Arduino
Programmeerige Arduino
Programmeerige Arduino

Arduino programmeerimiseks kasutasin Arduino IDE versiooni 1.6.7. Koodi saab alla laadida selle sammu linkidelt või GitHubi repost. Olen lisanud kolm versiooni: Firmware125.ino on 125 hertsi versioon, Firmware250.ino on 250 hertsi versioon ja Firmware500.ino on 500 hertsi versioon. Selleks, et Arduino saaks töötada 500 hertsiga, ei koguta A0 ADC -d.

Püsivara sisaldab kella 9 pin 9. mida kasutasin ajastuse kontrollimiseks. Jälg näitab, et tsükli aeg on 4 ms (vastab 1/250 hertsile). Olen avastanud, et jadaühenduse probleemide korral ei ole ajastus ühtlane.

Arduino kood kasutab bittmaskeerimist, et lisada igale paketile kanalinumber, kuna proovid langevad mõnikord üle Bluetoothi. Ma kasutan kanalinumbri salvestamiseks kolme kõige olulisemat bitti. Allkirjastatud täisarvude jaoks on märgi jaoks reserveeritud kõige olulisem bit (MSB). Kuna soovin kasutada aadressiks MSB -d, mitte täisarvu märki, pean teisendama kõik allkirjastatud kiirendusmõõturi väärtused allkirjata täisarvudeks. Teen seda, lisades igale väärtusele 32768 (MPU kiirendusmõõturi ADC -arv on +32768 kuni -32768) ja esitan allkirjata täisarvudena:

(allkirjastamata int) ((pikk) iAccelData+32767);

Kanalite arv on iga kiirendusmõõturi ja A0 -pordi jaoks sama, nii et kadunud paketti saab tuvastada, kui kanalite numbrid on korrast ära. Arduino Bluetoothi kaudu saabuvate pakettide puhul on binaarne muster (märgid on nihkega nihkes):

(xacc 3 aadressibitti = 0x00, 13 -bitine allkirjastamata) (yacc 3 aadressibitti = 0x01, 13 -bitine allkirjastamata) (zacc 3 aadressibitti = 0x02, 13 -bitine allkirjata) (3 aadressibitti = 0x03, iadc13bit allkirjastamata)

(xacc 3 aadressibitti = 0x00, 13 -bitine allkirjastamata) (yacc 3 aadressibitti = 0x01, 13 -bitine allkirjastamata) (zacc 3 aadressibitti = 0x02, 13 -bitine allkirjata) (3 aadressibitti = 0x03, iadc13bit allkirjastamata) (xacc 3 aadressibitti = 0x00, 13 -bitine allkirjastamata) (yacc 3 aadressibitti = 0x01, 13 -bitine allkirjastamata) (zacc 3 aadressibitti = 0x02, 13 -bitine allkirjastamata) (3 aadressibitti = 0x03, iadc13bit allkirjastamata)…

Kui kasutate Bluetoothi andmete lugemiseks midagi muud kui Androidi rakendust Accel Plot, siis toimige järgmiselt aadressi ekstraheerimiseks (kasutan GitHubi repost Accel Plot Bluetooth.java faili muutujate nimesid):

- Lugege 16 allkirjastamata int

- Eemaldage kõrge bait ja salvestage see btHigh.

- Eemaldage madal bait ja salvestage see btLow.

- Hankige aadress btHigh'ist, kasutades: (btHigh >> 5) & 0x07. See avaldus nihutab btHigh 5 bitti paremale, liigutades kolm aadressibitti kolme madalaimasse registrisse. Märk & on loogiline JA, mis sunnib bitid 4 ja kõrgemad olema null ning viimased kolm bitti vastama aadressibittidele. Selle avalduse tulemus on teie aadress.

Kui kasutate Accel Plot'i, ei pea te muretsema aadresside eraldamise pärast.

Samm: laadige Androidi rakendus Google Playst või haru GitHubi kaudu

Laadige Androidi rakendus Google Playst või harutage GitHubi
Laadige Androidi rakendus Google Playst või harutage GitHubi

Android -rakenduse seadmesse laadimiseks on teil paar valikut. Kui soovite vältida kodeerimist, võite otsida "Accel Plot" ja rakendus peaks Google Play poes ilmuma. Paigaldamiseks järgige poe juhiseid.

Minu soov selle Instructable'i abil on tõesti julgustada teisi projekte ehitama, nii et olen koodi avaldanud ka GitHubi repos. Teil peaks olema võimalus seda hargneda, ehitada ja oma äranägemise järgi muuta. Avaldasin koodi MIT -litsentsi alusel, nii et nautige!

Samm: ühendage Arduinoga midagi huvitavat (kasutasin R/C autot)

Ühendage Arduinoga midagi huvitavat (kasutasin R/C autot)
Ühendage Arduinoga midagi huvitavat (kasutasin R/C autot)

Ma tahan seadet lõpuks teepinna tuvastamiseks kasutada, nii et arvasin, et väike kaugjuhtimisega (R/C) auto oleks sobiv. Ma arvan, et järgmises etapis aitab see, kui tähised võivad olla millegi peal, mis liigutab või vibreerib.

Samm: kasutage Arduinoga ühenduse loomiseks Android -seadet

Kasutage Arduinoga ühenduse loomiseks Android -seadet
Kasutage Arduinoga ühenduse loomiseks Android -seadet
Kasutage Arduinoga ühenduse loomiseks Android -seadet
Kasutage Arduinoga ühenduse loomiseks Android -seadet
Kasutage Arduinoga ühenduse loomiseks Android -seadet
Kasutage Arduinoga ühenduse loomiseks Android -seadet

Kui te pole seda veel teinud, peate esmalt siduma HC-05 oma Android-seadmega. Usun, et enamikus seadmetes saate seda teha seadete kaudu. Enamiku HC-05 seadmete vaiketihvt on 1234 või 1111.

Avage Android -seadmes rakendus AccelPlot. Kui rakendus avaneb ja enne HC-05-ga ühenduse loomist saate muuta diskreetimissagedust (see on määratud Arduino koodis), kiirendusmõõturi skaalasid (samuti Arduino koodis) ja salvestatavate proovide arvu.

Pärast nende sätete tegemist klõpsake nuppu "Ühenda". See peaks avama Bluetooth -seadmed ja teie seade peaks olema loendis. Valige see ja kui kood loob ühenduse, näete hüpikakna "Ühendatud".

Kasutage Accel Plot'i naasmiseks tagasinoolnuppu. Puudutage nuppu "Start Stream", et kuvada andmed HC-05 seadmest. Andmete salvestamiseks või sageduspõhise moduleeritud sisu esitamiseks helipistiku kaudu peaksite olema saadaval ka nupud.

6. samm: andmete hankimine ja joonistamine

Image
Image
Importige Pythoni (või muule platvormile) edasiseks kasutamiseks
Importige Pythoni (või muule platvormile) edasiseks kasutamiseks

Nupp "Start Stream" peaks olema lubatud. Puudutage seda, et alustada andmete voogesitust ekraanile.

Samuti on lubatud nupp "Salvesta andmed", puudutage seda andmete salvestamiseks.

Accel Plot sisaldab ka võimalust väljastada helikanalitele moduleeritud signaali. Rakenduse Accel Plot kaks kanalit viitavad Android -seadme heliväljundi pesa vasakule ja paremale kanalile. See on kasulik, kui soovite tuua MPU-6050 andmed eraldi andmesalvestussüsteemi, nagu National Instruments.

Videol on näide süsteemist, mis kogub andmeid R/C auto kohta.

Samm: importige Pythonisse (või muule platvormile) edasiseks kasutamiseks

Importige Pythoni (või muule platvormile) edasiseks kasutamiseks
Importige Pythoni (või muule platvormile) edasiseks kasutamiseks

Failid salvestatakse Android -seadmesse. Failid salvestatakse Android API 18 ja vanemate versioonide kataloogi AccelPlot. Kood paigutab.dat -failid API 19 (KitKat 4.4) ja uuemate versioonide kausta "\ Tablet / Documents / AccelPlot". Mul on olnud probleeme mõne Android -seadmega, mis kuvab faile USB -ühenduse kaudu. Mõnel juhul olen pidanud Android -seadme taaskäivitama, et neid kuvada. Pole kindel, miks see nii on, kuid peaks olema neli faili, üks iga kanali jaoks. Neid saab lisatööks kopeerida kohalikku kataloogi.

Failide avamiseks ja andmete kuvamiseks kasutasin Anaconda/Python 2.7. Failis "ExploratoryAnalysis.ipynb" on IPython Notebook fail, mis avab kõik andmefailid ja joonistab prooviandmed. Näidisfailid on GitHubi repos. Andmed salvestatakse suure endiaani 4-baidise ujukina ('> f'), nii et iga analüüsiprogramm peaks neid saama avada.

Olen lisanud ka lihtsama faili nimega "ReadDataFiles.ipynb", mis näitab, kuidas ühest failist nime järgi lugeda.

Soovitan: