Sisällysluettelo:

Reaaliaikainen MPU-6050/A0-dataloggeri Arduinolla ja Androidilla: 7 vaihetta (kuvilla)
Reaaliaikainen MPU-6050/A0-dataloggeri Arduinolla ja Androidilla: 7 vaihetta (kuvilla)

Video: Reaaliaikainen MPU-6050/A0-dataloggeri Arduinolla ja Androidilla: 7 vaihetta (kuvilla)

Video: Reaaliaikainen MPU-6050/A0-dataloggeri Arduinolla ja Androidilla: 7 vaihetta (kuvilla)
Video: MPU6050 Gyro Motion Tracking Application 2024, Marraskuu
Anonim
Reaaliaikainen MPU-6050/A0-dataloggeri Arduinolla ja Androidilla
Reaaliaikainen MPU-6050/A0-dataloggeri Arduinolla ja Androidilla

Olen ollut kiinnostunut käyttämään Arduinoa koneoppimiseen. Ensinnäkin haluan rakentaa reaaliaikaisen (tai melko lähellä sitä) datanäytön ja kirjaajan Android -laitteella. Haluan kaapata kiihtyvyysmittarin tiedot MPU-6050: stä, joten suunnittelin rakenteen käyttämään HC-05: tä 115200 baudilla. Tällä kokoonpanolla voidaan lähettää 4 datakanavaa nopeudella 250 näytettä sekunnissa.

Rakennuksessa on muutama vaihe:

  • Rakenna kilpi tai leipälauta
  • Ohjelmoi Arduino
  • Lataa Android -sovellus Google Playsta tai haaraa GitHub ja kokoa se itse
  • Liitä MPU-6050 johonkin mielenkiintoiseen, joka värisee (käytin R/C-autoa)
  • Muodosta yhteys Arduinoon Android -laitteen avulla
  • Piirrä tiedot, tallenna jos kiinnostaa
  • Tuo Pythoniin (tai muuhun alustaan) jatkokäyttöä varten

Aloitetaan!

Vaihe 1: Rakenna kilpi/leipälauta

Rakenna kilpi/leipälauta
Rakenna kilpi/leipälauta
Rakenna kilpi/leipälauta
Rakenna kilpi/leipälauta

Tämä on kytkentäkaavio malleille Arduino, HC-05 ja MPU-6050. MPU-6050: n lisäksi analoginen tulo A0 on kytketty valoanturiin osoittamaan, että ADC toimii. Mikä tahansa 0-5 voltin signaali voidaan tuoda A0 ADC: hen. Näitä komponentteja käytin rakentamiseen:

  • Arduino Uno
  • HC-05 (HC-06: n pitäisi toimia myös, mutta rakennukseni oli HC-05: n kanssa)
  • MPU-6050
  • Sparkfun -valovastus
  • 10 kOhm: n vastus (ruskea-musta-oranssi)

Useimmat HC-05 Bluetooth-moduulit ovat oletuksena 9600 baudia. Jotta tiedot voidaan lähettää onnistuneesti, sinun on ohjelmoitava ne uudelleen 115200 baudinopeudelle. Siellä on hyvä HC-05/HC-06 AT Command Instructable, joka selittää kuinka se tehdään.

Vaihe 2: Ohjelmoi Arduino

Ohjelmoi Arduino
Ohjelmoi Arduino
Ohjelmoi Arduino
Ohjelmoi Arduino

Ohjelmoin Arduinon käyttämällä Arduino IDE -julkaisua 1.6.7. Koodi voidaan ladata tämän vaiheen linkeistä tai GitHub -reposta. Olen lisännyt kolme versiota: Firmware125.ino on 125 hertsin versio, Firmware250.ino on 250 hertsin versio ja Firmware500.ino on 500 hertsin versio. Jotta Arduino pyörii 500 hertsillä, A0 ADC: tä ei kerätä.

Laiteohjelmisto sisältää kellon nastassa 9, jota käytin tarkistamaan ajoituksen. Jälki osoittaa, että jaksoaika on 4 ms (vastaa 1/250 hertsiä). Olen huomannut, että jos on sarjayhteysongelmia, ajoitus ei ole yhtenäinen.

