1092| 30
|
[项目] 【花雕学编程】Arduino动手做(218)--DHT22模块五个小实验 |
代码解读 这段代码实现了一个基于Arduino平台的温湿度监测系统,使用DHT22传感器采集环境温湿度数据,并通过OLED显示屏实时显示,同时将数据通过串口输出。 1. 头文件包含
Wire.h:Arduino的I2C通信库,用于OLED显示屏与Arduino之间的数据传输。 Adafruit_GFX.h:Adafruit图形库的基础库,提供绘图函数,如绘制线条、矩形、文字等,为后续在OLED上显示内容提供基础支持。 Adafruit_SSD1306.h:Adafruit针对SSD1306 OLED显示屏的驱动库,封装了对SSD1306显示屏的各种操作,如初始化、清屏、显示文字等。 DHT.h:DHT传感器库,用于与DHT系列温湿度传感器进行通信,读取温湿度数据。 2. 宏定义与对象创建
SCREEN_WIDTH 和 SCREEN_HEIGHT:定义OLED显示屏的宽度和高度,这里使用的是128x64像素的屏幕。 OLED_RESET:OLED显示屏的复位引脚,设为 -1 表示与Arduino的复位引脚共用。 Adafruit_SSD1306 display:创建一个SSD1306显示屏对象,指定屏幕尺寸、I2C通信对象 Wire 和复位引脚。 DHTPIN:定义DHT22传感器的数据引脚连接到Arduino的数字引脚2。 DHTTYPE:指定传感器类型为DHT22。 DHT dht:创建一个DHT对象,用于与DHT22传感器进行通信。 3. setup() 函数
Serial.begin(115200):初始化串口通信,波特率设置为115200,用于将数据通过串口输出到计算机。 display.begin(SSD1306_SWITCHCAPVCC, 0x3C):初始化OLED显示屏,SSD1306_SWITCHCAPVCC 表示使用内部稳压器为显示屏供电,0x3C 是OLED显示屏的I2C地址。 若初始化失败,通过串口输出错误信息,并进入死循环。 清除显示屏内容,设置文字大小为1,文字颜色为白色,设置光标位置为(0, 0),显示“Initializing...”提示信息,然后更新显示屏。 调用 dht.begin() 初始化DHT22传感器,并延迟2秒等待传感器稳定。 4. loop() 函数
dht.readHumidity() 和 dht.readTemperature():分别读取DHT22传感器的湿度和温度数据。 使用 isnan() 函数检查读取的数据是否为有效值,若无效则通过串口输出错误信息,在OLED上显示“DHT22 Error!”,延迟2秒后返回。 清除显示屏内容,设置文字大小为2,设置光标位置为(0, 0),显示温度信息;再将光标位置设置为(0, 32),显示湿度信息,然后更新显示屏。 通过串口输出温度和湿度信息。 延迟2秒后再次循环执行。 总结 这段代码实现了一个简单的温湿度监测系统,通过DHT22传感器采集环境温湿度数据,使用OLED显示屏实时显示数据,并通过串口将数据输出到计算机,方便用户查看和分析。 |
【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程) 实验二百一十八:DHT22 单总线数字温湿度传感器 AM2302电子积木模块 项目之四:使用 Adafruit DHT Unified 库读取 DHT22 数据 实验开源代码
|
【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程) 实验二百一十八:DHT22 单总线数字温湿度传感器 AM2302电子积木模块 项目之三:使用 DHT22 传感器读取温湿度数据并计算热指数 实验开源代码
|
DHT22 是一款常用的单总线数字温湿度传感器,以下是关于它的详细介绍: 1、基本概述 DHT22 采用单总线通信协议,能够实时测量环境中的温度和湿度,并将测量结果以数字信号的形式输出。它具有体积小、功耗低、精度高、稳定性强等优点,广泛应用于智能家居、气象监测、农业温室等领域。 2、主要特性 高精度测量:温度测量范围为 - 40℃至 80℃,精度可达 ±0.5℃;湿度测量范围为 0% 至 100% RH,精度可达 ±2% RH。 单总线接口:仅需一个引脚即可与微控制器进行通信,简化了硬件连接,降低了成本。 数字输出:直接输出数字信号,无需额外的模数转换电路,方便微控制器进行读取和处理。 低功耗:工作电流通常在 0.5mA 至 2mA 之间,适合电池供电的设备使用。 响应速度快:能够在短时间内快速测量并更新温湿度数据,一般响应时间在 1 秒以内。 3、应用场景 智能家居:用于监测室内温湿度,实现自动调节空调、加湿器、除湿器等设备的运行,提供舒适的居住环境。 气象监测:可以作为小型气象站的温湿度传感器,实时监测环境温湿度变化,为气象预报和研究提供数据支持。 农业温室:帮助农民监测温室内的温湿度,及时采取措施调节环境,为农作物生长提供最佳条件,提高农作物产量和质量。 工业生产:在一些对温湿度要求较高的工业生产环境中,如电子制造、药品生产等,用于监测和控制生产环境的温湿度,确保产品质量。 ![]() ![]() |
【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程) 实验二百一十八:DHT22 单总线数字温湿度传感器 AM2302电子积木模块 项目之一:最简单的测试 实验开源代码
|
代码解读 这段代码使用 DHT22 传感器 通过 单总线数字通信 读取 温度和湿度数据,核心逻辑如下: 1. 初始化 ✅ #define DHTPIN 2 → 将数据引脚连接到 Arduino 的 D2 ✅ #define DHTTYPE DHT22 → 指定传感器类型为 DHT22 ✅ DHT dht(DHTPIN, DHTTYPE); → 创建 DHT 传感器对象 ✅ Serial.begin(9600); → 启动串口通信 ✅ dht.begin(); → 初始化 DHT22 传感器 2. 读取温湿度数据 ✅ float temp = dht.readTemperature(); → 获取温度数据 ✅ float hum = dht.readHumidity(); → 获取湿度数据 3. 输出数据 ✅ Serial.print("温度: "); Serial.print(temp); Serial.println(" °C"); → 在串口打印温度 ✅ Serial.print("湿度: "); Serial.print(hum); Serial.println(" %RH"); → 在串口打印湿度 4. 采集间隔 ✅ delay(2000); → 每 2 秒读取一次数据,适合定期监测 这段代码让 DHT22 传感器定期采集温湿度数据,并显示在串口监视器上。 |
【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程) 实验二百一十八:DHT22 单总线数字温湿度传感器 AM2302电子积木模块 项目之二:串口绘图器显示温湿度波形曲线 实验开源代码
|
代码简单解读 这段代码使用 DHT22 传感器 测量温度和湿度,并通过 Arduino Serial Plotter 显示波形,核心逻辑如下: 1. 初始化 ✅ #define DHTPIN 9 → 数据引脚连接到 Arduino 的 D2 ✅ #define DHTTYPE DHT22 → 指定传感器类型为 DHT22 ✅ DHT dht(DHTPIN, DHTTYPE); → 初始化 DHT 传感器 ✅ Serial.begin(9600); → 启动串口通信 ✅ dht.begin(); → 激活传感器 2. 采集温湿度数据 ✅ float temp = dht.readTemperature(); → 获取温度数据 ✅ float hum = dht.readHumidity(); → 获取湿度数据 3. 处理数据 ✅ if (isnan(temp) || isnan(hum)) → 检查数据是否有效 ✅ 如果传感器未检测到数据,打印“传感器不可用” 4. 显示波形 ✅ Serial.print(temp); Serial.print(","); Serial.println(hum); → 以逗号分隔数据,适配 Arduino Serial Plotter ✅ 绘图器会自动将温度和湿度转换成两条曲线 5. 采集间隔 ✅ delay(500); → 每 500 毫秒更新数据,提高波形流畅度 这段代码让 DHT22 传感器不断测量温湿度,并在 Arduino Serial Plotter 生成实时波形。 |
代码解读 这段代码使用 DHT22 传感器 读取 温度和湿度数据,并计算 热指数,核心逻辑如下: 1. 传感器连接 ✅ #define DHTPIN 2 → 数据线连接 Arduino 的 D2 引脚 ✅ #define DHTTYPE DHT22 → 指定传感器类型(DHT22,可更换为 DHT11 或 DHT21) ✅ 供电连接 → 5V 或 3.3V(根据开发板逻辑电压选择) ✅ 上拉电阻 → 使用 10kΩ 电阻连接数据线与电源,确保信号稳定 2. 初始化 ✅ Serial.begin(9600); → 启动串口通信 ✅ dht.begin(); → 初始化 DHT22 传感器 3. 读取温湿度 ✅ float h = dht.readHumidity(); → 获取湿度 ✅ float t = dht.readTemperature(); → 获取温度(摄氏度) ✅ float f = dht.readTemperature(true); → 获取温度(华氏度) 4. 数据处理 ✅ 检测读取失败 → isnan(h) || isnan(t) || isnan(f) 确保数据有效 ✅ 计算热指数(体感温度) → dht.computeHeatIndex(t, h, false); 以摄氏度计算 ✅ dht.computeHeatIndex(f, h); 以华氏度计算 5. 输出数据 ✅ 湿度 → Serial.print(h); Serial.print("%"); ✅ 温度(摄氏 & 华氏) → Serial.print(t); Serial.print("°C "); Serial.print(f); Serial.print("°F"); ✅ 热指数 → Serial.print(hic); Serial.print("°C "); Serial.print(hif); Serial.println("°F"); 6. 循环采集 ✅ delay(2000); → 每 2 秒采集一次数据,适合定期监测 这段代码让 DHT22 传感器不断测量环境温湿度,并计算体感温度后输出到串口。 |
© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed