Cuprins:

Jurnal de date MPU-6050 / A0 în timp real cu Arduino și Android: 7 pași (cu imagini)
Jurnal de date MPU-6050 / A0 în timp real cu Arduino și Android: 7 pași (cu imagini)

Video: Jurnal de date MPU-6050 / A0 în timp real cu Arduino și Android: 7 pași (cu imagini)

Video: Jurnal de date MPU-6050 / A0 în timp real cu Arduino și Android: 7 pași (cu imagini)
Video: CANSAT PCB LAYOUT PART 1(NO EDIT) 2024, Noiembrie
Anonim
Înregistrare de date MPU-6050 / A0 în timp real cu Arduino și Android
Înregistrare de date MPU-6050 / A0 în timp real cu Arduino și Android

Am fost interesat să folosesc Arduino pentru învățarea automată. Ca prim pas, vreau să construiesc un afișaj de date și un logger în timp real (sau destul de aproape de el) cu un dispozitiv Android. Vreau să captez date accelerometru de pe MPU-6050, așa că am proiectat construcția pentru a utiliza HC-05 la 115200 baud. Cu această configurație, 4 canale de date pot fi transmise la 250 de eșantioane pe secundă.

Construirea are câțiva pași:

  • Construiți scutul sau panoul de măsurare
  • Programați Arduino
  • Încărcați aplicația Android din Google Play sau filialați GitHub și compilați-o singur
  • Conectați MPU-6050 la ceva interesant care vibrează (am folosit o mașină R / C)
  • Utilizați dispozitivul Android pentru a vă conecta la Arduino
  • Complotați datele, salvați dacă sunteți interesat
  • Importați în Python (sau altă platformă) pentru utilizare ulterioară

Să începem!

Pasul 1: Construiți scutul / panoul de măsurare

Construiți scutul / panoul de măsurare
Construiți scutul / panoul de măsurare
Construiți scutul / panoul de măsurare
Construiți scutul / panoul de măsurare

Aceasta este schema de cablare pentru Arduino, HC-05 și MPU-6050. În plus față de MPU-6050, am intrarea analogică A0 conectată la un senzor de lumină pentru a arăta că ADC funcționează. Orice semnal de 0-5 volți ar putea fi introdus în A0 ADC. Acestea sunt componentele pe care le-am folosit pentru construire:

  • Arduino Uno
  • HC-05 (HC-06 ar trebui să funcționeze și el, dar versiunea mea a fost cu HC-05)
  • MPU-6050
  • Fotorezistor Sparkfun
  • Rezistor de 10kOhm (maro-negru-portocaliu)

Majoritatea modulelor Bluetooth HC-05 sunt implicite la 9600 baud. Pentru ca datele să fie transmise cu succes, va trebui să le reprogramați pentru o rată de 115200 baud. Există o comandă HC-05 / HC-06 AT instructabilă, care explică cum să o faceți.

Pasul 2: Programați Arduino

Programați Arduino
Programați Arduino
Programează Arduino
Programează Arduino

Am folosit versiunea Arduino IDE 1.6.7 pentru a programa Arduino. Codul poate fi descărcat de pe linkurile din acest pas sau din repo GitHub. Am inclus trei versiuni: Firmware125.ino este versiunea de 125 hertz, Firmware250.ino este versiunea de 250 hertz și Firmware500.ino este versiunea de 500 hertz. Pentru ca Arduino să circule la 500 hertz, A0 ADC nu este colectat.

Firmware-ul include un ceas pe pinul 9 pe care l-am folosit pentru a verifica sincronizarea. Urmarea arată că durata ciclului este de 4 ms (echivalent cu 1/250 hertz). Am constatat că, dacă există probleme de legătură serială, sincronizarea nu va fi uniformă.