Arduino -koodi käyttää bittien peittämistä kanavanumeron lisäämiseen kuhunkin pakettiin, koska näytteet putoavat joskus Bluetoothin kautta. Käytän kolmea merkittävintä bittiä kanavanumeron tallentamiseen. Allekirjoitetuille kokonaisluvuille merkittävin bitti (MSB) on varattu merkille. Koska haluan käyttää osoitteessani MSB: tä kokonaisluvun merkin sijasta, minun on muunnettava kaikki allekirjoitetut kiihtyvyysmittarin arvot allekirjoittamattomiksi kokonaisluvuiksi. Teen tämän lisäämällä 32768 jokaiseen arvoon (MPU -kiihtyvyysmittarin ADC -luvut ovat +32768 --32768) ja annan allekirjoittamattomina kokonaisluvuina:

(unsigned int) ((pitkä) iAccelData+32767);

Kanavanumero on sama kullekin kiihtyvyysmittarille ja A0 -portille, joten pudonnut paketti voidaan havaita, jos kanavanumerot ovat epäkunnossa. Arduinon Bluetoothin kautta tuleville paketeille binäärikuvio on (merkit siirtyvät bittisesti):

(xacc 3 osoitebittiä = 0x00, 13 bittiä allekirjoittamaton) (yacc 3 osoitebittiä = 0x01, 13 bittiä allekirjoittamaton) (zacc 3 osoitebittiä = 0x02, 13 bittiä allekirjoittamaton) (3 osoitebittiä = 0x03, iadc13bit allekirjoittamaton)

(xacc 3 osoitebittiä = 0x00, 13 bittiä allekirjoittamaton) (yacc 3 osoitebittiä = 0x01, 13 bittiä allekirjoittamaton) (zacc 3 osoitebittiä = 0x02, 13 bittiä allekirjoittamaton) (3 osoitebittiä = 0x03, iadc13bit allekirjoittamaton) (xacc 3 osoitebittiä = 0x00, 13 -bittinen allekirjoittamaton) (yacc 3 osoitebittiä = 0x01, 13 -bittinen allekirjoittamaton) (zacc 3 osoitebittiä = 0x02, 13 -bittinen allekirjoittamaton) (3 osoitebittiä = 0x03, iadc13bit allekirjoittamaton)…

Jos käytät jotain muuta kuin Accel Plot Android -sovellusta Bluetooth -tietojen lukemiseen, voit poimia osoitteen seuraavasti (käytän muuttujien nimiä Accel Plot Bluetooth.java -tiedostosta GitHub -reposta):

- Lue 16 allekirjoittamatonta int

- Pura korkea tavu ja tallenna se btHigh.

- Pura pieni tavu ja tallenna se btLow -muotoon.

- Hae osoite btHighista käyttämällä (btHigh >> 5) & 0x07. Tämä lausunto siirtää btHigh 5 bittiä oikealle siirtämällä kolme osoitebittiä alimpaan kolmeen rekisteriin. & -Merkki on looginen JA, joka pakottaa bitit 4 ja korkeammat olemaan nolla ja kolme viimeistä bittiä vastaamaan osoitebittejä. Tämän lausunnon tulos on osoitteesi.

Sinun ei tarvitse huolehtia osoitteen poimimisesta, jos käytät Accel Plotia.

Vaihe 3: Lataa Android -sovellus Google Playsta tai haaraa GitHub

Lataa Android -sovellus Google Playsta tai haaraa GitHub
Lataa Android -sovellus Google Playsta tai haaraa GitHub

Sinulla on pari vaihtoehtoa ladata Android -sovellus laitteellesi. Jos haluat välttää koodausta, voit etsiä "Accel Plot" ja sovelluksen pitäisi näkyä Google Play -kaupassa. Noudata asennusohjeita myymälän ohjeissa.

Haluan tällä Instructable -ohjelmalla todella rohkaista muita rakentamaan projekteja, joten olen myös julkaissut koodin GitHub -repossa. Sinun pitäisi pystyä haaraamaan tämä, rakentamaan se ja muokkaamaan sitä parhaaksi katsomallasi tavalla. Julkaisin koodin MIT -lisenssillä, joten pidä hauskaa!

Vaihe 4: Yhdistä Arduinoon jotain mielenkiintoista (käytin R/C -autoa)

Yhdistä Arduinoon jotain mielenkiintoista (käytin R/C -autoa)
Yhdistä Arduinoon jotain mielenkiintoista (käytin R/C -autoa)

Haluan lopulta käyttää laitetta tienpinnan havaitsemiseen, joten ajattelin, että pieni kauko -ohjattava (R/C) auto olisi sopiva. Luulen, että siitä on apua seuraavassa vaiheessa, jos korostukset voivat kohdistua johonkin, joka liikkuu tai värisee.

Vaihe 5: Muodosta yhteys Arduinoon Android -laitteen avulla

Muodosta yhteys Arduinoon Android -laitteen avulla
Muodosta yhteys Arduinoon Android -laitteen avulla
Muodosta yhteys Arduinoon Android -laitteen avulla
Muodosta yhteys Arduinoon Android -laitteen avulla
Muodosta yhteys Arduinoon Android -laitteen avulla
Muodosta yhteys Arduinoon Android -laitteen avulla

Jos et ole jo tehnyt niin, sinun on ensin yhdistettävä HC-05 Android-laitteeseen. Uskon, että useimmissa laitteissa voit tehdä tämän siirtymällä asetuksiin. Useimpien HC-05-laitteiden oletustappi on 1234 tai 1111.

Avaa AccelPlot -sovellus Android -laitteessa. Kun sovellus avautuu ja ennen kuin muodostat yhteyden HC-05: een, voit muuttaa näytteenottotaajuutta (tämä on asetettu Arduino-koodissa), kiihtyvyysmittarin asteikot (myös Arduino-koodi) ja tallennettavien näytteiden määrää.

Kun nämä asetukset on tehty, napsauta "Yhdistä" -painiketta. Sen pitäisi tuoda esiin Bluetooth -laitteet ja laitteesi pitäisi olla luettelossa. Valitse se ja kun koodi muodostaa yhteyden, näet "Connected" -paahtolehden.

Palaa Accel -kuvaajaan käyttämällä nuolipainiketta takaisin. Napauta "Start Stream" -painiketta näyttääksesi tiedot HC-05-laitteesta. Sinun pitäisi myös käyttää painikkeita tietojen tallentamiseen tai taajuusmoduloidun sisällön toistamiseen ääniliitännän kautta.

Vaihe 6: Hae ja piirrä tiedot

Image
Image
Tuo Pythoniin (tai muuhun alustaan) jatkokäyttöä varten
Tuo Pythoniin (tai muuhun alustaan) jatkokäyttöä varten

"Aloita virta" -painikkeen pitäisi olla käytössä. Napauta sitä aloittaaksesi datan suoratoiston näytölle.

Tallenna tiedot -painike on myös käytössä, tallenna tiedot napauttamalla sitä.

Accel Plot sisältää myös mahdollisuuden lähettää moduloitu signaali äänikanaville. Accel Plot -sovelluksen kaksi kanavaa viittaavat Android -laitteen äänilähtöliitännän vasempaan ja oikeaan kanavaan. Tästä on hyötyä, jos haluat tuoda MPU-6050-tiedot erilliseen tiedonkeruujärjestelmään, kuten National Instruments.

Video näyttää esimerkin järjestelmästä, joka kerää tietoja R/C -autosta.

Vaihe 7: Tuo Pythoniin (tai muuhun alustaan) jatkokäyttöä varten

Tuo Pythoniin (tai muuhun alustaan) jatkokäyttöä varten
Tuo Pythoniin (tai muuhun alustaan) jatkokäyttöä varten

Tiedostot tallennetaan Android -laitteelle. Tiedostot tallennetaan AccelPlot -hakemistoon Android API 18: lle ja sitä vanhemmille. Koodi sijoittaa.dat -tiedostot "\ Tablet / Documents / AccelPlot" -kansioon, jossa on API 19 (KitKat 4.4) tai uudempi. Minulla on ollut ongelmia joidenkin Android -laitteiden kanssa, jotka näyttävät tiedostot USB -liitännän kautta. Joissakin tapauksissa olen joutunut käynnistämään Android -laitteen uudelleen, jotta ne näkyvät. En ole varma miksi näin, mutta tiedostoja pitäisi olla neljä, yksi kullekin kanavalle. Ne voidaan kopioida paikalliseen hakemistoon lisätöitä varten.

Käytin Anaconda/Python 2.7: a tiedostojen avaamiseen ja tietojen näyttämiseen. Tiedostossa "ExploratoryAnalysis.ipynb" on IPython -muistikirjatiedosto, joka avaa kaikki datatiedostot ja piirtää näytetiedot. Esimerkkitiedostot ovat GitHub -repossa. Tiedot tallennetaan big-endian 4 tavun kellukkeina ('> f'), joten minkä tahansa analysointiohjelman pitäisi pystyä avaamaan ne.

Minulla on myös yksinkertaisempi tiedosto nimeltä "ReadDataFiles.ipynb", joka näyttää kuinka lukea yhdessä tiedostossa nimen mukaan.

Suositeltava: