树莓派DHT11传感器5分钟极简上云指南从数据采集到微信小程序实时监控在智能家居和物联网原型开发中树莓派配合基础传感器往往能快速验证创意。本文将以最简硬件配置树莓派DHT11温湿度传感器和最少代码量演示如何5分钟内完成数据采集、Onenet物模型配置及微信小程序实时展示的全流程。不同于复杂的技术文档我们聚焦三个核心动作传感器读数、云端映射和前端呈现每个环节都提供可复用的代码片段和避坑指南。1. 硬件准备与基础环境搭建1.1 硬件清单与连接方式所需物料成本不足百元树莓派任意型号推荐4BDHT11温湿度传感器3.3V版本杜邦线若干连接示意图树莓派GPIO2Pin3 —— DHT11 DATA 树莓派3.3VPin1 —— DHT11 VCC 树莓派GNDPin6 —— DHT11 GND注意DHT11需并联4.7kΩ上拉电阻部分模块已内置1.2 树莓派系统配置执行以下命令完成基础环境准备# 更新系统 sudo apt update sudo apt upgrade -y # 安装Python3环境 sudo apt install python3-dev python3-pip -y # 安装传感器库 pip3 install Adafruit_DHT验证传感器是否正常工作import Adafruit_DHT sensor Adafruit_DHT.DHT11 pin 2 # GPIO2 humidity, temperature Adafruit_DHT.read_retry(sensor, pin) print(fTemp: {temperature}°C, Humidity: {humidity}%)常见问题排查若返回None检查接线是否正确使用gpio readall确认GPIO编号3.3V供电不足时尝试外接电源2. Onenet物模型快速配置2.1 产品与设备创建登录Onenet控制台进入物模型→产品开发点击创建产品填写基础信息产品名称DHT11_Monitor行业选择智能家居设备类型选择直连设备在功能定义中添加两个属性标识符名称数据类型单位temp温度float℃humi湿度float%RH创建设备时自动生成设备ID和API Key记录这两项关键信息2.2 数据上报脚本优化使用Python实现极简上报逻辑import requests import Adafruit_DHT import time DEVICE_ID your_device_id # 替换实际设备ID API_KEY your_api_key # 替换实际API_KEY def upload_to_onenet(temp, humi): url fhttp://api.heclouds.com/devices/{DEVICE_ID}/datapoints headers {api-key: API_KEY} payload { datastreams: [ { id: temp, datapoints: [{value: temp}] }, { id: humi, datapoints: [{value: humi}] } ] } r requests.post(url, headersheaders, jsonpayload) return r.status_code 200 while True: humidity, temperature Adafruit_DHT.read_retry(Adafruit_DHT.DHT11, 2) if humidity is not None and temperature is not None: upload_to_onenet(temperature, humidity) time.sleep(60) # 每分钟上报一次将脚本设置为开机自启动sudo crontab -e # 添加以下行 reboot python3 /home/pi/dht11_upload.py 3. 微信小程序端极简对接3.1 获取API鉴权信息在Onenet控制台依次操作右上角头像 →访问权限记录用户ID和AccessKey使用在线工具生成Token访问 Token生成工具填写用户ID、AccessKey选择SHA1加密设置合理有效期如24小时3.2 小程序核心代码实现在app.js中配置全局变量App({ globalData: { onenetToken: version2023-05-01resuserid/123456et1730000000methodsha1signxxxx, productId: your_product_id, deviceName: your_device_name } })页面逻辑index.jsPage({ data: { temp: null, humi: null }, onLoad() { this.fetchData() setInterval(() this.fetchData(), 30000) // 30秒刷新 }, fetchData() { wx.request({ url: https://iot-api.heclouds.com/thingmodel/query-device-property?product_id${getApp().globalData.productId}device_name${getApp().globalData.deviceName}, header: { Authorization: getApp().globalData.onenetToken }, success: (res) { this.setData({ temp: res.data.data[0].value.toFixed(1), humi: res.data.data[1].value.toFixed(1) }) } }) } })页面布局index.wxmlview classcontainer view classcard text classtitle当前温度/text text classvalue{{temp}}℃/text /view view classcard text classtitle当前湿度/text text classvalue{{humi}}%RH/text /view /view4. 全链路调试与优化技巧4.1 数据流验证步骤硬件层执行python3 test_dht11.py确认传感器输出传输层用curl测试API连通性curl -X GET https://iot-api.heclouds.com/thingmodel/query-device-property?product_idYOUR_PIDdevice_nameYOUR_DEVICE \ -H Authorization: YOUR_TOKEN应用层小程序开发工具开启调试模式查看网络请求4.2 性能优化建议树莓派端使用systemd管理进程替代cron添加异常重试机制如网络中断时缓存数据小程序端实现Token自动续期添加数据本地缓存减少请求频次Onenet配置设置数据存储策略如7天自动清理启用数据告警规则如温度超过30℃触发通知实际部署中发现DHT11在长时间运行后可能出现数据漂移建议每24小时强制重启一次采集程序。对于需要更高精度的场景可考虑改用SHT30传感器仅需修改Python库的导入语句即可兼容。