ARDUINO GY87 kombinuoto jutiklio bandymo eskizas
Įvadas
Jei esate aistringas gamintojas arba robotikos entuziastas, susidūrėte su šiuo mažu, bet galingu moduliu. Jei esate aistringas gamintojas arba robotikos entuziastas, susidūrėte su šiuo mažu, bet galingu moduliu BMP085 barometru. GY-87 IMU modulis yra puikus būdas pridėti judesio jutiklį prie savo projektų, pavyzdžiui, savaime išsibalansuojantį robotą ar keturkopterį.
Tačiau prieš pradėdami eksperimentuoti su GY-87 IMU moduliu, turite žinoti, kaip jį susieti su „Arduino“ plokšte. Štai kur atsiranda šis dienoraštis! Tolesnėse pastraipose apžvelgsime GY-87 IMU modulio pagrindus, kaip jį nustatyti ir kaip parašyti Arduino kodą, kad būtų galima nuskaityti jutiklio duomenis. Taip pat pateiksime patarimų ir išteklių, kaip pašalinti įprastas problemas.
Taigi, jei esate pasiruošę pradėti, pasinerkite ir sužinokite apie GY-87 IMU modulio sąsają su Arduino!
Kas yra GY-87 IMU MPU6050
Inercinio matavimo vieneto (IMU) moduliai, tokie kaip GY-87, sujungia daugybę jutiklių į vieną paketą, pvz., MPU6050 akselerometrą / giroskopą, HMC5883L magnetometrą ir BMP085 barometrinio slėgio jutiklį. Taigi GY-87 IMU MPU6050 yra „viskas viename“ 9 ašių judesio sekimo modulis, kuriame yra 3 ašių giroskopas, 3 ašių akselerometras, 3 ašių magnetometras ir skaitmeninis judesio procesorius. Jis dažnai naudojamas robotų projektuose, tokiuose kaip keturkoperiai ir kiti nepilotuojami orlaiviai (UAV), nes gali tiksliai išmatuoti ir sekti orientaciją bei judėjimą. Jis taip pat naudojamas kitose programose, tokiose kaip navigacija, žaidimai ir virtualioji realybė.
Aparatūros komponentai
Norėdami sujungti GY-87 IMU MPU6050 HMC5883L BMP085 modulį su Arduino, jums reikės šios aparatinės įrangos.
Komponentai | Vertė | Kiekis |
Arduino UNO | – | 1 |
MPU6050 Jutiklio modulis | GY-87 | 1 |
Duonlentė | – | 1 |
Jumperių laidai | – | 1 |
GY-87 su Arduino
Dabar, kai supratote GY-87, laikas susieti su Arduino. Norėdami tai padaryti, vadovaukitės Dabar, kai supratote GY-87, laikas prisijungti prie „Arduino“. Norėdami tai padaryti, sekite
schemiškas
Sujunkite pagal toliau pateiktą schemą
GY-87 IMU MPU6050 HMC5883L BMP085 ArduinoLaidai / Jungtys
Arduino | MPU6050 jutiklis |
5V | VCC |
GND | GND |
A4 | SDA |
A5 | SCA |
Arduino IDE diegimas
Pirmiausia turite įdiegti „Arduino IDE“ programinę įrangą iš jos oficialaus webArduino svetainė. Čia yra paprastas žingsnis po žingsnio vadovas „Kaip įdiegti Arduino IDE“.
Bibliotekų diegimas
Prieš pradėdami įkelti kodą, atsisiųskite ir išpakuokite šias bibliotekas adresu /Program Files (x86)/Arduino/Libraries (numatytasis), kad jutiklį būtų galima naudoti su Arduino plokšte. Čia yra paprastas žingsnis po žingsnio vadovas „Kaip pridėti bibliotekas Arduino IDE“.
- MPU6050
- Adafruit_BMP085
- HMC5883L_Simple
Kodas
Dabar nukopijuokite šį kodą ir įkelkite jį į Arduino IDE programinę įrangą.
#include "I2Cdev.h" #include "MPU6050.h" #include #įtraukti MPU085 accelgyro; Adafruit_BMP5883 bmp; HMC6050L_Simple Compass; int085_t ax, ay, az; int5883_t gx, gy, gz; #define LED_PIN 16 bool blinkState = false; void setup() { Serial.begin(16); Wire.begin(); // inicijuoti įrenginius Serial.println ("Inicijuoja I13C įrenginius..."); // inicijuoti bmp9600 if (!bmp.begin()) { Serial.println("Nepavyko rasti tinkamo BMP2 jutiklio, patikrinkite (!bmp.begin())) { Serial.println("Nepavyko rasti tinkamo BMP085 jutiklio, patikrinkite Serial.println(accelgyro.testConnection() ? "MPU085 ryšys sėkmingas" : "MPU085 ryšys nepavyko" 6050, „E“);amplingMode(COMPASS_SINGLE);
Compass.SetScale(COMPASS_SCALE_130);
Compass.SetOrientation(COMPASS_HORIZONTAL_X_NORTH); // sukonfigūruoti Arduino LED, kad patikrintų veiklą pinMode(LED_PIN, OUTPUT); } void loop() {
Serial.print("Temperatūra = "); Serial.print(bmp.readTemperature());
Serial.println(" *C"); Serial.print("Slėgis = ");
Serial.print(bmp.readPressure()); Serial.println ("Pa"); // Apskaičiuokite aukštį, darant prielaidą, kad "standartinis" barometrinis // slėgis 1013.25 milibar = 101325 Pascal Serial.print("Altitude = "); Serial.print(bmp.readAltitude()); Serial.println("metrai"); Serial.print(“Slėgis jūros lygyje (apskaičiuotas) = “);
Serial.print(bmp.readSealevelPressure()); Serial.println ("Pa");
Serial.print(“Tikrasis aukštis = “); Serial.print(bmp.readAltitude(101500));
Serial.println("meters"); // nuskaityti neapdorotus accel/gyro matavimus iš įrenginio accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); // rodyti skirtukais atskirtas accel/gyro x/y/z vertes 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); plūduriuojanti kryptis =
Kompasas.GetHeadingDegrees(); Serial.print("Antraštė: \t"); Serial.println( antraštė ); // mirksi šviesos diodas, rodantis veiklą blinkState = !blinkState;
digitalWrite(LED_PIN, blinkState); delsimas (500); }
Išbandykime
Kai įkelsite kodą, laikas išbandyti grandinę! „Arduino“ programoje esantis kodas siejasi su jutikliais, naudodamas jų bibliotekas, o tai leidžia nuskaityti jutiklių duomenis ir nustatyti įvairias jutiklių konfigūracijas. Tada jis išspausdina jutiklio duomenis per nuoseklųjį prievadą. Šviesos diodas naudojamas parodyti, kad grandinė kažką daro. Tai reiškia, kad šviesos diodas mirksi kiekvieną kartą, kai paleidžiama kilpos funkcija, nurodydama, kad kodas aktyviai skaito jutiklio reikšmes.
Darbinis paaiškinimas
Kodas yra pagrindinis dalykas, kuriuo grindžiamas grandinės veikimas. Taigi, supraskime kodą:.
- Pirma, jame yra keletas bibliotekų, skirtų sąsajai su jutikliais:
- „I2Cdev.h“ ir „MPU6050.h“ yra MPU6050 6 ašių akselerometro / giroskopo jutiklio bibliotekos
- „Adafruit_BMP085.h“ yra barometrinio slėgio jutiklio BMP085 biblioteka.
- „HMC5883L_Simple.h“ yra HMC5883L magnetometro jutiklio biblioteka.
- Tada jis sukuria pasaulinius objektus trims jutikliams: MPU6050 accelgyro, Adafruit_BMP085 bmp ir HMC5883L_Simple Compass.
- Toliau apibrėžiami kai kurie kintamieji, skirti saugoti jutiklių vertes, pvz., ax, ay ir az MPU6050 akselerometrui ir HMC5883L magnetometrui. Jis apibrėžia LED_PIN konstantą ir blinkState kintamąjį.
- Funkcija setup() pradeda nuoseklųjį ryšį ir pradeda I2C ryšį. Tada jis inicijuoja tris jutiklius:
- BMP085 jutiklis inicijuojamas iškviečiant start() metodą. Jei grąžinama klaidinga, o tai rodo, kad jutiklio nepavyko rasti, programa patenka į begalinį ciklą ir per nuoseklųjį prievadą išspausdina klaidos pranešimą.
- MPU6050 jutiklis inicijuojamas iškviečiant inicijavimo () metodą ir patikrinant, ar jis veikia tinkamai. Taip pat buvo nustatytas MPU2 I6050C apėjimas.
- HMC5883L jutiklis inicijuojamas iškviečiant kai kurias funkcijas, pvz., SetDeclination, SetSamplingMode, SetScale ir SetOrientation skirtingoms jutiklio konfigūracijoms nustatyti.
- Funkcijoje loop () kodas nuskaito duomenis iš trijų jutiklių ir išspausdina juos per nuoseklųjį prievadą:
- Iš jutiklio jis nuskaito temperatūrą, slėgį, aukštį ir slėgį jūros lygyje.
- Jis nuskaito neapdorotus pagreičio ir giroskopo matavimus iš MPU6050 jutiklio.
- Jis nuskaito HMC5883L jutiklio kryptį, kuri yra kampas tarp krypties, kuria nukreiptas jutiklis, ir krypties, kuria yra magnetinė šiaurė.
- Galiausiai jis mirksi šviesos diodu, nurodydamas veiklą, ir šiek tiek palaukia, kol iš naujo nuskaito jutiklius.
Dokumentai / Ištekliai
![]() |
ARDUINO GY87 kombinuoto jutiklio bandymo eskizas [pdf] Naudotojo vadovas GY87 kombinuoto jutiklio bandymo eskizas, GY87, kombinuoto jutiklio bandymo eskizas, jutiklio bandymo eskizas, bandymo eskizas |