Training
Leertraject
Dit leertraject is bedoeld om cursisten uit te leggen hoe ze AI aan de rand kunnen implementeren met behulp van Azure-services.
Deze browser wordt niet meer ondersteund.
Upgrade naar Microsoft Edge om te profiteren van de nieuwste functies, beveiligingsupdates en technische ondersteuning.
De .NET IoT-bibliotheken worden vaak gebruikt voor het ontwikkelen van code voor Raspberry Pi en andere IoT-apparaten. U kunt ze echter ook gebruiken om code te ontwikkelen voor Windows-, Linux- en macOS-pc's met behulp van een USB-naar-seriële adapter zoals de FTDI FT232H. In dit artikel leest u hoe u de .NET IoT-bibliotheken gebruikt om te communiceren met apparaten die zijn verbonden met de FT232H-adapter.
Tip
In dit artikel wordt een FTDI FT232H-adapter gebruikt, maar u kunt elke USB-naar-seriële adapter gebruiken die wordt ondersteund door de .NET IoT-bibliotheken, zoals de FT2232H, FT4232H en FT4222. Controleer de lijst met ondersteunde apparaatbindingen voor meer informatie.
Zorg ervoor dat u de D2XX-stuurprogramma's voor uw USB-naar-seriële adapter hebt geïnstalleerd, die u op de FTDI-website vindt.
Notitie
Windows-apparaten kunnen de stuurprogramma's automatisch installeren wanneer u de adapter aansluit. Controleer Apparaatbeheer op een apparaat met de naam USB Serial Converter vermeld onder Universal Serial Bus-controllers. De stuurprogrammaprovider van het apparaat moet FTDI zijn.
Voordat u een GPIO-, I2C- of SPI-apparaat kunt maken, moet u de aangesloten USB-naar-seriële adapter identificeren. De volgende code bevat de verbonden FTDI-apparaten:
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;
}
In de voorgaande code retourneert de FtCommon.GetDevices()
methode een lijst met alle verbonden FTDI-apparaten.
Hier volgt een hardware-implementatie van de Blink an LED-zelfstudie die gebruikmaakt van de FTDI FT232H-adapter om een LED te beheren:
In de voorgaande afbeelding is het LED-circuit vergelijkbaar met de oorspronkelijke zelfstudie. Het enige verschil is dat de LED is verbonden met pin D7 op de FT232H adapter in plaats van pin 18 op de Raspberry Pi.
De code voor de zelfstudie is ook vergelijkbaar met de oorspronkelijke zelfstudie:
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;
}
In de voorgaande code:
Ft232HDevice
gemaakt door de eerste apparaat-id door te geven die door FtCommon.GetDevices()
de constructor wordt geretourneerd.GpioController
de benoemde controller gemaakt door het Ft232HDevice
exemplaar aan te roepenCreateGpioController()
. Dit GpioController
exemplaar voert dezelfde functies uit als het GpioController
exemplaar in de oorspronkelijke zelfstudie.Ft232HDevice
exemplaar aan te roepen GetPinNumberFromString()
en de alfanumerieke pinnaam D7 door te geven.Voor I2C-communicatie worden de D0 - en D1-pinnen op de FT232H-adapter gebruikt voor respectievelijk de SDL- en SCA-lijnen. De I2C-kiezerschakelaar op de FT232H-adapter moet zijn ingesteld op Aan.
Hier volgt een hardware-implementatie van de omgevingsomstandigheden lezen uit een sensorzelfstudie die gebruikmaakt van de FTDI FT232H-adapter voor het lezen van temperatuur, vochtigheid en barometrische druk van een BME280-sensor:
In de voorgaande afbeelding:
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);
}
In de voorgaande code:
Ft232HDevice
gemaakt door de eerste apparaat-id door te geven die door FtCommon.GetDevices()
de constructor wordt geretourneerd.I2cDevice
door het Ft232HDevice
exemplaar aan te roepenCreateI2cDevice()
. Dit I2cDevice
exemplaar voert dezelfde functies uit als het I2cDevice
exemplaar in de oorspronkelijke zelfstudie.Voor SPI-communicatie worden de D0-, D1-, D2- en D3-pinnen op de FT232H-adapter gebruikt voor respectievelijk de SCK-, MOSI-, MISO- en CS-lijnen. De I2C-kiezerschakelaar op de FT232H-adapter moet worden ingesteld op Uit.
Hier volgt een hardware-implementatie van de leeswaarden van een analoge naar digitale conversieprogramma die gebruikmaakt van de FTDI FT232H-adapter voor het lezen van waarden van een MCP3008 ADC:
In de voorgaande afbeelding:
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);
}
In de voorgaande code:
Ft232HDevice
gemaakt door de eerste apparaat-id door te geven die door FtCommon.GetDevices()
de constructor wordt geretourneerd.SpiDevice
door het Ft232HDevice
exemplaar aan te roepenCreateSpiDevice()
. Dit SpiDevice
exemplaar voert dezelfde functies uit als het SpiDevice
exemplaar in de oorspronkelijke zelfstudie.De code voor deze zelfstudie is beschikbaar op GitHub.
.NET-feedback
.NET is een open source project. Selecteer een koppeling om feedback te geven:
Training
Leertraject
Dit leertraject is bedoeld om cursisten uit te leggen hoe ze AI aan de rand kunnen implementeren met behulp van Azure-services.