- Potrebni materijali:
- Kružni dijagram:
- Uključivanje vaše postavke:
- Programiranje vašeg Arduina:
- Priprema aplikacije za Android pomoću obrade:
- Rad Arduino Inclinometra:
MPU6050 je IC 3-os ubrzanja i 3-osi žiroskop kombinirani u jednoj jedinici. Također sadrži senzor temperature i DCM za obavljanje složenih zadataka. MPU6050 se obično koristi u izradi Dronea i drugih udaljenih robota poput samobalansirajućeg robota. U ovom ćemo projektu naučiti kako se koristi MPU6050 koji je izgrađen Inclinometer ili Spirit Leveler. Kao što znamo pomoću inklinometra se provjerava je li površina savršeno izravnana ili ne, dostupni su ili kao mjehurići ili kao digitalni mjerači. U ovom ćemo projektu izraditi Digitalni Inclinometer koji se može nadzirati pomoću Android aplikacije. Razlog korištenja udaljenog zaslona poput mobilnog telefona je taj što možemo nadzirati vrijednosti iz MPU6050 bez potrebe za gledanjem hardvera, što bi vrlo dobro došlo kada se MPU6050 postavi na dron ili neko drugo nepristupačno mjesto.
Potrebni materijali:
- Arduino Pro-mini (5 V)
- MPU6050 žiro senzor
- HC-05 ili HC-06 Bluetooth modul
- FTDI ploča
- Breadboard
- Spajanje žica
- Pametni telefon

Kružni dijagram:

Kompletna shema sklopa za ovaj projekt Arduino osjetnika nagiba prikazana je u nastavku. Sadrži samo tri komponente i lako se ugrađuje preko ploče.
U MPU6050 komunicira uz pomoć I2C, a time i pin SDA je spojen na A4 pin Arduino što je SDA pin i SCL pin spojen na A5 pin Arduino. HC-06 Bluetooth modul radi uz pomoć Serial komunikacija stoga Rx pin Bluetooth spojen na pin D11 i TX pin Bluetooth spojen na pin D10 u Arduino. Ovi pin D10 i D11 bit će konfigurirani kao serijski pin programiranjem Arduina. HC-05 modul i MSP6050 modul rade na + 5V i stoga ih napaja Vcc iglica Arduina kao što je gore prikazano.
Upotrijebio sam nekoliko žica za povezivanje pločica i sagradio postavku preko male ploče. Jednom kad su veze gotove, moja ploča izgleda ovako dolje.

Uključivanje vaše postavke:
Možete napajati svoj krug putem FTDI programske ploče kao što sam ja to učinio, ili upotrijebiti bateriju od 9 V ili adapter od 12 V i spojiti ga na Raw pin Arduino pro mini. Arduino Pro-mini ima ugrađeni regulator napona koji bi pretvorio ovaj vanjski napon reguliran + 5V.

Programiranje vašeg Arduina:
Jednom kada je hardver spreman, možemo početi programirati naš Arduino. Kao i uvijek kompletni kod za ovaj projekt nalazi se na dnu ove stranice. Ali da bih bolje razumio projekt, razbio sam kôd na male dijelove i objasnio ih kao korake u nastavku.
Prvi korak bio bi povezivanje MPU6050 s Arduinom. Za ovaj ćemo projekt koristiti knjižnicu koju je razvio Korneliusz, a koju možete preuzeti s donje poveznice
MPU6050 Liberty - Korneliusz Jarzebski
Preuzmite ZIP datoteku i dodajte je u svoj Arduino IDE. Zatim idite na Datoteka-> Primjeri-> Arduino_MPU6050_Master -> MPU6050_gyro_pitch_roll_yaw . Ovo će otvoriti primjer programa koji koristi knjižnicu koju smo upravo preuzeli. Dakle, kliknite na prijenos i pričekajte da se program prenese na vaš Arduino Pro mini. Kad je to gotovo, otvorite serijski monitor i postavite brzinu prijenosa na 115200 i provjerite dobivate li sljedeće.

U početku će sve tri vrijednosti biti jednake nuli, ali dok pomičete ploču možete primijetiti kako se te vrijednosti mijenjaju. Ako se promijene, znači da je vaša veza ispravna, u suprotnom provjerite veze. Odvojite malo vremena ovdje i primijetite kako se tri vrijednosti Pitch Roll i Yaw razlikuju ovisno o načinu naginjanja senzora. Ako se zbunite, pritisnite gumb za resetiranje na Arduinu i vrijednosti će se ponovno inicijalizirati na nulu, a zatim nagnite senzor u jednom smjeru i provjerite koje vrijednosti variraju. Slika ispod pomoći će vam da bolje razumijete.

Od ova tri parametra zanimaju nas samo Roll and Pitch. Vrijednost kotrljanja reći će nam o nagibu u osi X, a vrijednost nagiba o nagibu u Y-osi. Sad kad smo shvatili osnove, zapravo možemo započeti s programiranjem Arduina za čitanje ovih vrijednosti i poslati ga Arduinu putem Bluetootha. Kao i uvijek, krenimo s uključivanjem svih knjižnica potrebnih za ovaj projekt
#include
Zatim inicijaliziramo serijski program za Bluetooth modul. To je moguće zbog softverske serijske biblioteke u Arduinu, IO pinovi se mogu programirati da rade kao serijski pinovi. Ovdje koristimo digitalne pinove D10 i D11, gdje D10 id Rx i D11 je Tx.
SoftwareSerial BT (10, 11); // RX, TX
Nakon toga inicijaliziramo varijable i objekte potrebne za program i prelazimo na funkciju setup () gdje određujemo brzinu prijenosa podataka za serijski monitor i Bluetooth. Za HC-05 i HC-06 brzina prijenosa je 9600, pa je obavezno koristiti istu. Zatim provjeravamo je li IIC sabirnica Arduina spojena na MPU6050, ako ne ispisujemo poruku upozorenja i ostajemo tamo sve dok je uređaj povezan. Nakon toga kalibriramo žiroskop i postavljamo njegove granične vrijednosti koristeći njegove odgovarajuće funkcije kao što je prikazano dolje.
void setup () {Serial.begin (115200); BT.početak (9600); // započnite Bluetooth komunikaciju na 9600 baudrate // Inicijalizirajte MPU6050 dok (! mpu.begin (MPU6050_SCALE_2000DPS, MPU6050_RANGE_2G)) {Serial.println ("Ne mogu pronaći važeći MPU6050 senzor, provjerite ožičenje!"); kašnjenje (500); } mpu.calibrateGyro (); // Kalibriraj žiroskop tijekom pokretanja mpu.setThreshold (3); // kontrolira osjetljivost}
Redak " mpu.calibrateGyro ();" kalibrirajte MPU6050 za položaj na kojem je trenutno postavljen. Ova se linija može pozivati više puta unutar programa kad god treba kalibrirati MPU6050 i sve vrijednosti treba postaviti na nulu. "Mpu.setThreshold (3);" ova funkcija kontrolira koliko vrijednost varira za kretanje senzora, a preniska vrijednost će povećati šum pa budite oprezni dok se petljate oko toga.
Unutar praznine petlje (), više puta čitamo vrijednosti žiroskopa i senzora temperature, izračunavamo vrijednost koraka, kotrljanja i skretanja, šaljemo ga na Bluetooth modul. Sljedeća dva retka očitavat će neobrađene žiro-vrijednosti i vrijednost temperature
Norma vektora = mpu.readNormalizeGyro (); temp = mpu.readTemperature ();
Zatim izračunavamo visinu koraka, kotrljanja i nagiba množenjem vremenskog koraka i dodavanjem prethodnih vrijednosti. TimeStep nije ništa drugo nego interval između uzastopnih očitavanja.
visina = visina + norma.YAxis * timeStep; rola = rola + norma.X osa * timeStep; nagib = nagib + norma.ZAxis * timeStep;
Da bismo bolje razumjeli vremenski korak, pogledajmo donji redak. Ovaj je redak postavljen da čita vrijednosti iz MPU6050 točno u intervalu od 10mS ili 0,01 sekunde. Tako vrijednost timeStep deklariramo kao 0,01. I upotrijebite donji redak da zadržite program ako postoji više vremena. (millis () - timer ()) daje vrijeme potrebno za izvođenje programa do sada. Samo ga oduzmemo s 0,01 sekunde, a preostalo vrijeme samo držimo program tamo pomoću funkcije odgode.
kašnjenje ((timeStep * 1000) - (millis () - timer));
Kad završimo s čitanjem i izračunavanjem vrijednosti, možemo ih poslati na svoj telefon putem Bluetootha. Ali ovdje postoji kvaka. Bluetooth modul koji koristimo može poslati samo 1 bajt (8 bitova) što nam omogućuje slanje brojeva samo od 0 do 255. Stoga moramo podijeliti svoje vrijednosti i mapirati ga unutar ovog raspona. To se čini sljedećim redovima
ako (roll> -100 && roll <100) x = map (roll, -100, 100, 0, 100); ako (visina> -100 && visina <100) y = karta (visina, -100, 100, 100, 200); ako (temp> 0 && temp <50) t = 200 + int (temp);
Kao što možete shvatiti, vrijednost role preslikava se na 0 do 100 u varijablu x, a visina preslikava na 100 do 200 u varijablu y, a temp mapira u 200 i više u varijablu t. Iste podatke možemo koristiti za dohvaćanje podataka iz onoga što smo poslali. Na kraju te vrijednosti zapisujemo putem Bluetootha pomoću sljedećih redaka.
BT.write (x); BT.write (y); BT.write (t);
Ako ste razumjeli cijeli program, pomaknite se prema dolje da biste ga pogledali i prenesite na ploču Arduino.
Priprema aplikacije za Android pomoću obrade:
Android aplikacija za ovaj Arduino Inclinometer razvijena je pomoću IDE za obradu. Ovo je vrlo slično Arduinu i može se koristiti za stvaranje sistemske aplikacije, Android aplikacije, web dizajna i još mnogo toga. Već smo koristili obradu za razvoj nekih drugih naših cool projekata koji su navedeni u nastavku
- Ping Pong igra koristeći Arduino
- FM radio kontroliran pametnim telefonom pomoću obrade.
- Arduino radarski sustav koji koristi procesor i ultrazvučni senzor
Međutim, nije moguće objasniti cjeloviti kôd o tome kako stvoriti ovu aplikaciju. Dakle, imate dva načina da to pređete. Ili možete preuzeti APK datoteku s donje poveznice i instalirati android aplikaciju izravno na svoj telefon. Ili se pomaknite dolje da biste pronašli cjeloviti kôd za obradu i sami naučite kako to radi
Unutar ZIP datoteke možete pronaći mapu koja se naziva podaci koja se sastoji od svih slika i drugih izvora koji se trebaju učitati u android aplikaciju. Redak u nastavku odlučuje s kojim će se imenom Bluetooth automatski povezati
bt.connectToDeviceByName ("HC-06");
Unutar funkcije draw () stvari će se izvršavati više puta. Ovdje crtamo slike, prikazujemo tekst i animiramo trake na temelju vrijednosti iz Bluetooth modula. Čitanjem programa možete provjeriti što se događa unutar svake funkcije.
void draw () // Beskonačna petlja {background (0); imageMode (CENTAR); slika (logotip, širina / 2, visina / 1,04, širina, visina / 12); load_images (); textfun (); getval (); }
Konačno, treba objasniti još jednu važnu stvar, imajte na umu da smo vrijednost tona, kotrljanja i temperature podijelili na 0 do 255. Dakle, ovdje je opet vraćamo na normalne vrijednosti obrnutim preslikavanjem na normalne vrijednosti.
if (info <100 && info> 0) x = karta (info, 0, 100, - (width / 1.5) / 3, + (width / 1.5) / 3); // x = info; inače if (info <200 && info> 100) y = karta (info, 100, 200, - (width / 4.5) /0.8, + (width / 4.5) /0.8); // y = info; inače if (info> 200) temp = info -200; println (temp, x, y);
Postoje puno bolji načini za dobivanje podataka s Bluetooth modula na telefon, ali budući da je ovo samo hobi projekt, pa smo ih zanemarili, ako želite, možete duboko iskopati.
Rad Arduino Inclinometra:
Nakon što se pripremite za hardver i aplikaciju, vrijeme je da se zabavite onim što smo izgradili. Prenesite Arduino kôd na ploču, također možete ukloniti komentare na linijama Serial.println i provjeriti radi li hardver kako se očekuje pomoću serijskog monitora. Svejedno, to je potpuno neobavezno.
Nakon što se kôd prenese, pokrenite Android aplikaciju na svom mobilnom telefonu. Aplikacija bi se trebala automatski povezati s vašim HC-06 modulom i na vrhu aplikacije prikazat će se "Connect to: HC-06", kao što je prikazano dolje.

U početku će sve vrijednosti biti nula, osim vrijednosti temperature. To je zato što je Arduino za ovaj položaj kalibrirao MPU-6050 za referencu, sada možete naginjati hardver i provjeriti mijenjaju li se vrijednosti u mobilnoj aplikaciji zajedno s animacijom. Cjelovit rad aplikacije možete pronaći na dolje navedenom videozapisu. Tako sada ploču možete smjestiti bilo gdje i provjeriti je li površina savršeno izravnana.
Nadam se da ste razumjeli projekt i iz njega naučili nešto korisno. Ako sumnjate, upotrijebite odjeljak za komentare u nastavku ili forume da biste ga riješili.
