Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az IoT-eszközök egyik leggyakoribb forgatókönyve a környezeti feltételek észlelése. Számos érzékelő áll rendelkezésre a hőmérséklet, a páratartalom, a barometrikus nyomás és egyebek monitorozására.
Ebben a témakörben a .NET használatával fogja olvasni a környezeti feltételeket egy érzékelőből.
Előfeltételek
- ARM-alapú (ARMv7 vagy újabb) egylapos számítógép (SBC)
- BME280 páratartalom/barometrikus nyomás/hőmérséklet-érzékelő kitörése
- Átvezető vezetékek
- Próbatábla (nem kötelező)
- Raspberry Pi GPIO-csatlakozólap (opcionális)
- .NET SDK 8 vagy újabb
Megjegyzés
Ez az oktatóanyag meg van írva, feltéve, hogy a céleszköz Raspberry Pi. Ez az oktatóanyag azonban bármilyen Linux-alapú SBC-hez használható, amely támogatja a .NET-et, például az Orange Pi-t, az ODROID-ot és sok mást.
Fontos
A BME280-nak számos gyártója van. A legtöbb kialakítás hasonló, és a gyártónak nem szabad különbséget tennie a funkcionalitásban. Ez az oktatóanyag megpróbálja figyelembe venni a változatokat. Győződjön meg arról, hogy a BME280 modul tartalmaz egy inter-integrált áramköri (I2C) interfészt.
Az olyan összetevőket, mint például a BME280 kitörő modulokat, gyakran forrasztás nélküli tűfejlécekkel értékesítik. Ha kényelmetlenül érzi magát a forrasztással kapcsolatban, keressen egy előre forrasztott fejlécű BME280 kitörő panelt vagy egy másik csatlakozóval rendelkező modult. Ha szeretné, fontolja meg a forrasztás tanulását! Íme egy jó kezdő útmutató a forrasztáshoz.
Az SBC előkészítése
Győződjön meg arról, hogy az SBC a következő szolgáltatások támogatására van konfigurálva:
- SSH
- I2C
Sok eszköz esetén nincs szükség további konfigurációra. Raspberry Pi esetén használja a raspi-config parancsot. További információkért raspi-configtekintse meg a Raspberry Pi dokumentációját.
A hardver előkészítése
A következő ábrán látható módon használja a hardver összetevőket az áramkör megépítéséhez.
Az alábbiakban találhatók a Raspberry Pi és a BME280 breakout közötti kapcsolatok. Vegye figyelembe, hogy a tű címkék különböző BME280 modulokon eltérhetnek.
| Raspberry Pi | BME280 csatlakozótábla | Szín |
|---|---|---|
| 3.3V | VIN/3V3 | piros |
| Föld | GND | fekete |
| SDA (GPIO 2) | SDI/SDA | kék |
| SCL (GPIO 3) | SCK/SCL | narancs |
Igény szerint tekintse meg a következő lábelrendezési diagramot:
Kép jóvoltból Raspberry Pi Foundation.
Jótanács
A GPIO csatlakozólap és a próbaáramköri lap együttes használata javasolt a GPIO-fejléchez való kapcsolódások egyszerűsítése érdekében.
Az alkalmazás létrehozása
Hajtsa végre a következő lépéseket az előnyben részesített fejlesztési környezetben:
Hozzon létre egy új .NET-konzolalkalmazást a .NET CLI vagy a Visual Studio használatával. Nevezze el SensorTutorial néven.
dotnet new console -o SensorTutorial cd SensorTutorialAdja hozzá az Iot.Device.Bindings csomagot a projekthez. Használja a .NET CLI-t a projektkönyvtárból vagy a Visual Studióból.
dotnet add package Iot.Device.Bindings --version 3.2.0-*Cserélje le a Program.cs fájl tartalmát a következő kódra:
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); }Az előző kódban:
i2cSettingsúj példányát aI2cConnectionSettings-ra/-re állítják. A konstruktor abusIdparamétert 1 értékre, adeviceAddressparamétert pedigBme280.DefaultI2cAddressértékre állítja.Fontos
Egyes BME280-mellékgyártók a másodlagos címértéket használják. Ezekhez az eszközökhöz használja a következőt:
Bme280.SecondaryI2cAddress.A using nyilatkozat létrehoz egy
I2cDevicepéldányt azáltal, hogy meghívja aI2cDevice.Create-t, és átadja ai2cSettings-t. EzI2cDeviceaz I2C buszt jelöli. Ausingdeklaráció biztosítja az objektum ártalmatlanítását és a hardvererőforrások megfelelő kiadását.Egy másik
usingdeklaráció egyBme280példányt hoz létre az érzékelő reprezentálására. AzI2cDeviceátadás a konstruktorban történik.Az
GetMeasurementDurationmeghívásával nyerhető ki az idő, amely a chip aktuális (alapértelmezett) beállításaival végzett mérésekhez szükséges.A
whilehurok határozatlan ideig fut. Minden iteráció:Törli a konzolt.
A teljesítménymódot beállítja a következőre:
Bmx280PowerMode.Forced. Ez arra kényszeríti a chipet, hogy végezzen el egy mérést, tárolja az eredményeket, majd aludjon.Beolvassa a hőmérséklet, a nyomás, a páratartalom és a magasság értékeit.
Megjegyzés
A magasságot az eszközkötés számítja ki. Ennek a
TryReadAltitudetúlterhelésnek az átlagos tengerszint feletti légnyomást használják becslés készítésére.Az aktuális környezeti feltételeket írja a konzolra.
1000 ms-ig alszik.
Hozza létre az alkalmazást. Ha a .NET parancssori felületet használja, futtassa a parancsot
dotnet build. A Visual Studióban való buildeléshez nyomja le a CtrlShift+B+.Helyezze üzembe az alkalmazást az SBC-ben önálló alkalmazásként. Útmutatásért lásd: .NET-alkalmazások üzembe helyezése a Raspberry Pi-ben. Győződjön meg arról, hogy a végrehajtható fájlnak végrehajtás engedélyt ad, a
chmod +xhasználatával.Futtassa az alkalmazást a Raspberry Pi-en az üzembehelyezési könyvtárra való váltással és a végrehajtható fájl futtatásával.
./SensorTutorialFigyelje meg az érzékelő kimenetét a konzolon.
Állítsa le a programot a Ctrl+C billentyűkombináció lenyomásával.
Gratulálok! I2C-t használta arra, hogy beolvassa a hőmérséklet-, páratartalom- és barométeres nyomásérzékelők értékeit!
A forráskód lekérése
Az oktatóanyag forrása a GitHubon érhető el.