模块3 WIFI物联网通信-项目2 数据上报下发-任务2 数据上传OneNET平台
任务2 数据上传OneNET平台一、任务描述本任务基于 STM32F103C8T6 最小系统板通过传感器采集温度、湿度、光照强度数据由 ESP-01S WiFi 模块以MQTT 协议将数据上传至OneNET物联网平台。实现硬件采集→ WiFi传输→MQTT上报→云端存储显示的完整物联网流程掌握设备数据上报、平台数据解析、物联网通信格式等核心技能。二、任务目标1. 知识目标1理解MQTT 数据上报格式与 OneNET 平台数据解析规则。2掌握温湿度、光照传感器数据采集与格式转换方法。3熟悉 ESP-01S 通过AT 指令发布 MQTT 消息PUBLISH的流程。4理解 JSON 格式在物联网数据传输中的作用。2. 能力目标1能够采集温度、湿度、光照模拟 / 数字数据。2能够将采集数据拼接为标准 JSON 上报格式。3能够通过 ESP-01S 将数据上传至 OneNET 平台。4能够在 OneNET 平台查看实时数据、历史曲线。3. 素质目标1培养数据格式规范、通信时序严谨的工程习惯。2提升传感器采集、数据封装、云端调试综合能力。3建立 “采集→处理→上传→显示” 的完整物联网思维。三、任务重难点1. 任务重点1MQTT 数据上报主题$sys/产品ID/设备ID/thing/property/post2标准 JSON 数据格式包含温度、湿度、光照。3ESP-01S 发布指令ATMQTTPUB。4数据成功上传并在 OneNET 平台显示。2. 任务难点1JSON 格式错误导致平台无法解析。2字符串拼接、转义字符处理不当。3MQTT 主题错误、数据无法上报。4浮点型数据温度 / 湿度格式转换。四、知识准备1.MQTT 数据上传原理设备作为MQTT 客户端通过PUBLISH报文向指定主题Topic发送 JSON 格式数据平台订阅主题并解析、存储、展示数据。2.OneNET 数据上报主题固定格式$sys/产品ID/设备ID/thing/property/post·必须替换为自己平台的产品 ID和设备 ID·主题错误 → 数据发不出去 / 平台收不到3.标准 JSON 上报格式必须严格遵守{id: 1,params: {temp: { value: 25.5 },humi: { value: 48 },light: { value: 320 }}}temp温度humi湿度light光照格式错误 → 平台显示无数据4.ESP-01S MQTT 发布 AT 指令ATMQTTPUB0,主题,JSON数据,0,0\r\n·功能向平台发布传感器数据·0,0QoS0retain05.完整执行流程1设备连 WiFi2连接 MQTT 服务器任务 2 前半部分3采集温湿度、光照4拼接成 JSON 字符串5使用ATMQTTPUB上传6平台显示数据五、硬件连接ESP-01S模块与主控STM32F103C8T6的引脚连接如表1所示。表1 ESP-01S模块与主控STM32F103C8T6的引脚连接编号ESP-01S模块主控STM32F103C8T61VCC3V32GNDGND3TXPA3USART2_RX4RXPA2USART2_TX硬件连接电路图如图1所示。图1硬件连接电路图六、任务实现任务 2.1 修改 main.c 代码1.在/* USER CODE BEGIN 0 */和/* USER CODE END 0 */之间添加如下代码char LED[10]false ,fan[10]false;2./* USER CODE BEGIN 2 */后的代码如下/* USER CODE BEGIN 2 */Led_Init();//LED初始化Init_BH1750(); //光照传感器初始化PWM_Init(); // 风扇驱动初始化Led_Set(LED_ON); //开启LED灯strcpy(LED,true);OLED_Init();printf(任务2 数据上传OneNET平台\r\n);HAL_UART_Receive_IT(huart2,(uint8_t *)Uart2_RxData, 1);//开启串口中断HAL_Delay(500);esp01s_Init();//初始化esp01s连接wifiHAL_Delay(500);while(OneNet_DevLink())//连接OneNETHAL_Delay(1000);/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){DHT11_Read_Data(temp, humi);light Value_GY30();printf(OneNet_SendData\r\n);OneNet_SendData();//发送数据esp01s_Clear();//清空数据缓存区HAL_Delay(3000);//3s发送一次/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */}任务 2.2 修改 onenet.c 代码修改OneNet_FillBuf()函数的代码如下extern uint8_t temp,humi;extern uint16_t light;extern char LED[10] ,fan[10];unsigned char OneNet_FillBuf(char *buf){char text[120];memset(text, 0, sizeof(text));strcpy(buf, {\id\:\123\,\params\:{);memset(text, 0, sizeof(text));sprintf(text, \temp\:{\value\:%d},, temp);strcat(buf, text);memset(text, 0, sizeof(text));sprintf(text, \humi\:{\value\:%d},, humi);strcat(buf, text);memset(text, 0, sizeof(text));sprintf(text, \light\:{\value\:%d},, light);strcat(buf, text);memset(text, 0, sizeof(text));sprintf(text, \LED\:{\value\:%s},, LED);strcat(buf, text);memset(text, 0, sizeof(text));sprintf(text, \fan\:{\value\:%s}, fan);strcat(buf, text);strcat(buf, }});return strlen(buf);}任务 2.3 编译、下载、查看结果1.点击编译按钮编译程序。2.点击下载按钮下载程序。3.打开串口调试助手按stm32f103c8t6主控板上的复位键在串口调试助手中输出打印信息如图2所示。图2 输出打印信息4.刷新 OneNET设备详情页面设备数据已经上传到OneNet平台如图3所示。图3 设备数据上传到OneNet平台

