Sensörden ortam koşullarını okuma
IoT cihazları için en yaygın senaryolardan biri, ortam koşullarının algılanmasıdır. Sıcaklık, nem, Barometrik basıncı ve daha fazlasını izlemek için çeşitli sensör mevcuttur.
Bu konu başlığında, bir sensörden ortam koşullarını okumak için .NET kullanacaksınız.
Önkoşullar
- Raspberry Pi işletim sistemi yüklü Raspberry Pi (2 veya daha büyük)
- BME280 nem/barometrik basınç/sıcaklık algılayıcısı
- Atlatıcı kabloları
- Enine (isteğe bağlı)
- Raspberry PI GıO ayırıcı panosu (isteğe bağlı)
- .NET SDK sürüm 5.0.100 RC2 veya üzeri
Önemli
BME280 ayırıcıların birçok üreticisi vardır. Çoğu tasarım benzerdir ve üretici, işlevselliğe herhangi bir farklılık yapmamalıdır. Bu öğreticide, Çeşitlemeler hesaba deniyor. BME280 ayırıcılarınızın Inter-Integrated devre (ı2C) arabirimi içerdiğinden emin olun.
BME280 ayırıcıları gibi bileşenler genellikle lehsiz olmayan PIN üstbilgileri ile satılır. Soldering ile rahatsız ediyorsanız, önödeme öncesi bir üst bilgi veya farklı bir bağlayıcıya sahip bir BME280 breakboard arayın. İsterseniz, nasıl sollayacağınızı öğrenmenizi düşünün! İşte Soldering için iyi bir başlangıç kılavuzu.
Raspberry PI 'yi hazırlama
raspi-configAşağıdaki iki hizmetin etkinleştirildiğinden emin olmak için komutunu kullanın:
- SSH
- I2C
Hakkında daha fazla bilgi için raspi-config Raspberry PI belgelerinebakın.
Donanımı hazırlama
Aşağıdaki diyagramda gösterildiği gibi devre oluşturmak için donanım bileşenlerini kullanın:
Aşağıda, Raspberry Pi 'den BME280 ayırıcıya olan bağlantılar verilmiştir:
- 3.3 /VIN veya 3v3 (kırmızı renkte gösterilir)
- Zemin-plan (siyah)
- SDA (GPıO 2)-SDI veya sda (mavi)
- SCL (GPıO 3)-SCK veya SCL (turuncu)
Gerektiğinde aşağıdaki genişletme diyagramına başvurun:
Image hitap Raspberry PI Foundation.
İpucu
GıO üstbilgisiyle bağlantıları kolaylaştırmak için, bir enine tahta ile birlikte bir GıO ayırıcısının kullanılması önerilir.
Uygulama oluşturma
Tercih ettiğiniz geliştirme ortamında aşağıdaki adımları uygulayın:
.Net CLI veya Visual Studiokullanarak yeni bir .NET konsol uygulaması oluşturun. Sensoröğreticisi olarak adlandırın.
dotnet new console -o SensorTutorial-
IoT. Device. Bindings paketini projeye ekleyin. Proje dizininden ya da Visual Studio'DAN .net CLI kullanın.
dotnet add package Iot.Device.Bindings --version 1.1.0-* Program.cs dosyasının içeriğini aşağıdaki kodla değiştirin:
using System; using System.Device.I2c; using System.Threading; using Iot.Device.Bmxx80; using Iot.Device.Bmxx80.PowerMode; var i2cSettings = new I2cConnectionSettings(1, Bme280.DefaultI2cAddress); using I2cDevice i2cDevice = I2cDevice.Create(i2cSettings); using var bme280 = new Bme280(i2cDevice); int measurementTime = bme280.GetMeasurementDuration(); while (true) { Console.Clear(); bme280.SetPowerMode(Bmx280PowerMode.Forced); Thread.Sleep(measurementTime); bme280.TryReadTemperature(out var tempValue); bme280.TryReadPressure(out var preValue); bme280.TryReadHumidity(out var humValue); bme280.TryReadAltitude(out var altValue); Console.WriteLine($"Temperature: {tempValue.DegreesCelsius:0.#}\u00B0C"); Console.WriteLine($"Pressure: {preValue.Hectopascals:#.##} hPa"); Console.WriteLine($"Relative humidity: {humValue.Percent:#.##}%"); Console.WriteLine($"Estimated altitude: {altValue.Meters:#} m"); Thread.Sleep(1000); }Yukarıdaki kodda:
i2cSettingsYeni bir örneğine ayarlanırI2cConnectionSettings. OluşturucubusIdparametresini 1 olarak vedeviceAddressparametresini olarak ayarlarBme280.DefaultI2cAddress.Önemli
Bazı BME280 breaküreticileri ikincil adres değerini kullanır. Bu cihazlar için kullanın
Bme280.SecondaryI2cAddress.Using bildirimi ,
I2cDeviceçağırarak ve geçirerek bir örneği oluştururI2cDevice.Createi2cSettings. BuI2cDevice, I2C veri yolunu temsil eder.usingBildirim, nesnenin elden çıkarılmasını ve donanım kaynaklarının düzgün şekilde serbest bırakılacağını sağlar.Başka bir
usingbildirimBme280, algılayıcısı temsil etmek için bir örneği oluşturur. ,I2cDeviceOluşturucuya geçirilir.Yongasının, yongasının geçerli (varsayılan) ayarlarıyla ölçümleri yapması için gereken süre, çağırarak alınır
GetMeasurementDuration.whileDöngü süresiz olarak çalışır. Her yineleme:Konsolunu temizler.
Güç modunu olarak ayarlar
Bmx280PowerMode.Forced. Bu, yonganın tek bir ölçüm gerçekleştirmesini, sonuçları depolamasını ve sonra uykuya geçmesini zorlar.Sıcaklık, basınç, nem ve yükseklik değerlerini okur.
Not
Yükseklik, cihaz bağlama tarafından hesaplanır. ' Nin bu aşırı yüklemesi,
TryReadAltitudebir tahmin oluşturmak için ortalama deniz düzeyinde basınç kullanır.Geçerli ortam koşullarını konsola yazar.
Uyku 1000 ms.
-
Uygulamayı oluşturun. .NET CLı kullanıyorsanız, öğesini çalıştırın
dotnet build. Visual Studio 'da derlemek için CTRL + SHIFT + Btuşlarına basın. -
Uygulamayı, bağımsız bir uygulama olarak Raspberry PI 'e dağıtın. Yönergeler için bkz. .NET uygulamalarını Raspberry PI 'ye dağıtma. Kullanarak yürütülebilir yürütme iznini verdiğinizden emin olun
chmod +x. Dağıtım dizinine geçerek ve yürütülebilir dosyayı çalıştırarak uygulamayı Raspberry Pi üzerinde çalıştırın.
./SensorTutorialKonsolundaki algılayıcı çıkışını gözlemleyin.
CTRL + Ctuşlarına basarak Programı sonlandırın.
Tebrikler! Sıcaklık/nem/barometrik basınç algılayıcısındaki değerleri okumak için ı2C 'yi kullandınız!
Kaynak kodunu alma
Bu öğreticinin kaynağı GitHub kullanılabilir.