爱迪生的DHT11传感器故障,而在RPi上工作成功

时间:2017-04-17 14:55:21

标签: python linux raspberry-pi sensor intel-edison

前段时间我将DHT11传感器连接到Arduino UNO并根据a simple library写了the one from Arduino website

目前,我想将DHT11与运行Yocto Linux的Arduino扩展板连接到英特尔爱迪生。在尝试将库重写为Python时,我预计会出现微秒的问题,并且最终决定使用Raspberry Pi DHT11 Library重新构建mraa。但是,传感器也不起作用。我发现the topic on Intel forum指责Edison端口快速IN / OUT切换无能。使用两根电线的建议解决方案对我没有帮助。

在介绍之后,我想到了几个问题:

  1. 由于Raspberry和Edison都是真实的计算机系统 处理器和Linux(与Arduino不同,它由简单的 微控制器),为什么人们面临DHT11的问题 爱迪生,而那些使用覆盆子的人不是

  2. 这些问题的根源是什么?是否与之相关 爱迪生的非确定性操作系统时序(RPi具有相同的,不具备的功能) 它?),数字引脚有缺陷还是两者兼而有之?

  3. 甚至可以使用两根线来解决这个问题 用二极管)?如果没有建议的三态,也许这是不可能的 缓冲

  4. 将单线设备连接到爱迪生的最简单方法是什么?

1 个答案:

答案 0 :(得分:0)

如您所知,1-Wire协议需要确定性时序。 不可能在像爱迪生,甚至是PC这样的计算平台上进行确定性计时。您可能会使用usleep()来接近它,但您的应用可能会随时中断,从而搞乱您的时间。

使用没有GPIO确定性时序的系统时,您需要做的是使用接口连接传感器。该接口应该使用一个小的micro,它具有确定性的时序。 (即Pic,ATTINY等)。

  • 或 - 使用系统上具有确定性时序的现有外设,例如UART。
几年前我写了一篇关于如何使用UART进行1-Wire协议的博客文章。您应该可以在此处找到它:http://wphost.spider-e.com/?p=231