Aracılığıyla paylaş


Windows, Linux ve macOS bilgisayarlarda .NET IoT Kitaplıklarını kullanma

.NET IoT kitaplıkları genellikle Raspberry Pi ve diğer IoT cihazları için kod geliştirmek için kullanılır. Bununla birlikte, FTDI FT232H gibi bir USB-seri bağdaştırıcı kullanarak Windows, Linux ve macOS bilgisayarlar için kod geliştirmek için de kullanabilirsiniz. Bu makalede, FT232H bağdaştırıcısına bağlı cihazlarla iletişim kurmak için .NET IoT kitaplıklarının nasıl kullanılacağı gösterilmektedir.

İpucu

Bu makalede FTDI FT232H bağdaştırıcısı kullanılır, ancak .NET IoT kitaplıkları tarafından desteklenen FT2232H, FT4232H ve FT4222 gibi herhangi bir USB'den seri bağdaştırıcıya kullanabilirsiniz. Daha fazla bilgi için desteklenen cihaz bağlamaları listesine bakın.

Önkoşullar

FTDI web sitesinde bulunan USB-seri bağdaştırıcınız için D2XX sürücülerini yüklediğinizden emin olun.

Not

Bağdaştırıcıyı taktığınızda Windows cihazları sürücüleri otomatik olarak yükleyebilir. Evrensel Seri Veri Yolu denetleyicileri altında listelenen USB Seri Dönüştürücü adlı bir cihaz için Aygıt Yöneticisi denetleyin. Cihazın sürücü sağlayıcısı FTDI olmalıdır.

Kullanılabilir cihazları listeleme

GPIO, I2C veya SPI cihazı oluşturabilmeniz için önce bağlı USB-seri bağdaştırıcısını tanımlamanız gerekir. Aşağıdaki kod, bağlı FTDI cihazlarını listeler:

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;
}

Yukarıdaki kodda FtCommon.GetDevices() , yöntemi tüm bağlı FTDI cihazlarının listesini döndürür.

GPIO cihazı kullanma

Led'i denetlemek için FTDI FT232H bağdaştırıcısını kullanan LED'i yanıp sönme öğreticisinin donanım uygulaması aşağıdadır:

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

Önceki görüntüde LED bağlantı hattı özgün öğreticiye çok benzer. Tek fark, LED'in Raspberry Pi üzerindeki pin 18 yerine FT232H bağdaştırıcısındaki D7 sabitlemesine bağlı olmasıdır.

Öğreticinin kodu da özgün öğreticiye benzer:

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;
}

Önceki kodda:

  • Bir örnek Ft232HDevice , tarafından FtCommon.GetDevices() döndürülen ilk cihaz kimliği oluşturucuya geçirilerek oluşturulur.
  • Adlandırılmış denetleyici örneğiGpioController, örnekte çağrılarak CreateGpioController() Ft232HDevice oluşturulur. Bu GpioController örnek, özgün öğreticideki örnekle GpioController aynı işlevleri gerçekleştirir.
  • Pinin tamsayı değeri, örnekte çağrılarak GetPinNumberFromString() Ft232HDevice ve alfasayısal pin adı D7 geçirilerek alınır.
  • Kodun geri kalanı özgün öğreticiyle aynıdır.

I2C cihazı kullanma

I2C iletişimi için FT232H bağdaştırıcısındaki D0 ve D1 pinleri sırasıyla SDL ve SCA hatları için kullanılır. FT232H bağdaştırıcısındaki I2C seçici anahtarı Açık olarak ayarlanmalıdır.

Aşağıda, BME280 algılayıcısından sıcaklık, nem ve barometrik basıncı okumak için FTDI FT232H bağdaştırıcısını kullanan bir algılayıcıdan ortam koşullarını okuma öğreticisinin donanım uygulaması gösterilmektedir:

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

Yukarıdaki görüntüde:

  • FT232H bağdaştırıcısındaki D0 ve D1 pinleri sırasıyla BME280 tartışma panosundaki SDL ve SCA pinlerine bağlanır.
  • BME280 tartışma panosundaki I2C seçici anahtarı Açık olarak ayarlanır.
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);
}

Önceki kodda:

  • Bir örnek Ft232HDevice , tarafından FtCommon.GetDevices() döndürülen ilk cihaz kimliği oluşturucuya geçirilerek oluşturulur.
  • örneği, örnekte I2cDevice çağrılarak CreateI2cDevice() Ft232HDevice oluşturulur. Bu I2cDevice örnek, özgün öğreticideki örnekle I2cDevice aynı işlevleri gerçekleştirir.
  • Kodun geri kalanı özgün öğreticiyle aynıdır.

SPI cihazı kullanma

SPI iletişimi için FT232H bağdaştırıcısındaki D0, D1, D2 ve D3 pinleri sırasıyla SCK, MOSI, MISO ve CS hatları için kullanılır. FT232H bağdaştırıcısındaki I2C seçici anahtarı Kapalı olarak ayarlanmalıdır.

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

Aşağıda, bir MCP3008 ADC'sinden değerleri okumak için FTDI FT232H bağdaştırıcısını kullanan analog-dijital dönüştürücüden değerleri okuma öğreticisinin donanım uygulaması gösterilmektedir:

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

Yukarıdaki görüntüde:

  • FT232H bağdaştırıcısındaki D0, D1, D2 ve D3 pinleri sırasıyla MCP3008 CLK, DIN, DOUT ve CS/SHDN pinlerine bağlanır.
  • MCP3008 tartışma panosundaki I2C seçici anahtarı Kapalı olarak ayarlanır.
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);
}

Önceki kodda:

  • Bir örnek Ft232HDevice , tarafından FtCommon.GetDevices() döndürülen ilk cihaz kimliği oluşturucuya geçirilerek oluşturulur.
  • örneği, örnekte SpiDevice çağrılarak CreateSpiDevice() Ft232HDevice oluşturulur. Bu SpiDevice örnek, özgün öğreticideki örnekle SpiDevice aynı işlevleri gerçekleştirir.
  • Kodun geri kalanı özgün öğreticiyle aynıdır.

Kodu alma

Bu öğreticinin kodu GitHub'da kullanılabilir.