Skica kombinovanog testa senzora ARDUINO GY87
Uvod
Ako ste strastveni proizvođač ili entuzijasta robotike, naišli ste na ovaj sićušni, ali moćni modul. Ako ste strastveni proizvođač ili entuzijasta robotike, naišli ste na ovaj mali, ali moćni modul BMP085 barometar. GY-87 IMU modul je odličan način za dodavanje senzora pokreta vašim projektima, kao što je samobalansirajući robot ili kvadrokopter.
Ali prije nego što počnete eksperimentirati s GY-87 IMU modulom, morate znati kako ga povezati sa vašom Arduino pločom. Tu dolazi ovaj blog! U sljedećim paragrafima ćemo pokriti osnove GY-87 IMU modula, kako ga postaviti i kako napisati Arduino kod za čitanje podataka senzora. Također ćemo dati neke savjete i resurse za rješavanje uobičajenih problema.
Dakle, ako ste spremni za početak, hajde da zaronimo i naučimo o povezivanju GY-87 IMU modula sa Arduinom!
Šta je GY-87 IMU MPU6050?
Moduli inercijalnih mjernih jedinica (IMU) poput GY-87 kombinuju mnoge senzore u jedan paket, kao što su akcelerometar/žiroskop MPU6050, magnetometar HMC5883L i senzor barometarskog pritiska BMP085. Dakle, GY-87 IMU MPU6050 je sve-u-jednom 9-osni modul za praćenje pokreta koji kombinuje 3-osni žiroskop, 3-osni akcelerometar, 3-osni magnetometar i digitalni procesor pokreta. Mnogo se koristi u robotskim projektima, poput kvadrokoptera i drugih bespilotnih letjelica (UAV), jer može precizno mjeriti i pratiti orijentaciju i kretanje. Takođe se koristi u drugim aplikacijama, kao što su navigacija, igre i virtuelna stvarnost.
Hardverske komponente
Trebat će vam sljedeći hardver za povezivanje GY-87 IMU MPU6050 HMC5883L BMP085 modula sa Arduinom.
Komponente | Vrijednost | Kol |
Arduino UNO | – | 1 |
MPU6050 Senzorski modul | GY-87 | 1 |
Breadboard | – | 1 |
Jumper Wires | – | 1 |
GY-87 sa Arduinom
Sada kada ste razumeli GY-87, vreme je da se povežete sa Arduinom. Da biste to uradili, pratite Sada kada ste razumeli GY-87, vreme je da se povežete sa Arduinom. Da biste to uradili, pratite
Šematski
Povežite prema dijagramu strujnog kola datom u nastavku
GY-87 IMU MPU6050 HMC5883L BMP085 ArduinoOžičenje / Priključci
Arduino | MPU6050 Senzor |
5V | VCC |
GND | GND |
A4 | SDA |
A5 | SCA |
Instalacija Arduino IDE
Prvo, potrebno je da instalirate Arduino IDE softver sa njegovog zvaničnog webstranica Arduino. Evo jednostavnog vodiča korak po korak o tome “Kako instalirati Arduino IDE”.
Instaliranje biblioteka
Pre nego što počnete da prenosite kod, preuzmite i raspakujte sledeće biblioteke na /Program Files (x86)/Arduino/Biblioteke (podrazumevano) da biste koristili senzor sa Arduino pločom. Evo jednostavnog vodiča korak po korak o tome “Kako dodati biblioteke u Arduino IDE”.
- MPU6050
- Adafruit_BMP085
- HMC5883L_Simple
Kod
Sada kopirajte sljedeći kod i prenesite ga u Arduino IDE softver.
#include “I2Cdev.h” #include “MPU6050.h” #include #include MPU085 accelgyro; Adafruit_BMP5883 bmp; HMC6050L_Simple Compass; int085_t ax, ay, az; int5883_t gx, gy, gz; #define LED_PIN 16 bool blinkState = lažno; void setup() { Serial.begin(16); Wire.begin(); // inicijaliziranje uređaja Serial.println(“Inicijalizacija I13C uređaja…”); // inicijalizira bmp9600 if (!bmp.begin()) { Serial.println(“Nisam mogao pronaći važeći BMP2 senzor, provjeriti (!bmp.begin()) { Serial.println(“Nisam mogao pronaći važeći BMP085 senzor, provjerite Serial.println(accelgyro.testConnection() ? “MPU085 veza uspjela” : “MPU085 veza nije uspjela” ) 6050, 'E');amplingMode(COMPASS_SINGLE);
Compass.SetScale(COMPASS_SCALE_130);
Compass.SetOrientation(COMPASS_HORIZONTAL_X_NORTH); // konfigurirati Arduino LED za provjeru aktivnosti pinMode(LED_PIN, OUTPUT); } void loop() {
Serial.print(“Temperatura = “); Serial.print(bmp.readTemperature());
Serial.println(” *C”); Serial.print(“Pritisak = “);
Serial.print(bmp.readPressure()); Serial.println(”Pa”); // Izračunaj nadmorsku visinu uz pretpostavku 'standardnog' barometarskog // tlaka od 1013.25 milibara = 101325 Pascal Serial.print(“Altitude = “); Serial.print(bmp.readAltitude()); Serial.println(“metri”); Serial.print(“Pritisak na nivou brtve (izračunato) = “);
Serial.print(bmp.readSealevelPressure()); Serial.println(”Pa”);
Serial.print(“Prava visina = “); Serial.print(bmp.readAltitude(101500));
Serial.println(”metri”); // čitanje sirovih accel/gyro mjerenja s uređaja accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); // prikazuje accel/gyro x/y/z vrijednosti odvojene tabulatorima Serial.print(“a/g:\t”); Serial.print(ax);
Serial.print(“\t”); Serial.print(ay); Serial.print(“\t”); Serial.print(az);
Serial.print(“\t”); Serial.print(gx); Serial.print(“\t”); Serial.print(gy);
Serial.print(“\t”); Serial.println(gz); float heading =
Compass.GetHeadingDegrees(); Serial.print(“Naslov: \t”); Serial.println( naslov); // trepćuće LED za označavanje aktivnosti blinkState = !blinkState;
digitalWrite(LED_PIN, blinkState); kašnjenje (500); }
Hajde da ga testiramo
Nakon što učitate kod, vrijeme je da testirate krug! Kod u Arduino programu se povezuje sa senzorima koristeći njihove biblioteke, što mu omogućava čitanje podataka senzora i postavljanje različitih konfiguracija senzora. Zatim ispisuje podatke senzora preko serijskog porta. LED se koristi da pokaže da kolo radi nešto. To znači da LED treperi svaki put kada se pokrene funkcija petlje, što pokazuje da kod aktivno čita vrijednosti senzora.
Working Explanation
Kod je glavna stvar na kojoj se zasniva rad kola. Dakle, da razumijemo kod:.
- Prvo, uključuje nekoliko biblioteka za povezivanje sa senzorima:
- “I2Cdev.h” i “MPU6050.h” su biblioteke za MPU6050 6-osni akcelerometar/žiroskop senzor
- “Adafruit_BMP085.h” je biblioteka za BMP085 senzor barometarskog pritiska.
- “HMC5883L_Simple.h” je biblioteka za senzor magnetometra HMC5883L.
- Zatim kreira globalne objekte za tri senzora: MPU6050 accelgyro, Adafruit_BMP085 bmp i HMC5883L_Simple Compass.
- Zatim definira neke varijable za pohranjivanje vrijednosti senzora, kao što su ax, ay i az za akcelerometar MPU6050 i za magnetometar HMC5883L. I definira LED_PIN konstantu i blinkState varijablu.
- Funkcija setup() pokreće serijsku komunikaciju i započinje I2C komunikaciju. Zatim inicijalizira tri senzora:
- BMP085 senzor se inicijalizira pozivanjem metode begin(). Ako ovo vrati netačno, što ukazuje da senzor nije mogao biti pronađen, program ulazi u beskonačnu petlju i ispisuje poruku o grešci preko serijskog porta.
- Senzor MPU6050 se inicijalizira pozivanjem metode initialize() i provjerom da li radi ispravno. I postavio je I2C bypass omogućen za MPU6050.
- HMC5883L senzor se inicijalizira pozivanjem nekih funkcija, kao što su SetDeclination, SetSamplingMode, SetScale i SetOrientation, za postavljanje različitih konfiguracija za senzor.
- U funkciji loop(), kod čita podatke sa tri senzora i ispisuje ih preko serijskog porta:
- Sa senzora očitava temperaturu, pritisak, nadmorsku visinu i pritisak na nivou mora.
- Čita neobrađeno ubrzanje i mjerenja žiroskopa sa senzora MPU6050.
- Čita smjer sa senzora HMC5883L, što je ugao između smjera u kojem senzor pokazuje i smjera u kojem leži magnetni sjever.
- Konačno, treperi LED kako bi označio aktivnost i čeka trenutak prije ponovnog očitavanja senzora.
Dokumenti / Resursi
![]() |
Skica kombinovanog testa senzora ARDUINO GY87 [pdf] Korisnički priručnik GY87 Kombinovana skica testa senzora, GY87, skica kombinovanog testa senzora, skica testa senzora, probna skica |