我刚刚给自己买了一个温度和湿度传感器 DHT22,但我有一些疑问: - 该设备只能与 arduino 或 Rpi 一起使用吗? - 如果答案是否定的,那么它如何与 GPIO 配合使用?据我了解,gpio有2个选项:-Direcion(输入或输出)和值(0或1)。因此,据此,我检查了很多arduino和Rpi的示例,了解如何使用该设备,并且所有示例都连接到gpio的端口。那么这是如何运作的呢? c/c++ 有更大的能力来处理这些读数吗? - 如果传感器可以与更多设备一起使用,是否有任何Linux标准库/代码来处理该设备?
谢谢。
最佳答案
正如您所描述的,DHT22 是通过 GPIO 引脚工作的。这意味着任何具有 GPIO 的设备都可以使用它。
关于图书馆。有两个主要的库用于通过编写的 GPIO 进行通信,一个用于 C++,一个用于 Python。这意味着任何具有 GPIO 并且可以运行 Python 或 C++ 的设备都可以使用您的 DHT22。
没有基于 C++、Python、Java...的库怎么办?嗯,没有Linux 标准库用于通过 GPIO 进行通信。当然,如果您渴望学习和探索,您可以使用 Assembly 或 Bash 编写一个库,这将尽可能接近 LSL。通过这样做,您可以从 Linux shell 通过 GPIO 进行 native 通信,而无需任何其他编程语言。如果您对 Bash 感兴趣,请查看 this .
当 Linux 只能读取 0 和 1 时,它如何知道温度和湿度?考虑两件事:
- 计算机如何存储数字32?计算机只知道0和1,所以他需要将32转换为二进制。十进制的 32 = 2^6 是二进制的 100000。
计算机如何读取温度和湿度?当你执行像
这样的函数时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 编写新库...)。
关于c++ - DHT22和GPIO如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46036474/