2015-05-06 52 views
5

我只是想开始使用DHT22/AM2302(温度和湿度传感器)的经验,但我不知道如何初始化和获取它的数据......我试图使用GpioPin:Windows 10物联网树莓派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()); 

但是得到异常:“此操作所需的资源被禁用。”

从那以后,我看了一眼在unixoids图书馆,发现这一点:

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

但我不知道如何在VCSharp使用的是Windows 10,任何一个想法或经验实现?

非常感谢您提前!

UPDATE:

我得到了暗示,不存在GPIO引脚7,这是真的,所以我重新试了一下,但GPIO产出似乎只是高或低?所以我必须使用I2C或SPI ......根据这个项目,我决定试用SPI:http://microsoft.hackster.io/windowsiot/temperature-sensor-sample,并向前迈进......现在的困难是将上述链接的C库转换为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); 
    } 
} 

这工作不是那么好,是明确的:它的工作原理只是上一次启动树莓PI2,然后开始/远程调试AP但是在退出应用程序并重新启动它们之后,SPI初始化失败。

现在我正致力于读取来自引脚的数据,并将在未来的更新中显示一些代码。任何意见,答复和/或建议仍然受欢迎。

回答

1

DHT22需要非常精确的时间。尽管Raspberry PI/Windows 10 IoT内核速度非常快,但由于它是一个操作系统,除非您编写某种低级驱动程序(而不是C#),否则您将无法生成通信所需的时序与DHT22。

我所做的是使用价格低廉的Arduino Mini Pro,售价为5美元,唯一目的是在微控制器和Raspberry Pi之间生成并发送正确的时序,然后在Arduino Mini Pro(I2C ,Serial)从Arduino中提取数据。