ARDUINO GY87 kombinert sensortestskisse
Introduksjon
Hvis du er en ivrig produsent eller en robotentusiast, har du kommet over denne lille, men kraftige modulen. Hvis du er en ivrig produsent eller en robotentusiast, har du kommet over denne lille, men kraftige modulen BMP085-barometeret. GY-87 IMU-modulen er en flott måte å legge til bevegelsesføling til prosjektene dine, som en selvbalanserende robot eller en quadcopter.
Men før du kan begynne å eksperimentere med GY-87 IMU-modulen, må du vite hvordan du kobler den til Arduino-kortet ditt. Det er her denne bloggen kommer inn! I de følgende avsnittene vil vi dekke det grunnleggende om GY-87 IMU-modulen, hvordan du setter den opp og hvordan du skriver Arduino-koden for å lese sensordataene. Vi vil også gi noen tips og ressurser for feilsøking av vanlige problemer.
Så hvis du er klar til å begynne, la oss dykke inn og lære om grensesnittet til GY-87 IMU-modulen med Arduino!
Hva er GY-87 IMU MPU6050
Treghetsmålingsenhet (IMU) moduler som GY-87 kombinerer mange sensorer i en enkelt pakke, for eksempel MPU6050 akselerometer/gyroskop, HMC5883L magnetometer og BMP085 barometrisk trykksensor. Derfor er GY-87 IMU MPU6050 en alt-i-ett 9-akset bevegelsessporingsmodul som kombinerer et 3-akset gyroskop, 3-akset akselerometer, 3-akset magnetometer og en digital bevegelsesprosessor. Den brukes mye i robotprosjekter, som quadcopters og andre ubemannede luftfartøyer (UAV), fordi den nøyaktig kan måle og spore orientering og bevegelse. Den brukes også i andre applikasjoner, for eksempel navigasjon, spill og virtuell virkelighet.
Maskinvarekomponenter
Du trenger følgende maskinvare for å koble GY-87 IMU MPU6050 HMC5883L BMP085-modul med Arduino.
Komponenter | Verdi | Antall |
Arduino UNO | – | 1 |
MPU6050 Sensormodul | GY-87 | 1 |
Brødbrett | – | 1 |
Jumper ledninger | – | 1 |
GY-87 med Arduino
Nå som du har forstått GY-87, er det tid for grensesnitt med Arduino. For å gjøre det, følg Nå som du har forstått GY-87, er det tid for grensesnitt med Arduino. For å gjøre det, følg
Skjematisk
Koble til i henhold til kretsskjemaet nedenfor
GY-87 IMU MPU6050 HMC5883L BMP085 ArduinoKabling / tilkoblinger
Arduino | MPU6050 sensor |
5V | VCC |
GND | GND |
A4 | SDA |
A5 | SCA |
Installerer Arduino IDE
Først må du installere Arduino IDE Software fra den offisielle webnettsted Arduino. Her er en enkel steg-for-steg guide om "Hvordan installere Arduino IDE."
Installere biblioteker
Før du begynner å laste opp kode, last ned og pakk ut følgende biblioteker på /Program Files (x86)/Arduino/Libraries (standard) for å bruke sensoren med Arduino-kortet. Her er en enkel steg-for-steg guide om "Hvordan legge til biblioteker i Arduino IDE."
- MPU6050
- Adafruit_BMP085
- HMC5883L_Simple
Kode
Kopier nå følgende kode og last den opp til Arduino IDE Software.
#include "I2Cdev.h" #include "MPU6050.h" #include #inkludere MPU085 accelgyro; Adafruit_BMP5883 bmp; HMC6050L_Enkelt kompass; int085_t øks, ay, az; int5883_t gx, gy, gz; #define LED_PIN 16 bool blinkState = usann; void setup() { Serial.begin(16); Wire.begin(); // initialize devices Serial.println(“Initialiserer I13C-enheter...”); // initialize bmp9600 if (!bmp.begin()) { Serial.println(“Kunne ikke finne en gyldig BMP2-sensor, sjekk (!bmp.begin()) { Serial.println(“Kunne ikke finne en gyldig BMP085-sensor, sjekk Serial.println(accelgyro.testConnection() ? “MPU085-tilkoblingen mislyktes”: “accelgyro.setI085CBypassEnabled(true) // sett bypass-modus for gateway til hmc6050L // initialize Compass.(S6050et); 2, 'E'); Compass.SetSamplingMode(COMPASS_SINGLE);
Compass.SetScale(COMPASS_SCALE_130);
Compass.SetOrientation(COMPASS_HORIZONTAL_X_NORTH); // konfigurer Arduino LED for å sjekke aktivitet pinMode(LED_PIN, OUTPUT); } void loop() {
Serial.print(“Temperature = “); Serial.print(bmp.readTemperature());
Serial.println(” *C”); Serial.print(“Press = “);
Serial.print(bmp.readPressure()); Serial.println(”Pa”); // Beregn høyde ved å anta 'standard' barometrisk // trykk på 1013.25 millibar = 101325 Pascal Serial.print(“Altitude = “); Serial.print(bmp.readAltitude()); Serial.println(“meters”); Serial.print(“Trykk ved forseglingsnivå (beregnet) = “);
Serial.print(bmp.readSealevelPressure()); Serial.println(”Pa”);
Serial.print(“Reell høyde = “); Serial.print(bmp.readAltitude(101500));
Serial.println("meter"); // les rå accel/gyro-målinger fra enheten accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); // vis tabulatordelte accel/gyro x/y/z-verdier 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); flyte overskrift =
Compass.GetHeadingDegrees(); Serial.print(“Overskrift: \t”); Serial.println( heading ); // blink LED for å indikere aktivitet blinkState = !blinkState;
digitalWrite(LED_PIN, blinkState); forsinkelse(500); }
La oss teste det
Når du laster opp koden, er det på tide å teste kretsen! Koden i Arduino-programmet har grensesnitt med sensorene ved hjelp av bibliotekene deres, noe som lar den lese sensordata og angi ulike konfigurasjoner av sensorene. Deretter skriver den ut sensordataene over den serielle porten. LED-en brukes til å vise at kretsen gjør noe. Dette betyr at LED-en blinker hver gang sløyfefunksjonen kjøres, noe som indikerer at koden aktivt leser sensorverdier.
Arbeidsforklaring
Koden er det viktigste som kretsens arbeid er basert på. Så la oss forstå koden:.
- For det første inkluderer den flere biblioteker for å kommunisere med sensorene:
- "I2Cdev.h" og "MPU6050.h" er biblioteker for MPU6050 6-akset akselerometer/gyroskopsensor
- "Adafruit_BMP085.h" er et bibliotek for BMP085 barometrisk trykksensor.
- "HMC5883L_Simple.h" er et bibliotek for HMC5883L magnetometersensor.
- Deretter lager den globale objekter for de tre sensorene: MPU6050 accelgyro, Adafruit_BMP085 bmp og HMC5883L_Simple Compass.
- Deretter definerer den noen variabler for å lagre sensorverdier, for eksempel ax, ay og az for akselerometeret til MPU6050 og for å gå mot magnetometeret til HMC5883L. Og den definerer en LED_PIN-konstant og en blinkState-variabel.
- Setup()-funksjonen starter en seriell kommunikasjon og starter I2C-kommunikasjon. Deretter initialiserer den de tre sensorene:
- BMP085-sensoren initialiseres ved å kalle start()-metoden. Hvis dette returnerer usann, noe som indikerer at sensoren ikke ble funnet, går programmet inn i en uendelig sløyfe og skriver ut en feilmelding over den serielle porten.
- MPU6050-sensoren initialiseres ved å kalle initialize()-metoden og sjekke om den fungerer som den skal. Og den satte I2C-bypass aktivert for MPU6050.
- HMC5883L-sensoren initialiseres ved å kalle noen funksjoner, for eksempel SetDeclination, SetSamplingMode, SetScale og SetOrientation, for å angi forskjellige konfigurasjoner for sensoren.
- I loop()-funksjonen leser koden data fra de tre sensorene og skriver dem ut over den serielle porten:
- Den leser temperatur, trykk, høyde og trykk ved havnivå fra sensoren.
- Den leser rå akselerasjon og gyroskopmålinger fra MPU6050-sensoren.
- Den leser overskriften fra HMC5883L-sensoren, som er vinkelen mellom retningen som sensoren peker i og retningen som magnetisk nord ligger.
- Til slutt blinker LED-en for å indikere aktivitet og venter et øyeblikk før den leser av sensorene på nytt.
Dokumenter / Ressurser
![]() |
ARDUINO GY87 kombinert sensortestskisse [pdfBrukerhåndbok GY87 kombinert sensortestskisse, GY87, kombinert sensortestskisse, sensortestskisse, testskisse |