Codul Arduino folosește mascare de biți pentru a adăuga un număr de canal la fiecare pachet, deoarece eșantioanele cad uneori prin Bluetooth. Folosesc cei trei biți cei mai semnificativi pentru a stoca un număr de canal. Pentru numerele întregi semnate, cel mai semnificativ bit (MSB) este rezervat semnului. Din moment ce vreau să folosesc MSB pentru adresa mea, mai degrabă decât semnul întregului, trebuie să convertesc toate valorile accelerometrului semnat în numere întregi nesemnate. Fac acest lucru adăugând 32768 la fiecare valoare (numărul de acceleratoare MPU accelerometru ADC sunt +32768 la -32768) și aruncate ca numere întregi nesemnate:

(nesemnat int) ((lung) iAccelData + 32767);

Numărul canalului este același pentru fiecare accelerometru și portul A0, astfel încât un pachet scăzut să poată fi detectat dacă numerele canalului sunt defecte. Pentru pachetele care vin de la Bluetooth pe Arduino, modelul binar este (semnele se schimbă în funcție de bit):

(xacc 3 biți de adresă = 0x00, 13 biți nesemnați) (yacc 3 biți de adresă = 0x01, 13 biți nesemnați) (zacc 3 biți de adresă = 0x02, 13 biți nesemnați) (3 biți de adresă = 0x03, iadc13bit nesemnat)

(xacc 3 biți de adresă = 0x00, 13 biți nesemnați) (yacc 3 biți de adresă = 0x01, 13 biți nesemnați) (zacc 3 biți de adresă = 0x02, 13 biți nesemnați) (3 biți de adresă = 0x03, iadc13bit nesemnați) (xacc 3 biți de adresă = 0x00, 13 biți nesemnați) (yacc 3 biți de adresă = 0x01, 13 biți nesemnați) (zacc 3 biți de adresă = 0x02, 13 biți nesemnați) (3 biți de adresă = 0x03, iadc13bit nesemnați) …

Dacă utilizați altceva decât aplicația Accel Plot pentru Android pentru a citi datele Bluetooth, iată pașii pentru extragerea adresei (folosesc numele variabilelor din fișierul Accel Plot Bluetooth.java din repo GitHub):

- Citiți în cele 16 int nesemnate

- Extrageți octetul mare și salvați-l în btHigh.

- Extrageți octetul mic și salvați-l în btLow.

- Recuperați adresa de la btHigh folosind: (btHigh >> 5) & 0x07. Această afirmație deplasează btHigh 5 biți spre dreapta deplasând cei trei biți de adresă la cei mai mici trei registre. Semnul & este un AND logic care forțează biții 4 și mai mari să fie zero și ultimii trei biți să se potrivească cu biții de adresă. Rezultatul acestei declarații este adresa dvs.

Nu trebuie să vă faceți griji cu privire la extragerea adresei dacă utilizați Accel Plot.

Pasul 3: Încărcați aplicația Android din Google Play sau filializați GitHub

Încărcați aplicația Android din Google Play sau filializați GitHub
Încărcați aplicația Android din Google Play sau filializați GitHub

Aveți câteva opțiuni pentru încărcarea aplicației Android pe dispozitivul dvs. Dacă doriți să evitați codarea, puteți căuta „Accel Plot”, iar aplicația ar trebui să apară în magazinul Google Play. Urmați instrucțiunile magazinului pentru instalare.

Dorința mea cu acest Instructable este cu adevărat să îi încurajez pe alții să construiască proiecte, așa că am publicat și codul într-o repo GitHub. Ar trebui să puteți ramifica acest lucru, să îl construiți și să-l modificați după cum doriți. Am publicat codul sub licența MIT, așa că distrează-te!

Pasul 4: Conectați-vă la Arduino la ceva interesant (am folosit o mașină R / C)

Conectați-vă la Arduino la ceva interesant (am folosit o mașină R / C)
Conectați-vă la Arduino la ceva interesant (am folosit o mașină R / C)

Vreau să folosesc în cele din urmă dispozitivul pentru detectarea suprafeței drumului, așa că am crezut că o mașină mică controlată de la distanță (R / C) ar fi potrivită. Cred că ajută la pasul următor dacă accelerațiile pot fi pe ceva care se mișcă sau vibrează.

Pasul 5: Utilizați dispozitivul Android pentru a vă conecta la Arduino

