5

DHT22/AM2302 (温湿度センサー) を試してみたかったのですが、初期化してデータを取得する方法がわかりません... GpioPin を使用しようとしました:

gpioController = GpioController.GetDefault();
if(gpioController == null)
{
    Debug.WriteLine("GpioController Initialization failed.");
    return;
}
sensorPin = gpioController.OpenPin(7); //Exception throws here
sensorPin.SetDriveMode(GpioPinDriveMode.Input);
Debug.WriteLine(sensorPin.Read());

ただし、「この操作に必要なリソースが無効になっています」という例外が発生します。

その後、ユニクソイドのライブラリを調べたところ、次のことがわかりました。

https://github.com/technion/lol_dht22/blob/master/dht22.c

しかし、Windows 10を使用してVCSharpでそれを実現する方法がわかりません。アイデアや経験はありますか?

事前にどうもありがとうございました!

アップデート:

GPIO ピン 7 がなく、これが正しいというヒントを得たので、再試行しましたが、GPIO 出力は HIGH または LOW のようです ... したがって、I2C または SPI を使用する必要があります... このプロジェクトによると、私は SPI で試してみることにしました: http://microsoft.hackster.io/windowsiot/temperature-sensor-sampleと前進のステップを作る ... 今の難しさは、上記のリンクを翻訳することですC-Library から C-Sharp-SDK に移動して、適切なデータを受け取ります ...

private async void InitSPI()
{
    try
    {
        var settings = new SpiConnectionSettings(SPI_CHIP_SELECT_LINE);
        settings.ClockFrequency = 500000;
        settings.Mode = SpiMode.Mode0;

        string spiAqs = SpiDevice.GetDeviceSelector(SPI_CONTROLLER_NAME);
        var deviceInfo = await DeviceInformation.FindAllAsync(spiAqs);
        SpiDisplay = await SpiDevice.FromIdAsync(deviceInfo[0].Id, settings);
    }
    catch(Exception ex)
    {
        Debug.WriteLine("SPI Initialization failed: " + ex.Message);
    }
}

明確にするために、これはあまりうまく機能しません.raspberry pi2を起動してから、アプリケーションを開始/リモートデバッグするときに一度だけ機能しますが、アプリケーションを終了して再起動すると、SPI初期化が失敗します.

そして今、ピンからのデータの読み取りに取り組んでおり、将来の更新でいくつかのコードを表示します。コメント、回答、またはアドバイスは大歓迎です。

4

1 に答える 1

1

DHT22 には非常に正確なタイミングが必要です。Raspberry PI/Windows 10 IoT コアは非常に高速ですが、なんらかの低レベル ドライバー (C# ではない) を作成しない限り、他のことが必要なオペレーティング システムであるため、通信に必要なタイミングを生成することはできません。 DHT22で。

私がしているのは、マイクロコントローラと Raspberry Pi の間で正しいタイミングを生成して送信することだけを目的として、安価な Arduino Mini Pro を約 5 ドルで使用し、Arduino Mini Pro (I2C、シリアル) とArduino からデータを取得します。

于 2015-06-14T21:32:43.200 に答える