Schiță de testare a senzorului combinat ARDUINO GY87
Introducere
Dacă sunteți un producător pasionat sau un pasionat de robotică, ați întâlnit acest modul mic, dar puternic. Dacă sunteți un producător pasionat sau un pasionat de robotică, ați întâlnit acest barometru BMP085 cu modul mic, dar puternic. Modulul GY-87 IMU este o modalitate excelentă de a adăuga senzori de mișcare la proiectele dvs., cum ar fi un robot cu auto-echilibrare sau un quadcopter.
Dar înainte de a începe să experimentați cu modulul GY-87 IMU, trebuie să știți cum să îl interfațați cu placa Arduino. Aici intervine acest blog! În paragrafele următoare, vom acoperi elementele de bază ale modulului IMU GY-87, cum să îl configurați și cum să scrieți codul Arduino pentru a citi datele senzorului. De asemenea, vom oferi câteva sfaturi și resurse pentru depanarea problemelor comune.
Deci, dacă sunteți gata să începeți, să ne aruncăm și să învățăm despre interfața modulului IMU GY-87 cu Arduino!
Ce este GY-87 IMU MPU6050
Modulele de unitate de măsură inerțială (IMU) precum GY-87 combină mulți senzori într-un singur pachet, cum ar fi accelerometrul/giroscopul MPU6050, magnetometrul HMC5883L și senzorul de presiune barometrică BMP085. Prin urmare, GY-87 IMU MPU6050 este un modul all-in-one de urmărire a mișcării cu 9 axe care combină un giroscop cu 3 axe, un accelerometru cu 3 axe, un magnetometru cu 3 axe și un procesor digital de mișcare. Este folosit foarte mult în proiecte robotice, cum ar fi quadcoptere și alte vehicule aeriene fără pilot (UAV), deoarece poate măsura și urmări cu precizie orientarea și mișcarea. Este folosit și în alte aplicații, cum ar fi navigarea, jocurile și realitatea virtuală.
Componente hardware
Veți avea nevoie de următorul hardware pentru interfațarea modulului GY-87 IMU MPU6050 HMC5883L BMP085 cu Arduino.
Componente | Valoare | Cant |
Arduino UNO | – | 1 |
MPU6050 Modul senzor | GY-87 | 1 |
Breadboard | – | 1 |
Fire jumper | – | 1 |
GY-87 cu Arduino
Acum că ați înțeles GY-87, este timpul să interfațați cu Arduino. Pentru a face asta, urmați Acum că ați înțeles GY-87, este timpul să interfațați cu Arduino. Pentru a face asta, urmează
Schematic
Realizați conexiunile conform schemei de circuit prezentată mai jos
GY-87 IMU MPU6050 HMC5883L BMP085 ArduinoCablaj/Conexiuni
Arduino | Senzor MPU6050 |
5V | VCC |
GND | GND |
A4 | SDA |
A5 | SCA |
Instalarea Arduino IDE
Mai întâi, trebuie să instalați software-ul Arduino IDE de la oficial website-ul Arduino. Iată un ghid simplu pas cu pas despre „Cum se instalează Arduino IDE”.
Instalarea Bibliotecilor
Înainte de a începe să încărcați codul, descărcați și dezarhivați următoarele biblioteci la /Program Files (x86)/Arduino/Libraries (implicit) pentru a utiliza senzorul cu placa Arduino. Iată un ghid simplu pas cu pas despre „Cum să adăugați biblioteci în Arduino IDE”.
- MPU6050
- Adafruit_BMP085
- HMC5883L_Simple
Cod
Acum copiați următorul cod și încărcați-l în Arduino IDE Software.
#include „I2Cdev.h” #include „MPU6050.h” #include #include MPU085 accelgyro; Adafruit_BMP5883 bmp; HMC6050L_Busola simplă; int085_t ax, ay, az; int5883_t gx, gy, gz; #define LED_PIN 16 bool blinkState = false; void setup() { Serial.begin(16); Wire.begin(); // inițializați dispozitivele Serial.println(„Inițializarea dispozitivelor I13C…”); // inițializați bmp9600 dacă (!bmp.begin()) { Serial.println(„Nu s-a putut găsi un senzor BMP2 valid, verificați (!bmp.begin()) { Serial.println(„Nu s-a putut găsi un senzor BMP085 valid, verificați Serial.println(accelgyro.testConnection() ? „Conexiune MPU085 reușită”: „Conexiune MPU085 a eșuat”); 6050, „E”);amplingMode(COMPASS_SINGLE);
Compass.SetScale(COMPASS_SCALE_130);
Busolă.SetOrientation(COMPASS_HORIZONTAL_X_NORTH); // configurează LED-ul Arduino pentru verificarea activității pinMode(LED_PIN, OUTPUT); } void loop() {
Serial.print ("Temperatura = "); Serial.print(bmp.readTemperature());
Serial.println(” *C”); Serial.print(„Presiune = “);
Serial.print(bmp.readPressure()); Serial.println(”Pa”); // Calculați altitudinea presupunând presiune barometrică „standard” // de 1013.25 milibari = 101325 Pascal Serial.print(“Altitudine = “); Serial.print(bmp.readAltitude()); Serial.println(„metri”); Serial.print ("Presiunea la nivelul marinului (calculat) = ");
Serial.print(bmp.readSealevelPressure()); Serial.println(”Pa”);
Serial.print ("Altitudine reală = "); Serial.print(bmp.readAltitude(101500));
Serial.println(”metri”); // citește măsurătorile brute de accel/gyro de pe dispozitiv accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); // afișează valorile de accelerație/gyro x/y/z separate prin file 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); float heading =
Compass.GetHeadingDegrees(); Serial.print(„Titul: \t”); Serial.println( titlu ); // LED-ul clipește pentru a indica activitatea blinkState = !blinkState;
digitalWrite(LED_PIN, blinkState); întârziere (500); }
Să-l testăm
Odată ce ați încărcat codul, este timpul să testați circuitul! Codul din programul Arduino interfață cu senzorii folosind bibliotecile lor, ceea ce îi permite să citească datele senzorului și să seteze diferite configurații ale senzorilor. Apoi tipărește datele senzorului prin portul serial. LED-ul este folosit pentru a arăta că circuitul face ceva. Aceasta înseamnă că LED-ul clipește de fiecare dată când funcția buclă este rulată, indicând faptul că codul citește activ valorile senzorului.
Explicație de lucru
Codul este principalul lucru pe care se bazează funcționarea circuitului. Deci, să înțelegem codul:.
- În primul rând, include mai multe biblioteci pentru a interfața cu senzorii:
- „I2Cdev.h” și „MPU6050.h” sunt biblioteci pentru senzorul accelerometru/giroscop MPU6050 cu 6 axe
- „Adafruit_BMP085.h” este o bibliotecă pentru senzorul de presiune barometrică BMP085.
- „HMC5883L_Simple.h” este o bibliotecă pentru senzorul magnetometrului HMC5883L.
- Apoi creează obiecte globale pentru cei trei senzori: MPU6050 accelgyro, Adafruit_BMP085 bmp și HMC5883L_Simple Compass.
- Apoi, definește unele variabile pentru a stoca valorile senzorului, cum ar fi ax, ay și az pentru accelerometrul MPU6050 și pentru a se îndrepta către magnetometrul HMC5883L. Și definește o constantă LED_PIN și o variabilă blinkState.
- Funcția setup() pornește o comunicare în serie și începe comunicarea I2C. Apoi inițializează cei trei senzori:
- Senzorul BMP085 este inițializat prin apelarea metodei begin(). Dacă acest lucru revine fals, indicând că senzorul nu a putut fi găsit, programul intră într-o buclă infinită și imprimă un mesaj de eroare peste portul serial.
- Senzorul MPU6050 este inițializat apelând metoda initialize() și verificând dacă funcționează corect. Și a activat bypass-ul I2C pentru MPU6050.
- Senzorul HMC5883L este inițializat prin apelarea unor funcții, cum ar fi SetDeclination, SetSamplingMode, SetScale și SetOrientation, pentru a seta diferite configurații pentru senzor.
- În funcția loop(), codul citește datele de la cei trei senzori și le imprimă prin portul serial:
- Citește temperatura, presiunea, altitudinea și presiunea la nivelul mării de la senzor.
- Citește accelerația brută și măsurătorile giroscopului de la senzorul MPU6050.
- Citește direcția de la senzorul HMC5883L, care este unghiul dintre direcția în care este îndreptat senzorul și direcția în care se află nordul magnetic.
- În cele din urmă, LED-ul clipește pentru a indica activitatea și așteaptă un moment înainte de a reciti senzorii.
Documente/Resurse
![]() |
Schiță de testare a senzorului combinat ARDUINO GY87 [pdfManual de utilizare GY87 Schiță de testare a senzorului combinat, GY87, Schiță de testare a senzorului combinat, Schiță de testare a senzorului, Schiță de testare |