Esbós de prova del sensor combinat ARDUINO GY87
Introducció
Si sou un fabricant àvid o un entusiasta de la robòtica, us heu trobat amb aquest mòdul petit però potent. Si sou un fabricant àvid o un entusiasta de la robòtica, us heu trobat amb aquest mòdul petit però potent baròmetre BMP085. El mòdul GY-87 IMU és una manera fantàstica d'afegir la detecció de moviment als vostres projectes, com ara un robot d'autoequilibri o un quadcopter.
Però abans de començar a experimentar amb el mòdul GY-87 IMU, heu de saber com connectar-lo amb la vostra placa Arduino. Aquí és on entra aquest bloc! En els paràgrafs següents, tractarem els conceptes bàsics del mòdul IMU GY-87, com configurar-lo i com escriure el codi Arduino per llegir les dades del sensor. També oferirem alguns consells i recursos per resoldre problemes habituals.
Així doncs, si esteu preparats per començar, anem a submergir-nos i aprendre a connectar el mòdul IMU GY-87 amb Arduino!
Què és GY-87 IMU MPU6050
Els mòduls d'unitat de mesura inercial (IMU) com el GY-87 combinen molts sensors en un sol paquet, com ara l'acceleròmetre/giroscopi MPU6050, el magnetòmetre HMC5883L i el sensor de pressió baromètrica BMP085. Per tant, el GY-87 IMU MPU6050 és un mòdul de seguiment de moviment de 9 eixos tot en un que combina un giroscopi de 3 eixos, un acceleròmetre de 3 eixos, un magnetòmetre de 3 eixos i un processador de moviment digital. S'utilitza molt en projectes de robòtica, com ara quadcopters i altres vehicles aeris no tripulats (UAV), perquè pot mesurar i fer un seguiment de l'orientació i el moviment amb precisió. També s'utilitza en altres aplicacions, com ara navegació, jocs i realitat virtual.
Components de maquinari
Necessitareu el següent maquinari per connectar el mòdul GY-87 IMU MPU6050 HMC5883L BMP085 amb Arduino.
Components | Valor | Quantitat |
Arduino UNO | – | 1 |
MPU6050 Mòdul sensor | GY-87 | 1 |
Tauler | – | 1 |
Cables de pont | – | 1 |
GY-87 amb Arduino
Ara que heu entès el GY-87, és hora d'interaccionar amb l'Arduino. Per fer-ho, seguiu Ara que heu entès el GY-87, és hora de connectar-vos amb l'Arduino. Per fer-ho, segueix
Esquemàtic
Feu les connexions segons l'esquema de circuits que es mostra a continuació
GY-87 IMU MPU6050 HMC5883L BMP085 ArduinoCablejat / Connexions
Arduino | Sensor MPU6050 |
5V | VCC |
GND | GND |
A4 | SDA |
A5 | SCA |
Instal·lació de l'IDE d'Arduino
Primer, heu d'instal·lar el programari Arduino IDE des del seu oficial weblloc Arduino. Aquí teniu una guia senzilla pas a pas sobre "Com instal·lar Arduino IDE".
Instal·lació de Biblioteques
Abans de començar a penjar codi, descarregueu i descomprimiu les biblioteques següents a /Program Files (x86)/Arduino/Libraries (per defecte) per utilitzar el sensor amb la placa Arduino. Aquí teniu una guia senzilla pas a pas sobre "Com afegir biblioteques a l'IDE d'Arduino".
- MPU6050
- Adafruit_BMP085
- HMC5883L_Simple
Codi
Ara copieu el codi següent i pengeu-lo al programari Arduino IDE.
#include “I2Cdev.h” #include “MPU6050.h” #include #inclou MPU085 accelgyro; Adafruit_BMP5883 bmp; HMC6050L_Brúixola simple; int085_t ax, ay, az; int5883_t gx, gy, gz; #define LED_PIN 16 bool blinkState = fals; void setup() { Serial.begin(16); Wire.begin(); // inicialitza dispositius Serial.println(“Inicialitzant dispositius I13C...”); // inicialitza bmp9600 if (!bmp.begin()) { Serial.println(“No s'ha pogut trobar un sensor BMP2 vàlid, comproveu (!bmp.begin()) { Serial.println(“No s'ha pogut trobar un sensor BMP085 vàlid, check Serial.println(accelgyro.testConnection() ? “MPU085 connection successful”: “MPU085 connection failed”); accelgyro.setI6050CBypassEnabled(true // estableix el mode bypass per a la passarel·la a hmc6050L // inicialitza hmc2l Compass.(5883Set). 5883, 'E'); Compass.SetSamplingMode(COMPASS_SINGLE);
Compass.SetScale(COMPASS_SCALE_130);
Compass.SetOrientation(COMPASS_HORIZONTAL_X_NORTH); // configurar el LED Arduino per comprovar l'activitat pinMode (LED_PIN, OUTPUT); } bucle buit() {
Serial.print ("Temperatura = "); Serial.print(bmp.readTemperature());
Serial.println ("*C"); Serial.print ("Pressió = ");
Serial.print(bmp.readPressure()); Serial.println ("Pa"); // Calcula l'altitud assumint // pressió baromètrica "estàndard" de 1013.25 mil·libars = 101325 Pascal Serial.print(“Altitud = “); Serial.print(bmp.readAltitude()); Serial.println(“metres”); Serial.print ("Presió al nivell del mar (calculat) = ");
Serial.print(bmp.readSealevelPressure()); Serial.println ("Pa");
Serial.print ("Altitud real = "); Serial.print(bmp.readAltitude(101500));
Serial.println ("metres"); // llegeix les mesures d'acceleració/giroscopi en brut del dispositiu accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); // mostra els valors d'acceleració/giroscopi x/y/z separats per tabulacions 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); encapçalament flotant =
Compass.GetHeadingDegrees(); Serial.print(“Títol: \t”); Serial.println(encapçalament); // LED intermitent per indicar l'activitat blinkState = !blinkState;
digitalWrite(LED_PIN, blinkState); retard (500); }
Provem-ho
Un cop carregueu el codi, és hora de provar el circuit! El codi del programa Arduino interactua amb els sensors mitjançant les seves biblioteques, la qual cosa li permet llegir les dades del sensor i establir diverses configuracions dels sensors. A continuació, imprimeix les dades del sensor a través del port sèrie. El LED s'utilitza per mostrar que el circuit està fent alguna cosa. Això significa que el LED parpelleja cada vegada que s'executa la funció de bucle, indicant que el codi està llegint activament els valors del sensor.
Explicació de treball
El codi és el principal en què es basa el funcionament del circuit. Per tant, entenem el codi:.
- En primer lloc, inclou diverses biblioteques per connectar amb els sensors:
- "I2Cdev.h" i "MPU6050.h" són biblioteques per al sensor acceleròmetre/giroscopi de 6050 eixos MPU6
- "Adafruit_BMP085.h" és una biblioteca per al sensor de pressió baromètrica BMP085.
- "HMC5883L_Simple.h" és una biblioteca per al sensor del magnetòmetre HMC5883L.
- A continuació, crea objectes globals per als tres sensors: MPU6050 accelgyro, Adafruit_BMP085 bmp i HMC5883L_Simple Compass.
- A continuació, defineix algunes variables per emmagatzemar els valors del sensor, com ara ax, ay i az per a l'acceleròmetre de MPU6050 i per dirigir-se al magnetòmetre de HMC5883L. I defineix una constant LED_PIN i una variable blinkState.
- La funció setup() inicia una comunicació en sèrie i comença la comunicació I2C. A continuació, inicialitza els tres sensors:
- El sensor BMP085 s'inicialitza cridant al mètode begin(). Si això torna fals, indicant que el sensor no s'ha pogut trobar, el programa entra en un bucle infinit i imprimeix un missatge d'error al port sèrie.
- El sensor MPU6050 s'inicialitza cridant al mètode initialize() i comprovant si funciona correctament. I va establir el bypass I2C habilitat per a MPU6050.
- El sensor HMC5883L s'inicialitza cridant algunes funcions, com ara SetDeclination, SetSamplingMode, SetScale i SetOrientation, per configurar diferents configuracions per al sensor.
- A la funció loop(), el codi llegeix dades dels tres sensors i les imprimeix al port sèrie:
- Llegeix la temperatura, la pressió, l'altitud i la pressió al nivell del mar des del sensor.
- Llegeix mesures brutes d'acceleració i giroscopi des del sensor MPU6050.
- Llegeix l'encapçalament del sensor HMC5883L, que és l'angle entre la direcció en què apunta el sensor i la direcció en què es troba el nord magnètic.
- Finalment, parpelleja el LED per indicar activitat i espera un moment abans de tornar a llegir els sensors.
Documents/Recursos
![]() |
Esbós de prova del sensor combinat ARDUINO GY87 [pdfManual d'usuari Esbós de prova de sensor combinat GY87, GY87, esbós de prova de sensor combinat, esbós de prova de sensor, esbós de prova |