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:
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 olehFtCommon.GetDevices()
ke konstruktor. - Instans
GpioController
pengontrol bernama dibuat dengan memanggilCreateGpioController()
instansFt232HDevice
. Instans iniGpioController
melakukan fungsi yang sama denganGpioController
instans dalam tutorial asli. - Nilai bilangan bulat pin diambil dengan memanggil
GetPinNumberFromString()
instansFt232HDevice
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:
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 olehFtCommon.GetDevices()
ke konstruktor. - Instans
I2cDevice
dibuat dengan memanggilCreateI2cDevice()
instansFt232HDevice
. Instans iniI2cDevice
melakukan fungsi yang sama denganI2cDevice
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.
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:
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 olehFtCommon.GetDevices()
ke konstruktor. - Instans
SpiDevice
dibuat dengan memanggilCreateSpiDevice()
instansFt232HDevice
. Instans iniSpiDevice
melakukan fungsi yang sama denganSpiDevice
instans dalam tutorial asli. - Sisa kode identik dengan tutorial asli.
Mendapatkan kode
Kode untuk tutorial ini tersedia di GitHub.