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:

Raspberry Pi ile BME280 breakbir tahtaya bağlantıyı gösteren eğime diyagramı

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:

Raspberry PI GıO üstbilgisinin aşımını gösteren bir diyagram. Image hitap Raspberry PI Foundation.
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:

  1. .Net CLI veya Visual Studiokullanarak yeni bir .NET konsol uygulaması oluşturun. Sensoröğreticisi olarak adlandırın.

    dotnet new console -o SensorTutorial
    
  2. 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-*
    
  3. 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:

    • i2cSettings Yeni bir örneğine ayarlanır I2cConnectionSettings . Oluşturucu busId parametresini 1 olarak ve deviceAddress parametresini olarak ayarlar Bme280.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şturur I2cDevice.Create i2cSettings . Bu I2cDevice , 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 using bildirim Bme280 , algılayıcısı temsil etmek için bir örneği oluşturur. , I2cDevice Oluş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:

      1. Konsolunu temizler.

      2. 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.

      3. 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, TryReadAltitude bir tahmin oluşturmak için ortalama deniz düzeyinde basınç kullanır.

      4. Geçerli ortam koşullarını konsola yazar.

      5. Uyku 1000 ms.

  4. 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.

  5. 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 .

  6. Dağıtım dizinine geçerek ve yürütülebilir dosyayı çalıştırarak uygulamayı Raspberry Pi üzerinde çalıştırın.

    ./SensorTutorial
    

    Konsolundaki algılayıcı çıkışını gözlemleyin.

  7. 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.

Sonraki adımlar