DHT22和gpio是如何工作的?

时间:2017-09-04 11:53:21

标签: c++ linux embedded sensor

我刚拿到一个温湿度传感器DHT22,我有些疑惑: - 此设备仅适用于arduino或Rpi吗? - 如果答案为否,那么它如何与GPIO一起使用?据我所知,gpio有2个选项:-Direcion(in或out)和Value(0或1)。所以根据这个,我正在检查arduino和Rpi关于如何使用这个设备的很多例子,并且都附加到gpio的端口。那怎么工作呢? c / c ++有更大的容量来处理这个读数吗? - 如果传感器可以与更多设备一起使用,是否有任何linux标准库/代码来处理这个设备?

感谢。

1 个答案:

答案 0 :(得分:1)

正如您所描述的那样,DHT22可以通过GPIO引脚工作。这意味着任何具有GPIO的设备都可以使用它。

关于图书馆。有两个主要的库通过GPIO进行通信,一个用于C ++,另一个用于Python。这意味着任何具有GPIO并且可以运行Python或C ++的设备都可以使用您的DHT22。

如果没有基于C ++,Python,Java的库?那么,没有 Linux标准库可以通过GPIO进行通信。当然,如果你渴望学习和探索,你可以在Assembly或Bash中编写一个库,这将尽可能接近LSL。通过这样做,您可以在没有任何其他编程语言的情况下通过GPIO从Linux shell本地进行通信。如果您对Bash感兴趣,请查看this

当Linux只读取0和1时,它如何知道温度和湿度?考虑两件事:

  1. 计算机如何存储 32 ?计算机只知道 0 1 ,因此他需要将 32 转换为二进制。什么是十进制的 32 = 2 ^ 6 ,二进制 100000
  2. 电脑如何读取温度和湿度?当您执行类似

    的功能时
    get_temperature()
    

    从DHT22请求温度,实际发生的是你的计算机向DHT22发送信号(它通过DHT22上的IN“写入”DHT22,这与计算机上的OUT相同)。然后DHT22检测温度并“返回”数据。 如何发送?它通过GPIO(计算机上的GPIO IN和DHT22上的GPIO OUT)创建一系列电荷。在我们的例子中,如果温度 32 ,则它会发送下一个序列: 1-0-0-0-0-0 。计算机读取序列,当您尝试将其打印到屏幕时,它将其转换为十进制。

  3. 希望我清楚自己,这就是你想要的。

    在这个link中,如果你想要的话,你会找到一个用于读取DHT22温度和湿度的C代码。请让我知道你一般想做什么(通过库读取温度和嗡嗡声,编写用于通过GPIO进行通信的新库,使用另一种语言为DHT22编写新库...)。