Përmbajtje:

Regjistrimi i të dhënave MPU-6050/A0 me Arduino dhe Android: 7 hapa (me fotografi)
Regjistrimi i të dhënave MPU-6050/A0 me Arduino dhe Android: 7 hapa (me fotografi)

Video: Regjistrimi i të dhënave MPU-6050/A0 me Arduino dhe Android: 7 hapa (me fotografi)

Video: Regjistrimi i të dhënave MPU-6050/A0 me Arduino dhe Android: 7 hapa (me fotografi)
Video: Как использовать гироскоп, акселерометр, магнитометр MPU-9250 для Arduino 2024, Korrik
Anonim
Regjistrimi i të dhënave MPU-6050/A0 në kohë reale me Arduino dhe Android
Regjistrimi i të dhënave MPU-6050/A0 në kohë reale me Arduino dhe Android

Unë kam qenë i interesuar të përdor Arduino për mësimin e makinerisë. Si hap i parë, unë dua të ndërtoj një ekran të të dhënave në kohë reale (ose shumë afër tij) dhe një regjistrues me një pajisje Android. Unë dua të kap të dhënat e përshpejtuesit nga MPU-6050 kështu që kam projektuar strukturën për të përdorur HC-05 në 115200 baud. Me këtë konfigurim 4 kanale të të dhënave mund të transmetohen me 250 mostra në sekondë.

Ndërtimi ka disa hapa:

  • Ndërtoni mburojën ose dërrasën e bukës
  • Programoni Arduino
  • Ngarkoni aplikacionin Android nga Google Play ose degëzoni GitHub dhe përpilojeni vetë
  • Lidhni MPU-6050 me diçka interesante që dridhet (kam përdorur një makinë R/C)
  • Përdorni pajisjen Android për t'u lidhur me Arduino
  • Hartoni të dhënat, ruani nëse jeni të interesuar
  • Importoni në Python (ose platformë tjetër) për përdorim të mëtejshëm

Le të fillojmë!

Hapi 1: Ndërtoni Mburojën/tabelën e bukës

Ndërtoni Mburojën/tabelën e bukës
Ndërtoni Mburojën/tabelën e bukës
Ndërtoni Mburojën/tabelën e bukës
Ndërtoni Mburojën/tabelën e bukës

Ky është diagrami i instalimeve elektrike për Arduino, HC-05 dhe MPU-6050. Përveç MPU-6050 kam hyrjen analoge A0 të lidhur me një sensor drite për të treguar se ADC po punon. Çdo sinjal 0-5 volt mund të futet në A0 ADC. Këto janë përbërësit që kam përdorur për ndërtimin:

  • Arduino Uno
  • HC-05 (HC-06 duhet të funksionojë gjithashtu, por ndërtimi im ishte me HC-05)
  • MPU-6050
  • Fotorerezistues Sparkfun
  • Rezistencë 10kOhm (kafe-e zezë-portokalli)

Shumica e moduleve Bluetooth HC-05 të parazgjedhur në 9600 baud. Që të dhënat të transmetohen me sukses do t'ju duhet t'i riprogramoni ato me një normë baudimi 115200. Ka një HC-05/HC-06 AT Command Instructable të mirë që shpjegon se si ta bëni atë.

Hapi 2: Programoni Arduino

Programoni Arduino
Programoni Arduino
Programoni Arduino
Programoni Arduino

Kam përdorur lëshimin Arduino IDE 1.6.7 për të programuar Arduino. Kodi mund të shkarkohet nga lidhjet në këtë hap ose nga repoja e GitHub. Unë kam përfshirë tre versione: Firmware125.ino është versioni 125 hertz, Firmware250.ino është versioni 250 herz, dhe Firmware500.ino është versioni 500 herz. Për ta bërë Arduino të ecë me biçikletë në 500 herc, A0 ADC nuk mblidhet.

Firmware përfshin një orë jashtë në Pin 9 që kam përdorur për të kontrolluar kohën. Gjurma tregon se koha e ciklit është 4 ms (ekuivalente me 1/250 herc). Kam gjetur se nëse ka probleme të lidhjes serike, koha nuk do të jetë e njëtrajtshme.

