ARDUINO GY87 sentsore konbinatuen probaren krokisa
Sarrera
Egile amorratua edo robotika zalea bazara, modulu txiki baina indartsu honekin egin duzu topo Egile amorratua edo robotika zalea bazara, BMP085 barometro txiki baina indartsu honekin topatu duzu. GY-87 IMU modulua zure proiektuei mugimendu-sentsoreak gehitzeko modu bikaina da, auto-orekatze-robot bat edo quadcopter bat bezala.
Baina GY-87 IMU moduluarekin esperimentatzen hasi aurretik, zure Arduino plakarekin nola konektatzen den jakin behar duzu. Hor sartzen da blog hau! Hurrengo paragrafoetan, GY-87 IMU moduluaren oinarriak azalduko ditugu, nola konfiguratu eta Arduino kodea nola idatzi sentsorearen datuak irakurtzeko. Ohiko arazoak konpontzeko aholku eta baliabide batzuk ere emango ditugu.
Beraz, hasteko prest bazaude, murgil gaitezen eta ikas dezagun GY-87 IMU modulua Arduinorekin konektatzen!
Zer da GY-87 IMU MPU6050
GY-87 bezalako neurketa inertzial-unitateko (IMU) moduluek sentsore asko konbinatzen dituzte pakete bakar batean, hala nola MPU6050 azelerometro/giroskopioa, HMC5883L magnetometroa eta BMP085 presio barometrikoa. Hori dela eta, GY-87 IMU MPU6050 9 ardatzeko mugimenduaren jarraipena egiteko modulua da, 3 ardatzeko giroskopioa, 3 ardatzeko azelerometroa, 3 ardatzeko magnetometroa eta mugimendu digitalaren prozesadorea konbinatzen dituena. Asko erabiltzen da proiektu robotikoetan, kuadrikopteroetan eta beste tripulaziorik gabeko aireko ibilgailuetan (UAV) bezala, orientazioa eta mugimendua zehaztasunez neurtu eta jarrai ditzakeelako. Beste aplikazio batzuetan ere erabiltzen da, hala nola nabigazioan, jokoetan eta errealitate birtualean.
Hardware osagaiak
Hardware hau beharko duzu GY-87 IMU MPU6050 HMC5883L BMP085 Modulua Arduinorekin konektatzeko.
Osagaiak | Balioa | Kot |
Arduino UNO | – | 1 |
MPU6050 Sentsore-modulua | GY-87 | 1 |
Breadboard | – | 1 |
Jumper hariak | – | 1 |
GY-87 Arduinorekin
Orain GY-87 ulertu duzula, Arduinorekin interfazea egiteko garaia da. Horretarako, jarraitu Orain GY-87 ulertu duzula, Arduinorekin interfazea egiteko garaia da. Horretarako, jarraitu
schematic
Egin konexioak behean ematen den zirkuitu-eskemaren arabera
GY-87 IMU MPU6050 HMC5883L BMP085 ArduinoKableatua / Konexioak
Arduino | MPU6050 sentsorea |
5V | VCC |
GND | GND |
A4 | SDA |
A5 | SCA |
Arduino IDE instalatzea
Lehenik eta behin, Arduino IDE softwarea bere ofizialetik instalatu behar duzu webgunea Arduino. Hona hemen "Arduino IDE nola instalatu"-ri buruzko urratsez urratseko gida sinple bat.
Liburutegiak instalatzea
Kodea kargatzen hasi aurretik, deskargatu eta deskonprimitu liburutegi hauek /Program helbidean Files (x86)/Arduino/Libraries (lehenetsia) Arduino plakarekin sentsorea erabiltzeko. Hona hemen urratsez urrats gida sinple bat "Nola gehitu liburutegiak Arduino IDE-n".
- MPU6050
- Adafruit_BMP085
- HMC5883L_Simple
Kodea
Orain kopiatu hurrengo kodea eta igo Arduino IDE Softwarera.
#include “I2Cdev.h” #include “MPU6050.h” #include #sartu MPU085 azelgiroa; Adafruit_BMP5883 bmp; HMC6050L_Iparrorratza sinplea; int085_t ax, ay, az; int5883_t gx, gy, gz; #define LED_PIN 16 bool blinkState = false; void konfigurazioa () { Serial.begin (16); Wire.hasi(); // gailuak hasieratu Serial.println(“I13C gailuak hasieratzen…”); // bmp9600 hasieratu if (!bmp.begin()) { Serial.println ("Ezin izan da BMP2 sentsore baliozkorik aurkitu, egiaztatu (!bmp.begin()) { Serial.println ("Ezin izan da BMP085 sentsore baliozkorik aurkitu, egiaztatu Serial.println(accelgyro.testConnection() ? "MPU085 konexioa arrakastatsua": "MPU085 konexioa huts egin du"); accelgyro.setI6050CBypassEnabled (egia); // atebiderako saihesbide modua ezarri hmc6050L-ra // hmc2l Compass (5883Set5883,Declination) hasieratu 23, 'E'); Iparrorratza.MultsoakamplingMode(COMPASS_SINGLE);
Compass.SetScale(COMPASS_SCALE_130);
Iparrorratza.SetOrientation(COMPASS_HORIZONTAL_X_NORTH); // Arduino LED konfiguratu jarduera pinMode (LED_PIN, OUTPUT) egiaztatzeko; } void loop() {
Serial.print ("Tenperatura = "); Serial.print(bmp.readTemperature());
Serial.println ("*C"); Serial.print ("Presioa = ");
Serial.print(bmp.readPressure()); Serial.println ("Pa"); // Kalkulatu altitudea 'estandarra' barometrikoa // 1013.25 milibar = 101325 Pascal Serial.print(“Altitude = “); Serial.print(bmp.readAltitude()); Serial.println ("metroak"); Serial.print ("Presioa itsas mailan (kalkulatua) = ");
Serial.print(bmp.readSealevelPressure()); Serial.println ("Pa");
Serial.print ("Altuera erreala = "); Serial.print(bmp.readAltitude(101500));
Serial.println ("metroak"); // irakurri accel/gyro neurketa gordinak accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); // tabulazioz bereizitako accel/gyro x/y/z balioak bistaratu 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 =
Iparrorratza.GetHeadingDegrees(); Serial.print(“Izenburua: \t”); Serial.println( goiburua ); // LED keinua jarduera adierazteko blinkState = !blinkState;
digitalWrite(LED_PIN, blinkState); atzerapena(500); }
Probatu dezagun
Kodea igo ondoren, zirkuitua probatzeko ordua da! Arduino programako kodea sentsoreekin interfazea egiten du haien liburutegiak erabiliz, eta horri esker sentsoreen datuak irakur ditzake eta sentsoreen hainbat konfigurazio ezar ditzake. Ondoren, sentsorearen datuak inprimatzen ditu serieko atakatik. LEDa zirkuitua zerbait egiten ari dela erakusteko erabiltzen da. Horrek esan nahi du LED-ak begizta funtzioa exekutatzen den bakoitzean keinu egiten duela, kodea aktiboki sentsoreen balioak irakurtzen ari dela adieraziz.
Lan Azalpena
Kodea da zirkuituaren funtzionamenduan oinarritzen den gauza nagusia. Beraz, uler dezagun kodea:.
- Lehenik eta behin, hainbat liburutegi biltzen ditu sentsoreekin interfazea egiteko:
- "I2Cdev.h" eta "MPU6050.h" MPU6050 6 ardatzeko azelerometro/giroskopio sentsorerako liburutegiak dira
- "Adafruit_BMP085.h" BMP085 presio barometrikoko sentsorerako liburutegia da.
- "HMC5883L_Simple.h" HMC5883L magnetometro sentsorerako liburutegia da.
- Ondoren, hiru sentsoreentzako objektu globalak sortzen ditu: MPU6050 accelgyro, Adafruit_BMP085 bmp eta HMC5883L_Simple Compass.
- Ondoren, aldagai batzuk definitzen ditu sentsoreen balioak gordetzeko, hala nola ax, ay eta az MPU6050-ren azelerometrorako eta HMC5883L-ren magnetometrorako. Eta LED_PIN konstante bat eta blinkState aldagai bat definitzen ditu.
- Setup() funtzioak serieko komunikazioa abiarazten du eta I2C komunikazioa hasten da. Ondoren, hiru sentsoreak hasieratzen ditu:
- BMP085 sentsorea begin() metodoa deituz hasten da. Hau faltsua itzultzen bada, sentsorea ezin izan dela aurkitu adieraziz, programak begizta infinitu batean sartzen du eta errore-mezu bat inprimatzen du serieko atakan.
- MPU6050 sentsorea initialize() metodora deituz eta behar bezala funtzionatzen duen egiaztatuz hasieratzen da. Eta MPU2-rako I6050C saihesbidea gaituta ezarri zuen.
- HMC5883L sentsorea funtzio batzuei deituz abiarazten da, hala nola SetDeclination, SetSamplingMode, SetScale eta SetOrientation, sentsorearen konfigurazio desberdinak ezartzeko.
- Loop() funtzioan, kodeak hiru sentsoreetako datuak irakurtzen ditu eta serieko atakan inprimatzen ditu:
- Sentsoretik tenperatura, presioa, altitudea eta presioa itsas mailan irakurtzen ditu.
- MPU6050 sentsorearen azelerazio- eta giroskopio-neurri gordinak irakurtzen ditu.
- HMC5883L sentsorearen goiburua irakurtzen du, hau da, sentsoreak erakusten duen norabidearen eta ipar magnetikoaren norabidearen arteko angelua.
- Azkenik, LED-a keinu egiten du jarduera adierazteko eta une bat itxaroten du sentsoreak berrirakurtzeko.
Dokumentuak / Baliabideak
![]() |
ARDUINO GY87 sentsore konbinatuen probaren krokisa [pdfErabiltzailearen eskuliburua GY87 Sentsoreen proba konbinatuaren krokisa, GY87, sentsorearen proba konbinatuaren krokisa, sentsorearen probaren krokisa, probaren krokisa |