Bagikan melalui


Menggunakan Pustaka .NET IoT di komputer Windows, Linux, dan macOS

Pustaka .NET IoT umumnya digunakan untuk mengembangkan kode untuk Raspberry Pi dan perangkat IoT lainnya. Namun, Anda juga dapat menggunakannya untuk mengembangkan kode untuk PC Windows, Linux, dan macOS menggunakan adaptor USB-ke-serial seperti FTDI FT232H. Artikel ini memperlihatkan kepada Anda cara menggunakan pustaka .NET IoT untuk berkomunikasi dengan perangkat yang terhubung ke adaptor FT232H.

Tip

Artikel ini menggunakan adaptor FTDI FT232H, tetapi Anda dapat menggunakan adaptor USB-ke-seri yang didukung oleh pustaka .NET IoT, seperti FT2232H, FT4232H, dan FT4222. Periksa daftar pengikatan perangkat yang didukung untuk informasi selengkapnya.

Prasyarat

Pastikan Anda telah menginstal driver D2XX untuk adaptor USB-ke-serial Anda, yang ditemukan di situs web FTDI.

Catatan

Perangkat Windows bisa otomatis menginstal pengandar ketika Anda mencolokkan adapter. Periksa Device Manager untuk perangkat bernama USB Serial Converter yang tercantum di bawah pengontrol Universal Serial Bus. Penyedia driver perangkat harus FTDI.

Mencantumkan perangkat yang tersedia

Sebelum Anda dapat membuat perangkat GPIO, I2C, atau SPI, Anda harus mengidentifikasi adaptor USB-ke-serial yang terhubung. Kode berikut mencantumkan perangkat FTDI yang tersambung:

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

Dalam kode sebelumnya, FtCommon.GetDevices() metode mengembalikan daftar semua perangkat FTDI yang terhubung.

Menggunakan perangkat GPIO

Berikut adalah implementasi perangkat keras dari tutorial Blink led yang menggunakan adaptor FTDI FT232H untuk mengontrol LED:

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

Pada gambar sebelumnya, sirkuit LED sangat mirip dengan tutorial asli. Satu-satunya perbedaan adalah BAHWA LED terhubung ke pin D7 pada adaptor FT232H alih-alih menyematkan 18 pada Raspberry Pi.

Kode untuk tutorial ini juga mirip dengan tutorial asli:

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

Dalam kode sebelumnya:

  • Instans Ft232HDevice dibuat dengan meneruskan ID perangkat pertama yang dikembalikan oleh FtCommon.GetDevices() ke konstruktor.
  • Instans GpioController pengontrol bernama dibuat dengan memanggil CreateGpioController() instansFt232HDevice. Instans ini GpioController melakukan fungsi yang sama dengan GpioController instans dalam tutorial asli.
  • Nilai bilangan bulat pin diambil dengan memanggil GetPinNumberFromString() instans Ft232HDevice dan meneruskan nama pin alfanumerik D7.
  • Sisa kode identik dengan tutorial asli.

Menggunakan perangkat I2C

Untuk komunikasi I2C, pin D0 dan D1 pada adaptor FT232H masing-masing digunakan untuk garis SDL dan SCA. Sakelar pemilih I2C pada adaptor FT232H harus diatur ke Aktif.

Berikut adalah implementasi perangkat keras dari tutorial Membaca kondisi lingkungan dari sensor yang menggunakan adaptor FTDI FT232H untuk membaca suhu, kelembaban, dan tekanan barometrik dari sensor BME280:

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

Pada gambar sebelumnya:

  • Pin D0 dan D1 pada adaptor FT232H terhubung ke pin SDL dan SCA pada papan breakout BME280.
  • Sakelar pemilih I2C pada papan breakout BME280 diatur ke Aktif.
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);
}

Dalam kode sebelumnya:

  • Instans Ft232HDevice dibuat dengan meneruskan ID perangkat pertama yang dikembalikan oleh FtCommon.GetDevices() ke konstruktor.
  • Instans I2cDevice dibuat dengan memanggil CreateI2cDevice() instans Ft232HDevice . Instans ini I2cDevice melakukan fungsi yang sama dengan I2cDevice instans dalam tutorial asli.
  • Sisa kode identik dengan tutorial asli.

Menggunakan perangkat SPI

Untuk komunikasi SPI, pin D0, D1, D2, dan D3 pada adaptor FT232H digunakan untuk garis SCK, MOSI, MISO, dan CS. Sakelar pemilih I2C pada adaptor FT232H harus diatur ke Nonaktif.

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

Berikut adalah implementasi perangkat keras dari nilai Baca dari tutorial konverter analog-ke-digital yang menggunakan adaptor FTDI FT232H untuk membaca nilai dari MCP3008 ADC:

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

Pada gambar sebelumnya:

  • Pin D0, D1, D2, dan D3 pada adaptor FT232H terhubung ke pin CLK, DIN, DOUT, dan CS/SHDN pada MCP3008.
  • Sakelar pemilih I2C pada papan breakout MCP3008 diatur ke Nonaktif.
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);
}

Dalam kode sebelumnya:

  • Instans Ft232HDevice dibuat dengan meneruskan ID perangkat pertama yang dikembalikan oleh FtCommon.GetDevices() ke konstruktor.
  • Instans SpiDevice dibuat dengan memanggil CreateSpiDevice() instans Ft232HDevice . Instans ini SpiDevice melakukan fungsi yang sama dengan SpiDevice instans dalam tutorial asli.
  • Sisa kode identik dengan tutorial asli.

Mendapatkan kode

Kode untuk tutorial ini tersedia di GitHub.