ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

10-STM32+ESP8266+AIR202远程升级方案-功能3-手机APP控制STM32远程更新固件程序,基于ESP8266

2020-08-31 03:31:19  阅读:240  来源: 互联网

标签:升级 ESP8266 updata APP 更新 STM32 data 远程 设备


<p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/ESA2GJK1DH1K_B/" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>

<iframe frameborder="0" height="1500" name="ifd" scrolling="auto" src="https://mnifdv.cn/resource/cnblogs/ESA2GJK1DH1K_B/" width="100%"></iframe>

 

说明

前面章节是单片机主动访问升级,这节使用Android软件控制远程更新单片机程序!

请用户从第一节开始看,前面说过的不再重复赘述!

升级流程如下:

APP/微信小程序/其它上位机控制STM32实现远程升级协议:
APP/微信小程序/其它上位机以下统称为上位机软件

1.上位机软件首先通过MQTT发送询问设备信息指令>>
{"data":"updata","cmd":"DeviceInfo"}


2.设备收到以后回复型号和固件版本号(假设型号是:STM32APPESP8266BKAPP  固件版本是:0.0.0)
{"data":"updata","DeviceModel":"STM32APPESP8266BK","FirmwareVersion":"0.0.0"}


4.上位机收到设备型号以后,根据设备型号,使用http/https访问获取对应的info.txt文件
假设info.txt文件信息如下:
{"version":"0.0.1","size":15990,"url":"http://mnif.cn/ota/hardware/STM32APPESP8266BKAPP/user_crc.bin","info":"1.解决了部分BUG
2.优化了部分程序"}


5.上位机对比版本号:  0.0.0  和 0.0.1  不一致,弹出选择是否更新对话框.
注:对话框的提示信息为:  1.解决了部分BUG 2.优化了部分程序 
注:如果版本号一致,则提示用户版本是最新无需升级


6.如果用户点击了升级,通过MQTT发送以下信息给设备
{"data":"updata","size":15990,"url":"http://mnif.cn/ota/hardware/STM32APPESP8266BKAPP/user_crc.bin"}


7.设备接收正确解析以后回复
{"data":"updata","status":"start"}  //设置为保留消息,上位机订阅主题便可立即知道设备是不是在执行更新.


8.设备上线以后需要第一时间发送更新状态(携带着更新状态变量,版本号)
{"data":"updata","UpdataValue":0-255,"FirmwareVersion":"0.0.1"} //设置为保留消息

9.上位机收到该消息以后提示更新完成!或者更新失败,请重试!


其它:
设备在发送完更新状态以后,紧接着发送一条上线信息
{"data":"status","status":"online"} //设置保留消息,用于冲掉上面保留的消息.

补充:升级进度(升级进度是使用MQTT发送,需要在BootLoader里面加上MQTT通信,小容量单片机和AT指令版本的暂不考虑)
{"data":"updata","progress":"[0-100]"}

 

 

测试本节功能

 

 

 

1.单片机串口1作为日志打印口,串口2和模块通信
(STM32)PA3 -- TX(WiFi)
(STM32)PA2 -- RX(WiFi)

 



 

2.下载BootLoader程序

 

 

 

3.下载用户程序

注:需要用下载器

 

 

 

 

 

4.安装手机APP

 

 

 

5.按照前面基本控制方案里面的APUConfig绑定WiFi

点击设备进入控制页面

 

 

 

6.点击右上角菜单选择固件升级

 

 

 

7.选择确认

 

 

 

8.更新中

 

 

 

9.更新完成

 

 

 

10.再次点击固件升级的时候将会显示版本已是最新.

 

 

 

程序说明

1,前面的章节中是单片机主动访问 info.txt文件里面的信息,

然后根据信息控制升级,这节只不过是手机APP去获取这个信息,

然后对比下版本号,如果版本号不一致就把升级信息发给设备,控制设备升级.

 

2.打开APP源码

当用户点击了 固件升级 以后 

通过MQTT发送询问设备信息指令 {"data":"updata","cmd":"DeviceInfo"}

 

 

 

 

3.设备收到消息以后回复 型号和版本号

 

 

 

 

4.APP根据设备型号获取 info.txt文件

 

 

 

 

 

 

5.如果版本不一致,弹出提示框

 

 

 

 

 

6.如果用户点击了确认,就把info.txt里面的size字段和url字段的数据发给设备

 

 

 

 

 

 

 

7.设备接收到以后解析信息

 

 

 

 

8.解析完成以后,把size,url存入falsh,发送{"data":"updata","status":"start"} 给服务器

消息等级为1,确保发给了服务器. 

设置需要服务器保留消息,其它上位机订阅设备的主题便可立即获取这条消息,知道设备是在执行更新.

 

 

 

9.发送完成以后执行重启操作,在BootLoader里面执行更新

 

 

 

10.APP收到上面的指令以后,显示进度条对话框,提示正在更新

 

 

 

 

11.设备更新完成以后执行用户程序

连接上MQTT以后第一时间上报了 设备的更新状态变量和当前版本

 

 

 

 

12.APP显示更新状态

 

 

 

 

其它细节

 

标签:升级,ESP8266,updata,APP,更新,STM32,data,远程,设备
来源: https://www.cnblogs.com/yangfengwu/p/13587571.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有