2015-05-06 8 views
5

Ich wollte nur Erfahrungen mit dem DHT22/AM2302 machen (ein Temperatur- und Feuchtigkeitssensor), aber ich habe keine Ahnung, wie ich initialisieren und die Daten davon bekommen soll ... ich habe versucht, GpioPin zu verwenden:Windows 10 IoT Raspberry Pi 2: DHT22/AM2302

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()); 

aber die Ausnahme erhalten: „Eine Ressource für diese Operation erforderlich ist deaktiviert“

Danach nahm ich einen Blick auf die Bibliothek für die unixoids und fanden diese:

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

Aber ich habe keine Ahnung, wie zu erkennen, dass in VCSharp Windows mit 10, jemand eine Idee oder Erfahrung?

Vielen Dank im Voraus!

UPDATE:

ich den Hinweis bekam, dass es nicht GPIO-Pin 7 und das ist wahr, so dass ich wieder versuche es, aber der GPIO-Ausgang scheint nur hoch oder niedrig zu sein ... Also muss ich den I2C oder den SPI benutzen ... Laut diesem Projekt habe ich mich entschieden, es mit SPI auszuprobieren: http://microsoft.hackster.io/windowsiot/temperature-sensor-sample und mache Fortschritte ... Die Schwierigkeit besteht nun darin, die oben verlinkte C-Library in das C zu übersetzen -Sharp-SDK die richtigen Daten ...

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); 
    } 
} 

das funktioniert nicht so gut, erhält klar zu sein: Es funktioniert nur ein einziges Mal auf die Himbeere PE2 Start, dann starten/remote die ap Debuggen Wenn Sie die Anwendung beenden und neu starten, schlägt die SPI-Initialisierung fehl.

Und jetzt arbeite ich am Lesen der Daten von der PIN und wird einige Code in einem zukünftigen Update zeigen. Kommentare, Antworten und Ratschläge sind immer noch willkommen.

Antwort

1

DHT22 erfordert eine sehr genaue Zeitmessung. Obwohl Raspberry PI/Windows 10 IoT-Core extrem schnell ist, da es ein Betriebssystem ist, wo andere Dinge passieren müssen, wenn Sie eine Art Low-Level-Treiber (nicht C#) schreiben, werden Sie nicht die notwendigen Timings für die Kommunikation generieren können mit einem DHT22.

Was ich mache ist eine billige Arduino Mini Pro für etwa $ 5 mit dem einzigen Zweck zu generieren und senden Sie die richtigen Zeiten zwischen dem Mikrocontroller und dem Raspberry Pi, dann eine Art Kommunikationskanal zwischen dem Arduino Mini Pro (I2C , Seriell), um die Daten aus dem Arduino zu ziehen.

Verwandte Themen