繁体   English   中英

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

[英]DHT11 sensor failure on Edison whereas working successful on RPi

前段时间,我将DHT11传感器连接到Arduino UNO,并基于Arduino网站的一个 编写了一个简单的库

目前,我想通过运行Yocto Linux的Arduino扩展板将DHT11连接到Intel Edison。 在尝试将库重写为Python时,我期望该语言的微秒级睡眠出现问题,并最终决定使用mraa重制Raspberry Pi DHT11库 但是,传感器无法正常工作。 在英特尔论坛上找到了将该话题归咎于爱迪生端口快速输入/输出切换无能为力的话题 提出的使用两根导线的解决方案也没有帮助我。

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

  1. 由于Raspberry和Edison都是具有真实处理器和Linux的计算机系统(不同于由简单微控制器组成的Arduino),为什么人们在Edison上面临DHT11的问题,而那些使用Raspberry的人却没有呢?

  2. 这些问题的根源是什么? 它是否与Edison上的不确定OS时序(RPi相同,不是吗?),数字引脚缺陷或两者都有关系?

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

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

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

使用没有确定的GPIO时序的系统时,您需要做的是使用接口连接传感器。 该接口应使用确实具有确定性时序的小型Micro。 (例如Pic,ATTINY等)。

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

几年前,我写了一篇博客文章,介绍如何使用UART进行1-Wire协议。 您应该可以在这里找到它: http : //wphost.spider-e.com/?p=231

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM