ROBOTKODLA
ROBOTKODLA Genç Mucit

Eğlen, Kodla, Geleceği Tasarla

Model: BNO055 Sensör Modülü (Breakout) Orta Seviye Üretici: Bosch Sensortec

BNO055 9 Eksen Dahili Füzyon İşlemcili Akıllı Oryantasyon Sensörü

İçerisinde 32-bit ARM Cortex-M0 mikroişlemci barındıran; ivmeölçer, jiroskop ve pusula verilerini kendi içinde birleştirip doğrudan kesin açı veren akıllı sensördür.

Önemli Güvenlik ve Teknik Sınırlama Bilgisi

Piyasadaki en yetenekli oryantasyon sensörüdür. Mikrodenetleyicide tek bir matematik formülü çalıştırmadan doğrudan derece cinsinden açı (Roll, Pitch, Yaw) ve kuaterniyon çıktısı verir.

Teknik Özellikler ve Elektriksel Parametreler

Çalışma Voltajı 2.40V - 3.60V Lojik Seviye Giriş/Çıkış
Akım Tüketimi 12.3 mA Tipik çalışma modu
Haberleşme Arayüzü I2C (0x28 veya 0x29) ve UART Protokol türü
Ölçüm Aralığı Euler: Roll, Pitch, Yaw (0-360°) | Kuaterniyon: w, x, y, z Etkili çalışma sınırı
Hassasiyet / DoğrulukDahili 32-bit ARM Cortex-M0 işlemci ile donanımsal füzyonÖlçüm sapma payı
Tepki Süresi100 HzÖrnekleme hızı
Ölçüm TürüMutlak 3D Oryantasyon (Euler Açıları ve Kuaterniyonlar)Fiziksel büyüklük
Pin Sayısı6 PinModül header pinleri

Pin Bağlantıları ve Görevleri (Pinout)

Pin #Pin AdıSinyal TürüGörev & Açıklama
1 VIN Güç 3.3V - 5V DC (Adafruit modülü)
2 GND Toprak Toprak 0V
3 SDA I2C Veri I2C Data
4 SCL I2C Saat I2C Clock
5 RST Sıfırlama Reset pini
6 INT Kesme Kesme pini

Geliştirme Kartı Uyumluluk Durumu

Arduino Uno / Nano ✓ Uyumlu
5V Lojik

Doğrudan bağlantı ve yerleşik 5V desteği.

ESP32 (NodeMCU) ✓ Uyumlu
3.3V Lojik

3.3V ile tam uyumlu çalışır.

Raspberry Pi Pico ✓ Uyumlu
3.3V Lojik

MicroPython veya C/C++ SDK ile desteklenir.

BBC Micro:bit ✓ Uyumlu
3.3V Lojik

MakeCode blokları veya MicroPython ile uyumlu.

STM32 (BluePill) ✓ Uyumlu
3.3V (5V Tolerant)

5V tolerant GPIO pinleri doğrudan bağlanabilir.

Örnek Kaynak Kod Kütüphanesi

Arduino Uno Arduino C++ ✓ Test Edildi

Adafruit BNO055 ile Doğrudan Euler Açıları Okuma

Gerekli Kütüphaneler: Adafruit BNO055 and Adafruit Unified Sensor
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BNO055.h>

Adafruit_BNO055 bno = Adafruit_BNO055(55, 0x28);

void setup() {
  Serial.begin(115200);
  if(!bno.begin()) {
    Serial.println("BNO055 sensörü bulunamadı!");
    while(1);
  }
  bno.setExtCrystalUse(true); // Yüksek doğruluk için harici kristali aç
}

void loop() {
  // Doğrudan Euler açıları okunur (Kalman formülüne gerek yok!)
  sensors_event_t event;
  bno.getEvent(&event);

  Serial.print("Pusula (Yaw): ");
  Serial.print(event.orientation.x, 1);
  Serial.print("° | Pitch: ");
  Serial.print(event.orientation.y, 1);
  Serial.print("° | Roll: ");
  Serial.print(event.orientation.z, 1);
  Serial.println("°");

  delay(100);
}
Seri Monitör Çıktısı (Simülasyon):
Roll: 12.4° | Pitch: -4.2° | Yaw (Pusula): 184.6°

Çalışma Mantığı ve Fiziksel İlkeler

BNO055 Neden Bir Devrimdir?

Normalde 9 eksenli bir sensörden yön ve açı çıkarmak için mikrodenetleyicide ağır kuaterniyon ve Kalman füzyon algoritmaları çalıştırmanız gerekir. Bu durum Arduino Uno'nun tüm işlem gücünü tüketir.

Bosch BNO055, çipin içerisine entegre edilmiş bir 32-bit ARM Cortex-M0 işlemci barındırır. Tüm eksen füzyonunu kendi içinde 100 Hz hızla çözer ve Arduino'ya doğrudan Roll (Yalpalanma), Pitch (Yunuslama) ve Yaw (Pusula Açısı) değerlerini hazır derece (° olarak) gönderir!

Artıları ve Sınırlamaları

Güçlü Yönleri (Avantajlar)
  • Çip üstünde donanımsal sensör füzyonu (sıfır işlemci yükü)
  • Doğrudan Euler açıları (0-360°) ve Kuaterniyon (w,x,y,z) çıktısı
  • Otomatik arka plan manyetik kalibrasyonu
  • VR başlıkları ve insansı robotlar için altın standart
  • Sınırlamaları (Dezavantajlar)
  • Fiyatı diğer basit sensörlere göre daha yüksektir
  • I2C saat uzatma (clock stretching) kullandığından bazı yazılımsal I2C sürücülerinde özel bekleme gerektirir
  • Sık Karşılaşılan Sorunlar ve Çözümleri

  • Tam doğruluğa ulaşması için sensör ilk açıldığında havada bir kez 8 rakamı çizilerek kalibre edilmelidir.