DHT11 传感器在 Edison 上出现故障,而在 RPi 上工作成功

DHT11 sensor failure on Edison whereas working successful on RPi

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

目前我想用 Arduino 扩展板 运行 Yocto Linux 将 DHT11 连接到 Intel Edison。在尝试将库重写为 Python 时,我预计该语言的微秒睡眠会出现问题,并最终决定重新制作 Raspberry Pi DHT11 Library using mraa. However, sensor isn't working as well. I found the topic on Intel forum 指责 Edison 端口快速 IN/OUT 切换无能。建议的使用两根电线的解决方案也没有帮助我。

经过这个介绍,我想到了几个问题:

  1. 因为树莓派和爱迪生都是计算机系统 处理器和 Linux(不像 Arduino,它由简单的 微控制器),为什么人们在 DHT11 上遇到问题 爱迪生,而那些正在使用 Raspberry 的人却没有?

  2. 这些问题的根源是什么?是否与 爱迪生的非确定性 OS 计时(RPi 有相同的,没有 它?),数字引脚有缺陷或两者都有?

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

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

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

在使用没有确定性 GPIO 时序的系统时,您需要做的是使用接口连接传感器。该接口应使用具有确定性时序的小型微处理器。 (即照片、阁楼等)。

  • 或 - 使用系统上具有确定性时序的现有外围设备,例如 UART。

几年前我写了一篇博客-post,内容是关于如何使用 UART 执行 1-Wire 协议。您应该可以在这里找到它:http://wphost.spider-e.com/?p=231