Arduino BMP280 Basınç ve Sıcaklık Sensörü Kullanımı | HW-611 E/P 280

Arduino ile BMP280 basınç ve sıcaklık sensörünün bağlantısına, nasıl kullanıldığına ve örnek koduna bakıyor olacağız bu yazıda. Atmosferik basıncı ölçebilen bu minik dostumuz, basıncın yüksekliğe bağlı bir değişken olması sebebiyle yaklaşık (deniz seviyesinden) yüksekliği de ölçtüğünü hatta kendimizi biraz zorlarsak, dikey hızı bile ölçebileceğimizi söyleyebilirim.

bmp280 basınç ve sıcaklık sensör bordu

Yukarıdaki görsele göre konuşacak olursak, BMP280 pin isimleri yukarıdan aşağıya şu şekilde; 

  • SDD, -öyle yazıyor aslında SDO olmalı gibi geldi bana,
  • CSB
  • SDA I2C Data Hattı  Arduino SDA pinine, ya da A5 pinine
  • SCL I2C Clock Hattı Arduino SCL pinine , ya da A4 pinine
  • GND Ground Arduino GND pinlerinden herhangi birine
  • VCC Power Arduino 5V pinine bağlanacak.

BMP280 I2C ile Kullanımı

Bu sensör için değişik firmaların değişik formatlarda ürettiği kartlar mevcut, bendeki görseldekinin aynısı dolayısıyla ona göre yazıyor olacağım. Sensörün I2C adresinin donanımsal olarak belirlenmesi, SDD pininin dijital seviyesine bağlanmış vaziyette. SDD pini pull-up yapılmışsa, yani bir direnç ile VCC 'ye bağlanmışsa BMP280 I2C adresi 0x77 oluyor, pull-down yapılmışsa 0x76 oluyor. Dikkat etmeniz gereken ilk husus kartınızda donanımsal olarak I2c adresinin ne seçildiğine bakmaktır. 

Arduino i2c scanner ile i2c adres tespiti

Donanıma bakmasak ne olur, adresi bulamaz mıyız, tabii ki bulabiliriz, bağlantıları yapın, Arduino 'yu bilgisayara bağlayıp Arduino IDE 'den Dosya*Örnekler*Wire->i2c_scanner örneğini açın ve karta yükleyin. Serial Monitör 'ü açıp bakın, baud rate i 9600 e ayarlamayı unutmayın. Şöyle bir sonuç görüyor olmanız gerekiyor:

Scanning...
I2C device found at address 0x76  !
done

Bu durumda sensörümüz çalışıyor ve i2c adresi 0x76 'dır durumundan emin olabiliriz.

BMP280 Adafruit Kütüphanesinin Yüklenmesi

Arduino IDE 'de Araçlar menüsünden Kütüphaneleri Yönet seçeneğinden library manager 'a ulaşıyoruz. Arama barına BMP280 yazıp Adafruit 'in adının geçtiği -muhtemelen en üstte çıkar- kütüphaneyi yüklüyoruz.

BMP280 sensör test

Test için Arduino IDE Dosya*Örnekler*Adafruit BMP280->Bmp280test i seçiyoruz. Karşımıza çıkan kodu karta yükleyip Seri Monitore bakıyoruz (baud:9600). Herşey yolunda giderse sensörün bize sıcaklık hava basıncı ve tahmini yükseklik verilerini yazdırıyor olması gerekiyor, bu verileri görüyorsanız başardınız demektir. Görmüyorsanız ve sizi şöyle bir metin karşılamışsa :

BMP280 test
Could not find a valid BMP280 sensor, check wiring or try a different address!
SensorID was: 0x0
        ID of 0xFF probably means a bad address, a BMP 180 or BMP 085
   ID of 0x56-0x58 represents a BMP 280,
        ID of 0x60 represents a BME 280.
        ID of 0x61 represents a BME 680.

yapmanız gereken şey : 
  status = bmp.begin();

satırını
  status = bmp.begin(0x76);

olarak değiştirmektir. ve bingo verilerimiz şu şekilde gelir :

BMP280 test
Temperature = 30.41 *C
Pressure = 99853.34 Pa
Approx altitude = 123.25 m

Eğer her iki durumda da sensörden veri alamıyorsanız sensörünüz çalışmıyor olabilir, tabii başka bir konu daha var: Eğer ki seri monitörde 
SensorID was: kısmından sonra bir değer görüyorsanız, sensörünüz BMP 280 değil demek oluyor, peki ne olabilir sensörünüz :
SensorID was: 0XFF  , adresiniz yanlış olabilir, ya da BMP180 BMP085 sensörlerinde biri var elinizde
SensorID was: 0X60 sensörünüz BME 280, bu sensör için de adafruit library si mevcut aynı yolları izleyerek sonuca ulaşabilirsiniz.
SensorID was: 0X61 sensörünüz BME680

Fonksiyonlara kısaca bakacak olursak :
    Serial.print(bmp.readTemperature());

Bizlere sıcaklık değerini döndürüyor,
    Serial.print(bmp.readPressure());

atmosferik hava basıncını döndürüyor,
    Serial.print(bmp.readAltitude(1013.25)); /* Adjusted to local forecast! */

deniz seviyesinden olan yüksekliğinizi döndürüyor, artık bu verilerle ne yapacağınız sizin projenize ya da amacınıza bağlı, bir ekrana basabilir, nodemcu ile bir apiye gönderebilir vs gibi bir çok şey yapabilirsiniz.
Konuyu elimden geldiğince detaylıca yazmaya çalıştım, yine de içinden çıkamadığınız herhangi bir şey olursa yorumlarda sorabilirsiniz.
Herkese kolay gelsin!

Yorumlar

Bu blogdaki popüler yayınlar

Arduino DHT11 Kullanımı - Arduino Kod - Arduino Termometre yapımı

Arduino ile voltaj okuma | Arduino ile voltmetre | Arduino ADC örnek Kod

Arduino Oled Ekran Kullanımı | SSD1306 Detaylı Tüm Fonksiyonlar

Arduino 16x2 (2x16) LCD Ekran Kullanımı | 4bit parallel mode - 16x2 LCD ekran pin bağlantıları

Arduino ile Yüksek Voltaj Ölçme | SMPS DC Bara Ölçümü

Arduino UNO güç özellikleri

Arduino LM35 Sıcaklık Sensörü İle Sıcaklık Ölçme

16x2 Lcd Türkçe Karakter Sorunu Çözüldü! Arduino LCD ekrana yazı yazma - Arduino 16x2 Lcd ekran kullanımı

Arduino Röle Modül Kullanımı

DMD2TUR | Arduino P10 Led Panel için Türkçe Karakter Desteği | Arduino P10 Led panel Türkçe yazı yazma