Tob*_*ann 5 iot windows-10 raspberry-pi2
我只是想开始使用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());
Run Code Online (Sandbox Code Playgroud)
但得到异常:"禁用此操作所需的资源."
之后,我看了一下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);
}
}
Run Code Online (Sandbox Code Playgroud)
这个工作效果不太好,需要明确的是:它只启动一次启动覆盆子pi2,然后启动/远程调试应用程序,但退出应用程序并重新启动后,SPI初始化失败.
现在我正在努力从引脚读取数据,并在将来的更新中显示一些代码.任何评论,答案和建议仍然是受欢迎的.
DHT22 需要非常精确的计时。尽管 Raspberry PI/Windows 10 IoT 核心速度非常快,但由于它是一个需要发生其他事情的操作系统,除非您编写某种低级驱动程序(不是 C#),否则您将无法生成通信所需的时序与 DHT22。
我所做的是使用大约 5 美元的廉价 Arduino Mini Pro,其唯一目的是在微控制器和 Raspberry Pi 之间生成并发送正确的时序,然后在 Arduino Mini Pro(I2C、串行)之间设置某种通信通道从 Arduino 中提取数据。
| 归档时间: |
|
| 查看次数: |
2974 次 |
| 最近记录: |