ARDUINO GY87 kombinatsiyalangan datchik sinovi eskizi
Kirish
Agar siz ishtiyoqli ishlab chiqaruvchi yoki robototexnika ishqibozi bo'lsangiz, siz ushbu kichik, ammo kuchli modulga duch keldingiz. Agar siz ishtiyoqli ishlab chiqaruvchi yoki robototexnika ishqibozi bo'lsangiz, siz ushbu kichik, ammo kuchli BMP085 barometr moduliga duch keldingiz. GY-87 IMU moduli o'z-o'zini muvozanatlashtiruvchi robot yoki kvadrokopter kabi loyihalaringizga harakatni sezish qobiliyatini qo'shishning ajoyib usuli hisoblanadi.
Ammo GY-87 IMU moduli bilan tajriba o'tkazishni boshlashdan oldin, uni Arduino platangiz bilan qanday bog'lashni bilishingiz kerak. Bu blog o'sha erda keladi! Keyingi paragraflarda biz GY-87 IMU modulining asoslarini, uni qanday sozlashni va sensor ma'lumotlarini o'qish uchun Arduino kodini qanday yozishni ko'rib chiqamiz. Shuningdek, biz umumiy muammolarni bartaraf etish bo'yicha ba'zi maslahatlar va manbalarni taqdim etamiz.
Shunday qilib, agar siz boshlashga tayyor bo'lsangiz, keling, GY-87 IMU modulini Arduino bilan bog'lashni bilib olaylik!
GY-87 IMU MPU6050 nima
GY-87 kabi inertial o'lchov birligi (IMU) modullari MPU6050 akselerometr/giroskop, HMC5883L magnitometr va BMP085 barometrik bosim sensori kabi ko'plab sensorlarni bitta paketga birlashtiradi. Shunday qilib, GY-87 IMU MPU6050 - bu 9 o'qli giroskop, 3 o'qli akselerometr, 3 o'qli magnitometr va raqamli harakat protsessorini birlashtirgan 3 o'qli harakatni kuzatish moduli. U kvadrokopterlar va boshqa uchuvchisiz havo vositalari (UAVlar) kabi robotlashtirilgan loyihalarda ko'p qo'llaniladi, chunki u orientatsiya va harakatni aniq o'lchashi va kuzatishi mumkin. U navigatsiya, oʻyin va virtual reallik kabi boshqa ilovalarda ham qoʻllaniladi.
Uskuna komponentlari
Arduino bilan GY-87 IMU MPU6050 HMC5883L BMP085 modulini ulash uchun sizga quyidagi uskuna kerak bo'ladi.
Komponentlar | Qiymat | Miqdor |
Arduino UNO | – | 1 |
MPU6050 Sensor moduli | GY-87 | 1 |
Non taxtasi | – | 1 |
Jumper simlari | – | 1 |
Arduino bilan GY-87
Endi siz GY-87 ni tushunganingizdan so'ng, Arduino bilan interfeysga kirish vaqti keldi. Buni amalga oshirish uchun amal qiling GY-87 ni tushunganingizdan so'ng, Arduino bilan interfeysga kirish vaqti keldi. Buning uchun amal qiling
Sxematik
Quyida keltirilgan sxema bo'yicha ulanishlarni amalga oshiring
GY-87 IMU MPU6050 HMC5883L BMP085 ArduinoSimlar / ulanishlar
Arduino | MPU6050 Sensor |
5V | VCC |
GND | GND |
A4 | SDA |
A5 | SCA |
Arduino IDE-ni o'rnatish
Birinchidan, Arduino IDE dasturiy ta'minotini rasmiy saytidan o'rnatishingiz kerak webArduino sayti. Bu erda "Arduino IDE-ni qanday o'rnatish" bo'yicha oddiy bosqichma-bosqich qo'llanma.
Kutubxonalarni o'rnatish
Kodni yuklashni boshlashdan oldin, /Programmada quyidagi kutubxonalarni yuklab oling va oching FileSensorni Arduino platasi bilan ishlatish uchun s (x86)/Arduino/Libraries (standart). Bu erda "Arduino IDE-da kutubxonalarni qanday qo'shish" bo'yicha oddiy bosqichma-bosqich qo'llanma.
- MPU6050
- Adafruit_BMP085
- HMC5883L_Oddiy
Kod
Endi quyidagi kodni nusxa oling va uni Arduino IDE dasturiga yuklang.
#include “I2Cdev.h” #include “MPU6050.h” #include #o'z ichiga oladi MPU085 akselgiro; Adafruit_BMP5883 bmp; HMC6050L_Simple Compass; int085_t ax, ay, az; int5883_t gx, gy, gz; #define LED_PIN 16 bool blinkState = noto'g'ri; void setup() { Serial.begin(16); Wire.begin(); // qurilmalarni ishga tushirish Serial.println (“I13C qurilmalari ishga tushirilmoqda…”); // bmp9600ni ishga tushiring (!bmp.begin()) { Serial.println("To'g'ri BMP2 sensori topilmadi, tekshiring (!bmp.begin()) { Serial.println("To'g'ri BMP085 sensori topilmadi, Serial.println(accelgyro.testConnection() ni tekshiring ? “MPU085 ulanishi muvaffaqiyatli” : “MPU085 ulanishi muvaffaqiyatsiz tugadi”); accelgyro.setI6050CBypassEnabled(to'g'ri); // hmc6050L gateway uchun aylanib o'tish rejimini o'rnating // hmc2L ga shlyuzni o'rnating. 5883, 'E'); Kompas.SetSamplingMode(COMPASS_SINGLE);
Compass.SetScale(COMPASS_SCALE_130);
Compass.SetOrientation(COMPASS_HORIZONTAL_X_NORTH); // pinMode faolligini tekshirish uchun Arduino LEDni sozlash (LED_PIN, OUTPUT); } bekor loop() {
Serial.print(“Temperatura = “); Serial.print(bmp.readTemperature());
Serial.println(” *C”); Serial.print(“Bosim = “);
Serial.print(bmp.readPressure()); Serial.println("Pa"); // 'standart' barometrik hisobga olgan holda balandlikni hisoblang // bosim 1013.25 millibar = 101325 Paskal Serial.print(“Balandlik = “); Serial.print(bmp.readAltitude()); Serial.println (“metr”); Serial.print(“Muhr darajasidagi bosim (hisoblangan) = “);
Serial.print(bmp.readSealevelPressure()); Serial.println("Pa");
Serial.print(“Haqiqiy balandlik = “); Serial.print(bmp.readAltitude(101500));
Serial.println("metr"); // accelgyro.getMotion6 (&ax, &ay, &az, &gx, &gy, &gz) qurilmasidan raw accel/gyro o'lchovlarini o'qing; // yorliq bilan ajratilgan accel/gyro x/y/z qiymatlarini ko'rsatish 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); suzuvchi sarlavha =
Compass.GetHeadingDegrees(); Serial.print(“Sarlavha: \t”); Serial.println (sarlavha); // faollikni bildirish uchun LED miltillaydi blinkState = !blinkState;
digitalWrite (LED_PIN, blinkState); kechikish (500); }
Keling, sinab ko'raylik
Kodni yuklaganingizdan so'ng, sxemani sinab ko'rish vaqti keldi! Arduino dasturidagi kod sensorlar bilan ularning kutubxonalaridan foydalangan holda interfeysga kiradi, bu unga sensor ma'lumotlarini o'qish va sensorlarning turli konfiguratsiyalarini o'rnatish imkonini beradi. Keyin sensor ma'lumotlarini ketma-ket port orqali chop etadi. LED sxemasi biror narsa qilayotganini ko'rsatish uchun ishlatiladi. Bu shuni anglatadiki, loop funktsiyasi har safar ishga tushirilganda LED miltillaydi, bu kod sensor qiymatlarini faol ravishda o'qiyotganini ko'rsatadi.
Ish haqida tushuntirish
Kod sxemaning ishlashiga asoslangan asosiy narsadir. Shunday qilib, kodni tushunamiz:.
- Birinchidan, u sensorlar bilan aloqa qilish uchun bir nechta kutubxonalarni o'z ichiga oladi:
- “I2Cdev.h” va “MPU6050.h” MPU6050 6 o‘qli akselerometr/giroskop sensori uchun kutubxonalardir.
- "Adafruit_BMP085.h" - bu BMP085 barometrik bosim sensori uchun kutubxona.
- "HMC5883L_Simple.h" - HMC5883L magnitometr sensori uchun kutubxona.
- Keyin u uchta sensor uchun global ob'ektlarni yaratadi: MPU6050 accelgyro, Adafruit_BMP085 bmp va HMC5883L_Simple Compass.
- Keyinchalik, u MPU6050 akselerometri uchun ax, ay va az kabi sensor qiymatlarini saqlash va HMC5883L magnitometriga o'tish uchun ba'zi o'zgaruvchilarni belgilaydi. Va u LED_PIN doimiysi va blinkState o'zgaruvchisini belgilaydi.
- Setup() funksiyasi ketma-ket aloqani boshlaydi va I2C aloqasini boshlaydi. Keyin u uchta sensorni ishga tushiradi:
- BMP085 sensori begin() usulini chaqirish orqali ishga tushiriladi. Agar bu noto'g'ri bo'lsa, bu sensorni topib bo'lmaganligini ko'rsatsa, dastur cheksiz tsiklga kiradi va ketma-ket port orqali xato xabarini chop etadi.
- MPU6050 sensori initialize() usulini chaqirish va uning to'g'ri ishlayotganligini tekshirish orqali ishga tushiriladi. Va u MPU2 uchun yoqilgan I6050C bypassni o'rnatdi.
- HMC5883L sensori SetDeclination, SetS kabi ba'zi funktsiyalarni chaqirish orqali ishga tushiriladi.ampSensor uchun turli xil konfiguratsiyalarni o'rnatish uchun lingMode, SetScale va SetOrientation.
- Loop() funksiyasida kod uchta sensordan ma'lumotlarni o'qiydi va ketma-ket port orqali chop etadi:
- Sensordan dengiz sathida harorat, bosim, balandlik va bosimni o'qiydi.
- U MPU6050 sensoridan xom tezlashtirish va giroskop o'lchovlarini o'qiydi.
- U HMC5883L sensoridan sarlavhani o'qiydi, bu sensor ko'rsatgan yo'nalish va magnit shimol yo'nalishi o'rtasidagi burchak.
- Nihoyat, u faollikni bildirish uchun LEDni miltillaydi va sensorlarni qayta o'qishdan oldin biroz kutadi.
Hujjatlar / manbalar
![]() |
ARDUINO GY87 kombinatsiyalangan datchik sinovi eskizi [pdf] Foydalanuvchi qo‘llanmasi GY87 birlashtirilgan datchik sinovi eskizi, GY87, birlashtirilgan datchik sinovi eskizi, datchik sinovi eskizi, sinov eskizi |