Turinys:

Realaus laiko MPU-6050/A0 duomenų registravimas naudojant „Arduino“ir „Android“: 7 žingsniai (su nuotraukomis)
Realaus laiko MPU-6050/A0 duomenų registravimas naudojant „Arduino“ir „Android“: 7 žingsniai (su nuotraukomis)

Video: Realaus laiko MPU-6050/A0 duomenų registravimas naudojant „Arduino“ir „Android“: 7 žingsniai (su nuotraukomis)

Video: Realaus laiko MPU-6050/A0 duomenų registravimas naudojant „Arduino“ir „Android“: 7 žingsniai (su nuotraukomis)
Video: Twinmotion - realaus laiko vizualizavimo sprendimas 2024, Liepa
Anonim
Realaus laiko MPU-6050/A0 duomenų registravimas naudojant „Arduino“ir „Android“
Realaus laiko MPU-6050/A0 duomenų registravimas naudojant „Arduino“ir „Android“

Man buvo įdomu naudoti „Arduino“mašinų mokymuisi. Pirmiausia noriu sukurti realiu laiku (arba gana arti jo) esantį duomenų rodymą ir registratorių su „Android“įrenginiu. Noriu užfiksuoti pagreičio matuoklio duomenis iš MPU-6050, todėl sukūriau konstrukciją, kad galėčiau naudoti HC-05 esant 115200 baudų. Naudojant šią konfigūraciją, galima perduoti 4 duomenų kanalus 250 mėginių per sekundę greičiu.

Konstrukciją sudaro keli žingsniai:

  • Sukurkite skydą arba duonos lentą
  • Programuokite „Arduino“
  • Įkelkite „Android“programą iš „Google Play“arba padalinkite „GitHub“ir sukompiliuokite ją patys
  • Prijunkite MPU-6050 prie kažko įdomaus, kuris vibruoja (aš naudoju R/C automobilį)
  • Norėdami prisijungti prie „Arduino“, naudokite „Android“įrenginį
  • Nubraižykite duomenis, jei norite, išsaugokite
  • Importuokite į „Python“(ar kitą platformą) tolesniam naudojimui

Pradėkime!

1 žingsnis: Sukurkite skydą/duonos lentą

Sukurkite skydą/duonos lentą
Sukurkite skydą/duonos lentą
Sukurkite skydą/duonos lentą
Sukurkite skydą/duonos lentą

Tai yra „Arduino“, HC-05 ir MPU-6050 prijungimo schema. Be MPU-6050, prie šviesos jutiklio prijungtas analoginis įėjimas A0, rodantis, kad ADC veikia. Bet koks 0–5 voltų signalas gali būti įvestas į A0 ADC. Tai yra komponentai, kuriuos naudojau kuriant:

  • Arduino Uno
  • HC-05 (HC-06 taip pat turėtų veikti, bet mano konstrukcija buvo su HC-05)
  • MPU-6050
  • „Sparkfun“fotorezistorius
  • 10 kOhm rezistorius (ruda-juoda-oranžinė)

Dauguma „HC-05“„Bluetooth“modulių pagal numatytuosius nustatymus yra 9600 baudų. Kad duomenys būtų sėkmingai perduodami, turėsite juos perprogramuoti 115200 baudų greičiui. Yra geras HC-05/HC-06 AT Command Instructable, kuris paaiškina, kaip tai padaryti.

2 veiksmas: užprogramuokite „Arduino“

Programuokite „Arduino“
Programuokite „Arduino“
Programuokite „Arduino“
Programuokite „Arduino“

„Arduino“programavimui naudojau „Arduino IDE“leidimą 1.6.7. Kodą galima atsisiųsti iš šio veiksmo nuorodų arba iš „GitHub“repos. Įtraukiau tris versijas: „Firmware125.ino“yra 125 hercų versija, „Firmware250.ino“yra 250 hercų versija, o „Firmware500.ino“- 500 hercų versija. Kad „Arduino“veiktų 500 hercų, A0 ADC nėra renkamas.

Į programinę -aparatinę įrangą įtrauktas laikrodis, esantis 9 kaištyje, kurį naudoju tikrindamas laiką. Pėdsakai rodo, kad ciklo trukmė yra 4 ms (atitinka 1/250 hercų). Radau, kad jei yra serijinio ryšio problemų, laikas nebus vienodas.

