Orodha ya maudhui:

Wakati halisi wa MPU-6050 / A0 Kuingia kwa Takwimu na Arduino na Android: Hatua 7 (na Picha)
Wakati halisi wa MPU-6050 / A0 Kuingia kwa Takwimu na Arduino na Android: Hatua 7 (na Picha)

Video: Wakati halisi wa MPU-6050 / A0 Kuingia kwa Takwimu na Arduino na Android: Hatua 7 (na Picha)

Video: Wakati halisi wa MPU-6050 / A0 Kuingia kwa Takwimu na Arduino na Android: Hatua 7 (na Picha)
Video: Как использовать акселерометр и гироскоп MPU-6050 с кодом Arduino 2024, Novemba
Anonim
Wakati halisi wa MPU-6050 / A0 Kuingia kwa Takwimu na Arduino na Android
Wakati halisi wa MPU-6050 / A0 Kuingia kwa Takwimu na Arduino na Android

Nimekuwa na hamu ya kutumia Arduino kwa ujifunzaji wa mashine. Kama hatua ya kwanza, ninataka kujenga wakati halisi (au karibu nayo) onyesho la data na kumbukumbu kwenye kifaa cha Android. Ninataka kunasa data ya kasi kutoka kwa MPU-6050 kwa hivyo nilibuni kujenga ili kutumia HC-05 kwa baud ya 115200. Kwa usanidi huu njia 4 za data zinaweza kupitishwa kwa sampuli 250 kwa sekunde.

Ujenzi una hatua chache:

  • Jenga ngao au ubao wa mkate
  • Mpango wa Arduino
  • Pakia programu ya Android kutoka Google Play au tawi la GitHub na ujikusanye mwenyewe
  • Unganisha MPU-6050 na kitu cha kupendeza kinachotetemeka (nilitumia gari la R / C)
  • Tumia kifaa cha Android kuungana na Arduino
  • Panga data, ila ikiwa una nia
  • Ingiza kwenye Python (au jukwaa lingine) kwa matumizi zaidi

Tuanze!

Hatua ya 1: Jenga Ngao / ubao wa mkate

Jenga Ngao / ubao wa mkate
Jenga Ngao / ubao wa mkate
Jenga Ngao / ubao wa mkate
Jenga Ngao / ubao wa mkate

Huu ni mchoro wa wiring wa Arduino, HC-05, na MPU-6050. Mbali na MPU-6050 nina pembejeo ya Analog A0 iliyounganishwa kwa sensa ya mwanga kuonyesha kuwa ADC inafanya kazi. Ishara yoyote ya voliti 0-5 inaweza kuletwa ndani ya A0 ADC. Hivi ndivyo vitu nilivyovitumia kujenga:

  • Arduino Uno
  • HC-05 (HC-06 inapaswa kufanya kazi pia, lakini ujenzi wangu ulikuwa na HC-05)
  • MPU-6050
  • Sparkfun muuzaji wa picha
  • Kinzani ya 10k (kahawia-nyeusi-machungwa)

Moduli nyingi za HC-05 za Bluetooth ni chaguo-msingi kwa baud 9600. Ili data ipitishe kwa mafanikio utahitaji kuiweka upya kwa kiwango cha baud 115200. Kuna amri nzuri ya HC-05 / HC-06 AT inayoweza kuelezea jinsi ya kuifanya.

Hatua ya 2: Panga Arduino

Mpango wa Arduino
Mpango wa Arduino
Mpango wa Arduino
Mpango wa Arduino

Nilitumia Arduino IDE kutolewa 1.6.7 kupanga programu ya Arduino. Nambari inaweza kupakuliwa kutoka kwa viungo kwenye hatua hii au kutoka kwa repo ya GitHub. Nimejumuisha matoleo matatu: Firmware125.ino ni toleo la hertz 125, Firmware250.ino ni toleo la hertz 250, na Firmware500.ino ni toleo 500 la hertz. Ili kupata Arduino kuzunguka kwa hertz 500, A0 ADC haikusanywa.

Firmware ni pamoja na saa kutoka kwa Pin 9 ambayo nilikuwa nikitazama wakati. Ufuatiliaji unaonyesha wakati wa mzunguko ni 4 ms (sawa na 1/250 hertz). Nimeona kuwa ikiwa kuna shida za kiunga cha serial muda hautakuwa sare.

Nambari ya Arduino hutumia kujificha kidogo kuongeza nambari ya kituo kwa kila pakiti kwa sababu wakati mwingine sampuli huangusha Bluetooth. Ninatumia bits tatu muhimu zaidi kuhifadhi nambari ya kituo. Kwa nambari kamili zilizosainiwa kidogo muhimu zaidi (MSB) imehifadhiwa kwa ishara. Kwa kuwa ninataka kutumia MSB kwa anwani yangu, badala ya ishara ya nambari kamili, lazima nibadilishe maadili yote ya kasi ya saini kuwa nambari ambazo hazijasainiwa. Nafanya hivi kwa kuongeza 32768 kwa kila thamani (hesabu za MPC accelerometer ADC ni +32768 hadi -32768) na kutupwa kama nambari zisizosainiwa:

(unsigned int) ((ndefu) iAccelData + 32767);

Nambari ya kituo ni sawa kwa kila kipima kasi na bandari ya A0 ili pakiti iliyoangushwa inaweza kugunduliwa ikiwa nambari za kituo haziko sawa. Kwa pakiti zinazotoka kwa Bluetooth kwenye Arduino, muundo wa binary ni (ishara zina busara kidogo):

(xacc 3 bits bits = 0x00, 13bit unsigned) (yacc 3 bits bits = 0x01, 13bit unsigned) (zacc 3 anuani bits = 0x02, 13bit unsigned) (3 anwani bits = 0x03, iadc13bit haijasainiwa)

(xacc 3 bits bits = 0x00, 13bit unsigned) (yacc 3 bits bits = 0x01, 13bit unsigned) (zacc 3 anuani bits = 0x02, 13bit unsigned) (3 anwani bits = 0x03, iadc13bit haijasainiwa), 13bit haijasainiwa) (yacc 3 bits bits = 0x01, 13bit unsigned) (zacc 3 anwani bits = 0x02, 13bit unsigned) (3 anwani bits = 0x03, iadc13bit haijasainiwa)…

Ikiwa unatumia kitu kingine isipokuwa programu ya Android ya Accel Plot kusoma data ya Bluetooth, hapa kuna hatua za kuchukua anwani (ninatumia majina anuwai kutoka kwa faili ya Accel Plot Bluetooth.java kutoka repo ya GitHub):

- Soma katika int 16 ambazo hazijasainiwa

- Dondoa baiti ya juu na uihifadhi kwa btHigh.

- Dondoa baiti ya chini na uihifadhi kwa btLow.

- Rudisha anwani kutoka btHigh ukitumia: (btHigh >> 5) & 0x07. Taarifa hii inabadilika & Ishara ni mantiki NA ambayo inalazimisha bits 4 na zaidi kuwa sifuri na bits tatu za mwisho kulingana na bits za anwani. Matokeo ya taarifa hii ni anwani yako.

Haupaswi kuwa na wasiwasi juu ya uchimbaji wa anwani ikiwa unatumia Accel Plot.

Hatua ya 3: Pakia Programu ya Android Kutoka Google Play au Tawi la GitHub

Pakia Programu ya Android Kutoka Google Play au Tawi la GitHub
Pakia Programu ya Android Kutoka Google Play au Tawi la GitHub

Una chaguo kadhaa za kupakia programu ya Android kwenye kifaa chako. Ikiwa unataka kuepuka kuweka alama, unaweza kutafuta "Accel Plot" na programu inapaswa kuja katika duka la Google Play. Fuata maagizo ya duka ya usanikishaji.

Tamaa yangu na hii inayoweza kufundishwa ni kweli kuhamasisha wengine kujenga miradi kwa hivyo pia nimechapisha nambari hiyo katika repo ya GitHub. Unapaswa kuwa na uwezo wa kuweka tawi hili, kuijenga, na kuirekebisha jinsi unavyoona inafaa. Nilichapisha nambari chini ya Leseni ya MIT kwa hivyo furahiya!

Hatua ya 4: Unganisha na Arduino kwa Kitu Cha Kuvutia (Nilitumia R / C Gari)

Unganisha kwa Arduino na Kitu cha Kuvutia (Nilitumia R / C Gari)
Unganisha kwa Arduino na Kitu cha Kuvutia (Nilitumia R / C Gari)

Nataka mwishowe nitumie kifaa kugundua uso wa barabara kwa hivyo nilidhani gari ndogo inayodhibitiwa kijijini (R / C) itakuwa sahihi. Nadhani inasaidia katika hatua inayofuata ikiwa vichocheo vinaweza kuwa kwenye kitu kinachotembea au kutetemeka.

Hatua ya 5: Tumia Kifaa cha Android Kuungana na Arduino

Tumia Kifaa cha Android Kuungana na Arduino
Tumia Kifaa cha Android Kuungana na Arduino
Tumia Kifaa cha Android Kuungana na Arduino
Tumia Kifaa cha Android Kuungana na Arduino
Tumia Kifaa cha Android Kuungana na Arduino
Tumia Kifaa cha Android Kuungana na Arduino

Ikiwa haujafanya hivyo tayari, utahitaji kwanza jozi HC-05 kwenye kifaa chako cha Android. Ninaamini kuwa kwenye vifaa vingi unaweza kufanya hivyo kwa kwenda kwenye mipangilio. Pini chaguo-msingi kwa vifaa vingi vya HC-05 itakuwa 1234 au 1111.

Fungua programu ya AccelPlot kwenye kifaa cha Android. Wakati programu inafunguliwa, na kabla ya kuungana na HC-05, unaweza kubadilisha kiwango cha sampuli (hii imewekwa kwenye nambari ya Arduino), mizani ya accelerometer (pia imewekwa kwenye nambari ya Arduino), na idadi ya sampuli zitakazookolewa.

Mara baada ya mipangilio hii kufanywa bonyeza kitufe cha "Unganisha". Inapaswa kuleta vifaa vya Bluetooth na kifaa chako kinapaswa kuorodheshwa. Chagua na mara tu nambari itaanzisha unganisho utaona toast ya "Imeunganishwa".

Tumia kitufe cha mshale wa nyuma kurudi kwa Accel Plot. Gonga kitufe cha "Anza Mkondo" kuonyesha data kutoka kwa kifaa cha HC-05. Unapaswa pia vifungo kupatikana kuokoa data au kucheza masafa ya moduli kupitia jack ya sauti.

Hatua ya 6: Pata na Panga Takwimu

Image
Image
Ingiza kwenye Python (au Jukwaa lingine) kwa Matumizi zaidi
Ingiza kwenye Python (au Jukwaa lingine) kwa Matumizi zaidi

Kitufe cha "Anza Mkondo" kinapaswa kuwezeshwa. Gonga ili kuanza kutiririsha data kwenye skrini.

Kitufe cha "Hifadhi Takwimu" pia kitawezeshwa, gonga ili kuhifadhi data.

Njama ya Accel pia inajumuisha chaguo la kutoa ishara iliyosimamiwa kwenye vituo vya sauti. Vituo 2 katika programu ya Accel Plot vinataja njia za kushoto na kulia za sauti nje kwenye kifaa cha Android. Hii ni muhimu ikiwa unataka kuleta data ya MPU-6050 kwenye mfumo tofauti wa kukata data, kama Hati za Kitaifa.

Video inaonyesha mfano wa mfumo wa kukusanya data kwenye gari la R / C.

Hatua ya 7: Ingiza kwenye Python (au Jukwaa lingine) kwa Matumizi zaidi

Ingiza kwenye Python (au Jukwaa lingine) kwa Matumizi zaidi
Ingiza kwenye Python (au Jukwaa lingine) kwa Matumizi zaidi

Faili zimehifadhiwa kwenye kifaa cha Android. Faili zitahifadhiwa chini ya saraka ya "AccelPlot" ya Android API 18 na zaidi. Nambari hiyo inaweka faili za.dat kwenye folda ya "\ Ubao / Nyaraka / AccelPlot" ya API 19 (KitKat 4.4) na zaidi. Nimekuwa na shida na vifaa vingine vya Android kuonyesha faili wakati zinaunganishwa kupitia USB. Katika visa vingine nililazimika kuwasha tena kifaa cha Android ili wajitokeze. Sijui kwa nini hii ni, lakini inapaswa kuwa na faili nne, moja kwa kila kituo. Wanaweza kunakiliwa kwa saraka ya eneo kwa kazi ya ziada.

Nilitumia Anaconda / Python 2.7 kufungua faili na kuonyesha data. Faili ya "ExploratoryAnalysis.ipynb" ina faili ya daftari ya IPython ambayo itafungua faili zote za data na kupanga data ya sampuli. Sampuli za faili zinajumuishwa kwenye repit ya GitHub. Takwimu zinahifadhiwa kama bafa kubwa za endian 4 ('> f') kwa hivyo mpango wowote wa uchambuzi unapaswa kuwa wazi.

Nimejumuisha pia faili rahisi inayoitwa "ReadDataFiles.ipynb" ambayo inaonyesha jinsi ya kusoma katika faili moja kwa jina.

Ilipendekeza: