ARDUINO GY87 Kombine Sensör Test Taslağı
giriiş
Hevesli bir yapımcı veya robotik meraklısıysanız, bu küçük ama güçlü modülle karşı karşıyasınız. Hevesli bir yapıcı veya robot meraklısıysanız, bu küçük ama güçlü modül BMP085 barometreyle karşı karşıyasınız. GY-87 IMU modülü, kendi kendini dengeleyen bir robot veya bir quadcopter gibi projelerinize hareket algılamayı eklemenin harika bir yoludur.
Ancak GY-87 IMU modülü ile deney yapmaya başlamadan önce, Arduino kartınızla nasıl arabirim oluşturacağınızı bilmeniz gerekir. İşte bu blog burada devreye giriyor! Aşağıdaki paragraflarda, GY-87 IMU modülünün temellerini, nasıl kurulacağını ve sensör verilerini okumak için Arduino kodunun nasıl yazılacağını ele alacağız. Ayrıca sık karşılaşılan sorunları gidermek için bazı ipuçları ve kaynaklar sağlayacağız.
Öyleyse, başlamaya hazırsanız, GY-87 IMU modülünün Arduino ile arabirim oluşturmasını öğrenelim!
GY-87 IMU MPU6050 nedir?
GY-87 gibi atalet ölçüm birimi (IMU) modülleri, MPU6050 ivmeölçer/jiroskop, HMC5883L manyetometre ve BMP085 barometrik basınç sensörü gibi birçok sensörü tek bir pakette birleştirir. Dolayısıyla GY-87 IMU MPU6050, 9 eksenli jiroskop, 3 eksenli ivmeölçer, 3 eksenli manyetometre ve dijital hareket işlemcisini birleştiren hepsi bir arada 3 eksenli hareket izleme modülüdür. Oryantasyonu ve hareketi doğru bir şekilde ölçebildiği ve takip edebildiği için quadcopter'lar ve diğer insansız hava araçları (İHA'lar) gibi robotik projelerde çokça kullanılır. Navigasyon, oyun ve sanal gerçeklik gibi diğer uygulamalarda da kullanılır.
Donanım Bileşenleri
Arduino ile GY-87 IMU MPU6050 HMC5883L BMP085 Modülü Arayüzü için aşağıdaki donanıma ihtiyacınız olacak.
Bileşenler | Değer | Miktar |
Arduino UNO | – | 1 |
MPU6050 Sensör Modülü | GY-87 | 1 |
Ekmek tahtası | – | 1 |
Bağlantı Kabloları | – | 1 |
Arduino ile GY-87
Artık GY-87'yi anladığınıza göre, Arduino ile arayüz oluşturma zamanı. Bunu yapmak için takip edin GY-87'yi anladığınıza göre, Arduino ile arayüz oluşturma zamanı. Bunu yapmak için takip edin
Şematik
Bağlantıları aşağıda verilen devre şemasına göre yapınız.
GY-87 IMU MPU6050 HMC5883L BMP085 ArduinoKablolama / Bağlantılar
Ardunio | MPU6050 Sensörü |
5V | VCC |
Yeraltı | Yeraltı |
A4 | SDA |
A5 | SCA |
Arduino IDE'yi Kurmak
Öncelikle resmi sitesinden Arduino IDE Yazılımını kurmanız gerekiyor. webarduino sitesi. İşte “Arduino IDE nasıl kurulur” ile ilgili adım adım basit bir kılavuz.
Kütüphaneleri Yükleme
Kodu yüklemeye başlamadan önce, aşağıdaki kitaplıkları /Program adresinden indirip sıkıştırılmış halden çıkarın. FileSensörü Arduino kartı ile kullanmak için s (x86)/Arduino/Libraries (varsayılan). İşte "Arduino IDE'de Kitaplıklar Nasıl Eklenir" hakkında basit bir adım adım kılavuz.
- MPU6050
- Adafruit_BMP085
- HMC5883L_Basit
Kod
Şimdi aşağıdaki kodu kopyalayın ve Arduino IDE Yazılımına yükleyin.
#include “I2Cdev.h” #include “MPU6050.h” #include #katmak MPU085 hızlandırıcı; Adafruit_BMP5883 bmp; HMC6050L_Basit Pusula; int085_t eksen, ay, az; int5883_t gx, gy, gz; #define LED_PIN 16 bool flashState = false; geçersiz kurulum () {Serial.begin(16); Wire.begin(); // cihazları başlat Serial.println(“I13C cihazları başlatılıyor…”); // bmp9600'i başlat if (!bmp.begin()) { Serial.println(“Geçerli bir BMP2 sensörü bulunamadı, kontrol edin (!bmp.begin()) { Serial.println(“Geçerli bir BMP085 sensörü bulunamadı, Serial.println(accelgyro.testConnection() ? "MPU085 bağlantısı başarılı" : "MPU085 bağlantısı başarısız"); accelgyro.setI6050CBypassEnabled(true); // hmc6050L ağ geçidi için baypas modunu ayarlayın // hmc2l Compass.SetDeclination(5883, 5883, 'E'); Pusula SetleriamplingMode(PUSULA_TEK);
Pusula.Ölçek Ayarla(PUSULA_ÖLÇEĞİ_130);
Compass.SetOrientation(COMPASS_HORIZONTAL_X_NORTH); // Arduino LED'i pinMode(LED_PIN, OUTPUT) etkinliğini kontrol etmek için yapılandırın; } geçersiz döngü() {
Serial.print(“Sıcaklık = “); Serial.print(bmp.readTemperature());
Serial.println(” *C”); Serial.print(“Basınç = “);
Serial.print(bmp.readPressure()); Serial.println(”Pa”); // 1013.25 milibar = 101325 Pascal Serial.print(“Rakım = “); Serial.print(bmp.readAltitude()); Serial.println(“metre”); Serial.print(“Deniz seviyesindeki basınç (hesaplanan) = “);
Serial.print(bmp.readSealevelPressure()); Serial.println(”Pa”);
Serial.print("Gerçek yükseklik = "); Serial.print(bmp.readAltitude(101500));
Serial.println(” metre”); // accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz) cihazından ham ivme/cayro ölçümlerini oku; // sekmeyle ayrılmış accel/gyro x/y/z değerlerini görüntüle Serial.print(“a/g:\t”); Serial.print(balta);
Seri.print(“\t”); Seri.print(ay); Seri.print(“\t”); Seri.print(az);
Seri.print(“\t”); Seri.print(gx); Seri.print(“\t”); Seri.print(gy);
Serial.print(“\t”); Serial.println(gz); kayan başlık =
Compass.GetHeadingDegrees(); Serial.print(“Başlık: \t”); Serial.println(başlık); // aktiviteyi belirtmek için yanıp sönen LED
digitalWrite(LED_PIN, flashState); gecikme(500); }
Haydi Test Edelim
Kodu yükledikten sonra devreyi test etme zamanı! Arduino programındaki kod, sensör verilerini okumasına ve sensörlerin çeşitli konfigürasyonlarını ayarlamasına izin veren kütüphanelerini kullanarak sensörlerle arayüz oluşturur. Daha sonra sensör verilerini seri port üzerinden yazdırır. LED, devrenin bir şeyler yaptığını göstermek için kullanılır. Bu, döngü işlevi her çalıştırıldığında LED'in yanıp söndüğü ve kodun aktif olarak sensör değerlerini okuduğunu gösterdiği anlamına gelir.
Çalışma Açıklaması
Kod, devrenin çalışmasının dayandığı en önemli şeydir. Öyleyse, kodu anlayalım:.
- İlk olarak, sensörlerle arayüz oluşturmak için birkaç kitaplık içerir:
- "I2Cdev.h" ve "MPU6050.h", MPU6050 6 eksenli ivmeölçer/jiroskop sensörü için kitaplıklardır
- “Adafruit_BMP085.h”, BMP085 barometrik basınç sensörü için bir kitaplıktır.
- "HMC5883L_Simple.h", HMC5883L manyetometre sensörü için bir kitaplıktır.
- Ardından üç sensör için genel nesneler oluşturur: MPU6050 accelgyro, Adafruit_BMP085 bmp ve HMC5883L_Simple Compass.
- Ardından, MPU6050'nin ivmeölçer için ax, ay ve az gibi sensör değerlerini depolamak ve HMC5883L'nin manyetometresine gitmek için bazı değişkenleri tanımlar. Ve bir LED_PIN sabiti ve bir flashState değişkeni tanımlar.
- setup() işlevi bir seri iletişim başlatır ve I2C iletişimini başlatır. Ardından üç sensörü başlatır:
- BMP085 sensörü, begin() yöntemi çağrılarak başlatılır. Bu, sensörün bulunamadığını belirten false döndürürse, program sonsuz bir döngüye girer ve seri port üzerinden bir hata mesajı yazdırır.
- MPU6050 sensörü, Initialize() yöntemi çağrılarak ve düzgün çalışıp çalışmadığı kontrol edilerek başlatılır. Ve MPU2 için I6050C baypasını etkinleştirdi.
- HMC5883L sensörü, SetDeclination, SetS gibi bazı işlevler çağrılarak başlatılır.ampsensör için farklı konfigürasyonlar ayarlamak için lingMode, SetScale ve SetOrientation.
- loop() işlevinde, kod üç sensörden gelen verileri okur ve seri bağlantı noktası üzerinden yazdırır:
- Sensörden deniz seviyesindeki sıcaklık, basınç, yükseklik ve basıncı okur.
- MPU6050 sensöründen ham ivme ve jiroskop ölçümlerini okur.
- Sensörün işaret ettiği yön ile manyetik kuzeyin bulunduğu yön arasındaki açı olan HMC5883L sensöründen yönü okur.
- Son olarak, etkinliği belirtmek için LED'i yanıp söner ve sensörleri yeniden okumadan önce bir süre bekler.
Belgeler / Kaynaklar
![]() |
ARDUINO GY87 Kombine Sensör Test Taslağı [pdf] Kullanıcı Kılavuzu GY87 Kombine Sensör Test Taslağı, GY87, Birleşik Sensör Test Taslağı, Sensör Test Taslağı, Test Taslağı |