Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Jedním z nejběžnějších scénářů pro zařízení IoT je detekce podmínek prostředí. K dispozici je řada senzorů pro monitorování teploty, vlhkosti, barometrického tlaku a dalších.
V tomto tématu použijete .NET ke čtení podmínek prostředí ze senzoru.
Požadavky
- Počítač s jednou deskou (SBC) založený na ARM (ARMv7 nebo novější)
- BME280 senzor vlhkosti / barometrického tlaku / teploty - rozšíření senzoru
- Propojovací vodiče
- Popis cesty (volitelné)
- Raspberry Pi GPIO rozšiřující deska (volitelné)
- .NET SDK 8 nebo novější
Poznámka:
Tento kurz je napsán za předpokladu, že cílové zařízení je Raspberry Pi. Tento kurz však lze použít pro jakýkoli linuxový SBC, který podporuje .NET, jako je Orange Pi, ODROID a další.
Důležité
Existuje mnoho výrobců breakoutů BME280. Většina návrhů je podobná a výrobce by neměl mít žádný vliv na funkčnost. Tento návod se pokusí zohlednit varianty. Ujistěte se, že váš breakout BME280 obsahuje rozhraní Inter-Integrated Circuit (I2C).
Komponenty, jako jsou BME280 breakouts, se často prodávají s nepřipojenými pinovými lištami. Pokud se necítíte na pájení, vyhledejte breakout desku BME280 s předpájenou záhlavní nebo jiným konektorem. Pokud chcete, zvažte naučit se pájet! Tady je dobrý průvodce pro začátečníky na pájení.
Příprava SBC
Ujistěte se, že je vaše SBC nakonfigurovaná tak, aby podporovala následující služby:
- SSH
- I2C
U mnoha zařízení není nutná žádná další konfigurace. V případě Raspberry Pi použijte raspi-config příkaz. Další informace najdete raspi-configv dokumentaci k Raspberry Pi.
Příprava hardwaru
Pomocí hardwarových komponent sestavte okruh, jak je znázorněno v následujícím diagramu:
Následují připojení z Raspberry Pi k breakoutu BME280. Všimněte si, že popisky pinů se liší u různých modulů BME280.
| Raspberry Pi | BME280 Breakout | Barva |
|---|---|---|
| 3.3V | VIN/3V3 | červený |
| Půda | GND | černý |
| SDA (GPIO 2) | SDI/SDA | modrý |
| SCL (GPIO 3) | SCK/SCL | oranžová |
Podle potřeby si projděte následující vývodové schéma.
Obrázek se svolením Raspberry Pi Foundation.
Návod
Pro zjednodušení připojení k hlavičce GPIO se doporučuje použít rozšiřovací desku GPIO ve spojení s kontaktním polem.
Vytvoření aplikace
V upřednostňovaném vývojovém prostředí proveďte následující kroky:
Vytvořte novou konzolovou aplikaci .NET pomocí .NET CLI nebo Visual Studio. Pojmenujte ji SensorTutorial.
dotnet new console -o SensorTutorial cd SensorTutorialPřidejte do projektu balíček Iot.Device.Bindings . Použijte .NET CLI z adresáře projektu nebo sady Visual Studio.
dotnet add package Iot.Device.Bindings --version 3.2.0-*Obsah souboru Program.cs nahraďte tímto kódem:
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); }V předchozím kódu:
i2cSettingsje nastaveno na novou instanciI2cConnectionSettings. Konstruktor nastavíbusIdparametr na 1 adeviceAddressparametr naBme280.DefaultI2cAddress.Důležité
Někteří výrobci modulů BME280 používají sekundární hodnotu adresy. Pro tato zařízení použijte
Bme280.SecondaryI2cAddress.Deklarace using vytvoří instanci
I2cDevicevolánímI2cDevice.Createa předáními2cSettings. ToI2cDevicepředstavuje autobus I2C. Deklaraceusingzajišťuje, že objekt je ukončen a hardwarové prostředky jsou uvolněny správně.Další
usingdeklarace vytvoří instanciBme280představující senzor. Předává seI2cDevicev konstruktoru.Čas potřebný pro měření s aktuálním (výchozím) nastavením čipu se získá voláním
GetMeasurementDuration.Smyčka
whileběží nekonečně. Každá iterace:Vymaže konzolu.
Nastaví režim napájení na
Bmx280PowerMode.Forced. Nutí čip provést jedno měření, uložit výsledky a pak přejít do režimu spánku.Čte hodnoty pro teplotu, tlak, vlhkost a výšku.
Poznámka:
Výška se vypočítá vazbou zařízení. Toto přetížení používá průměrný tlak na hladině moře ke generování odhadu
TryReadAltitude.Zapíše aktuální podmínky prostředí do konzoly.
Spí 1000 ms.
Sestavení aplikace Pokud používáte .NET CLI, spusťte
dotnet build. Pokud chcete sestavovat v sadě Visual Studio, stiskněte kombinaci kláves Ctrl+Shift+B.Nasaďte aplikaci do SBC jako samostatnou aplikaci. Pokyny najdete v tématu Nasazení aplikací .NET do Raspberry Pi. Ujistěte se, že spustitelnému souboru udělíte oprávnění execute pomocí
chmod +x.Spusťte aplikaci na Raspberry Pi přepnutím do adresáře nasazení a spuštěním spustitelného souboru.
./SensorTutorialSledujte výstup senzoru v konzole.
Ukončete program stisknutím ctrl+C.
Gratulujeme! Použili jsteI 2C ke čtení hodnot ze senzoru teploty/vlhkosti/barometrického tlaku!
Získání zdrojového kódu
Zdroj pro tento kurz je k dispozici na GitHubu.