Szkolenie
Ścieżka szkoleniowa
Inżynier brzegowy sztucznej inteligencji - Training
Ta ścieżka szkoleniowa ma na celu wyjaśnienie, jak wdrożyć sztuczną inteligencję na urządzeniach brzegowych przy użyciu usług platformy Azure.
Ta przeglądarka nie jest już obsługiwana.
Przejdź na przeglądarkę Microsoft Edge, aby korzystać z najnowszych funkcji, aktualizacji zabezpieczeń i pomocy technicznej.
Biblioteki IoT platformy .NET są często używane do tworzenia kodu dla urządzenia Raspberry Pi i innych urządzeń IoT. Można jednak użyć ich również do tworzenia kodu dla komputerów z systemami Windows, Linux i macOS przy użyciu adaptera usb-szeregowego, takiego jak FTDI FT232H. W tym artykule pokazano, jak używać bibliotek IoT platformy .NET do komunikowania się z urządzeniami podłączonymi do karty FT232H.
Porada
W tym artykule użyto adaptera FTDI FT232H, ale można użyć dowolnej karty usb-szeregowej obsługiwanej przez biblioteki IoT platformy .NET, takie jak FT2232H, FT4232H i FT4222. Aby uzyskać więcej informacji, zapoznaj się z listą obsługiwanych powiązań urządzeń.
Upewnij się, że zainstalowano sterowniki D2XX dla adaptera USB-to-serial, które znajdują się w witrynie internetowej FTDI.
Uwaga
Urządzenia z systemem Windows mogą automatycznie instalować sterowniki podczas podłączania adaptera. Sprawdź Menedżer urządzeń dla urządzenia o nazwie USB Serial Converter wymienione w obszarze Kontrolery uniwersalnej magistrali szeregowej. Dostawca sterowników urządzenia powinien mieć wartość FTDI.
Aby można było utworzyć urządzenie GPIO, I2C lub SPI, należy zidentyfikować podłączoną kartę USB-szeregową. Poniższy kod zawiera listę połączonych urządzeń FTDI:
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;
}
W poprzednim kodzie FtCommon.GetDevices()
metoda zwraca listę wszystkich połączonych urządzeń FTDI.
Oto implementacja sprzętowa miganego samouczka led , który używa adaptera FTDI FT232H do sterowania diodą LED:
Na poprzedniej ilustracji obwód LED jest bardzo podobny do oryginalnego samouczka. Jedyną różnicą jest to, że dioda LED jest podłączona do wyprowadzenia D7 na adapterze FT232H zamiast pinezki 18 na urządzeniu Raspberry Pi.
Kod samouczka jest również podobny do oryginalnego samouczka:
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;
}
Powyższy kod:
Ft232HDevice
jest tworzone przez przekazanie pierwszego identyfikatora urządzenia zwróconego przez FtCommon.GetDevices()
konstruktora.GpioController
kontrolera jest tworzone przez wywołanie CreateGpioController()
wystąpienia Ft232HDevice
. To GpioController
wystąpienie wykonuje te same funkcje co GpioController
wystąpienie w oryginalnym samouczku.GetPinNumberFromString()
Ft232HDevice
wystąpienia i przekazanie nazwy pinu alfanumerycznego D7.W przypadku komunikacji I2C wyprowadzenia D0 i D1 na adapterze FT232H są używane odpowiednio dla linii SDL i SCA. Przełącznik selektora I2C na karcie FT232H musi być ustawiony na wartość Włączone.
Oto implementacja sprzętowa warunków środowiskowych odczytu z samouczka czujnika , który używa adaptera FTDI FT232H do odczytywania temperatury, wilgotności i ciśnienia barometrycznego z czujnika BME280:
Na powyższym obrazie:
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);
}
Powyższy kod:
Ft232HDevice
jest tworzone przez przekazanie pierwszego identyfikatora urządzenia zwróconego przez FtCommon.GetDevices()
konstruktora.I2cDevice
Wystąpienie klasy jest tworzone przez wywołanie CreateI2cDevice()
Ft232HDevice
wystąpienia. To I2cDevice
wystąpienie wykonuje te same funkcje co I2cDevice
wystąpienie w oryginalnym samouczku.Do komunikacji SPI, D0, D1, D2 i D3 piny na karcie FT232H są używane odpowiednio dla linii SCK, MOSI, MISO i CS. Przełącznik selektora I2C na karcie FT232H musi być ustawiony na wartość Wyłączone.
Oto implementacja sprzętowa odczytanych wartości z samouczka konwertera analog-do-cyfrowego, który używa adaptera FTDI FT232H do odczytywania wartości z usługi ADC MCP3008:
Na powyższym obrazie:
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);
}
Powyższy kod:
Ft232HDevice
jest tworzone przez przekazanie pierwszego identyfikatora urządzenia zwróconego przez FtCommon.GetDevices()
konstruktora.SpiDevice
Wystąpienie klasy jest tworzone przez wywołanie CreateSpiDevice()
Ft232HDevice
wystąpienia. To SpiDevice
wystąpienie wykonuje te same funkcje co SpiDevice
wystąpienie w oryginalnym samouczku.Kod tego samouczka jest dostępny w witrynie GitHub.
Opinia o produkcie .NET
.NET to projekt typu open source. Wybierz link, aby przekazać opinię:
Szkolenie
Ścieżka szkoleniowa
Inżynier brzegowy sztucznej inteligencji - Training
Ta ścieżka szkoleniowa ma na celu wyjaśnienie, jak wdrożyć sztuczną inteligencję na urządzeniach brzegowych przy użyciu usług platformy Azure.