相关新闻

出院后制氧机租赁,需要注意哪些问题?

出院后制氧机租赁,需要注意哪些问题?

出院不是照护的结束,尤其当患者回家后仍需继续使用制氧设备时,如何顺利从医院过渡到家庭照护,就成了很多家庭最先要面对的问题。直接买一台制氧机动辄数千甚至上万元,不少家庭因此选择制氧机租赁,用多少租多久&#xf…

2026/8/23 23:08:29 阅读更多 →
论文AIGC率居高不下?2026年4个指令+3个实测技巧,从50%降至10%稳了!

论文AIGC率居高不下?2026年4个指令+3个实测技巧,从50%降至10%稳了!

写论文最让人崩溃的瞬间是什么?不是熬夜肝格式改到眼瞎,也不是导师追着要修改意见,而是AIGC检测率死活降不下来!明明是自己熬了好几个通宵抠出来的内容,系统却一口判定“AI痕迹过重”,轻则返工重写&#xf…

2026/8/23 23:08:29 阅读更多 →
走栈道-破障

走栈道-破障

昨日团队团建,到石崮寨游玩,走栈道的事情值得一记。栈道建于山顶峭壁,探出崖壁大约1米的样子,1米多高的护栏,从栈道向外看一览无遗,我没敢向下看。初踏栈道,没有感觉到什么,向前看是…

2026/8/23 23:08:29 阅读更多 →

最新新闻

SwiftUIRefresh API参考:.pullToRefresh()修饰符参数详解、版本演进与使用注意事项

SwiftUIRefresh API参考:.pullToRefresh()修饰符参数详解、版本演进与使用注意事项

SwiftUIRefresh API参考:.pullToRefresh()修饰符参数详解、版本演进与使用注意事项 【免费下载链接】SwiftUIRefresh Pull To Refresh for SwiftUI lists 项目地址: https://gitcode.com/gh_mirrors/sw/SwiftUIRefresh SwiftUIRefresh 是一款为 SwiftUI 列表…

2026/8/24 9:59:22 阅读更多 →
NestJS 日志关联难题一键破解:用 nestjs-cls 自动追踪全局 Request ID 完整指南

NestJS 日志关联难题一键破解:用 nestjs-cls 自动追踪全局 Request ID 完整指南