Kodi Arduino përdor maskimin e bitit për të shtuar një numër kanali në secilën pako sepse mostrat ndonjëherë bien mbi Bluetooth. Unë përdor tre bitët më domethënës për të ruajtur një numër kanali. Për numrat e plotë të nënshkruar, biti më domethënës (MSB) rezervohet për shenjën. Meqenëse unë dua të përdor MSB për adresën time, në vend të shenjës së numrit të plotë, më duhet të konvertoj të gjitha vlerat e nënshkruara të përshpejtuesit në numra të plotë të panënshkruar. Unë e bëj këtë duke shtuar 32768 në secilën vlerë (akselerometri MPU numërimet ADC janë +32768 në -32768) dhe i hedh si numra të plotë të panënshkruar:

(pa shenjë int) ((gjatë) iAccelData+32767);

Numri i kanalit është i njëjtë për secilin akselerometër dhe portën A0 në mënyrë që një paketë e rënë të zbulohet nëse numrat e kanalit janë jashtë funksionit. Për paketat që vijnë nga Bluetooth në Arduino, modeli binar është (shenjat po ndryshojnë pak):

(xacc 3 bite adresash = 0x00, 13bit pa shenjë) (yacc 3 bite adrese = 0x01, 13bit pa shenjë) (zacc 3 bite adresash = 0x02, 13bit pa shenjë) (3 bite adresash = 0x03, iadc13bit pa shenjë)

(xacc 3 bite adresash = 0x00, 13bit pa shenjë) (yacc 3 bite adrese = 0x01, 13bit pa shenjë) (zacc 3 bite adresash = 0x02, 13bit pa shenjë) (3 bite adresash = 0x03, iadc13bit pa shenjë) (xacc 3 bite adrese = 0x00, 13bit pa shenjë) (yacc 3 bit adresa = 0x01, 13bit pa shenjë) (zacc 3 bite adresash = 0x02, 13bit pa shenjë) (3 bite adrese = 0x03, iadc13bit pa shenjë)…

Nëse jeni duke përdorur diçka tjetër përveç aplikacionit Accel Plot Android për të lexuar të dhënat Bluetooth, këtu janë hapat për të nxjerrë adresën (unë jam duke përdorur emrat e ndryshoreve nga skedari Accel Plot Bluetooth.java nga repo GitHub):

- Lexoni në int 16 pa shenjë

- Nxirrni bajtin e lartë dhe ruajeni në btHigh.

- Nxirrni bajtin e ulët dhe ruajeni në btLow.

- Merrni adresën nga btHigh duke përdorur: (btHigh >> 5) & 0x07. Kjo deklaratë zhvendos btHigh 5 bit në të djathtë duke lëvizur tre bit adresa në tre regjistrat më të ulët. Shenja & është një logjike DHE që detyron që bitët 4 e lart të jenë zero dhe tre bitët e fundit të përputhen me bitët e adresës. Rezultati i kësaj deklarate është adresa juaj.

Ju nuk keni pse të shqetësoheni për nxjerrjen e adresës nëse përdorni Accel Plot.

Hapi 3: Ngarkoni Aplikacionin Android nga Google Play ose Degoni GitHub

Ngarkoni Aplikacionin Android nga Google Play ose Degoni GitHub
Ngarkoni Aplikacionin Android nga Google Play ose Degoni GitHub

Ju keni disa zgjedhje për të ngarkuar aplikacionin Android në pajisjen tuaj. Nëse doni të shmangni kodimin, mund të kërkoni për "Accel Plot" dhe aplikacioni duhet të dalë në dyqanin Google Play. Ndiqni udhëzimet e dyqanit për instalim.

Dëshira ime me këtë Instructable është me të vërtetë të inkurajoj të tjerët të ndërtojnë projekte, kështu që unë gjithashtu kam publikuar kodin në një repo GitHub. Ju duhet të jeni në gjendje ta degëzoni këtë, ta ndërtoni dhe ta modifikoni ashtu siç e shihni të arsyeshme. Kam botuar kodin nën Licencën MIT kështu që argëtohuni!

Hapi 4: Lidhuni me Arduino me Diçka Interesante (Kam Përdorur një makinë R/C)

Lidhuni me Arduino në Diçka Interesante (Kam Përdorur një makinë R/C)
Lidhuni me Arduino në Diçka Interesante (Kam Përdorur një makinë R/C)

Dua të përdor pajisjen për zbulimin e sipërfaqes së rrugës, kështu që mendova se një makinë e vogël me telekomandë (R/C) do të ishte e përshtatshme. Unë mendoj se ndihmon në hapin tjetër nëse akset mund të jenë në diçka që lëviz ose vibron.

Hapi 5: Përdorni pajisjen Android për t'u lidhur me Arduino

