Cuprins:
- Pasul 1: Construiți scutul / panoul de măsurare
- Pasul 2: Programați Arduino
- Pasul 3: Încărcați aplicația Android din Google Play sau filializați GitHub
- Pasul 4: Conectați-vă la Arduino la ceva interesant (am folosit o mașină R / C)
- Pasul 5: Utilizați dispozitivul Android pentru a vă conecta la Arduino
- Pasul 6: Achiziționați și trasați datele
- Pasul 7: Importați în Python (sau altă platformă) pentru utilizare ulterioară
Video: Jurnal de date MPU-6050 / A0 în timp real cu Arduino și Android: 7 pași (cu imagini)
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:45
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
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
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
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)
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
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
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ă
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:
Trasarea graficului în timp real pe Android de la Arduino prin HC-05: 3 pași
Plotarea graficului în timp real pe Android de la Arduino prin HC-05: Hei, iată un tutorial despre cum să trasați un grafic în timp real al valorilor de la un microcontroler, cum ar fi un Arduino, la aplicație. Folosește un modul Bluetooth, cum ar fi HC-05, pentru a acționa ca un dispozitiv de mesagerie pentru a transmite și primi datele între Ar
Cum se face înregistrarea de date în timp real a umidității și temperaturii cu Arduino UNO și cardul SD - Simulare DHT11 Data-logger în Proteus: 5 pași
Cum se face înregistrarea de date în timp real a umidității și temperaturii cu Arduino UNO și cardul SD | Simulare DHT11 Data-logger în Proteus: Introducere: salut, acesta este Liono Maker, aici este linkul YouTube. Realizăm un proiect creativ cu Arduino și lucrăm pe sisteme încorporate. Data-Logger: Un data logger (de asemenea, data-logger sau înregistrator de date) este un dispozitiv electronic care înregistrează date în timp
Robotul SCARA: Aflați despre Foward și cinematica inversă !!! (Plot Twist Aflați cum să creați o interfață în timp real în ARDUINO folosind PROCESAREA !!!!): 5 pași (cu imagini)
Robotul SCARA: Aflați despre Foward și cinematica inversă !!! (Plot Twist Aflați cum să creați o interfață în timp real în ARDUINO folosind PROCESAREA !!!!): Un robot SCARA este o mașină foarte populară în lumea industriei. Numele înseamnă atât brațul robotului de asamblare conform cu selecție, fie brațul robot articulat conform cu selecție. Este practic un robot de trei grade de libertate, fiind primele două deplasări
IoT Data Science PiNet pentru date cu ecran inteligent în timp real Viz: 4 pași
IoT Data Science PiNet pentru date cu ecran inteligent în timp real Viz: puteți configura cu ușurință o rețea IoT de afișaje inteligente pentru vizualizarea datelor pentru a vă supraîncărca eforturile de cercetare în știința datelor sau în orice domeniu cantitativ. Puteți apela „push” parcele dvs. către clienți chiar din interiorul
Jurnal de date GPS wireless pentru animale sălbatice: 9 pași (cu imagini)
Înregistrare de date GPS fără fir pentru animale sălbatice: În acest instructiv, vă vom arăta cum să realizați un înregistrator de date GPS bazat pe Arduino, mic și ieftin, cu capacitate wireless! Utilizarea telemetriei pentru a studia mișcarea faunei sălbatice poate fi un instrument foarte important pentru biologi. Vă poate spune unde