Satura rādītājs:

Reāllaika MPU-6050/A0 datu reģistrēšana, izmantojot Arduino un Android: 7 soļi (ar attēliem)
Reāllaika MPU-6050/A0 datu reģistrēšana, izmantojot Arduino un Android: 7 soļi (ar attēliem)

Video: Reāllaika MPU-6050/A0 datu reģistrēšana, izmantojot Arduino un Android: 7 soļi (ar attēliem)

Video: Reāllaika MPU-6050/A0 datu reģistrēšana, izmantojot Arduino un Android: 7 soļi (ar attēliem)
Video: SIGNIA IX Reāllaika sarunas uzlabošanas tehnoloģijas demonstrācija 2024, Novembris
Anonim
Reāllaika MPU-6050/A0 datu reģistrēšana, izmantojot Arduino un Android
Reāllaika MPU-6050/A0 datu reģistrēšana, izmantojot Arduino un Android

Mani interesēja izmantot Arduino mašīnmācībai. Vispirms es vēlos izveidot reāllaika (vai diezgan tuvu tam) datu displeju un reģistrētāju ar Android ierīci. Es vēlos uzņemt akselerometra datus no MPU-6050, tāpēc es izveidoju konstrukciju, lai izmantotu HC-05 ar 115200 bodu. Ar šo konfigurāciju var pārraidīt 4 datu kanālus ar 250 paraugiem sekundē.

Būvēšanai ir daži soļi:

  • Izveidojiet vairogu vai maizes dēli
  • Programmējiet Arduino
  • Ielādējiet Android lietotni no Google Play vai sazarojiet GitHub un apkopojiet to pats
  • Pievienojiet MPU-6050 kaut kam interesantam, kas vibrē (es izmantoju R/C automašīnu)
  • Lai izveidotu savienojumu ar Arduino, izmantojiet Android ierīci
  • Uzzīmējiet datus, saglabājiet, ja interesē
  • Importējiet Python (vai citā platformā) turpmākai lietošanai

Sāksim!

1. darbība: izveidojiet vairogu/maizes dēli

Izveidojiet vairogu/maizes dēli
Izveidojiet vairogu/maizes dēli
Izveidojiet vairogu/maizes dēli
Izveidojiet vairogu/maizes dēli

Šī ir Arduino, HC-05 un MPU-6050 elektroinstalācijas shēma. Papildus MPU-6050 man ir analogā ieeja A0, kas savienota ar gaismas sensoru, lai parādītu, ka ADC darbojas. A0 ADC var ievadīt jebkuru 0–5 voltu signālu. Šīs ir sastāvdaļas, kuras es izmantoju būvei:

  • Arduino Uno
  • HC-05 (arī HC-06 vajadzētu darboties, bet mana konstrukcija bija ar HC-05)
  • MPU-6050
  • Sparkfun fotorezistors
  • 10 kOhm rezistors (brūni melni oranžs)

Lielākā daļa HC-05 Bluetooth moduļu noklusējuma ir 9600 baudas. Lai dati tiktu veiksmīgi pārsūtīti, jums tie jāpārprogrammē, lai iegūtu 115200 batu pārraides ātrumu. Ir labs HC-05/HC-06 AT Commander Instructable, kas izskaidro, kā to izdarīt.

2. solis: ieprogrammējiet Arduino

Programmējiet Arduino
Programmējiet Arduino
Programmējiet Arduino
Programmējiet Arduino

Arduino programmēšanai es izmantoju Arduino IDE versiju 1.6.7. Kodu var lejupielādēt no šajā darbībā esošajām saitēm vai no GitHub repo. Esmu iekļāvis trīs versijas: Firmware125.ino ir 125 hercu versija, Firmware250.ino ir 250 hercu versija, un Firmware500.ino ir 500 hercu versija. Lai Arduino darbotos ar 500 hercu ciklu, A0 ADC netiek apkopots.

Programmaparatūra ietver pulksteni 9, kas tika izmantots, lai pārbaudītu laiku. Izsekojums parāda, ka cikla laiks ir 4 ms (ekvivalents 1/250 herciem). Es atklāju, ka, ja rodas sērijveida saites problēmas, laiks nebūs vienāds.