Utilizați dispozitivul Android pentru a vă conecta la Arduino
Utilizați dispozitivul Android pentru a vă conecta la Arduino
Utilizați dispozitivul Android pentru a vă conecta la Arduino
Utilizați dispozitivul Android pentru a vă conecta la Arduino
Utilizați dispozitivul Android pentru a vă conecta la Arduino
Utilizați dispozitivul Android pentru a vă conecta la Arduino

Dacă nu ați făcut deja acest lucru, va trebui mai întâi să împerecheați HC-05 la dispozitivul dvs. Android. Cred că pe majoritatea dispozitivelor puteți face acest lucru accesând setările. Pinul implicit pentru majoritatea dispozitivelor HC-05 va fi 1234 sau 1111.

Deschideți aplicația AccelPlot pe dispozitivul Android. Când aplicația se deschide și înainte de a vă conecta la HC-05, puteți modifica rata de eșantionare (aceasta este setată în codul Arduino), scalele accelerometrului (setate și în codul Arduino) și numărul de eșantioane de salvat.

Odată realizate aceste setări, faceți clic pe butonul „Conectare”. Ar trebui să afișeze dispozitivele Bluetooth și dispozitivul dvs. ar trebui să fie listat. Selectați-l și odată ce codul stabilește conexiunea, veți vedea un toast „Conectat”.

Folosiți butonul săgeată înapoi pentru a reveni la Accel Plot. Atingeți butonul „Start Stream” pentru a afișa date de pe dispozitivul HC-05. De asemenea, ar trebui să aveți butoane disponibile pentru a salva datele sau pentru a reda conținutul modulat în frecvență prin mufa audio.

Pasul 6: Achiziționați și trasați datele

Image
Image
Importați în Python (sau altă platformă) pentru utilizare ulterioară
Importați în Python (sau altă platformă) pentru utilizare ulterioară

Butonul „Start Stream” ar trebui să fie activat. Atingeți-l pentru a începe transmiterea în flux a datelor pe ecran.

Butonul „Salvați datele” va fi, de asemenea, activat, atingeți-l pentru a stoca datele.

Accel Plot include, de asemenea, o opțiune pentru a emite un semnal modulat pe canalele audio. Cele 2 canale din aplicația Accel Plot se referă la canalele stânga și dreapta ale mufei de ieșire audio de pe dispozitivul Android. Acest lucru este util dacă doriți să aduceți datele MPU-6050 într-un sistem separat de înregistrare a datelor, cum ar fi National Instruments.

Videoclipul arată un exemplu de sistem care colectează date pe o mașină R / C.

Pasul 7: Importați în Python (sau altă platformă) pentru utilizare ulterioară

Importați în Python (sau altă platformă) pentru utilizare ulterioară
Importați în Python (sau altă platformă) pentru utilizare ulterioară

Fișierele sunt salvate pe dispozitivul Android. Fișierele vor fi stocate în directorul „AccelPlot” pentru Android API 18 și mai vechi. Codul plasează fișierele.dat în folderul „\ Tablet / Documents / AccelPlot” pentru API 19 (KitKat 4.4) și versiuni ulterioare. Am avut probleme cu unele dispozitive Android care afișează fișierele atunci când sunt conectate prin USB. În unele cazuri, a trebuit să repornesc dispozitivul Android pentru a le face să apară. Nu sunt sigur de ce este acest lucru, dar ar trebui să existe patru fișiere, câte unul pentru fiecare canal. Acestea pot fi copiate într-un director local pentru lucrări suplimentare.

Am folosit Anaconda / Python 2.7 pentru a deschide fișierele și a afișa datele. Fișierul „ExploratoryAnalysis.ipynb” are fișierul Notebook IPython care va deschide toate fișierele de date și va grafica datele eșantionului. Fișierele eșantion sunt incluse în repo GitHub. Datele sunt salvate ca plutitoare big-endian de 4 octeți ('> f'), astfel încât orice program de analiză ar trebui să le poată deschide.

Am inclus, de asemenea, un fișier mai simplu numit "ReadDataFiles.ipynb" care arată cum să citiți într-un singur fișier după nume.

Recomandat: