2015-05-06 29 views
5

Volevo solo iniziare a fare esperienza con il DHT22/AM2302 (un sensore di temperatura e umidità), ma non ho idea di come inizializzarlo e ottenere i dati di esso ... ho cercato di usare GpioPin: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()); 

ma ottenere l'eccezione: "Una risorsa necessaria per questa operazione è disabilitata"

Dopo che ho preso uno sguardo alla biblioteca per i fanatici di Unix e ho trovato questo:

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

Ma non ho idea di come per rendersi conto che in VCSharp utilizzando Windows 10, chiunque un'idea o esperienza?

Grazie mille in anticipo!

UPDATE:

ho preso il suggerimento, che non c'è GPIO-Pin 7 e questo è vero, quindi ho ri-provato, ma il GPIO-Output sembra essere solo HIGH o LOW ... Quindi devo usare l'I2C o l'SPI ... Secondo questo Progetto, ho deciso di provarlo con SPI: http://microsoft.hackster.io/windowsiot/temperature-sensor-sample e facendo passi avanti ... La difficoltà ora è tradurre la C-Library collegata sopra al C -Sharp-SDK per ricevere i dati corretti ...

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

Questo non funziona così bene, per essere chiari: funziona solo una volta sulla messa in servizio del PI2 lampone, poi a partire/debug remoto ap plication, ma dopo aver chiuso l'applicazione e riavviarli, l'inizializzazione SPI non riesce.

E ora sto lavorando sulla lettura dei dati dal pin e mostrerò del codice in un aggiornamento futuro. Eventuali commenti, risposte e/o consigli sono ancora benvenuti.

risposta

1

DHT22 richiede tempi molto precisi. Sebbene il core IoT di Raspberry PI/Windows 10 sia estremamente veloce, dato che si tratta di un sistema operativo in cui altre cose devono accadere a meno che non si scriva un qualche tipo di driver di basso livello (non C#) non sarà possibile generare i tempi necessari per comunicare con un DHT22.

Quello che faccio è usare un economico Arduino Mini Pro per circa $ 5 con l'unico scopo di generare e inviare i tempi corretti tra il microcontrollore e il Raspberry Pi, quindi impostare una sorta di canale di comunicazione tra l'Arduino Mini Pro (I2C , Seriale) per estrarre i dati da Arduino.