Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Библиотеки Интернета вещей .NET обычно используются для разработки кода для Raspberry Pi и других устройств Интернета вещей. Однако их также можно использовать для разработки кода для компьютеров Windows, Linux и macOS с помощью USB-последовательного адаптера, например FTDI FT232H. В этой статье показано, как использовать библиотеки Интернета вещей .NET для взаимодействия с устройствами, подключенными к адаптеру FT232H.
Совет
В этой статье используется адаптер FTDI FT232H, но можно использовать любой USB-последовательный адаптер, поддерживаемый библиотеками Интернета вещей .NET, такими как FT2232H, FT4232H и FT42222. Дополнительные сведения см. в списке поддерживаемых привязок устройств.
Необходимые компоненты
Убедитесь, что вы установили драйверы D2XX для USB-последовательного адаптера, которые находятся на веб-сайте FTDI.
Примечание.
Устройства Windows могут автоматически устанавливать драйверы при подключении адаптера. Проверьте диспетчер устройств устройства с именем USB-сериализатора, указанного в контроллерах универсальной шины. Поставщик драйверов устройства должен быть FTDI.
Вывод списка доступных устройств
Прежде чем создать устройство GPIO, I2C или SPI, необходимо определить подключенный USB-адаптер для сериализации. В следующем коде перечислены подключенные устройства 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;
}
В приведенном выше коде FtCommon.GetDevices() метод возвращает список всех подключенных устройств FTDI.
Использование устройства GPIO
Ниже приведена аппаратная реализация руководства по индикатору Blink, использующего адаптер FTDI FT232H для управления светодиодным индикатором:
На предыдущем изображении светодиодный канал очень похож на исходное руководство. Единственное различие заключается в том, что светодиодный индикатор подключен к закреплению D7 на адаптере FT232H вместо пин-кода 18 на Raspberry Pi.
Код для учебника также аналогичен исходному руководству:
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;
}
В предыдущем коде:
- Экземпляр
Ft232HDeviceсоздается путем передачи первого идентификатора устройства, возвращаемогоFtCommon.GetDevices()конструктором. - Экземпляр именованного контроллера
GpioControllerсоздается путем вызоваCreateGpioController()экземпляраFt232HDevice. ЭтотGpioControllerэкземпляр выполняет те же функции, чтоGpioControllerи экземпляр в исходном руководстве. - Целочисленное значение пин-кода извлекается путем вызова
GetPinNumberFromString()Ft232HDeviceэкземпляра и передачи буквенно-цифрового пин-кода D7. - Остальная часть кода идентична исходному руководству.
Использование устройства I2C
Для связи I 2C для линий SDL и SCA используются контакты D0 и D1 на адаптере FT232H соответственно. Переключатель селектора I2C на адаптере FT232H должен иметь значение On.
Ниже приведена аппаратная реализация условий среды чтения из руководства по датчику , использующего адаптер FTDI FT232H для чтения температуры, влажности и барометрического давления с датчика BME280:
На предыдущем рисунке:
- Контакты D0 и D1 на адаптере FT232H подключены к контактам SDL и SCA на доске разбиения BME280 соответственно.
- Переключатель селектора I2C на доске останова BME280 имеет значение On.
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);
}
В предыдущем коде:
- Экземпляр
Ft232HDeviceсоздается путем передачи первого идентификатора устройства, возвращаемогоFtCommon.GetDevices()конструктором. - Экземпляр
I2cDeviceсоздается путем вызоваCreateI2cDevice()экземпляраFt232HDevice. ЭтотI2cDeviceэкземпляр выполняет те же функции, чтоI2cDeviceи экземпляр в исходном руководстве. - Остальная часть кода идентична исходному руководству.
Использование устройства SPI
Для обмена данными SPI для линий SCK, MOSI, MISO и CS используются контакты D1, D2 и D3 на адаптере FT232H. Переключатель селектора I2C на адаптере FT232H должен иметь значение Off.
Ниже приведена аппаратная реализация значений чтения из руководства по аналогово-цифровому преобразователю , использующего адаптер FTDI FT232H для чтения значений из MCP3008 ADC:
На предыдущем рисунке:
- Контакты D0, D1, D2 и D3 на адаптере FT232H подключены к контактам CLK, DIN, DOUT и CS/SHDN MCP3008 соответственно.
- Переключатель селектора I2C на доске останова MCP3008 имеет значение Off.
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);
}
В предыдущем коде:
- Экземпляр
Ft232HDeviceсоздается путем передачи первого идентификатора устройства, возвращаемогоFtCommon.GetDevices()конструктором. - Экземпляр
SpiDeviceсоздается путем вызоваCreateSpiDevice()экземпляраFt232HDevice. ЭтотSpiDeviceэкземпляр выполняет те же функции, чтоSpiDeviceи экземпляр в исходном руководстве. - Остальная часть кода идентична исходному руководству.
Получение кода
Код для этого руководства доступен на сайте GitHub.