Taula de continguts:
- Pas 1: creeu l’escut / tauleta de suport
- Pas 2: programa l'Arduino
- Pas 3: carregueu l'aplicació d'Android des de Google Play o des de GitHub
- Pas 4: connecteu-vos a l'Arduino a alguna cosa interessant (he utilitzat un cotxe R / C)
- Pas 5: utilitzeu el dispositiu Android per connectar-vos a l'Arduino
- Pas 6: adquirir i representar les dades
- Pas 7: importeu a Python (o a una altra plataforma) per a un ús posterior
Vídeo: Registre de dades MPU-6050 / A0 en temps real amb Arduino i Android: 7 passos (amb imatges)
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:15
M’ha interessat fer servir l’Arduino per a l’aprenentatge automàtic. Com a primer pas, vull crear una pantalla i registre de dades en temps real (o bastant a prop) amb un dispositiu Android. Vull capturar les dades de l’acceleròmetre de la MPU-6050, així que vaig dissenyar la versió per utilitzar l’HC-05 a 115200 baud. Amb aquesta configuració es poden transmetre 4 canals de dades a 250 mostres per segon.
La compilació té uns quants passos:
- Construeix l'escut o la taula de treball
- Programa l'Arduino
- Carregueu l'aplicació d'Android des de Google Play o ramifiqueu el GitHub i compileu-la vosaltres mateixos
- Connecteu el MPU-6050 a alguna cosa interessant que vibri (he utilitzat un cotxe R / C)
- Utilitzeu el dispositiu Android per connectar-vos a l'Arduino
- Traceu les dades, deseu-les si us interessa
- Importeu-lo a Python (o a una altra plataforma) per a un ús posterior
Comencem!
Pas 1: creeu l’escut / tauleta de suport
Aquest és el diagrama de cablejat de l’Arduino, l’HC-05 i l’MPU-6050. A més de la MPU-6050, tinc l'entrada analògica A0 connectada a un sensor de llum per demostrar que l'ADC funciona. Qualsevol senyal de 0-5 volts es podria introduir a l'A0 ADC. Aquests són els components que he utilitzat per a la construcció:
- Arduino Uno
- HC-05 (L'HC-06 també hauria de funcionar, però la meva versió va ser amb l'HC-05)
- MPU-6050
- Fotoresistor de Sparkfun
- Resistència de 10kOhm (marró-negre-taronja)
La majoria dels mòduls Bluetooth HC-05 són per defecte 9600 baud. Perquè les dades es transmetin amb èxit, haureu de reprogramar-les per a una velocitat de 115200 bauds. Hi ha una bona instrucció HC-05 / HC-06 AT instructable que explica com fer-ho.
Pas 2: programa l'Arduino
He utilitzat la versió 1.6.7 d'Arduino IDE per programar l'Arduino. El codi es pot descarregar des dels enllaços d’aquest pas o des del repositori de GitHub. He inclòs tres versions: Firmware125.ino és la versió de 125 Hz, Firmware250.ino és la versió de 250 Hz i Firmware500.ino és la versió de 500 Hz. Per aconseguir que l'Arduino circuli a 500 Hz, no es recull l'A0 ADC.
El firmware inclou un rellotge al Pin 9 que he utilitzat per comprovar el temps. La traça mostra que el temps del cicle és de 4 ms (equivalent a 1/250 Hz). He comprovat que si hi ha problemes d’enllaços en sèrie, el temps no serà uniforme.
El codi Arduino utilitza l’emmascarament de bits per afegir un número de canal a cada paquet perquè de vegades les mostres passen per Bluetooth. Utilitzo els tres bits més significatius per emmagatzemar un número de canal. Per als enters signats, el bit més significatiu (MSB) està reservat per al signe. Com que vull utilitzar el MSB per a la meva adreça, en lloc del signe de l'enter, he de convertir tots els valors de l'acceleròmetre signat a enters sense signar. Ho faig afegint 32768 a cada valor (els recomptes ADC de l’acceleròmetre MPU són de +32768 a -32768) i es converteixen en enters sense signar:
(sense signar int) ((llarg) iAccelData + 32767);
El número de canal és el mateix per a cada acceleròmetre i el port A0, de manera que es pot detectar un paquet caigut si els números de canal estan fora d’ordre. Per als paquets que provenen del Bluetooth a l'Arduino, el patró binari és (els signes canvien de forma bits):
(xacc 3 bits d'adreça = 0x00, 13 bits sense signar) (yacc 3 bits d'adreça = 0x01, 13 bits sense signar) (zacc 3 bits d'adreça = 0x02, 13 bits sense signar) (3 bits d'adreça = 0x03, iadc13bit sense signar)
(xacc 3 bits d'adreça = 0x00, 13 bits sense signar) (yacc 3 bits d'adreça = 0x01, 13 bits sense signar) (zacc 3 bits d'adreça = 0x02, 13 bits sense signar) (3 bits d'adreça = 0x03, iadc13bit sense signar) (xacc 3 bits d'adreça = 0x00, 13 bits sense signar) (yacc 3 bits d'adreça = 0x01, 13 bits sense signar) (zacc 3 bits d'adreça = 0x02, 13 bits sense signar) (3 bits d'adreça = 0x03, iadc13bit sense signar) …
Si utilitzeu una altra cosa que l’aplicació Accel Plot per a Android per llegir les dades de Bluetooth, aquí teniu els passos per extreure l’adreça (estic fent servir els noms de les variables del fitxer Accel Plot Bluetooth.java del repositori de GitHub):
- Llegiu els 16 int signats
- Extraieu el byte alt i deseu-lo a btHigh.
- Extraieu el byte baix i deseu-lo a btLow.
- Recupereu l'adreça de btHigh mitjançant: (btHigh >> 5) i 0x07. Aquesta afirmació canvia btHigh 5 bits cap a la dreta movent els tres bits d’adreça als tres registres més baixos. El signe & és un AND lògic que obliga a que els bits 4 i superiors siguin zero i els darrers tres bits coincideixin amb els bits d’adreça. El resultat d’aquesta declaració és la vostra adreça.
No us haureu de preocupar per l’extracció d’adreces si utilitzeu Accel Plot.
Pas 3: carregueu l'aplicació d'Android des de Google Play o des de GitHub
Teniu un parell d'opcions per carregar l'aplicació Android al dispositiu. Si voleu evitar la codificació, podeu cercar "Accel Plot" i l'aplicació apareixerà a la botiga Google Play. Seguiu les instruccions de la botiga per a la instal·lació.
El meu desig amb aquest Instructable és realment animar els altres a construir projectes, així que també he publicat el codi en un repositori de GitHub. Hauríeu de poder ramificar-lo, construir-lo i modificar-lo com convingueu. He publicat el codi sota la llicència MIT, així que diverteix-te!
Pas 4: connecteu-vos a l'Arduino a alguna cosa interessant (he utilitzat un cotxe R / C)
Finalment, vull fer servir el dispositiu per a la detecció de la superfície de la carretera, de manera que vaig pensar que seria adequat un petit cotxe de control remot (R / C). Crec que ajuda en el següent pas si els accels poden estar en alguna cosa que es mou o vibra.
Pas 5: utilitzeu el dispositiu Android per connectar-vos a l'Arduino
Si encara no ho heu fet, primer haureu de pair l’HC-05 al vostre dispositiu Android. Crec que a la majoria de dispositius podeu fer-ho anant a la configuració. El pin predeterminat per a la majoria de dispositius HC-05 serà 1234 o 1111.
Obriu l'aplicació AccelPlot al dispositiu Android. Quan s’obre l’aplicació i abans de connectar-vos a l’HC-05, podeu canviar la freqüència de mostreig (es defineix al codi Arduino), les escales de l’acceleròmetre (també es defineixen al codi Arduino) i el nombre de mostres que cal desar.
Un cop feta aquesta configuració, feu clic al botó "Connecta". Hauria de mostrar els dispositius Bluetooth i el dispositiu hauria d’estar llistat. Seleccioneu-lo i un cop el codi estableixi la connexió, veureu un brindis "Connectat".
Utilitzeu el botó de fletxa enrere per tornar a Accel Plot. Toqueu el botó "Inicia la transmissió" per mostrar les dades del dispositiu HC-05. També heu de tenir botons disponibles per desar les dades o reproduir el contingut modulat en freqüència mitjançant la presa d’àudio.
Pas 6: adquirir i representar les dades
El botó "Inicia la reproducció" hauria d'estar habilitat. Toqueu-lo per començar a transmetre dades a la pantalla.
El botó "Desa les dades" també estarà habilitat; toqueu-lo per emmagatzemar les dades.
Accel Plot també inclou una opció per emetre un senyal modulat als canals d’àudio. Els dos canals de l’aplicació Accel Plot fan referència als canals esquerre i dret del connector de sortida d’àudio del dispositiu Android. Això és útil si voleu portar les dades MPU-6050 a un sistema de registre de dades separat, com ara National Instruments.
El vídeo mostra un exemple del sistema que recopila dades sobre un cotxe de R / C.
Pas 7: importeu a Python (o a una altra plataforma) per a un ús posterior
Els fitxers es desen al dispositiu Android. Els fitxers s'emmagatzemaran al directori "AccelPlot" per a l'API d'Android 18 i versions anteriors. El codi situa els fitxers.dat a la carpeta "\ Tablet / Documents / AccelPlot" per a l'API 19 (KitKat 4.4) i versions posteriors. He tingut problemes amb alguns dispositius Android que mostren els fitxers quan estic connectat mitjançant USB. En alguns casos, he hagut de reiniciar el dispositiu Android per mostrar-los. No sé ben bé per què és així, però hi hauria d’haver quatre fitxers, un per a cada canal. Es poden copiar a un directori local per obtenir més treball.
He utilitzat Anaconda / Python 2.7 per obrir els fitxers i mostrar les dades. El fitxer "ExploratoryAnalysis.ipynb" té el fitxer IPython Notebook que obrirà tots els fitxers de dades i representarà les dades de mostra. Els fitxers de mostra s’inclouen al repositori de GitHub. Les dades es guarden com a flotadors big-endian de 4 bytes ('> f'), de manera que qualsevol programa d'anàlisi hauria de poder obrir-los.
També he inclòs un fitxer més senzill anomenat "ReadDataFiles.ipynb" que mostra com llegir en un sol fitxer per nom.
Recomanat:
Com fer un registre de dades en temps real de la humitat i la temperatura amb Arduino UNO i targeta SD - Simulació de registre de dades DHT11 a Proteus: 5 passos
Com fer un registre de dades en temps real d’humitat i temperatura amb Arduino UNO i targeta SD | Simulació de registre de dades DHT11 a Proteus: Introducció: hola, aquest és Liono Maker, aquí teniu l'enllaç de YouTube. Estem fent un projecte creatiu amb Arduino i treballem en sistemes incrustats
Un anemòmetre de registre de dades autònom: 11 passos (amb imatges)
Un anemòmetre de registre de dades autònom: m’encanta recopilar i analitzar dades. També m'encanta construir aparells electrònics. Fa un any, quan vaig descobrir els productes Arduino, vaig pensar immediatament que "voldria recopilar dades ambientals". Va ser un dia de vent a Portland, OR, així que jo
Programa MicroPython: actualització de dades de la malaltia del coronavirus (COVID-19) en temps real: 10 passos (amb imatges)
Programa MicroPython: actualització de les dades de la malaltia del coronavirus (COVID-19) en temps real: en les últimes setmanes, el nombre de casos confirmats de malaltia del coronavirus (COVID 19) a tot el món ha superat els 100.000 i l’organització mundial de la salut (OMS) ha declarat el nou brot de pneumònia per coronavirus serà una pandèmia mundial. Jo era molt
Registre remot de dades d'alta precisió mitjançant el multímetre / Arduino / pfodApp: 10 passos (amb imatges)
Registre de dades remot d’alta precisió mitjançant l’aplicació Multimeter / Arduino / pfod: actualitzat el 26 d’abril de 2017 Circuit i placa revisats per utilitzar-los amb comptadors USB 4000ZC. No es necessita codificació d’Android. per a registre i
Estació meteorològica amb registre de dades: 7 passos (amb imatges)
Estació meteorològica amb registre de dades: en aquest instructiu us mostraré com fer el sistema d'estacions meteorològiques per vosaltres mateixos. Tot el que necessiteu és coneixement bàsic en electrònica, programació i una mica de temps. Aquest projecte encara està en procés. Aquesta és només la primera part. Les actualitzacions seran