news 2026/6/23 1:59:27

硬件入门 + 单片机基础(第21天)ESP32 全套项目联调

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
硬件入门 + 单片机基础(第21天)ESP32 全套项目联调

一、整体业务流程

DHT11/DHT22 温湿度传感器采集 → ESP32 WiFi 联网 → MQTT 三元组加密鉴权上云 → 云端物模型解析存储 → 云端历史数据归档生成曲线 → 云端下发指令 → ESP32 驱动继电器执行开关动作

二、硬件清单

  1. ESP32 开发板
  2. DHT11/DHT22 温湿度传感器
  3. 5V/3.3V 继电器模块
  4. 杜邦线若干

三、硬件接线

  1. DHT11
  • VCC → 3.3V
  • GND → GND
  • DATA → GPIO4
  1. 继电器
  • VCC → 3.3V
  • GND → GND
  • IN → GPIO2

四、Arduino 库安装

  1. WiFi自带
  2. PubSubClientMQTT 客户端
  3. AliyunIoTSDK阿里云官方加密联网库
  4. DHT sensor library+Adafruit Unified Sensor温湿度库

五、完整整合源码(采集 + 上报 + 存储 + 远程控制一体)

#include <WiFi.h> #include <PubSubClient.h> #include <AliyunIoTSDK.h> #include "DHT.h" //===================== 配置区 自行修改 ===================== #define WIFI_SSID "你的WiFi名称" #define WIFI_PASSWORD "你的WiFi密码" #define PRODUCT_KEY "产品KEY" #define DEVICE_NAME "设备名称" #define DEVICE_SECRET "设备秘钥" #define REGION "cn-shanghai" #define DHTPIN 4 #define DHTTYPE DHT11 #define RELAY_PIN 2 #define UPLOAD_INTERVAL 3000 // 3秒上报一次 曲线平滑 //========================================================== DHT dht(DHTPIN,DHTTYPE); WiFiClient espClient; PubSubClient mqttClient(espClient); AliyunIoTSDK aliyunIot; bool relayState = false; float temp,humi; // 云端指令回调 远程控制继电器 void cloudCallback(char* topic,byte* payload,unsigned int len) { String recvData; for(int i=0;i<len;i++) recvData += (char)payload[i]; Serial.println("云端下发指令:"+recvData); if(recvData.indexOf("DeviceSwitch\":true")>0) { relayState = true; digitalWrite(RELAY_PIN,HIGH); Serial.println("继电器开启"); } if(recvData.indexOf("DeviceSwitch\":false")>0) { relayState = false; digitalWrite(RELAY_PIN,LOW); Serial.println("继电器关闭"); } } // WiFi连接 void initWiFi() { WiFi.begin(WIFI_SSID,WIFI_PASSWORD); while(WiFi.status()!=WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("\nWiFi联网成功"); } // 阿里云MQTT加密连接 void initAliMQTT() { aliyunIot.connect(mqttClient,PRODUCT_KEY,DEVICE_NAME,DEVICE_SECRET,REGION); mqttClient.setCallback(cloudCallback); while(!mqttClient.connected()) { mqttClient.connect(DEVICE_NAME); delay(1000); } Serial.println("阿里云MQTT加密连接成功 设备已在线"); } // 采集温湿度 void getSensorData() { temp = dht.readTemperature(); humi = dht.readHumidity(); if(isnan(temp)||isnan(humi)) { Serial.println("传感器读取失败"); return; } } // 标准物模型JSON上报 void uploadToCloud() { char buf[256]; sprintf(buf,"{\"params\":{\"Temperature\":%.1f,\"Humidity\":%.1f,\"DeviceSwitch\":%s}}", temp,humi,relayState?"true":"false"); aliyunIot.postProperty(mqttClient,buf); Serial.println("数据上报:"+String(buf)); } void setup() { Serial.begin(115200); pinMode(RELAY_PIN,OUTPUT); digitalWrite(RELAY_PIN,LOW); dht.begin(); initWiFi(); initAliMQTT(); } void loop() { mqttClient.loop(); // 断网重连机制 if(!mqttClient.connected()) initAliMQTT(); static unsigned long timeCnt = 0; if(millis()-timeCnt>=UPLOAD_INTERVAL) { timeCnt = millis(); getSensorData(); uploadToCloud(); } }

