保姆级教程:用树莓派4B+DHT22传感器,5分钟搞定OneNET物模型数据上云
树莓派4BDHT22传感器极速上云指南从硬件连接到OneNET物模型实战在智能家居和物联网原型开发中快速验证想法往往比完美实现更重要。本文将带你用树莓派4B和DHT22温湿度传感器在5分钟内完成从物理连接到OneNET物联网平台数据可视化的全流程。不同于传统教程冗长的环境配置我们采用最小必要步骤设计即使没有任何Linux或Python基础的开发者也能立即看到传感器数据在云端跳动。1. 硬件准备与连接1.1 物料清单检查确保手边有以下设备型号必须完全匹配树莓派4B任何内存版本均可建议安装Raspberry Pi OS Lite系统DHT22传感器AM2302型号注意是3引脚封装版母对母杜邦线3条颜色建议红、黑、黄5V/3A USB-C电源为树莓派供电注意DHT22有裸板和三线封装两种版本本文使用带塑料外壳的三线版VCC/GND/DATA若使用四针版本需要额外接电阻。1.2 物理连接图解按照以下引脚对应关系连接树莓派GPIO引脚DHT22引脚线色建议GPIO4 (Pin7)DATA黄色5V (Pin2)VCC红色GND (Pin6)GND黑色连接完成后树莓派通电启动。可通过lsmod | grep dht命令检查内核是否自动加载了dht11驱动虽然DHT22需要用户态驱动但内核模块存在表示硬件正常。2. 软件环境一键配置2.1 依赖安装在树莓派终端执行以下命令全部复制粘贴运行#!/bin/bash # 一键安装脚本 sudo apt update sudo apt install -y python3-pip git sudo pip3 install Adafruit_DHT git clone https://github.com/adafruit/Adafruit_Python_DHT.git cd Adafruit_Python_DHT sudo python3 setup.py install2.2 传感器测试代码创建dht22_test.py文件import Adafruit_DHT import time sensor Adafruit_DHT.DHT22 pin 4 # GPIO4 while True: humidity, temperature Adafruit_DHT.read_retry(sensor, pin) if humidity is not None and temperature is not None: print(fTemp{temperature:.1f}°C Humidity{humidity:.1f}%) else: print(Failed to read data) time.sleep(2)运行测试python3 dht22_test.py正常应每2秒输出一次温湿度数据。若持续报错检查硬件连接是否松动。3. OneNET物模型快速接入3.1 控制台配置三步骤创建产品登录OneNET控制台 → 物联网平台 → 创建产品 → 选择物模型接入方式 → 自定义品类如环境监测定义物模型在产品详情页添加两个属性温度float类型单位℃湿度float类型单位%RH添加设备记录自动生成的设备ID和API Key3.2 Python上传脚本创建onenet_upload.pyimport requests import json import Adafruit_DHT from time import sleep DEVICE_ID 你的设备ID API_KEY 你的API_Key sensor Adafruit_DHT.DHT22 pin 4 def upload_to_onenet(temp, humi): url fhttp://api.heclouds.com/devices/{DEVICE_ID}/datapoints headers {api-key: API_KEY} payload {datastreams: [ {id: temperature, datapoints: [{value: temp}]}, {id: humidity, datapoints: [{value: humi}]} ]} r requests.post(url, headersheaders, datajson.dumps(payload)) return r.status_code 200 while True: humidity, temperature Adafruit_DHT.read_retry(sensor, pin) if None not in (humidity, temperature): if upload_to_onenet(temperature, humidity): print(fUploaded: {temperature}°C, {humidity}%) sleep(30) # 每30秒上传一次后台运行nohup python3 onenet_upload.py 此时OneNET控制台应能看到实时数据曲线。4. 微信小程序实时展示可选对于需要移动端查看的场景可通过微信小程序调用OneNET API。在小程序的app.js中添加const fetchSensorData () { wx.request({ url: https://api.heclouds.com/devices/设备ID/datapoints, header: {api-key: 你的API_Key}, success(res) { console.log(最新数据:, res.data.data) } }) }页面布局建议使用canvas绘制温湿度曲线或简单显示数值view classcontainer text当前温度{{temp}}℃/text text当前湿度{{humi}}%RH/text /view常见问题速查表现象可能原因解决方案持续输出Failed to read1. 引脚接错 2. 电源不足1. 检查GPIO4连接 2. 换5V电源API返回401错误API Key填写错误检查控制台-设备详情页的Key数据上传但曲线不动物模型ID未匹配确保脚本中id与物模型定义一致硬件方面若在潮湿环境使用建议给DHT22加装防水透气膜软件层面生产环境应考虑添加本地数据缓存防止网络中断导致数据丢失。