Treinamento
Roteiro de aprendizagem
Engenheiro de borda de IA - Training
Este roteiro de aprendizagem tem o objetivo de explicar aos aprendizes como implantar a IA na borda usando os serviços do Azure.
Não há mais suporte para esse navegador.
Atualize o Microsoft Edge para aproveitar os recursos, o suporte técnico e as atualizações de segurança mais recentes.
As bibliotecas de IoT do .NET geralmente são usadas para desenvolver código para Raspberry Pi e outros dispositivos IoT. Porém, você também pode usá-los para desenvolver código para computadores Windows, Linux e macOS usando um adaptador USB para serial, como o FTDI FT232H. Este artigo mostra como usar as bibliotecas IoT do .NET para se comunicar com os dispositivos conectados ao adaptador FT232H.
Dica
Este artigo usa um adaptador FTDI FT232H, mas você pode usar qualquer adaptador USB para serial compatível com as bibliotecas IoT do .NET, como o FT2232H, FT4232H e FT4222. Verifique a lista de associações de dispositivo com suporte para obter mais informações.
Verifique se você instalou os drivers D2XX no seu adaptador USB para serial, que são encontrados no site FTDI.
Observação
Os dispositivos Windows podem instalar automaticamente os drivers quando você conecta o adaptador. Verifique no Gerenciador de Dispositivos se há um dispositivo chamado Conversor Serial de USB listado em controladores do Barramento Serial Universal. O provedor de driver do dispositivo deve ser FTDI.
Antes de criar um GPIO, dispositivo I2C ou SPI, você deve identificar o adaptador USB para serial conectado. O código a seguir lista os dispositivos FTDI conectados:
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;
}
No código anterior, o método FtCommon.GetDevices()
retorna uma lista de todos os dispositivos FTDI conectados.
Aqui está uma implementação de hardware do tutorial Fazer um LED piscar que usa o adaptador FTDI FT232H para controlar um LED:
Na imagem anterior, o circuito de LED é muito semelhante ao tutorial original. A única diferença é que o LED está conectado ao pino D7 no adaptador FT232H em vez de fixar 18 no Raspberry Pi.
O código do tutorial também é semelhante ao tutorial original:
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;
}
No código anterior:
Ft232HDevice
é criada passando a primeira ID do dispositivo retornada por FtCommon.GetDevices()
para o construtor.GpioController
controlador nomeado é criada chamando CreateGpioController()
na instância Ft232HDevice
. Essa instância GpioController
executa as mesmas funções que a instância GpioController
no tutorial original.GetPinNumberFromString()
na instância Ft232HDevice
e passando o nome do pino alfanumérico D7.Quanto à comunicação I2C, os pinos D0 e D1 no adaptador FT232H são usados nas linhas SDL e SCA, respectivamente. O seletor I2C no adaptador FT232H deve ser definido como On.
Aqui está uma implementação de hardware do tutorial Ler condições ambientais de um sensor que usa o adaptador FTDI FT232H para ler a temperatura, umidade e pressão barométrica de um sensor BME280:
Na imagem anterior:
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);
}
No código anterior:
Ft232HDevice
é criada passando a primeira ID do dispositivo retornada por FtCommon.GetDevices()
para o construtor.I2cDevice
é criada chamando CreateI2cDevice()
na instância Ft232HDevice
. Essa instância I2cDevice
executa as mesmas funções que a instância I2cDevice
no tutorial original.Quanto à comunicação com SPI, os pinos D0, D1, D2 e D3 no adaptador FT232H são usados nas linhas SCK, MOSI, MISO e CS, respectivamente. O seletor I2C no adaptador FT232H deve ser definido como Off.
Aqui está uma implementação de hardware dos Valores de leitura de um tutorial de conversor analógico-digital que usa o adaptador FTDI FT232H para ler valores de um ADC MCP3008:
Na imagem anterior:
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);
}
No código anterior:
Ft232HDevice
é criada passando a primeira ID do dispositivo retornada por FtCommon.GetDevices()
para o construtor.SpiDevice
é criada chamando CreateSpiDevice()
na instância Ft232HDevice
. Essa instância SpiDevice
executa as mesmas funções que a instância SpiDevice
no tutorial original.O código deste tutorial está disponível no GitHub.
Comentários do .NET
O .NET é um projeto código aberto. Selecione um link para fornecer comentários:
Treinamento
Roteiro de aprendizagem
Engenheiro de borda de IA - Training
Este roteiro de aprendizagem tem o objetivo de explicar aos aprendizes como implantar a IA na borda usando os serviços do Azure.