加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

Windows 10 IoT Raspberry Pi 2:DHT22 / AM2302

发布时间:2020-12-14 02:47:01 所属栏目:Windows 来源:网络整理
导读:我只是想开始使用DHT22 / AM2302(温度和湿度传感器),但我不知道如何初始化并获取它的数据…我试图使用GpioPin: gpioController = GpioController.GetDefault();if(gpioController == null){ Debug.WriteLine("GpioController Initialization failed."); ret
我只是想开始使用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());

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

之后,我看了一下unixoids的库,发现了这个:

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

但我不知道如何在使用Windows 10的VCSharp中实现这一点,任何人都有想法或经验?

非常感谢你提前!

更新:

我得到了提示,没有GPIO-Pin 7,这是真的,所以我重新尝试了,但GPIO输出似乎只是高或低…所以我必须使用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);
    }
}

这个工作效果不太好,需要明确的是:它只启动一次启动覆盆子pi2,然后启动/远程调试应用程序,但退出应用程序并重新启动后,SPI初始化失败.

现在我正在努力从引脚读取数据,并在将来的更新中显示一些代码.任何评论,答案和建议仍然是受欢迎的.

解决方法

DHT22需要非常精确的定时.虽然Raspberry PI / Windows 10物联网核心速度非常快,但由于它是一个操作系统,除非你编写某种低级驱动程序(不是C#),否则需要进行其他操作,否则你将无法生成通信所需的时间用DHT22.

我所做的是以5美元左右的价格使用廉价的Arduino Mini Pro,其唯一目的是在微控制器和Raspberry Pi之间生成并发送正确的时序,然后在Arduino Mini Pro(I2C,Serial)之间设置某种通信通道.从Arduino中提取数据.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读