Skica testiranja kombiniranog senzora ARDUINO GY87
Uvod
Ako ste strastveni proizvođač ili entuzijast robotike, naišli ste na ovaj maleni, ali moćni modul. Ako ste strastveni stvaratelj ili entuzijast robotike, naišli ste na ovaj maleni, ali moćni modul barometra BMP085. GY-87 IMU modul izvrstan je način dodavanja senzora pokreta vašim projektima, poput samobalansirajućeg robota ili kvadrokoptera.
Ali prije nego počnete eksperimentirati s GY-87 IMU modulom, morate znati kako ga povezati s Arduino pločom. Tu na scenu dolazi ovaj blog! U sljedećim odlomcima pokrit ćemo osnove GY-87 IMU modula, kako ga postaviti i kako napisati Arduino kod za čitanje podataka senzora. Također ćemo pružiti neke savjete i resurse za rješavanje uobičajenih problema.
Dakle, ako ste spremni za početak, zaronimo i naučimo o sučelju GY-87 IMU modula s Arduinom!
Što je GY-87 IMU MPU6050
Moduli inercijalnih mjernih jedinica (IMU) kao što je GY-87 kombiniraju mnoge senzore u jedan paket, kao što su MPU6050 akcelerometar/žiroskop, HMC5883L magnetometar i BMP085 barometarski senzor tlaka. Stoga je GY-87 IMU MPU6050 sve-u-jednom modul za praćenje kretanja s 9 osi koji kombinira žiroskop s 3 osi, akcelerometar s 3 osi, magnetometar s 3 osi i digitalni procesor kretanja. Mnogo se koristi u robotskim projektima, poput kvadkoptera i drugih bespilotnih letjelica (UAV), jer može točno mjeriti i pratiti orijentaciju i kretanje. Također se koristi u drugim aplikacijama, kao što su navigacija, igranje i virtualna stvarnost.
Hardverske komponente
Trebat će vam sljedeći hardver za povezivanje GY-87 IMU MPU6050 HMC5883L BMP085 modula s Arduinom.
Komponente | Vrijednost | Kol |
Arduino UNO | – | 1 |
MPU6050 Modul senzora | GY-87 | 1 |
Breadboard | – | 1 |
Premosne žice | – | 1 |
GY-87 s Arduinom
Sada kada ste razumjeli GY-87, vrijeme je za sučelje s Arduinom. Da biste to učinili, slijedite Sada kada ste razumjeli GY-87, vrijeme je za sučelje s Arduinom. Da biste to učinili, slijedite
Shematski
Spojite prema donjoj shemi strujnog kruga
GY-87 IMU MPU6050 HMC5883L BMP085 ArduinoOžičenje / Veze
Arduino | MPU6050 senzor |
5V | VCC |
GND | GND |
A4 | SDA |
A5 | SCA |
Instalacija Arduino IDE
Najprije trebate instalirati Arduino IDE softver s njegove službene strane webmjesto Arduino. Evo jednostavnog vodiča korak po korak o “Kako instalirati Arduino IDE.”
Instaliranje knjižnica
Prije nego počnete učitavati kod, preuzmite i raspakirajte sljedeće biblioteke na /Program Files (x86)/Arduino/Libraries (zadano) kako biste koristili senzor s Arduino pločom. Evo jednostavnog vodiča korak po korak o “Kako dodati biblioteke u Arduino IDE.”
- MPU6050
- Adafruit_BMP085
- HMC5883L_Jednostavno
Kodirati
Sada kopirajte sljedeći kod i prenesite ga u Arduino IDE softver.
#include “I2Cdev.h” #include “MPU6050.h” #include #uključi MPU085 akcelgiro; Adafruit_BMP5883 bmp; HMC6050L_Jednostavan kompas; int085_t sjekira, ay, az; int5883_t gx, gy, gz; #define LED_PIN 16 bool blinkState = false; void setup() { Serial.begin(16); Wire.begin(); // inicijaliziranje uređaja Serial.println(“Inicijaliziranje I13C uređaja…”); // inicijalizirati bmp9600 if (!bmp.begin()) { Serial.println(“Nije moguće pronaći valjani BMP2 senzor, provjerite (!bmp.begin()) { Serial.println(“Nije moguće pronaći valjani BMP085 senzor, provjeri Serial.println(accelgyro.testConnection() ? “MPU085 veza uspješna” : “MPU085 veza nije uspio”); accelgyro.setI6050CBypassEnabled(true);amplingMode(COMPASS_SINGLE);
Compass.SetScale(COMPASS_SCALE_130);
Compass.SetOrientation(COMPASS_HORIZONTAL_X_NORTH); // konfiguriraj Arduino LED za provjeru aktivnosti pinMode(LED_PIN, OUTPUT); } void loop() {
Serial.print(“Temperatura = “); Serial.print(bmp.readTemperature());
Serial.println(” *C”); Serial.print(“Tlak = “);
Serial.print(bmp.readPressure()); Serial.println(” Pa”); // Izračunajte visinu uz pretpostavku 'standardnog' barometrijskog // tlaka od 1013.25 milibara = 101325 Pascal Serial.print(“Altitude = “); Serial.print(bmp.readAltitude()); Serial.println(“metri”); Serial.print(“Tlak na razini mora (izračunato) = “);
Serial.print(bmp.readSealevelPressure()); Serial.println(” Pa”);
Serial.print(“Stvarna visina = “); Serial.print(bmp.readAltitude(101500));
Serial.println(”metri”); // čitanje neobrađenih mjerenja ubrzanja/žiroskopa s uređaja accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); // prikaz vrijednosti ubrzanja/žiro x/y/z odvojenih 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 =
Kompas.GetHeadingDegrees(); Serial.print(“Naslov: \t”); Serial.println( naslov); // trepće LED za označavanje aktivnosti blinkState = !blinkState;
digitalWrite(LED_PIN, blinkState); kašnjenje (500); }
Isprobajmo ga
Nakon što učitate kod, vrijeme je za testiranje kruga! Kod u programu Arduino sučeljava se sa senzorima koristeći njihove biblioteke, što mu omogućuje čitanje podataka senzora i postavljanje različitih konfiguracija senzora. Zatim ispisuje podatke senzora preko serijskog priključka. LED se koristi da pokaže da krug nešto radi. To znači da LED trepće svaki put kada se pokrene funkcija petlje, što pokazuje da kod aktivno čita vrijednosti senzora.
Radno objašnjenje
Kod je glavna stvar na kojoj se temelji rad sklopa. Dakle, shvatimo kod:.
- Prvo, uključuje nekoliko biblioteka za sučelje sa senzorima:
- “I2Cdev.h” i “MPU6050.h” su biblioteke za MPU6050 6-osni akcelerometar/žiroskopski senzor
- “Adafruit_BMP085.h” je biblioteka za senzor barometarskog tlaka BMP085.
- “HMC5883L_Simple.h” je biblioteka za senzor magnetometra HMC5883L.
- Zatim stvara 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 usmjeravanje prema magnetometru HMC5883L. I definira LED_PIN konstantu i blinkState varijablu.
- Funkcija setup() pokreće serijsku komunikaciju i započinje I2C komunikaciju. Zatim inicijalizira tri senzora:
- Senzor BMP085 inicijalizira se pozivanjem metode begin(). Ako ovo vrati false, što znači da se senzor ne može pronaći, program ulazi u beskonačnu petlju i ispisuje poruku o pogrešci preko serijskog priključka.
- Senzor MPU6050 inicijalizira se pozivanjem metode initialize() i provjerom radi li ispravno. I omogućio je I2C premosnicu za MPU6050.
- Senzor HMC5883L inicijalizira se pozivanjem nekih funkcija, kao što su SetDeclination, SetSamplingMode, SetScale i SetOrientation, za postavljanje različitih konfiguracija za senzor.
- U funkciji loop(), kod čita podatke s tri senzora i ispisuje ih preko serijskog priključka:
- Sa senzora očitava temperaturu, tlak, nadmorsku visinu i tlak na razini mora.
- Očitava sirovo ubrzanje i mjerenja žiroskopa sa senzora MPU6050.
- Očitava smjer sa senzora HMC5883L, što je kut između smjera u kojem je senzor usmjeren i smjera u kojem leži magnetski sjever.
- Naposljetku, trepće LED kako bi označio aktivnost i čeka trenutak prije ponovnog očitavanja senzora.
Dokumenti / Resursi
![]() |
Skica testiranja kombiniranog senzora ARDUINO GY87 [pdf] Korisnički priručnik GY87 Kombinirana skica ispitivanja senzora, GY87, Kombinirana skica ispitivanja senzora, Skica ispitivanja senzora, Testna skica |