NestJS 日志关联难题一键破解:用 nestjs-cls 自动追踪全局 Request ID 完整指南 【免费下载链接】nestjs-cls A continuation-local storage (async context) module compatible with NestJSs dependency injection. 项目地址: https://gitcode.com/gh_mirrors/ne…

2026/8/24 9:59:22 阅读更多 →
Laracasts/Cypress 脚手架深度拆解:cypress:boilerplate 命令生成的 8 个文件逐一解析

Laracasts/Cypress 脚手架深度拆解:cypress:boilerplate 命令生成的 8 个文件逐一解析

Laracasts/Cypress 脚手架深度拆解:cypress:boilerplate 命令生成的 8 个文件逐一解析 【免费下载链接】cypress Laravel Cypress Integration 项目地址: https://gitcode.com/gh_mirrors/cyp/cypress Laracasts/Cypress 是 Jeffrey Way 出品的 Laravel Cypr…

2026/8/24 9:59:22 阅读更多 →
洛雪音乐音源配置指南:从导入第一份音源到主备搭配的稳定做法

洛雪音乐音源配置指南:从导入第一份音源到主备搭配的稳定做法

洛雪音乐音源配置指南:从导入第一份音源到主备搭配的稳定做法 【免费下载链接】lxmusic- lxmusic(洛雪音乐)全网最新最全音源 项目地址: https://gitcode.com/gh_mirrors/lx/lxmusic- lxmusic 是一个收录洛雪音乐音源脚本的仓库,脚本负责调用酷我…

2026/8/24 9:59:22 阅读更多 →
具身智能体记忆系统BrainMem:类脑记忆与任务规划实践

具身智能体记忆系统BrainMem:类脑记忆与任务规划实践

1. 项目概述:当具身智能体拥有“大脑记忆”最近在折腾具身智能体(Embodied Agent)的任务规划时,我遇到了一个经典难题:如何让智能体在复杂、动态的环境中,记住过去的关键经验,并利用这些经验来指…

2026/8/24 9:59:22 阅读更多 →
RePKG 实战教程:提取 Wallpaper Engine 的 PKG 包并把 TEX 转成 PNG

RePKG 实战教程:提取 Wallpaper Engine 的 PKG 包并把 TEX 转成 PNG

RePKG 实战教程:提取 Wallpaper Engine 的 PKG 包并把 TEX 转成 PNG 【免费下载链接】repkg Wallpaper engine PKG extractor/TEX to image converter 项目地址: https://gitcode.com/gh_mirrors/re/repkg Wallpaper Engine 的创意工坊壁纸落到本地后&#x…

2026/8/24 9:58:21 阅读更多 →

日新闻

前端内容安全与依赖审计实践

前端内容安全与依赖审计实践

前端内容安全与依赖审计实践 前端安全依赖分层防护。没有任何单一配置能替代输出编码、权限校验和依赖更新。 把不可信内容当作数据 默认使用框架的转义能力;确需渲染 HTML 时,先在服务端或可信的客户端库中进行白名单过滤。避免把用户输入直接赋给 inne…

2026/8/24 1:08:15 阅读更多 →
Windows登录密码存储机制全解析:从哈希算法到安全加固实战

Windows登录密码存储机制全解析:从哈希算法到安全加固实战

1. 项目概述:Windows登录密码的“黑匣子”每次你按下CtrlAltDel,输入密码,然后看到那个熟悉的桌面,这背后发生了一系列复杂而精密的操作。作为一名长期与Windows系统打交道的从业者,我经常被问到:“我的密码…

2026/8/24 1:08:15 阅读更多 →
AI面试系统安全挑战与解决方案

AI面试系统安全挑战与解决方案

1. 项目概述:AI面试系统的安全挑战去年参与某跨国企业AI面试系统部署时,遇到一个典型案例:候选人在视频面试中无意提到竞争对手产品名称,系统竟自动将该信息关联到企业知识库并生成竞品分析报告。这个看似"智能"的功能&…

2026/8/24 1:08:15 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/24 0:06:02 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/24 0:20:20 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/24 0:14:11 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/23 18:47:06 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/23 12:10:44 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/22 3:22:48 阅读更多 →