Windows, Linux ve macOS bilgisayarlarda .NET IoT Kitaplıklarını kullanma
Makale
.NET IoT kitaplıkları genellikle Raspberry Pi ve diğer IoT cihazları için kod geliştirmek için kullanılır. Bununla birlikte, FTDI FT232H gibi bir USB-seri bağdaştırıcı kullanarak Windows, Linux ve macOS bilgisayarlar için kod geliştirmek için de kullanabilirsiniz. Bu makalede, FT232H bağdaştırıcısına bağlı cihazlarla iletişim kurmak için .NET IoT kitaplıklarının nasıl kullanılacağı gösterilmektedir.
İpucu
Bu makalede FTDI FT232H bağdaştırıcısı kullanılır, ancak .NET IoT kitaplıkları tarafından desteklenen FT2232H, FT4232H ve FT4222 gibi herhangi bir USB'den seri bağdaştırıcıya kullanabilirsiniz. Daha fazla bilgi için desteklenen cihaz bağlamaları listesine bakın.
Bağdaştırıcıyı taktığınızda Windows cihazları sürücüleri otomatik olarak yükleyebilir. Evrensel Seri Veri Yolu denetleyicileri altında listelenen USB Seri Dönüştürücü adlı bir cihaz için Aygıt Yöneticisi denetleyin. Cihazın sürücü sağlayıcısı FTDI olmalıdır.
Kullanılabilir cihazları listeleme
GPIO, I2C veya SPI cihazı oluşturabilmeniz için önce bağlı USB-seri bağdaştırıcısını tanımlamanız gerekir. Aşağıdaki kod, bağlı FTDI cihazlarını listeler:
C#
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;
}
Yukarıdaki kodda FtCommon.GetDevices() , yöntemi tüm bağlı FTDI cihazlarının listesini döndürür.
Önceki görüntüde LED bağlantı hattı özgün öğreticiye çok benzer. Tek fark, LED'in Raspberry Pi üzerindeki pin 18 yerine FT232H bağdaştırıcısındaki D7 sabitlemesine bağlı olmasıdır.
Öğreticinin kodu da özgün öğreticiye benzer:
C#
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;
}
Önceki kodda:
Bir örnek Ft232HDevice , tarafından FtCommon.GetDevices() döndürülen ilk cihaz kimliği oluşturucuya geçirilerek oluşturulur.
Adlandırılmış denetleyici örneğiGpioController, örnekte çağrılarak CreateGpioController()Ft232HDevice oluşturulur. Bu GpioController örnek, özgün öğreticideki örnekle GpioController aynı işlevleri gerçekleştirir.
Pinin tamsayı değeri, örnekte çağrılarak GetPinNumberFromString()Ft232HDevice ve alfasayısal pin adı D7 geçirilerek alınır.
Kodun geri kalanı özgün öğreticiyle aynıdır.
I2C cihazı kullanma
I2C iletişimi için FT232H bağdaştırıcısındaki D0 ve D1 pinleri sırasıyla SDL ve SCA hatları için kullanılır. FT232H bağdaştırıcısındaki I2C seçici anahtarı Açık olarak ayarlanmalıdır.
FT232H bağdaştırıcısındaki D0 ve D1 pinleri sırasıyla BME280 tartışma panosundaki SDL ve SCA pinlerine bağlanır.
BME280 tartışma panosundaki I2C seçici anahtarı Açık olarak ayarlanır.
C#
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(outvar tempValue);
bme280.TryReadPressure(outvar preValue);
bme280.TryReadHumidity(outvar humValue);
bme280.TryReadAltitude(outvar 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);
}
Önceki kodda:
Bir örnek Ft232HDevice , tarafından FtCommon.GetDevices() döndürülen ilk cihaz kimliği oluşturucuya geçirilerek oluşturulur.
örneği, örnekte I2cDevice çağrılarak CreateI2cDevice()Ft232HDevice oluşturulur. Bu I2cDevice örnek, özgün öğreticideki örnekle I2cDevice aynı işlevleri gerçekleştirir.
Kodun geri kalanı özgün öğreticiyle aynıdır.
SPI cihazı kullanma
SPI iletişimi için FT232H bağdaştırıcısındaki D0, D1, D2 ve D3 pinleri sırasıyla SCK, MOSI, MISO ve CS hatları için kullanılır. FT232H bağdaştırıcısındaki I2C seçici anahtarı Kapalı olarak ayarlanmalıdır.
FT232H bağdaştırıcısındaki D0, D1, D2 ve D3 pinleri sırasıyla MCP3008 CLK, DIN, DOUT ve CS/SHDN pinlerine bağlanır.
MCP3008 tartışma panosundaki I2C seçici anahtarı Kapalı olarak ayarlanır.
C#
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);
usingvar mcp = new Mcp3008(spi);
while (true)
{
Console.Clear();
doublevalue = mcp.Read(0);
Console.WriteLine($"{value}");
Console.WriteLine($"{Math.Round(value/10.23, 1)}%");
Thread.Sleep(500);
}
Önceki kodda:
Bir örnek Ft232HDevice , tarafından FtCommon.GetDevices() döndürülen ilk cihaz kimliği oluşturucuya geçirilerek oluşturulur.
örneği, örnekte SpiDevice çağrılarak CreateSpiDevice()Ft232HDevice oluşturulur. Bu SpiDevice örnek, özgün öğreticideki örnekle SpiDevice aynı işlevleri gerçekleştirir.
Bu içeriğin kaynağı GitHub'da bulunabilir; burada ayrıca sorunları ve çekme isteklerini oluşturup gözden geçirebilirsiniz. Daha fazla bilgi için katkıda bulunan kılavuzumuzu inceleyin.
.NET geri bildirimi
.NET, açık kaynak bir projedir. Geri bildirim sağlamak için bir bağlantı seçin:
Diğer geliştiriciler ve uzmanlarla gerçek dünyadaki kullanım örneklerini temel alan ölçeklenebilir yapay zeka çözümleri oluşturmak için toplantı serisine katılın.