完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
简介: STM32+ESP8266通过MQTT协议将多传感器数据传输至OnenNet云平台,加入操作系统FreeRTOS进行多任务管理,增删模块和功能简单方便,提高开发效率,可以根据自己的需求快速增加其他传感器模块。基于上个版本改进,加入APP进行远程控制以及查看相关数据。
1.基于上一个freeRTOS版本改进,利用了mqtt协议的轻量性以及topic(主题)发布与订阅的特性。(上个版本没有topic订阅的功能,只是OneNET官方给的数据流接口,无法通过OneNET转发至个人APP)主要修改传感器数据上传报文的组织形式并加入订阅topic功能,设备控制部分简单修改 2.加入安卓手机APP进行远程控制,不再使用OneNET自带的应用管理,APP采用图形化编程,对只想快速制作APP的人来说非常友好(有APP制作简单教学) 3.两个版本,一个版本是多topic版(稍微稳定),一个是单topic版本(随便看看) 已知缺陷: APP存在缺陷,有时候会收不到数据(云平台转发丢包占一定比例,程序应该也有问题,但具体问题暂时不清楚,仅供参考,欢迎各位指出问题) 偶尔出现esp8266连接不上网络的问题(包括路由器连接,STA设置),大概率接线问题,多复位几次;也可能已经连接上但是串口显示未连接,可以试试去掉wifi指令控制的返回值判定。 注:部分功能采用他人开源程序或在他人开源程序的基础上修改。 1. 相关连接 1.1 本项目相关连接 github(源码) CSDN(图文解析) Bilibili(视频解析) 1.2 无APP原版连接(有如何在FreeRTOS操作系统中添加其他模块的教程,如传感器,LED任务) github(源码) CSDN(图文解析) Bilibili(视频解析) 1.3无操作系统简易版(旧版,有OneNET云平台设备创建和应用配置): github(源码) Bilibili(视频解析) CSDN(图文解析) 1.4 开发工具连接 APP开发网页连接 mqtt测试软件连接(Mqtt-device为测试软件,OneNET文档中心,该网址也包括mqtt接入协议详解) 2. 具体功能 基于嵌入式操作系统FreeRTOS进行多任务管理,增删模块和功能简单方便 采集光照强度,温度和湿度数据传输至云平台,云平台将数据转发至APP APP可以异地控制LED1的亮灭(通过OneNET云平台数据转发实现异地控制) APP可以异地控制LED2功能任务是否执行(通过OneNET云平台数据转发实现异地控制) 串口显示相关信息 3. 硬件环境 正点原子STM32F103RCT6(正点原子MiniSTM32) DHT11温湿度传感器 BH1750(GY30)光照强度传感器 ESP8266-01S无线模块 安卓手机 4. 接线(没改) ESP8266-01S(5根线) RX PA2 TX PA3 复位 PA4 VCC 3V3 GND GND DHT11(3根线) DATA PA6 VCC 3V3 GND GND BH1750(5根线) SCL PC12 SDA PC11 ADDR GND VCC 5V GND GND LED LED1 PD2 LED2 PA8 5. 云平台实例创建 见1.3无操作系统简易版(旧版,有OneNET云平台设备创建和应用配置,本文不再赘述) 平台设备由原来1个拓展为3个 1. MQTT的windows端测试软件(用于测试mqtt数据通信) 2. 安卓APP 3. STM32+ESP8266 6. 基础配置 6.1 OneNET云平台 6.2 APP应用管理 6.2.1APP界面 6.2.2 APP开发界面(部分) mqtt服务器URI: tcp://mqtt.heclouds.com:6002 设备—客户端标识 产品ID—用户名称 Master-APIkey ----密码 6.3 串口数据 波特率根据自己需求修改(太慢偶尔出现乱码) 6.4 MQTT的windows端测试软件 要填的位置已经标红,如图所示 设备—DeviceID 产品ID—productID Master-APIkey ----AuthInfo 7. STM32+ESP8266源码详解(未添加额外文件) 本次代码改写目的是增强拓展性,降低开发难度,所以加入操作系统FreeRTOS进行多任务管理,降低模块(传感器,控制)间耦合性,增删模块和功能简单方便,提高开发效率 7.1 源码文件解析 stm32f10x_it.c:中断处理函数 FreeRTOSConfig.h:FreeRTOS配置头文件 usart1.c:与串口住手通信 usart2.c:与ESP8266通信 timer3.c:定时器3中断用来发送心跳包(ping,用于保持和服务器连接,长时间没给服务器发送数据会被踢下线),2s和30s两种模式 timer4.c:将串口2接收到的服务器数据依次存放在MQTT接收缓存数组中,50ms没有新数据收到执行 control.c:处理传感器数据发送至队列及发送设备状态 dht11.c:DHT11(温湿度传感器)驱动 bh1750.c:BH1750(GY30,光照强度传感器)驱动 wifi.c:esp8266的wifi驱动 mqtt.c:mqtt协议处理相关函数 FreeRTOS_CORE:freeRTOS功能核心 FreeRTOS_PORTABLE:freeRTOS板级支持包,和芯片相关,包括接口和内存分配 7.2 服务器与wifi配置相关 具体OneNET云平台设备创建和应用配置见: 1.3 无操作系统简易版(旧版,有OneNET云平台设备创建和应用配置,本文不再赘述) 7.3 topic与命令配置 topic根据自己需求更改或者添加 控制设备命令根据需求更改或者添加 7.5 源码框架 括号里有“配置”字样的部分是用户必须修改的部分(例程已经配置了LED控制,环境温湿度检测和光照强度监测) 红色部分为拓展功能模块需要独立编写或者修改的地方 红色虚线部分根据功能更改,设备控制(任务)需要更改创建MQTT命令缓冲处理任务,数据直接发送至串口发送缓冲区(减少延迟),传感器设备任务需要向消息队列发送传感器数据,经过传感器处理任务处理后发送至串口发送缓冲区 初始化功能模块:添加拓展模块的初始化函数 创建用户任务:添加拓展模块任务(传感器数据读取或设备控制) 创建MQTT命令缓冲处理任务:添加设备控制命令,并发送设备状态(如果添加传感器任务则无需修改) 创建其他模块任务:实现传感器数据采集功能或者设备控制相关功能,实现传感器数据采集功能时需要红色虚线部分,设备控制不需要(不需要向消息队列发送数据)。 要实现连接服务器时发送控制设备初始状态的功能需要在创建MQTT数据接收发送缓冲处理任务的connect成功部分添加数据发送函数 其他部分可根据实际需求修改 7.6 模块拓展 拓展传感器及控制设备详细演示见: 1.2 无APP原版连接(有如何在FreeRTOS操作系统中添加其他模块的教程,如传感器,LED任务) 传感器任务和上一版本大体相同,主要修改了将topic主题数据发送到消息队列的函数以及数据报文的组织形式(具体实现进行了封装,只需要调用特定函数) 添加传感器模块的流程如下 自定义光照强度传感器数据的topic 声明任务句柄(任务控制卡)及任务函数 在开始任务中创建任务 修改对应传感器任务,添加传感器驱动,发送的数据通过send_data_to_queue_int(SUN_TOPIC, sun_light);改成自己的topic和传感器数据 源程序的后缀为.aia,直接导入即可,APP的后缀为.apk,安卓手机可以直接安装 红色括号为需要修改的模块 调用MQTT.订阅: 订阅单片机发送给服务器的主题topic 设备控制按钮:根据需求添加控制按钮 调用MQTT客户端。发送消息:设备控制以及获取设备状态 调用MQTT客户端。收到消息:对消息的解码,复制后根据需求修改字符判定 9 单topic版本(仅供参考) 传感器以及控制设备状态集中在一条topic中。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1297 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1310 浏览 1 评论
718 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
526 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1325 浏览 2 评论
1727浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
435浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
390浏览 3评论
378浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
357浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-20 10:59 , Processed in 1.108298 second(s), Total 76, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号