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
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:08
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 dizajnirao konstrukciju za korištenje HC-05 na 115200 bauda. S ovom konfiguracijom mogu se prenijeti 4 kanala podataka brzinom od 250 uzoraka u sekundi.
Konstrukcija ima nekoliko koraka:
- Napravite š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, sačuvajte ako ste zainteresovani
- Uvezite u Python (ili drugu platformu) za daljnju upotrebu
Hajde da počnemo!
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 je povezan sa svjetlosnim senzorom 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
- Otpor 10kOhm (smeđe-crno-narančasta)
Većina HC-05 Bluetooth modula zadano ima 9600 bauda. Da bi se podaci uspješno prenijeli, morat ćete ih reprogramirati za brzinu 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 sa 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. Da bi se Arduino pokrenuo 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. Koristim tri najznačajnija bita za spremanje broja kanala. 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 potpisane vrijednosti akcelerometra u cjelovite bez znaka. To činim dodavanjem 32768 svakoj vrijednosti (broj ADC -ova u MPU akcelerometru je +32768 do -32768) i emitiran kao cijeli broj bez znaka:
(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 bita adrese = 0x00, 13 bita bez potpisa) (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 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 bez potpisa) (yacc 3 bita adrese = 0x01, 13 bita bez znaka) (zacc 3 bita adrese = 0x02, 13 bita bez potpisa) (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 koristeći: (btHigh >> 5) & 0x07. Ova naredba pomiče btHigh 5 bita udesno pomjerajući tri bita adrese u tri najniža registra. Znak & logičko je AND koje prisiljava bitove 4 i više da budu nula, a posljednja tri bita da se podudaraju s adresama. 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 potražiti "Accel Plot" i aplikacija bi se trebala pojaviti u trgovini Google Play. Slijedite upute u trgovini za instalaciju.
Moja želja s ovim Instructable -om je zaista potaknuti druge na izgradnju projekata, pa sam također objavio kod u GitHub repo -u. Trebali biste ovo 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 kreć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 HC-05 uređaja bit će 1234 ili 1111.
Otvorite aplikaciju AccelPlot na Android uređaju. Kada se aplikacija otvori, a prije nego što se povežete na HC-05, možete promijeniti brzinu uzorkovanja (to je postavljeno u Arduino kodu), skale mjerača ubrzanja (također postavljene u Arduino kodu) i broj uzoraka za spremanje.
Kada se ove postavke izvrše, kliknite na dugme "Poveži se". Trebao bi prikazati Bluetooth uređaje i vaš uređaj bi trebao biti naveden. Odaberite ga i nakon što kôd uspostavi vezu, vidjet ćete tost "Povezano".
Pomoću dugmeta sa strelicom za povratak vratite se na Accel Plot. Dodirnite dugme "Pokreni tok" za prikaz podataka sa uređaja HC-05. Također biste trebali imati dostupne gumbe za spremanje podataka ili reprodukciju frekvencijski moduliranog sadržaja putem audio priključka.
Korak 6: Prikupite i iscrtajte podatke
Dugme "Pokreni tok" treba biti omogućeno. Dodirnite ga za početak prijenosa podataka na ekran.
Također će biti omogućeno dugme "Spremi podatke", dodirnite ga za spremanje podataka.
Accel Plot takođe uključuje opciju za izlaz moduliranog signala na audio kanalima. Dva kanala u aplikaciji Accel Plot odnose se na lijevi i desni kanal priključka za audio izlaz na Android uređaju. Ovo je korisno ako želite unijeti podatke MPU-6050 u zaseban sistem evidentiranja podataka, poput National Instruments.
Video prikazuje primjer sistema 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 ponovo pokrenuti Android uređaj da bi se pojavio. Nisam siguran zašto je to tako, ali trebalo 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 datoteke s podacima i iscrtati uzorke podataka. Primjeri datoteka uključeni su u GitHub repo. Podaci se spremaju kao big-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čuje se:
Mjerač nivoa vode u bunaru u stvarnom vremenu: 6 koraka (sa slikama)
Mjerač nivoa bunara u stvarnom vremenu: Ova uputstva opisuju kako izgraditi jeftino mjerač nivoa vode u stvarnom vremenu za upotrebu u iskopanim bunarima. Mjerač nivoa vode je dizajniran da visi unutar iskopanog bunara, mjeri nivo vode jednom dnevno i šalje podatke putem WiFi -a ili mobilne veze
Mjerač temperature vode, vodljivosti i nivoa vode u bunaru u stvarnom vremenu: 6 koraka (sa slikama)
Mjerač temperature vode, vodljivosti i nivoa vode u bušotini u stvarnom vremenu: Ova uputstva opisuju kako izgraditi jeftin mjerač vode u stvarnom vremenu za praćenje temperature, električne provodljivosti (EC) i nivoa vode u iskopanim bunarima. Mjerač je dizajniran da visi u iskopanom bunaru, mjeri temperaturu vode, EC i
Kako napraviti snimač podataka o vlažnosti i temperaturi u stvarnom vremenu s Arduino UNO i SD-karticom - DHT11 Zapisnik podataka Simulacija u Proteusu: 5 koraka
Kako napraviti snimač podataka o vlažnosti i temperaturi u stvarnom vremenu s Arduino UNO i SD-karticom | DHT11 Simulator zapisnika podataka u Proteusu: Uvod: zdravo, ovdje Liono Maker, ovdje je YouTube veza. Radimo na kreativnom projektu s Arduinom i radimo na ugrađenim sistemima. Zapisnik podataka: Zapisnik podataka (također zapisnik podataka ili snimač podataka) je elektronički uređaj koji bilježi podatke tokom vremena sa
Sat u stvarnom vremenu sa Arduinom: 3 koraka
Sat u stvarnom vremenu sa 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 prikazivanje 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