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

A picture of a breadboard with an FT232H adapter, a resister, an LED, and connecting wires.

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 által FtCommon.GetDevices() visszaadott első eszközazonosítót.
  • Az elnevezett vezérlő egy példánya GpioController a példány meghívásával CreateGpioController()Ft232HDevice jön létre. Ez a GpioController példány ugyanazokat a funkciókat hajtja végre, mint az GpioController 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ával GetPinNumberFromString() é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:

A picture of a breadboard with an FT232H adapter, a BME280 breakout board, and connecting wires.

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 által FtCommon.GetDevices() visszaadott első eszközazonosítót.
  • A példány I2cDevice létrehozása a példány meghívásával CreateI2cDevice()Ft232HDevice történik. Ez a I2cDevice példány ugyanazokat a funkciókat hajtja végre, mint az I2cDevice 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.

A picture of the back of the FT232H breakout depicting the SPI pins.

Í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:

A picture of a breadboard with an FT232H adapter, an MCP3008 chip, and connecting wires.

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 által FtCommon.GetDevices() visszaadott első eszközazonosítót.
  • A példány SpiDevice létrehozása a példány meghívásával CreateSpiDevice()Ft232HDevice történik. Ez a SpiDevice példány ugyanazokat a funkciókat hajtja végre, mint az SpiDevice 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.