IoT HAT BME280 Sensörü ile Hava Durumu Ölçümü

Güncelleme: 24.08.2017

Hava durumuna ait ölçümler IoT senaryolarında sıklıkla kullanılır. Başlangıç çalışmalarından profesyonel uygulamalara kadar bir çok alanda sıcaklık ve nem ölçümüyle karşılaşılır.

Bosch Sensortec üretimi BME280, alanında saygın sensörlerden biridir. IoT HAT üzerinde kullandığımız BME280, yüksek hassasiyette sıcaklık, nem ve basınç ölçümü yapar. Deniz seviyesindeki hava basıncı değeri sağlandığında deniz seviyesinen yüksekliği de hesaplatabilirsiniz.

BME280'in teknik özellikleri aşağıdaki gibidir:
Sıcaklık ölçümü: -40C ile 85C arasında 0.01C çözünürlüğünde ölçüm.
Nem: %0RH ile %100RH arasında %0.008RH çözünürlüğünde bağıl nem ölçümü.
Basınç: 300 ile 1100hPa arasında 0.18Pa çözünürlüğünde ölçüm.
Yükseklik: Anlık hava durumuna göre hesaplama yapılır.

BME280 dijital bir sensör modülüdür. Dahili hafızasında fabrika çıkışı kalibrasyon değerlerini tutar. Sensörle I2C üzerinde 0x77 adresinden haberleşilir. Ölçüm okunurken belirli aralıklarla yapılan ölçümlerin ortalamaları elde edilebilir.

Bir çok gelişmiş özelliği bulunan BME280'i geliştirdiğimiz sürücü ile hiçbir ayar yapmadan hızlıca kullanabilirsiniz. Gelişmiş özelliklerini kullanmak isterseniz tüm seçeneklere sürücü üzerinden ulaşabilirsiniz. Bu kaynakta UWP uygulamasıyla BME280'den ölçüm yapmak üzerinde duracağız.

Ön Gereksinimler
- Windows 10 IoT Core ile çalışan Raspberry Pi 3.
- Turta IoT HAT ya da Raspberry Pi I2C0 hattına bağlı BME280.
- Geliştirme bilgisayarınız Windows 10 ile çalışmalı.
- Cihazlarınız aynı ağ üzerinde olmalı.
- Visual Studio'ya Windows IoT Core Project Templates for VS 2017 yüklenmiş olmalı.

Uygulama Örneği

Uygulamanın Visual Studio örnek kodlarına buradan ulaşabilirsiniz.

Uygulamayı sıfırdan oluşturmak için Visual Studio üzerinde bir UWP uygulaması oluşturun. Solution Explorer'dan References'a Windows IoT Extensions for the UWP.dll'in son sürümünü ekleyin. References'a sağ tıklayarak Manage NuGet packages'ı seçin. Turta.IoTHAT.IoTHATDriver paketini aratın ve son sürümünü yükleyin.

Bu aşamadan sonra projeniz Raspberry Pi ve IoT HAT üzerinde bulunan bileşenlerle haberleşecek yetenekleri kazanacaktır.

MainPage.xaml.cs dosyasının using statementları arasına ekleyeceğiniz satırlar uygulamanızın timer kullanmasını, IoT HAT'in üzerindeki bileşenlere erişmesine ve ölçümlerini Visual Studio'ya göndermesini sağlar.

Global alanda tanımlayacağınız BME280Sensor objesi sensörün tüm özelliklerine ulaşmanızı, ölçümleri yapmanızı sağlar. Yükseklik ölçümü yapmak istiyorsanız havadurumu servislerini kullanarak deniz seviyesi basıncını bar türünde öğrenerek double değişkenine atamalısınız. Son olarak global alanda belirli aralıklarla ölçüm yapılmasını tetikleyecek bir Timer tanımlamalısınız.

Uygulama başlangıcında sensörü yapılandırıp Timer'ı başlatmalısınız. Kaynak kodunda optional advanced sensor configuration olarak yorumlanmış ayarlar sensörün gelişmiş ayarlarıdır. Bu ayarları belirtmeyebilirsiniz. Detaylar için BME280'in datasheet'ine bakabilirsiniz. Sensörü başlattıktan sonra, uygulama açılışından 2.000 ms sonra başlayacak ve periyodik olarak ölçüm yapacak Timer'ı yapılandırın.

Timer'ın Tick eventinde bme.Read yazdığınızda sıcaklık, nem, basınç ve yükseklik ölçüm metodlarını göreceksiniz. Bu metodlar yapılandırma aşamasında belirttiğiniz parametrelere göre, kalibrasyon değerleri de hesaba katılarak ilgili ölçümleri yapar ve double türünde sonuçları döndürür.

Uygulamayı çalıştırdığınızda Visual Studio Output ya da Immediate Window'da okunan ölçümlerin listelendiğini göreceksiniz. Bu değerleri kayıt tutma ya da termostat gibi uygulamalarda kullanabilirsiniz. IoT HAT kullanıyorsanız, belirlediğiniz değer aşıldığında kart üzerindeki solid state rölelerin aktif ya da pasif olmasını sağlayarak sıcaklık kontrol uygulamanızı oluşturabilirsiniz.


Yazar: Umut Erkal - Microsoft MVP (Windows Hardware Engineering)