„Arduino“kodas naudoja bitų maskavimą, kad prie kiekvieno paketo pridėtų kanalo numerį, nes mėginiai kartais nukrenta per „Bluetooth“. Kanalo numeriui išsaugoti naudoju tris svarbiausius bitus. Pasirašytiems sveikiems skaičiams reikšmingiausias bitas (MSB) yra skirtas ženklui. Kadangi savo adresui noriu naudoti MSB, o ne sveiko skaičiaus ženklą, turiu visas pasirašytas akselerometro reikšmes konvertuoti į nepasirašytus sveikuosius skaičius. Aš tai darau pridėdamas 32768 prie kiekvienos vertės (MPU pagreičio matuoklio ADC skaičius yra nuo +32768 iki -32768) ir pateikiamas kaip nepasirašyti sveikieji skaičiai:

(nepasirašytas int) ((ilgas) „iAccelData“+32767);

Kanalo numeris yra tas pats kiekvienam akselerometrui ir A0 prievadui, kad būtų galima aptikti iškritusį paketą, jei kanalų numeriai yra netinkami. Paketams, gaunamiems iš „Arduino“„Bluetooth“, dvejetainis modelis yra toks (ženklai keičiasi bitų prasme):

(xacc 3 adreso bitai = 0x00, 13 bitų nepasirašyti) (yacc 3 adreso bitai = 0x01, 13 bitų nepasirašyti) (zacc 3 adreso bitai = 0x02, 13 bitų nepasirašyti) (3 adreso bitai = 0x03, iadc13bit be parašo)

(xacc 3 adreso bitai = 0x00, 13 bitų nepasirašyti) (yacc 3 adreso bitai = 0x01, 13 bitų nepasirašyti) (zacc 3 adreso bitai = 0x02, 13 bitų nepasirašyti) (3 adreso bitai = 0x03, iadc13bit nepasirašyti) (xacc 3 adreso bitai = 0x00, 13 bitų nepasirašytas) (yacc 3 adreso bitai = 0x01, 13 bitų nepasirašyti) (zacc 3 adreso bitai = 0x02, 13 bitų nepasirašyti) (3 adreso bitai = 0x03, iadc13bit be parašo)…

Jei „Bluetooth“duomenims skaityti naudojate ne „Android“programą „Accel Plot“, atlikite šiuos veiksmus, kad ištrauktumėte adresą (naudoju kintamųjų pavadinimus iš „Accel Plot Bluetooth.java“failo iš „GitHub“repos):

- Perskaitykite 16 nepasirašytų int

- Ištraukite aukštą baitą ir išsaugokite jį „btHigh“.

- Ištraukite mažą baitą ir išsaugokite jį „btLow“.

- Gaukite adresą iš „btHigh“naudodami: (btHigh >> 5) ir 0x07. Šis teiginys perkelia btHigh 5 bitus į dešinę, perkeliant tris adresų bitus į žemiausius tris registrus. Ženklas & yra logiškas IR, kuris priverčia 4 ir naujesnius bitus būti lygus nuliui, o paskutiniai trys bitai turi atitikti adreso bitus. Šio pareiškimo rezultatas yra jūsų adresas.

Jei naudojate „Accel Plot“, jums nereikia jaudintis dėl adreso ištraukimo.

3 veiksmas: įkelkite „Android“programą iš „Google Play“arba padalinkite „GitHub“

Įkelkite „Android“programą iš „Google Play“arba padalinkite „GitHub“
Įkelkite „Android“programą iš „Google Play“arba padalinkite „GitHub“

Turite keletą pasirinkimų, kaip įkelti „Android“programą į savo įrenginį. Jei norite išvengti kodavimo, galite ieškoti „Accel Plot“ir programa turėtų pasirodyti „Google Play“parduotuvėje. Norėdami įdiegti, vadovaukitės parduotuvės instrukcijomis.

Mano noras su šia „Instructable“tikrai yra paskatinti kitus kurti projektus, todėl aš taip pat paskelbiau kodą „GitHub“atpirkimo parduotuvėje. Turėtumėte sugebėti tai padalinti, sukurti ir modifikuoti, kaip jums atrodo tinkama. Aš paskelbiau kodą pagal MIT licenciją, todėl smagiai!

4 žingsnis: prisijunkite prie „Arduino“prie kažko įdomaus (aš naudoju R/C automobilį)

Prisijunkite prie „Arduino“prie kažko įdomaus (aš naudoju R/C automobilį)
Prisijunkite prie „Arduino“prie kažko įdomaus (aš naudoju R/C automobilį)

Noriu galiausiai naudoti prietaisą kelio dangai aptikti, todėl maniau, kad būtų tinkamas mažas nuotoliniu būdu valdomas (R/C) automobilis. Manau, kad kitame žingsnyje padeda, jei akcentai gali būti ant kažko, kas juda ar vibruoja.

5 veiksmas: naudokite „Android“įrenginį, kad prisijungtumėte prie „Arduino“

Norėdami prisijungti prie „Arduino“, naudokite „Android“įrenginį
Norėdami prisijungti prie „Arduino“, naudokite „Android“įrenginį
Norėdami prisijungti prie „Arduino“, naudokite „Android“įrenginį
Norėdami prisijungti prie „Arduino“, naudokite „Android“įrenginį
Norėdami prisijungti prie „Arduino“, naudokite „Android“įrenginį
Norėdami prisijungti prie „Arduino“, naudokite „Android“įrenginį

Jei to dar nepadarėte, pirmiausia turėsite susieti HC-05 su „Android“įrenginiu. Manau, kad daugelyje įrenginių tai galite padaryti apsilankę nustatymuose. Numatytasis daugumos HC-05 įrenginių kaištis bus 1234 arba 1111.

„Android“įrenginyje atidarykite programą „AccelPlot“. Kai programa atidaroma ir prieš prisijungiant prie HC-05, galite pakeisti mėginių ėmimo dažnį (tai nustatyta „Arduino“kode), akselerometro svarstykles (taip pat nustatytas „Arduino“kode) ir išsaugoti mėginių skaičių.

Atlikus šiuos nustatymus, spustelėkite mygtuką „Prisijungti“. Tai turėtų parodyti „Bluetooth“įrenginius, o jūsų įrenginys turėtų būti įtrauktas į sąrašą. Pasirinkite jį ir, kodui užmezgus ryšį, pasirodys iššokantis „Connected“skrudinta duona.

Norėdami grįžti į „Accel Plot“, naudokite rodyklės atgal mygtuką. Bakstelėkite mygtuką „Pradėti srautą“, kad būtų rodomi duomenys iš HC-05 įrenginio. Taip pat turėtumėte turėti mygtukus, kad išsaugotumėte duomenis arba paleistumėte dažnio moduliuotą turinį per garso lizdą.

6 žingsnis: Įsigykite ir nubraižykite duomenis

Image
Image
Importuokite į „Python“(arba kitą platformą) tolesniam naudojimui
Importuokite į „Python“(arba kitą platformą) tolesniam naudojimui

Turi būti įjungtas mygtukas „Pradėti srautą“. Bakstelėkite jį, kad pradėtumėte srautinį duomenų srautą į ekraną.

Taip pat bus įjungtas mygtukas „Išsaugoti duomenis“, bakstelėkite jį, kad išsaugotumėte duomenis.

„Accel Plot“taip pat yra galimybė išvesti moduliuotą signalą garso kanalais. Du „Accel Plot“programos kanalai nurodo „Android“įrenginio garso išvesties lizdo kairįjį ir dešinįjį kanalus. Tai naudinga, jei norite perkelti MPU-6050 duomenis į atskirą duomenų registravimo sistemą, pvz., „National Instruments“.

Vaizdo įraše parodytas sistemos, renkančios duomenis apie R/C automobilį, pavyzdys.

7 veiksmas: importuokite į „Python“(arba kitą platformą) tolesniam naudojimui

Importuokite į „Python“(arba kitą platformą) tolesniam naudojimui
Importuokite į „Python“(arba kitą platformą) tolesniam naudojimui

Failai išsaugomi „Android“įrenginyje. Failai bus saugomi „AccelPlot“kataloge, skirtame 18 ir senesnės versijos „Android“API. Kodas talpina.dat failus į aplanką „\ Tablet / Documents / AccelPlot“, skirtą API 19 („KitKat 4.4“) ir naujesnėms. Turėjau problemų su kai kuriais „Android“įrenginiais, rodančiais failus prijungus per USB. Kai kuriais atvejais turėjau iš naujo paleisti „Android“įrenginį, kad jie būtų rodomi. Nežinote, kodėl taip yra, bet turėtų būti keturi failai, po vieną kiekvienam kanalui. Jie gali būti nukopijuoti į vietinį katalogą papildomam darbui.

Failams atidaryti ir duomenims rodyti naudojau „Anaconda/Python 2.7“. Faile „ExploratoryAnalysis.ipynb“yra „IPython Notebook“failas, kuris atidarys visus duomenų failus ir sudarys pavyzdinius duomenis. Pavyzdiniai failai yra įtraukti į „GitHub“repo. Duomenys išsaugomi kaip dideli 4 baitų plūdės ('> f'), todėl bet kuri analizės programa turėtų turėti galimybę juos atidaryti.

Taip pat turiu paprastesnį failą, pavadintą „ReadDataFiles.ipynb“, kuris parodo, kaip skaityti viename faile pagal pavadinimą.

Rekomenduojamas: