Sadržaj:
- Korak 1: Izgradite štit/matičnu ploču
- Korak 2: Programirajte Arduino
- Korak 3: Učitajte Android aplikaciju s Google Playa ili podružite GitHub
- Korak 4: Povežite se s Arduinom na nešto zanimljivo (koristio sam R/C automobil)
- Korak 5: Upotrijebite Android uređaj za povezivanje s Arduinom
- Korak 6: Prikupite i iscrtajte podatke
- Korak 7: Uvezite u Python (ili drugu platformu) za daljnju upotrebu
Video: Zapis podataka MPU-6050/A0 u stvarnom vremenu s Arduinom i Androidom: 7 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:37
Zanimalo me korištenje Arduina za strojno učenje. Kao prvi korak, želim izgraditi prikaz podataka i zapisnik podataka u stvarnom vremenu (ili prilično blizu njega) s Android uređajem. Želim snimiti podatke akcelerometra s MPU-6050 pa sam konstruirao konstrukciju za korištenje HC-05 na 115200 bauda. S ovom konfiguracijom mogu se prenijeti 4 kanala podataka brzinom od 250 uzoraka u sekundi.
Izrada ima nekoliko koraka:
- Izgradite štit ili ploču
- Programirajte Arduino
- Učitajte Android aplikaciju s Google Playa ili podružite GitHub i sastavite je sami
- Spojite MPU-6050 na nešto zanimljivo što vibrira (koristio sam automobil s klimom)
- Za povezivanje s Arduinom upotrijebite Android uređaj
- Iscrtajte podatke, spremite ako ste zainteresirani
- Uvezite u Python (ili drugu platformu) za daljnju upotrebu
Započnimo!
Korak 1: Izgradite štit/matičnu ploču
Ovo je dijagram ožičenja za Arduino, HC-05 i MPU-6050. Osim MPU-6050, analogni ulaz A0 ožičen je na svjetlosni senzor kako bi pokazao da ADC radi. Bilo koji signal 0-5 volti mogao bi se unijeti u A0 ADC. Ovo su komponente koje sam koristio za izradu:
- Arduino Uno
- HC-05 (HC-06 bi također trebao raditi, ali moja je konstrukcija bila s HC-05)
- MPU-6050
- Sparkfun fotootpornik
- 10kOhm otpornik (smeđe-crno-narančasta)
Većina Bluetooth-modula HC-05 zadano ima 9600 bauda. Za uspješan prijenos podataka morat ćete ih reprogramirati za brzinu prijenosa od 115200 bauda. Postoji dobar HC-05/HC-06 AT Command Instructable koji objašnjava kako to učiniti.
Korak 2: Programirajte Arduino
Koristio sam Arduino IDE izdanje 1.6.7 za programiranje Arduina. Kôd se može preuzeti s veza u ovom koraku ili iz GitHub repoa. Uključio sam tri verzije: Firmware125.ino je verzija od 125 herca, Firmware250.ino je verzija od 250 herca, a Firmware500.ino je verzija od 500 herca. Kako bi Arduino radio na 500 herca, A0 ADC se ne prikuplja.
Firmver uključuje sat na Pin 9 koji sam koristio za provjeru vremena. Trag pokazuje da je vrijeme ciklusa 4 ms (ekvivalent 1/250 herca). Otkrio sam da ako postoje problemi sa serijskom vezom, vrijeme neće biti jednolično.
Arduino kôd koristi maskiranje bitova za dodavanje broja kanala svakom paketu jer uzorci ponekad padaju preko Bluetootha. Za pohranu broja kanala koristim tri najvažnija bita. Za cijele znakove najznačajniji bit (MSB) rezerviran je za znak. Budući da želim koristiti MSB za svoju adresu, a ne znak cijelog broja, moram pretvoriti sve vrijednosti akcelerometra sa predznakom u bezznačne cijele brojeve. To činim dodavanjem 32768 svakoj vrijednosti (broj ADC -ova za MPU akcelerometar je od +32768 do -32768) i emitiran kao cijeli broj bez potpisa:
(nepotpisani int) ((dugačak) iAccelData+32767);
Broj kanala je isti za svaki mjerač ubrzanja i A0 port, tako da se ispušteni paket može otkriti ako brojevi kanala nisu u redu. Za pakete koji dolaze s Bluetootha na Arduinu, binarni uzorak je (znakovi se bitovno mijenjaju):
(xacc 3 adresna bita = 0x00, 13 bitna oznaka) (yacc 3 adresna bita = 0x01, 13bitnaznačna) (zacc 3 adresna bita = 0x02, 13bitnaznačna)
(xacc 3 adresna bita = 0x00, 13 bita bez znaka) (yacc 3 bita adrese = 0x01, 13 bita bez znaka) (zacc 3 bita adrese = 0x02, 13 bita bez znaka) (3 bita adrese = 0x03, iadc13bit bez znaka) (xacc 3 bita adrese = 0x00, 13 -bitni bezznak) (yacc 3 adresna bita = 0x01, 13 -bitni bezznak) (zacc 3 bita adrese = 0x02, 13 -bitni bezznak) (3 bita adrese = 0x03, iadc13bit bez potpisa) …
Ako za čitanje Bluetooth podataka koristite nešto drugo osim Android aplikacije Accel Plot, evo koraka za izdvajanje adrese (koristim nazive varijabli iz datoteke Accel Plot Bluetooth.java iz GitHub repoa):
- Pročitajte u 16 nepotpisanih int
- Izdvojite visoki bajt i spremite ga na btHigh.
- Izdvojite niži bajt i spremite ga u btLow.
- Dohvatite adresu s btHigh pomoću: (btHigh >> 5) & 0x07. Ova izjava pomiče btHigh 5 bita udesno pomičući tri bita adrese u tri najniža registra. Znak & logičko je AND koje prisiljava bitove 4 i više na nulu, a posljednja tri bita na adresne bitove. Rezultat ove izjave je vaša adresa.
Ne morate brinuti o izdvajanju adrese ako koristite Accel Plot.
Korak 3: Učitajte Android aplikaciju s Google Playa ili podružite GitHub
Imate nekoliko mogućnosti za učitavanje Android aplikacije na svoj uređaj. Ako želite izbjeći kodiranje, možete tražiti "Accel Plot" i aplikacija bi se trebala pojaviti u trgovini Google Play. Slijedite upute trgovine za instalaciju.
Moja želja s ovim Instructableom je zaista potaknuti druge na izgradnju projekata, pa sam također objavio kod u GitHub repo -u. Trebali biste to moći razgranati, izgraditi i izmijeniti kako smatrate prikladnim. Objavio sam kôd pod MIT licencom pa se zabavite!
Korak 4: Povežite se s Arduinom na nešto zanimljivo (koristio sam R/C automobil)
Želim na kraju koristiti uređaj za otkrivanje površine ceste pa sam mislio da bi bio prikladan mali automobil na daljinsko upravljanje (R/C). Mislim da će u sljedećem koraku pomoći ako akceli mogu biti na nečemu što se pomiče ili vibrira.
Korak 5: Upotrijebite Android uređaj za povezivanje s Arduinom
Ako to već niste učinili, morat ćete prvo upariti HC-05 sa svojim Android uređajem. Vjerujem da na većini uređaja to možete učiniti odlaskom na postavke. Zadani pin za većinu uređaja HC-05 bit će 1234 ili 1111.
Otvorite aplikaciju AccelPlot na Android uređaju. Kad se aplikacija otvori i prije nego što se povežete s HC-05, možete promijeniti brzinu uzorkovanja (to je postavljeno u Arduino kodu), ljestvice akcelerometra (također postavljene u Arduino kodu) i broj uzoraka za spremanje.
Nakon što ste izvršili ove postavke, kliknite gumb "Poveži se". Trebao bi prikazati Bluetooth uređaje, a vaš uređaj trebao bi biti naveden. Odaberite ga i kad kôd uspostavi vezu, vidjet ćete skočni tost.
Pomoću gumba sa strelicom natrag vratite se na Accel Plot. Dodirnite gumb "Pokreni stream" za prikaz podataka s uređaja HC-05. Također biste trebali imati dostupne gumbe za spremanje podataka ili reprodukciju frekvencijski moduliranog sadržaja kroz audio priključnicu.
Korak 6: Prikupite i iscrtajte podatke
Gumb "Pokreni stream" trebao bi biti omogućen. Dodirnite ga za početak strujanja podataka na zaslon.
Također će biti omogućen gumb "Spremi podatke", dodirnite ga za spremanje podataka.
Accel Plot također uključuje opciju za izlaz moduliranog signala na audio kanalima. Dva kanala u aplikaciji Accel Plot odnose se na lijevi i desni kanal utičnice za audio izlaz na Android uređaju. Ovo je korisno ako želite unijeti podatke MPU-6050 u zaseban sustav evidentiranja podataka, poput National Instruments.
Video prikazuje primjer sustava koji prikuplja podatke o R/C automobilu.
Korak 7: Uvezite u Python (ili drugu platformu) za daljnju upotrebu
Datoteke se spremaju na Android uređaj. Datoteke će biti pohranjene u direktoriju "AccelPlot" za Android API 18 i starije. Kod postavlja datoteke.dat u mapu "\ Tablet / Documents / AccelPlot" za API 19 (KitKat 4.4) i novije verzije. Imao sam problema s nekim Android uređajima koji prikazuju datoteke kada su povezani putem USB -a. U nekim slučajevima morao sam ponovno pokrenuti Android uređaj kako bi se pojavili. Nisam siguran zašto je to tako, ali trebale bi postojati četiri datoteke, po jedna za svaki kanal. Mogu se kopirati u lokalni direktorij radi dodatnog rada.
Koristio sam Anacondu/Python 2.7 za otvaranje datoteka i prikaz podataka. Datoteka "ExploratoryAnalysis.ipynb" ima datoteku IPython Notebook koja će otvoriti sve podatkovne datoteke i iscrtati uzorke podataka. Primjeri datoteka uključeni su u GitHub repo. Podaci se spremaju kao veliki endian 4-bajtni float ('> f') pa bi ih svaki program za analizu trebao moći otvoriti.
Uključio sam i jednostavniju datoteku pod nazivom "ReadDataFiles.ipynb" koja pokazuje kako čitati u jednoj datoteci po imenu.
Preporučeni:
Mjerač razine vode u bunaru u stvarnom vremenu: 6 koraka (sa slikama)
Mjerač razine vode u stvarnom vremenu: Ove upute opisuju kako izgraditi jeftino mjerač razine vode u stvarnom vremenu za upotrebu u iskopanim bunarima. Mjerač razine vode dizajniran je tako da visi unutar iskopanog bunara, mjeri razinu vode jednom dnevno i šalje podatke putem WiFi -a ili mobilne veze
Kako napraviti snimač podataka o vlažnosti i temperaturi u stvarnom vremenu s Arduino UNO i SD karticom - DHT11 Simulator zapisivača podataka u Proteusu: 5 koraka
Kako napraviti snimač podataka o vlažnosti i temperaturi u stvarnom vremenu s Arduino UNO i SD karticom | Simulacija DHT11 zapisničara u Proteusu: Uvod: Bok, ovdje Liono Maker, ovdje je veza na YouTube. Radimo na kreativnom projektu s Arduinom i radimo na ugrađenim sustavima. Zapisnik podataka: Zapisnik podataka (ujedno i zapisnik podataka ili snimač podataka) je elektronički uređaj koji bilježi podatke tijekom vremena s
Sat u stvarnom vremenu s Arduinom: 3 koraka
Sat u stvarnom vremenu s Arduinom: U ovom projektu napravit ćemo sat uz pomoć Arduino i RTC modula. Kao što znamo, Arduino ne može prikazati stvarno vrijeme, pa ćemo koristiti RTC modul za prikaz pravog vremena na LCD -u. Pažljivo pročitajte sve korake koji će vam pomoći
Korištenje DS1307 i DS3231 modula sata u stvarnom vremenu s Arduinom: 3 koraka
Korištenje DS1307 i DS3231 modula satova u stvarnom vremenu s Arduinom: Stalno dobivamo zahtjeve o tome kako koristiti module satova u stvarnom vremenu DS1307 i DS3231 s Arduinom iz različitih izvora-pa je ovo prvi od dva dijela vodiča o tome kako ih koristiti. Za ovaj Arduino vodič imamo dva modula sata u stvarnom vremenu
DS1307 Sat u stvarnom vremenu RTC sa Arduinom: 4 koraka
DS1307 RTC sat sa stvarnim vremenom sa Arduinom: U ovom vodiču ćemo naučiti o satu sa stvarnim vremenom (RTC) i kako Arduino & IC DS1307 sata u stvarnom vremenu sastavljeni su kao vremenski uređaj. Sat stvarnog vremena (RTC) koristi se za praćenje vremena i održavanje kalendara. Da biste koristili RTC, w