.NET IoT-kódtárak használata Windows, Linux és macOS rendszerű számítógépeken
A .NET IoT-kódtárakat gyakran használják a Raspberry Pi és más IoT-eszközök kódjának fejlesztésére. Azonban használhatja őket a Windows, Linux és macOS rendszerű számítógépek kódjának fejlesztésére is egy USB-soros adapterrel, például az FTDI FT232H-vel. Ez a cikk bemutatja, hogyan használhatja a .NET IoT-kódtárakat az FT232H adapterhez csatlakoztatott eszközökkel való kommunikációhoz.
Tipp.
Ez a cikk FTDI FT232H adaptert használ, de a .NET IoT-kódtárak, például a FT2232H, a FT4232H és az FT4222 által támogatott USB-soros adaptereket is használhatja. További információért tekintse meg a támogatott eszközkötések listáját.
Előfeltételek
Győződjön meg arról, hogy telepítette az USB-soros adapter D2XX-illesztőit, amelyek az FTDI webhelyén találhatók.
Feljegyzés
Előfordulhat, hogy a Windows-eszközök automatikusan telepítik az illesztőprogramokat, amikor csatlakoztatja az adaptert. Ellenőrizze Eszközkezelő, hogy van-e usb soros usb-konverter az univerzális soros busz vezérlők listájában. Az eszköz illesztőprogram-szolgáltatójának FTDI-nek kell lennie.
Elérhető eszközök listázása
A GPIO, I2C vagy SPI eszköz létrehozása előtt azonosítania kell a csatlakoztatott USB-soros adaptert. Az alábbi kód felsorolja a csatlakoztatott FTDI-eszközöket:
using Iot.Device.FtCommon;
var devices = FtCommon.GetDevices();
Console.WriteLine($"{devices.Count} available device(s)");
foreach (var device in devices)
{
Console.WriteLine($" {device.Description}");
Console.WriteLine($" Flags: {device.Flags}");
Console.WriteLine($" Id: {device.Id}");
Console.WriteLine($" LocId: {device.LocId}");
Console.WriteLine($" Serial number: {device.SerialNumber}");
Console.WriteLine($" Type: {device.Type}");
}
if (devices.Count == 0)
{
Console.WriteLine("No device connected");
return;
}
Az előző kódban a metódus az FtCommon.GetDevices()
összes csatlakoztatott FTDI-eszköz listáját adja vissza.
GPIO-eszköz használata
Íme egy hardveres implementációja a Blink an LED oktatóanyagnak, amely az FTDI FT232H adaptert használja a LED vezérléséhez:
Az előző képen a LED-kapcsolatcsoport nagyon hasonlít az eredeti oktatóanyaghoz. Az egyetlen különbség az, hogy a LED a 18-es pin helyett az FT232H adapteren csatlakozik a D7-hez.
Az oktatóanyag kódja az eredeti oktatóanyaghoz is hasonló:
using System.Device.Gpio;
using Iot.Device.Ft232H;
using Iot.Device.FtCommon;
Console.WriteLine("Blinking LED. Press Ctrl+C to end.");
Ft232HDevice ft232h = new Ft232HDevice(FtCommon.GetDevices()[0]);
GpioController controller = ft232h.CreateGpioController();
int pin = Ft232HDevice.GetPinNumberFromString("D7");
controller.OpenPin(pin, PinMode.Output);
bool ledOn = true;
while (true)
{
controller.Write(pin, ledOn ? PinValue.High : PinValue.Low);
Thread.Sleep(1000);
ledOn = !ledOn;
}
A fenti kód a következőket végzi el:
- A rendszer egy példányt
Ft232HDevice
úgy hoz létre, hogy átadja a konstruktor általFtCommon.GetDevices()
visszaadott első eszközazonosítót. - Az elnevezett vezérlő egy példánya
GpioController
a példány meghívásávalCreateGpioController()
Ft232HDevice
jön létre. Ez aGpioController
példány ugyanazokat a funkciókat hajtja végre, mint azGpioController
eredeti oktatóanyagban szereplő példány. - A pin-kód egész értékét a rendszer a
Ft232HDevice
példány meghívásávalGetPinNumberFromString()
és a D7 alfanumerikus pin-kódnév átadásával kéri le. - A kód többi része megegyezik az eredeti oktatóanyagdal.
I2C-eszköz használata
Az I2C kommunikációhoz az FT232H adapter D0 és D1 tűit használják az SDL és az SCA vonalakhoz. Az FT232H adapter I2C választókapcsolójának Be értékre kell állítania.
Íme egy hardveres implementáció az olvasási környezeti feltételekről egy érzékelő oktatóanyagából, amely az FTDI FT232H adaptert használja egy BME280-érzékelő hőmérsékletének, páratartalmának és barometrikus nyomásának olvasásához:
Az előző képen:
- Az FT232H adapter D0 és D1 csapjai a BME280-es mellékfalon lévő SDL- és SCA-csapokhoz csatlakoznak.
- A BME280-mellékfal I2C választókapcsolója Be értékre van állítva.
using System.Device.I2c;
using Iot.Device.Bmxx80;
using Iot.Device.Bmxx80.PowerMode;
using Iot.Device.Ft232H;
using Iot.Device.FtCommon;
Ft232HDevice ft232h = new Ft232HDevice(FtCommon.GetDevices()[0]);
I2cConnectionSettings i2cSettings = new I2cConnectionSettings(0, Bme280.SecondaryI2cAddress);
using I2cDevice i2cDevice = ft232h.CreateI2cDevice(i2cSettings);
using Bme280 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);
}
A fenti kód a következőket végzi el:
- A rendszer egy példányt
Ft232HDevice
úgy hoz létre, hogy átadja a konstruktor általFtCommon.GetDevices()
visszaadott első eszközazonosítót. - A példány
I2cDevice
létrehozása a példány meghívásávalCreateI2cDevice()
Ft232HDevice
történik. Ez aI2cDevice
példány ugyanazokat a funkciókat hajtja végre, mint azI2cDevice
eredeti oktatóanyagban szereplő példány. - A kód többi része megegyezik az eredeti oktatóanyagdal.
SPI-eszköz használata
A SPI-kommunikációhoz az FT232H adapteren található D0, D1, D2 és D3 tűket használják az SCK, MOSI, MISO és CS vonalakhoz. Az FT232H adapter I2C választókapcsolóját ki kell kapcsolni.
Íme egy hardveres implementáció az olvasási értékekről egy analóg-digitális konverter oktatóanyagból, amely az FTDI FT232H adaptert használja az értékek beolvasására egy MCP3008 ADC-ből:
Az előző képen:
- Az FT232H adapter D0, D1, D2 és D3 csapjai a MCP3008 CLK, DIN, DOUT és CS/SHDN csapjaihoz csatlakoznak.
- Az I2C választókapcsoló a MCP3008-különlapon ki van kapcsolva.
using System.Device.Gpio;
using System.Device.Spi;
using Iot.Device.Adc;
using Iot.Device.Ft232H;
using Iot.Device.FtCommon;
var devices = FtCommon.GetDevices();
var ft232h = new Ft232HDevice(devices[0]);
var hardwareSpiSettings = new SpiConnectionSettings(0, 3) { ClockFrequency = 1_000_000, DataBitLength = 8, ChipSelectLineActiveState = PinValue.Low };
using SpiDevice spi = ft232h.CreateSpiDevice(hardwareSpiSettings);
using var mcp = new Mcp3008(spi);
while (true)
{
Console.Clear();
double value = mcp.Read(0);
Console.WriteLine($"{value}");
Console.WriteLine($"{Math.Round(value/10.23, 1)}%");
Thread.Sleep(500);
}
A fenti kód a következőket végzi el:
- A rendszer egy példányt
Ft232HDevice
úgy hoz létre, hogy átadja a konstruktor általFtCommon.GetDevices()
visszaadott első eszközazonosítót. - A példány
SpiDevice
létrehozása a példány meghívásávalCreateSpiDevice()
Ft232HDevice
történik. Ez aSpiDevice
példány ugyanazokat a funkciókat hajtja végre, mint azSpiDevice
eredeti oktatóanyagban szereplő példány. - A kód többi része megegyezik az eredeti oktatóanyagdal.
A kód letöltése
Az oktatóanyag kódja a GitHubon érhető el.
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: