使用 Arduino 从温度和湿度传感器获取数据
在本教程中,我们将连接 Arduino DHT-22 温度和湿度传感器,并在串行监视器上打印获取的温度和湿度值。
电路图
当 DHT-22 面向您时,左侧第一个引脚 VCC 引脚连接到 5V,下一个引脚是 DATA 引脚,它连接到 Arduino Uno 上的引脚 2。第三个引脚未连接。第 4 个引脚 GND 连接到 Arduino 上的 GND。如上图所示,DATA 引脚和 DHT22 的 Vcc 引脚之间应连接一个 10K 电阻。
所需库
将 Arduino Uno 与 OLED 显示屏连接起来需要 Adafruit 的 DHT 传感器库 库 −
转到工具 → 管理库,搜索此库,然后单击安装。
代码演练
我们将演练随 DHT 传感器库附带的示例代码。转到文件 →示例 → DHT 传感器库 → DHTtester
或者,可以在 GitHub 上访问代码 − https://github.com/adafruit/DHTsensor-library/blob/master/examples/DHTtester/DHTtester.ino
如您所见,我们从包含 DHT 库开始。
#include "DHT.h"
接下来,我们定义连接到 DHT 传感器的数字引脚(在本例中为 Arduino 的引脚 2)。我们还定义了我们正在使用的 DHT 传感器的类型 (DHT22)
#define DHTPIN 2 #define DHTTYPE DHT22
接下来,我们使用之前定义的 DHTPIN 和 DHTTYPE 定义 DHT 对象
DHT dht(DHTPIN, DHTTYPE);
在设置中,我们使用 dht.begin() 初始化 Serial 和 dht。
void setup() { Serial.begin(9600); Serial.println(F("DHTxx test!")); dht.begin(); }
在循环中,我们首先添加 2 秒的延迟。这使得两次读数之间有一定的时间间隔。接下来,我们使用 .readHumidity() 和 .readTemperature() 函数读取湿度和温度。.readTemperature() 函数接受一个布尔参数,当设置为 true 时,将返回华氏温度(默认情况下返回摄氏度)。
如果 3 个读数中的任何一个为 NaN,我们将返回(您也可以在此处写入 continue)。最后,我们使用读取的温度和湿度值计算热指数。您可以在此处阅读有关热指数的更多信息。
最后,我们打印所有读取/计算的值。
void loop() { // 测量之间等待几秒钟。 delay(2000); // 读取温度或湿度大约需要 250 毫秒! // 传感器读数可能长达 2 秒(这是一个非常慢的传感器) float h = dht.readHumidity(); // 以摄氏度读取温度(默认值) float t = dht.readTemperature(); // 以华氏度读取温度(isFahrenheit = true) float f = dht.readTemperature(true); // 检查是否有任何读取失败并提前退出(重试)。 if (isnan(h) || isnan(t) || isnan(f)) { Serial.println(F("无法从 DHT 传感器读取!")); return; } // 以华氏度计算热指数(默认值) float hif = dht.computeHeatIndex(f, h); // 以摄氏度计算热指数(isFahreheit = false) float hic = dht.computeHeatIndex(t, h, false); Serial.print(F("Humidity: ")); Serial.print(h); Serial.print(F("% Temperature: ")); Serial.print(t); Serial.print(F("°C ")); Serial.print(f); Serial.print(F("°F Heat index: ")); Serial.print(hic); Serial.print(F("°C ")); Serial.print(hif); Serial.println(F("°F")); }
将此代码上传到您的 Arduino,您将能够在串行监视器上观察温度和湿度值。