六、阿里云后台全套配置回顾

  1. 创建产品与设备获取三元组完成身份认证
  2. 物模型功能定义
    • 温度 Temperature 浮点 只读
    • 湿度 Humidity 浮点 只读
    • 设备开关 DeviceSwitch 布尔 可读写
  3. 开启数据存储监控运维→数据存储→开启属性存储,自动留存所有历史数据
  4. 历史曲线查看设备详情→物模型数据→历史数据,自由切换时段查看平滑变化曲线

七、联调整体测试流程

  1. 烧录代码上电,串口打印 WiFi 联网 + 阿里云在线成功
  2. 传感器自动采集环境温湿度,定时加密上传云端
  3. 云端页面实时刷新数值,自动存入数据库
  4. 云端手动切换设备开关状态,ESP32 瞬间驱动继电器通断
  5. 长时间运行无断连、无丢包、数据连续稳定
  6. 进入历史数据页面,查看全天温湿度变化平滑曲线

八、结业达标能力

  1. 掌握 ESP32 WiFi 配网、串口调试、外设驱动开发
  2. 精通阿里云三元组加密 MQTT安全上云商用标准流程
  3. 熟练自定义物联网标准物模型,上下行协议对接
  4. 实现感知层 - 网络层 - 平台层 - 应用层完整物联网链路打通
  5. 具备小型工业采集终端、智能家居设备独立上云落地能力
  6. 掌握数据云端存储、历史追溯、远程双向控制商用项目开发

九、项目拓展方向(商用升级)

  1. 增加多路传感器:光照、气压、油烟、人体感应
  2. 增加本地 OLED 屏同步显示数据
  3. 搭建手机小程序 / APP 可视化控制面板
  4. 配置云端规则引擎,实现超限自动报警
  5. 批量设备批量注册、批量运维管理
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/20 8:59:57

GD32F303 看门狗喂狗策略:从定时器中断到任务监控的实践演进

1. 看门狗基础与GD32F303的实现原理 第一次接触GD32F303的看门狗功能时&#xff0c;我和很多嵌入式新手一样&#xff0c;把它简单理解成"系统重启按钮"。但实际开发中&#xff0c;这个看似简单的模块却藏着不少门道。看门狗本质上是个硬件计时器&#xff0c;就像个严…

作者头像 李华
网站建设 2026/5/20 8:54:41

Zotero PDF Translate:如何让跨语言文献阅读变得轻松高效?

Zotero PDF Translate&#xff1a;如何让跨语言文献阅读变得轻松高效&#xff1f; 【免费下载链接】zotero-pdf-translate Translate PDF, EPub, webpage, metadata, annotations, notes to the target language. Support 20 translate services. 项目地址: https://gitcode.…

作者头像 李华
网站建设 2026/5/20 8:54:31

终极键盘连击修复方案:KeyboardChatterBlocker 全面使用指南

终极键盘连击修复方案&#xff1a;KeyboardChatterBlocker 全面使用指南 【免费下载链接】KeyboardChatterBlocker A handy quick tool for blocking mechanical keyboard chatter. 项目地址: https://gitcode.com/gh_mirrors/ke/KeyboardChatterBlocker 还在为机械键盘…

作者头像 李华
网站建设 2026/5/20 8:54:29

GitHub中文界面终极指南:如何免费实现GitHub界面全面汉化

GitHub中文界面终极指南&#xff1a;如何免费实现GitHub界面全面汉化 【免费下载链接】github-chinese GitHub 汉化插件&#xff0c;GitHub 中文化界面。 (GitHub Translation To Chinese) 项目地址: https://gitcode.com/gh_mirrors/gi/github-chinese 你是否曾经因为G…

作者头像 李华
网站建设 2026/5/20 8:52:30

ToastFish:创新Windows通知栏智能记忆工具,让碎片时间高效学习

ToastFish&#xff1a;创新Windows通知栏智能记忆工具&#xff0c;让碎片时间高效学习 【免费下载链接】ToastFish 一个利用摸鱼时间背单词的软件。 项目地址: https://gitcode.com/GitHub_Trending/to/ToastFish 在忙碌的现代生活中&#xff0c;ToastFish通过创新的Win…

作者头像 李华