ARDUINO GY87 kombineret sensor testskitse
Indledning
Hvis du er en ivrig maker eller en robotik-entusiast, er du stødt på dette lille, men kraftfulde modul. Hvis du er en ivrig maker eller en robot-entusiast, er du stødt på dette lille, men kraftfulde modul BMP085-barometer. GY-87 IMU-modulet er en fantastisk måde at tilføje bevægelsesregistrering til dine projekter, som en selvbalancerende robot eller en quadcopter.
Men før du kan begynde at eksperimentere med GY-87 IMU-modulet, skal du vide, hvordan du forbinder det med dit Arduino-kort. Det er her denne blog kommer ind! I de følgende afsnit dækker vi det grundlæggende i GY-87 IMU-modulet, hvordan man sætter det op, og hvordan man skriver Arduino-koden for at læse sensordataene. Vi giver også nogle tips og ressourcer til fejlfinding af almindelige problemer.
Så hvis du er klar til at starte, så lad os dykke ned og lære om at forbinde GY-87 IMU-modulet med Arduino!
Hvad er GY-87 IMU MPU6050
Inertial measurement unit (IMU) moduler som GY-87 kombinerer mange sensorer i en enkelt pakke, såsom MPU6050 accelerometer/gyroskop, HMC5883L magnetometer og BMP085 barometrisk tryksensor. Derfor er GY-87 IMU MPU6050 et alt-i-et 9-akset bevægelsessporingsmodul, der kombinerer et 3-akset gyroskop, 3-akset accelerometer, 3-akset magnetometer og en digital bevægelsesprocessor. Det bruges meget i robotprojekter, som quadcoptere og andre ubemandede luftfartøjer (UAV'er), fordi det nøjagtigt kan måle og spore orientering og bevægelse. Det bruges også i andre applikationer, såsom navigation, spil og virtual reality.
Hardwarekomponenter
Du skal bruge følgende hardware til at forbinde GY-87 IMU MPU6050 HMC5883L BMP085-modul med Arduino.
Komponenter | Værdi | Antal |
Arduino UNO | – | 1 |
MPU6050 Sensormodul | GY-87 | 1 |
Brødbræt | – | 1 |
Jumper ledninger | – | 1 |
GY-87 med Arduino
Nu hvor du har forstået GY-87, er det tid til at interface med Arduino. For at gøre det, følg Nu hvor du har forstået GY-87, er det tid til at interface med Arduino. For at gøre det, følg
skematisk
Foretag tilslutninger i henhold til kredsløbsdiagrammet nedenfor
GY-87 IMU MPU6050 HMC5883L BMP085 ArduinoLedninger / forbindelser
Arduino | MPU6050 sensor |
5V | VCC |
GND | GND |
A4 | SDA |
A5 | SCA |
Installation af Arduino IDE
Først skal du installere Arduino IDE Software fra dens officielle webwebsted Arduino. Her er en simpel trin-for-trin guide til "Sådan installeres Arduino IDE."
Installation af biblioteker
Inden du begynder at uploade kode, skal du downloade og udpakke følgende biblioteker på /Program Files (x86)/Arduino/Libraries (standard) for at bruge sensoren med Arduino-kortet. Her er en enkel trin-for-trin guide til "Sådan tilføjer du biblioteker i Arduino IDE."
- MPU6050
- Adafruit_BMP085
- HMC5883L_Simpel
Kode
Kopier nu følgende kode og upload den til Arduino IDE Software.
#include "I2Cdev.h" #include "MPU6050.h" #include #omfatte MPU085 accelgyro; Adafruit_BMP5883 bmp; HMC6050L_Simpelt kompas; int085_t ax, ay, az; int5883_t gx, gy, gz; #define LED_PIN 16 bool blinkState = falsk; void setup() { Serial.begin(16); Wire.begin(); // initialize devices Serial.println(“Initialiserer I13C-enheder...”); // initialiser bmp9600 if (!bmp.begin()) { Serial.println(“Kunne ikke finde en gyldig BMP2-sensor, tjek (!bmp.begin()) { Serial.println(“Kunne ikke finde en gyldig BMP085-sensor, check Serial.println(accelgyro.testConnection() ? "MPU085-forbindelse lykkedes" : "MPU085-forbindelse mislykkedes" 6050, 'E'); Compass.SetSamplingMode(COMPASS_SINGLE);
Compass.SetScale(COMPASS_SCALE_130);
Compass.SetOrientation(COMPASS_HORIZONTAL_X_NORTH); // konfigurer Arduino LED til kontrol af aktivitet pinMode(LED_PIN, OUTPUT); } void loop() {
Serial.print(“Temperatur = “); Serial.print(bmp.readTemperature());
Serial.println(" *C"); Serial.print(“Pressure = “);
Serial.print(bmp.readPressure()); Serial.println("Pa"); // Beregn højde under antagelse af 'standard' barometrisk // tryk på 1013.25 millibar = 101325 Pascal Serial.print(“Altitude = “); Serial.print(bmp.readAltitude()); Serial.println(“meters”); Serial.print(“Tryk ved tætningsniveau (beregnet) = “);
Serial.print(bmp.readSealevelPressure()); Serial.println("Pa");
Serial.print(“Reel højde = “); Serial.print(bmp.readAltitude(101500));
Serial.println("meter"); // læs rå accel/gyro-målinger fra enheden accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); // vis tabulator-separerede accel/gyro x/y/z værdier 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); flydende overskrift =
Compass.GetHeadingDegrees(); Serial.print(“Overskrift: \t”); Serial.println( overskrift ); // blink LED for at indikere aktivitet blinkState = !blinkState;
digitalWrite(LED_PIN, blinkState); forsinkelse(500); }
Lad os teste det
Når du har uploadet koden, er det tid til at teste kredsløbet! Koden i Arduino-programmet har grænseflader med sensorerne ved hjælp af deres biblioteker, hvilket gør det muligt at læse sensordata og indstille forskellige konfigurationer af sensorerne. Derefter udskriver den sensordataene over den serielle port. LED'en bruges til at vise, at kredsløbet gør noget. Dette betyder, at LED'en blinker, hver gang sløjfefunktionen køres, hvilket indikerer, at koden aktivt læser sensorværdier.
Arbejdsforklaring
Koden er den vigtigste ting, som kredsløbets arbejde er baseret på. Så lad os forstå koden:.
- For det første inkluderer det adskillige biblioteker til grænseflader med sensorerne:
- "I2Cdev.h" og "MPU6050.h" er biblioteker for MPU6050 6-akset accelerometer/gyroskopsensor
- "Adafruit_BMP085.h" er et bibliotek for BMP085 barometrisk tryksensor.
- "HMC5883L_Simple.h" er et bibliotek for HMC5883L magnetometersensoren.
- Derefter skaber den globale objekter til de tre sensorer: MPU6050 accelgyro, Adafruit_BMP085 bmp og HMC5883L_Simple Compass.
- Dernæst definerer den nogle variabler til at gemme sensorværdier, såsom axe, ay og az for accelerometeret på MPU6050 og til at lede mod magnetometeret på HMC5883L. Og den definerer en LED_PIN konstant og en blinkState variabel.
- Setup()-funktionen starter en seriel kommunikation og begynder I2C-kommunikation. Derefter initialiserer den de tre sensorer:
- BMP085-sensoren initialiseres ved at kalde start()-metoden. Hvis dette returnerer falsk, hvilket indikerer, at sensoren ikke kunne findes, går programmet ind i en uendelig løkke og udskriver en fejlmeddelelse over den serielle port.
- MPU6050-sensoren initialiseres ved at kalde initialize()-metoden og kontrollere, om den fungerer korrekt. Og det satte I2C bypass aktiveret for MPU6050.
- HMC5883L-sensoren initialiseres ved at kalde nogle funktioner, såsom SetDeclination, SetSamplingMode, SetScale og SetOrientation, til indstilling af forskellige konfigurationer for sensoren.
- I loop()-funktionen læser koden data fra de tre sensorer og udskriver dem over den serielle port:
- Den aflæser temperatur, tryk, højde og tryk ved havoverfladen fra sensoren.
- Den læser rå acceleration og gyroskopmålinger fra MPU6050-sensoren.
- Den aflæser overskriften fra HMC5883L-sensoren, som er vinklen mellem den retning, som sensoren peger i, og den retning, som magnetisk nord ligger.
- Til sidst blinker LED'en for at indikere aktivitet og venter et øjeblik, før den genlæser sensorerne.
Dokumenter/ressourcer
![]() |
ARDUINO GY87 kombineret sensor testskitse [pdfBrugermanual GY87 Kombineret Sensor Test Skitse, GY87, Kombineret Sensor Test Skitse, Sensor Test Skitse, Test Skitse |