【问题标题】:How do DHT22 and gpio's work?DHT22 和 gpio 是如何工作的?
【发布时间】:2018-02-12 15:47:05
【问题描述】:

我刚给自己买了一个温度和湿度传感器 DHT22,我有一些疑问: - 这个设备只能与 arduino 或 Rpi 一起使用吗? - 如果答案是否定的,它如何与 GPIO 一起工作?据我了解,gpio 有 2 个选项:-Direcion(输入或输出)和 Value(0 或 1)。因此,据此,我检查了很多关于如何使用这些设备的 arduino 和 Rpi 示例,并且所有示例都连接到 gpio 的端口。那么这是如何工作的呢? c/c++ 是否有更大的能力来处理这些读数? - 如果传感器可以与更多设备一起使用,是否有任何 linux 标准库/代码来处理这个设备?

谢谢。

【问题讨论】:

    标签: c++ linux embedded sensors


    【解决方案1】:

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

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

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

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

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

      的功能时
      get_temperature()
      

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

    希望我说清楚了,这就是你想要的。

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

    【讨论】:

    • 感谢您的回答。关于 gpio 功能的问题呢?为什么在 linux 上我只能得到值 0 或 1 而使用 c++ 或 python 我可以读取例如在这种情况下的湿度温度?
    • 我将编辑回答以完成它,谢谢你提醒我我错过了一些东西......
    • 感谢您的链接。这就是我的问题所在,我将 DHT22 连接到我的 gpio,然后按照您发送给我的链接进行操作,我得到的唯一结果是 0。我希望定期获得一些值,但没有。我不明白这个,可能是我的传感器没有正确连接?
    • 谢谢,它的工作原理非常简洁。我想做的事?我有一块板子(Rpi 风格),我只想读取传感器的温度和湿度,但我找到的所有库都是针对 arduino/Rpi 的。
    • 你到底有什么板,我假设它运行的是 Linux?类似 Debian?既然你说它类似于 RPi,我认为设计人员可以在你自己的板上运行所有可以在 RPi 上运行的东西......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-24
    • 2020-07-06
    • 1970-01-01
    • 2018-11-10
    • 2018-06-21
    • 2012-09-13
    • 2014-03-29
    相关资源
    最近更新 更多