Përdorni pajisjen Android për t'u lidhur me Arduino
Përdorni pajisjen Android për t'u lidhur me Arduino
Përdorni pajisjen Android për t'u lidhur me Arduino
Përdorni pajisjen Android për t'u lidhur me Arduino
Përdorni pajisjen Android për t'u lidhur me Arduino
Përdorni pajisjen Android për t'u lidhur me Arduino

Nëse nuk e keni bërë tashmë, do t'ju duhet së pari të çiftoni HC-05 me pajisjen tuaj Android. Unë besoj se në shumicën e pajisjeve ju mund ta bëni këtë duke shkuar te cilësimet. Pina e paracaktuar për shumicën e pajisjeve HC-05 do të jetë 1234 ose 1111.

Hapni aplikacionin AccelPlot në pajisjen Android. Kur hapet aplikacioni dhe para se të lidheni me HC-05, mund të ndryshoni shkallën e marrjes së mostrave (kjo është vendosur në kodin Arduino), shkallët e përshpejtuesit (të vendosura edhe në kodin Arduino) dhe numrin e mostrave që do të ruhen.

Pasi të bëhen këto cilësime, klikoni në butonin "Lidhu". Duhet të sjellë pajisjet Bluetooth dhe pajisja juaj duhet të jetë e listuar. Zgjidhni atë dhe pasi kodi të krijojë lidhjen do të shihni një dolli "Lidhur" që shfaqet.

Përdorni butonin e shigjetës së pasme për t'u kthyer në Komplotin Accel. Prekni butonin "Start Stream" për të shfaqur të dhëna nga pajisja HC-05. Ju gjithashtu duhet të keni butona në dispozicion për të ruajtur të dhënat ose për të luajtur përmbajtje të moduluar me frekuencë përmes folesë audio.

Hapi 6: Merrni dhe vizatoni të dhënat

Image
Image
Importoni në Python (ose Platformë tjetër) për përdorim të mëtejshëm
Importoni në Python (ose Platformë tjetër) për përdorim të mëtejshëm

Butoni "Start Stream" duhet të aktivizohet. Prekni atë për të filluar transmetimin e të dhënave në ekran.

Butoni "Ruaj të dhënat" gjithashtu do të aktivizohet, trokitni lehtë mbi të për të ruajtur të dhënat.

Accel Plot gjithashtu përfshin një mundësi për të nxjerrë një sinjal të moduluar në kanalet audio. 2 kanalet në aplikacionin Accel Plot i referohen kanaleve të majtë dhe të djathtë të folesë së daljes së audios në pajisjen Android. Kjo është e dobishme nëse doni të sillni të dhënat MPU-6050 në një sistem të veçantë të regjistrimit të të dhënave, si një Instrumente Kombëtare.

Video tregon një shembull të sistemit që mbledh të dhëna në një makinë R/C.

Hapi 7: Importoni në Python (ose Platformë tjetër) për përdorim të mëtejshëm

Importoni në Python (ose platformë tjetër) për përdorim të mëtejshëm
Importoni në Python (ose platformë tjetër) për përdorim të mëtejshëm

Skedarët ruhen në pajisjen Android. Skedarët do të ruhen nën drejtorinë "AccelPlot" për Android API 18 dhe më të vjetër. Kodi i vendos skedarët.dat në dosjen "\ Tablet / Documents / AccelPlot" për API 19 (KitKat 4.4) dhe më të lartë. Kam pasur probleme me disa pajisje Android që tregojnë skedarët kur lidhen me USB. Në disa raste më është dashur të rindiz pajisjen Android për t'i shfaqur ato. Nuk jam i sigurt pse është kështu, por duhet të ketë katër skedarë, një për secilin kanal. Ato mund të kopjohen në një drejtori lokale për punë shtesë.

Kam përdorur Anaconda/Python 2.7 për të hapur skedarët dhe për të shfaqur të dhënat. Skedari "ExploratoryAnalysis.ipynb" ka skedarin IPython Notebook që do të hapë të gjithë skedarët e të dhënave dhe do të vizatojë mostrën e të dhënave. Skedarët mostër përfshihen në repon e GitHub. Të dhënat ruhen si nota të mëdha 4 bajtësh ('> f') kështu që çdo program analize duhet të jetë në gjendje t'i hapë ato.

Unë gjithashtu kam përfshirë një skedar më të thjeshtë të quajtur "ReadDataFiles.ipynb" që tregon se si të lexoni në një skedar të vetëm me emër.

Recommended: