ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

温湿度传感器入门到实战:原理、接线与代码

温湿度传感器入门到实战:原理、接线与代码 一、为什么需要温湿度传感器温度与湿度是环境中最重要的两个基础参数直接关系到设备寿命、产品质量与人体舒适度农业与种植大棚、育苗、菌菇房需要精准控温控湿机房与设备间服务器运行环境温湿度异常会加速硬件老化甚至宕机智能家居联动空调、加湿器、除湿机实现自动调节仓储与实验室药品、食品、电子元件的储存对温湿度有明确要求。学会用单片机读取温湿度是物联网IoT入门最经典也最实用的项目之一。二、工作原理温度和湿度是怎么测出来的1. 温度测量热敏电阻NTC阻值随温度变化通过分压电路测电压换算温度成本低但线性差数字温度芯片如 DS18B20内部完成模数转换单总线输出数字量集成传感器如 SHT30、BME280 内部自带校准与补偿直接输出数字信号。2. 湿度测量绝大多数温湿度传感器采用电容式湿敏元件高分子感湿薄膜吸附水分子后介电常数发生变化导致电容值变化再经内部电路转换为电压或数字信号输出。这类元件响应快、精度高、寿命长是当前主流方案。3. 通信接口分类接口典型型号特点单总线OneWireDHT11、DHT22仅需一根数据线时序敏感软件实现简单I2CSHT30、BME280两线制可多设备挂载读取稳定SPIBME280 等高速接线略多三、常见型号对比选型必看型号温度精度湿度精度温度量程湿度量程接口参考价格适用场景DHT11±2℃±5%RH0~50℃20~90%RH单总线约 3~8 元入门学习、精度要求不高的场合DHT22AM2302±0.5℃±2%RH-40~80℃0~100%RH单总线约 10~20 元家用环境监测、室外场合SHT30±0.3℃±2%RH-40~125℃0~100%RHI2C约 15~30 元精度要求高的项目、产品级BME280±1℃±3%RH-40~85℃0~100%RHI2C/SPI约 15~40 元需要同时测气压的场景说明以上参数为各型号公开规格的典型值具体以对应厂商官方数据手册为准。选型建议学习入门选 DHT11预算充足且要求稳定选 DHT22做产品级或高精度项目选 SHT30需要气压数据如海拔、气象站选 BME280。四、硬件准备与接线以 DHT11 为例物料清单开发板Arduino UNO 或 ESP32 均可传感器DHT11 模块3 脚版或裸芯片 4.7kΩ~10kΩ 上拉电阻杜邦线若干、面包板可选。接线表DHT11 引脚连接目标VCC3.3V 或 5VDATA任意 GPIO示例用 GPIO4需外接 4.7kΩ~10kΩ 上拉电阻到 VCCGNDGND提示市面上常见的 DHT11 模块板载上拉电阻直接接 VCC / GND / DATA 三根线即可裸芯片则必须加上拉电阻否则会读取失败或数据错误。五、代码实现1. 安装依赖库在 Arduino IDE 的「库管理器」中搜索安装DHT sensor libraryby AdafruitAdafruit Unified Sensor自动依赖一并安装2. 基础代码串口输出温湿度#include DHT.h #define DHTPIN 4 // 数据引脚接 GPIO4 #define DHTTYPE DHT11 // 传感器型号如用 DHT22 则改为 DHT22 DHT dht(DHTPIN, DHTTYPE); void setup() { Serial.begin(9600); Serial.println(F(DHT 温湿度传感器测试开始)); dht.begin(); } void loop() { delay(2000); // DHT11 两次读取间隔至少 1~2 秒 float h dht.readHumidity(); float t dht.readTemperature(); // 读取失败时返回 NaN if (isnan(h) || isnan(t)) { Serial.println(F(读取失败请检查接线、上拉电阻和供电)); return; } Serial.print(F(湿度: )); Serial.print(h); Serial.println(F( %RH)); Serial.print(F(温度: )); Serial.print(t); Serial.println(F( ℃)); }3. 代码要点DHTTYPE宏按实际传感器修改DHT22 就改成DHT22delay(2000)必须保留DHT11 采样频率上限约 1Hz过快读取会持续失败isnan()判断用于排除读取失败的无效数据。4. 扩展玩法接一块 0.96 寸 OLEDSSD1306把温湿度显示到屏幕上ESP32 版可直接把数据通过 WiFi 上报到 MQTT/EMQX实现远程监控多个传感器接不同 GPIO可做多点温湿度采集。六、运行结果示例编译上传后打开串口监视器波特率 9600输出格式如下DHT 温湿度传感器测试开始 湿度: 56.00 %RH 温度: 25.40 ℃ 湿度: 56.20 %RH 温度: 25.50 ℃以上为示例输出仅用于演示串口格式并非真实测量数据实际数值以你设备所在环境的真实测量为准。七、常见问题与避坑指南一直返回 NaN / 读取失败检查顺序接线是否松动 → DATA 脚上拉电阻是否缺失模块版可忽略→ 供电是否稳定 → 采样间隔是否小于 2 秒。读数明显偏高传感器靠近发热元件开发板稳压芯片、电阻或阳光直射读数会失真应把传感器远离热源。湿度读数长期漂移电容式湿敏元件长期暴露在高湿、油烟环境会老化可用标准温湿度计比对必要时校准或更换。数据线过长DHT11 单总线对时序敏感引线建议不超过 20 米普通环境 5 米内最稳过长需换 DHT22 或 I2C 传感器。精度不等于分辨率DHT11 输出的小数位只是分辨率实际精度是 ±2℃/±5%RH展示和对比数据时注意区分。八、总结选型按精度 接口 价格三个维度权衡入门 DHT11、进阶 DHT22、产品级 SHT30、要气压选 BME280接线记住 VCC / GND / DATA裸芯片务必加上拉电阻代码三步装库 →dht.begin()→readTemperature()/readHumidity()遇到失败先查接线和采样间隔这两项占了 90% 的问题。把温湿度读出来只是第一步下一步可以接入 OLED、WiFi 上报或联动控制欢迎在评论区交流你的项目也欢迎点赞收藏后续更新 ESP32 远程监控实战。
返回列表