Arduino kods izmanto bitu maskēšanu, lai katrai paketei pievienotu kanāla numuru, jo paraugi dažreiz nokrīt, izmantojot Bluetooth. Kanāla numura saglabāšanai es izmantoju trīs nozīmīgākos bitus. Parakstītiem veseliem skaitļiem nozīmīgākais bits (MSB) ir rezervēts zīmei. Tā kā vēlos savai adresei izmantot MSB, nevis veselu skaitli, tad visas parakstītās akselerometra vērtības ir jāpārvērš veselos skaitļos, kas nav parakstīti. Es to daru, katrai vērtībai pievienojot 32768 (MPU akselerometra ADC skaitļi ir no +32768 līdz -32768) un atveidoju kā neparakstītus veselus skaitļus:

(neparakstīts int) ((garš) iAccelData+32767);

Kanālu numuri katram akselerometram un A0 portam ir vienādi, lai varētu noteikt nokritušu paketi, ja kanālu numuri ir nepareizi. Attiecībā uz paketēm, kas nāk no Bluetooth Arduino, binārais modelis ir (zīmes mainās mazliet):

(xacc 3 adreses biti = 0x00, 13 bitu paraksts) (yacc 3 adreses biti = 0x01, 13 bitu paraksts) (zacc 3 adreses biti = 0x02, 13 bitu paraksts) (3 adreses biti = 0x03, iadc13bit neparakstīts)

(xacc 3 adreses biti = 0x00, 13 bitu paraksts) (yacc 3 adreses biti = 0x01, 13 bitu paraksts) (zacc 3 adrešu biti = 0x02, 13 bitu paraksts) (3 adreses biti = 0x03, iadc13bit neparakstīts) (xacc 3 adreses biti = 0x00, 13 bitu neparakstīts) (yacc 3 adreses biti = 0x01, 13 bitu paraksts) (zacc 3 adreses biti = 0x02, 13 bitu paraksts) (3 adreses biti = 0x03, iadc13bit neparakstīts)…

Ja Bluetooth datu lasīšanai izmantojat kaut ko citu, nevis Android lietotni Accel Plot, veiciet tālāk norādītās darbības, lai iegūtu adresi (es izmantoju mainīgo nosaukumus no Accel Plot Bluetooth.java faila no GitHub repo):

- Izlasiet 16 neparakstītos int

- Izvelciet augsto baitu un saglabājiet to btHigh.

- Izvelciet zemo baitu un saglabājiet to btLow.

- Izgūstiet adresi no btHigh, izmantojot: (btHigh >> 5) & 0x07. Šis paziņojums pārvieto btHigh 5 bitus pa labi, pārvietojot trīs adreses bitus uz zemākajiem trim reģistriem. & Zīme ir loģiska UN, kas liek bitiem 4 un augstāk būt nullei un pēdējiem trim bitiem atbilst adreses bitiem. Šī paziņojuma rezultāts ir jūsu adrese.

Ja izmantojat Accel Plot, jums nav jāuztraucas par adreses iegūšanu.

3. darbība. Ielādējiet Android lietotni no Google Play vai GitHub filiāles

Ielādējiet Android lietotni no Google Play vai filiāles GitHub
Ielādējiet Android lietotni no Google Play vai filiāles GitHub

Jums ir vairākas iespējas, kā ierīcē ielādēt Android lietotni. Ja vēlaties izvairīties no kodēšanas, varat meklēt “Accel Plot”, un lietotnei vajadzētu parādīties Google Play veikalā. Instalēšanai ievērojiet veikala norādījumus.

Mana vēlme ar šo Instructable patiešām ir mudināt citus veidot projektus, tāpēc esmu arī publicējis kodu GitHub repo. Jums vajadzētu būt iespējai to sazarot, veidot un modificēt pēc saviem ieskatiem. Es publicēju kodu saskaņā ar MIT licenci, tāpēc izklaidējieties!

4. solis: izveidojiet savienojumu ar Arduino, lai iegūtu kaut ko interesantu (es izmantoju R/C automašīnu)

Pievienojieties Arduino, lai iegūtu kaut ko interesantu (es izmantoju R/C automašīnu)
Pievienojieties Arduino, lai iegūtu kaut ko interesantu (es izmantoju R/C automašīnu)

Es vēlos galu galā izmantot ierīci ceļa virsmas noteikšanai, tāpēc es domāju, ka būtu piemērota neliela tālvadības automašīna (R/C). Es domāju, ka nākamajā solī palīdz, ja akcenti var būt uz kaut ko, kas kustas vai vibrē.

5. darbība: izmantojiet Android ierīci, lai izveidotu savienojumu ar Arduino

Lai izveidotu savienojumu ar Arduino, izmantojiet Android ierīci
Lai izveidotu savienojumu ar Arduino, izmantojiet Android ierīci
Izmantojiet Android ierīci, lai izveidotu savienojumu ar Arduino
Izmantojiet Android ierīci, lai izveidotu savienojumu ar Arduino
Lai izveidotu savienojumu ar Arduino, izmantojiet Android ierīci
Lai izveidotu savienojumu ar Arduino, izmantojiet Android ierīci

Ja vēl neesat to izdarījis, vispirms HC-05 ir jāsavieno pārī ar Android ierīci. Es uzskatu, ka lielākajā daļā ierīču to var izdarīt, dodoties uz iestatījumiem. Lielākajai daļai HC-05 ierīču noklusējuma tapa būs 1234 vai 1111.

Android ierīcē atveriet lietotni AccelPlot. Kad tiek atvērta lietotne un pirms savienojuma izveides ar HC-05, varat mainīt paraugu ņemšanas ātrumu (tas ir iestatīts Arduino kodā), akselerometra svarus (arī iestatīt Arduino kodā) un saglabājamo paraugu skaitu.

Kad šie iestatījumi ir veikti, noklikšķiniet uz pogas "Savienot". Tam vajadzētu parādīt Bluetooth ierīces, un jūsu ierīce ir jāuzskaita. Atlasiet to un, kad kods izveidos savienojumu, jūs redzēsit uznirstošo uzrakstu “Savienots”.

Izmantojiet atpakaļvērsto bultiņu pogu, lai atgrieztos Accel Plot. Pieskarieties pogai "Sākt straumi", lai parādītu datus no ierīces HC-05. Jums vajadzētu būt pieejamām pogām, lai saglabātu datus vai atskaņotu ar frekvenci modulētu saturu, izmantojot audio ligzdu.

6. darbība: iegūstiet un uzzīmējiet datus

Image
Image
Importējiet Python (vai citā platformā) turpmākai lietošanai
Importējiet Python (vai citā platformā) turpmākai lietošanai

Pogai "Sākt straumi" jābūt iespējotai. Pieskarieties tam, lai sāktu datu straumēšanu ekrānā.

Tiks iespējota arī poga "Saglabāt datus", pieskarieties tai, lai saglabātu datus.

Accel Plot ietver arī iespēju izvadīt modulētu signālu audio kanālos. 2 kanāli lietotnē Accel Plot attiecas uz audio ierīces ligzdas kreiso un labo kanālu Android ierīcē. Tas ir noderīgi, ja vēlaties MPU-6050 datus ieviest atsevišķā datu reģistrēšanas sistēmā, piemēram, National Instruments.

Video ir parādīts piemērs, kā sistēma vāc datus par R/C automašīnu.

7. darbība. Importējiet Python (vai citā platformā) turpmākai lietošanai

Importējiet Python (vai citā platformā) turpmākai lietošanai
Importējiet Python (vai citā platformā) turpmākai lietošanai

Faili tiek saglabāti Android ierīcē. Faili tiks saglabāti direktorijā "AccelPlot" operētājsistēmai Android API 18 un vecākām versijām. Kods ievieto.dat failus mapē "\ Tablet / Documents / AccelPlot" API 19 (KitKat 4.4) un jaunākām versijām. Man ir radušās problēmas ar dažām Android ierīcēm, kas parāda failus, kad tie ir pievienoti, izmantojot USB. Dažos gadījumos man bija jāpārstartē Android ierīce, lai tās tiktu parādītas. Neesat pārliecināts, kāpēc tas tā ir, bet vajadzētu būt četriem failiem, pa vienam katram kanālam. Tos var kopēt vietējā direktorijā papildu darbam.

Lai atvērtu failus un parādītu datus, es izmantoju Anaconda/Python 2.7. Failā "ExploratoryAnalysis.ipynb" ir IPython piezīmju grāmatiņas fails, kas atvērs visus datu failus un uzzīmēs parauga datus. Failu paraugi ir iekļauti GitHub repo. Dati tiek saglabāti kā lieli 4 baitu pludiņi ('> f'), tāpēc jebkurai analīzes programmai vajadzētu tos atvērt.

Esmu iekļāvis arī vienkāršāku failu ar nosaukumu "ReadDataFiles.ipynb", kas parāda, kā lasīt vienā failā pēc nosaukuma.

Ieteicams: