Testna skica kombiniranega senzorja ARDUINO GY87
Uvod
Če ste navdušen izdelovalec ali navdušenec nad robotiko, ste naleteli na ta majhen, a zmogljiv modul. Če ste navdušen izdelovalec ali navdušenec nad robotiko, ste naleteli na ta majhen, a zmogljiv modul barometra BMP085. Modul GY-87 IMU je odličen način za dodajanje zaznavanja gibanja vašim projektom, kot je samouravnotežujoči robot ali kvadrokopter.
Toda preden lahko začnete eksperimentirati z modulom GY-87 IMU, morate vedeti, kako ga povezati s svojo ploščo Arduino. Tu nastopi ta blog! V naslednjih odstavkih bomo obravnavali osnove modula GY-87 IMU, kako ga nastaviti in kako napisati kodo Arduino za branje podatkov senzorja. Zagotovili bomo tudi nekaj nasvetov in virov za odpravljanje pogostih težav.
Torej, če ste pripravljeni začeti, se poglobimo in se poučimo o povezovanju modula GY-87 IMU z Arduinom!
Kaj je GY-87 IMU MPU6050
Moduli inercialne merilne enote (IMU), kot je GY-87, združujejo številne senzorje v enem paketu, kot so merilnik pospeška/žiroskop MPU6050, magnetometer HMC5883L in senzor barometričnega tlaka BMP085. Zato je GY-87 IMU MPU6050 vse-v-enem 9-osni modul za sledenje gibanju, ki združuje 3-osni žiroskop, 3-osni merilnik pospeška, 3-osni magnetometer in digitalni procesor gibanja. Veliko se uporablja v robotskih projektih, kot so kvadrokopterji in druga brezpilotna zračna vozila (UAV), saj lahko natančno meri in sledi orientaciji in gibanju. Uporablja se tudi v drugih aplikacijah, kot so navigacija, igre in virtualna resničnost.
Komponente strojne opreme
Potrebovali boste naslednjo strojno opremo za povezovanje modula GY-87 IMU MPU6050 HMC5883L BMP085 z Arduinom.
Komponente | Vrednost | Količina |
Arduino UNO | – | 1 |
MPU6050 Modul senzorja | GY-87 | 1 |
Breadboard | – | 1 |
Premostitvene žice | – | 1 |
GY-87 z Arduinom
Zdaj, ko ste razumeli GY-87, je čas za vmesnik z Arduinom. Če želite to narediti, sledite. Zdaj, ko razumete GY-87, je čas za vmesnik z Arduinom. Če želite to narediti, sledite
shematski
Izvedite povezave v skladu s spodnjim diagramom vezja
GY-87 IMU MPU6050 HMC5883L BMP085 ArduinoOžičenje / povezave
Arduino | Senzor MPU6050 |
5V | VCC |
GND | GND |
A4 | SDA |
A5 | SCA |
Namestitev Arduino IDE
Najprej morate namestiti programsko opremo Arduino IDE iz njenega uradnika webmesto Arduino. Tukaj je preprost vodnik po korakih za "Kako namestiti Arduino IDE."
Namestitev knjižnic
Preden začnete nalagati kodo, prenesite in razpakirajte naslednje knjižnice na /Program Files (x86)/Arduino/Libraries (privzeto), da lahko uporabite senzor s ploščo Arduino. Tukaj je preprost vodnik po korakih o »Kako dodati knjižnice v Arduino IDE«.
- MPU6050
- Adafruit_BMP085
- HMC5883L_Enostavno
Koda
Zdaj kopirajte naslednjo kodo in jo naložite v programsko opremo Arduino IDE.
#include “I2Cdev.h” #include “MPU6050.h” #include #vključi MPU085 pospeševalnik; Adafruit_BMP5883 bmp; HMC6050L_Preprost kompas; int085_t sekira, ay, az; int5883_t gx, gy, gz; #define LED_PIN 16 bool blinkState = false; void setup() { Serial.begin(16); Wire.begin(); // inicializacija naprav Serial.println(“Inicializacija naprav I13C…”); // inicializiraj bmp9600 if (!bmp.begin()) { Serial.println("Ni bilo mogoče najti veljavnega senzorja BMP2, preverite (!bmp.begin()) { Serial.println("Ni bilo mogoče najti veljavnega senzorja BMP085, preverite Serial.println(accelgyro.testConnection() ? “Povezava MPU085 uspešna” : “Povezava MPU085 ni uspela”); 6050, 'E'); Compass.SetSamplingMode(COMPASS_SINGLE);
Compass.SetScale(COMPASS_SCALE_130);
Compass.SetOrientation(COMPASS_HORIZONTAL_X_NORTH); // konfiguriraj Arduino LED za preverjanje 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 nadmorsko višino ob predpostavki 'standardnega' barometričnega // tlaka 1013.25 milibara = 101325 Pascal Serial.print(“Višina = “); Serial.print(bmp.readAltitude()); Serial.println("metri"); Serial.print(“Tlak na morski gladini (izračunan) = “);
Serial.print(bmp.readSealevelPressure()); Serial.println(”Pa”);
Serial.print(“Realna nadmorska višina = “); Serial.print(bmp.readAltitude(101500));
Serial.println(”metri”); // branje neobdelanih meritev pospeška/žiroskopa iz naprave accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); // prikaz vrednosti pospeška/žiroskopa x/y/z, ločenih s tabulatorji 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); plavajoči naslov =
Compass.GetHeadingDegrees(); Serial.print(“Naslov: \t”); Serial.println(naslov); // utripajoča LED za prikaz dejavnosti blinkState = !blinkState;
digitalWrite(LED_PIN, blinkState); zamuda (500); }
Preizkusimo ga
Ko naložite kodo, je čas, da preizkusite vezje! Koda v programu Arduino se povezuje s senzorji s pomočjo njihovih knjižnic, kar omogoča branje podatkov senzorjev in nastavitev različnih konfiguracij senzorjev. Nato natisne podatke senzorja prek serijskih vrat. LED se uporablja za prikaz, da vezje nekaj počne. To pomeni, da lučka LED utripa vsakič, ko se zažene funkcija zanke, kar pomeni, da koda aktivno bere vrednosti senzorja.
Delovna razlaga
Koda je glavna stvar, na kateri temelji delovanje vezja. Torej, razumejmo kodo:.
- Prvič, vključuje več knjižnic za vmesnik s senzorji:
- »I2Cdev.h« in »MPU6050.h« sta knjižnici za 6050-osni senzor pospeška/žiroskopa MPU6
- “Adafruit_BMP085.h” je knjižnica za senzor barometričnega tlaka BMP085.
- “HMC5883L_Simple.h” je knjižnica za senzor magnetometra HMC5883L.
- Nato ustvari globalne objekte za tri senzorje: MPU6050 accelgyro, Adafruit_BMP085 bmp in HMC5883L_Simple Compass.
- Nato definira nekaj spremenljivk za shranjevanje vrednosti senzorjev, kot so ax, ay in az za merilnik pospeška MPU6050 in za usmeritev k magnetometru HMC5883L. In definira konstanto LED_PIN in spremenljivko blinkState.
- Funkcija setup() začne serijsko komunikacijo in začne komunikacijo I2C. Nato inicializira tri senzorje:
- Senzor BMP085 se inicializira s klicem metode begin(). Če to vrne false, kar pomeni, da senzorja ni bilo mogoče najti, program vstopi v neskončno zanko in natisne sporočilo o napaki prek serijskih vrat.
- Senzor MPU6050 se inicializira s klicem metode initialize() in preverjanjem, ali deluje pravilno. In nastavil je omogočen obvod I2C za MPU6050.
- Senzor HMC5883L se inicializira s klicem nekaterih funkcij, kot sta SetDeclination, SetSamplingMode, SetScale in SetOrientation za nastavitev različnih konfiguracij za senzor.
- V funkciji loop() koda bere podatke iz treh senzorjev in jih natisne prek serijskih vrat:
- S senzorja bere temperaturo, tlak, nadmorsko višino in tlak na morski gladini.
- Iz senzorja MPU6050 bere neobdelane meritve pospeška in žiroskopa.
- S senzorja HMC5883L bere smer, ki je kot med smerjo, v katero je senzor usmerjen, in smerjo, v kateri leži magnetni sever.
- Nazadnje utripa lučka LED, ki označuje aktivnost, in počaka trenutek, preden ponovno odčita senzorje.
Dokumenti / Viri
![]() |
Testna skica kombiniranega senzorja ARDUINO GY87 [pdfUporabniški priročnik GY87 Kombinirana preskusna skica senzorja, GY87, Kombinirana preskusna skica senzorja, Testna skica senzorja, Testna skica |