2-远程升级篇(自建物联网平台)-STM32通过EC800使用http或https下载程序文件升级程序(APP通过MQTT控制单片机更新)

这篇具有很好参考价值的文章主要介绍了2-远程升级篇(自建物联网平台)-STM32通过EC800使用http或https下载程序文件升级程序(APP通过MQTT控制单片机更新)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

说明

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

注意哈,只是在原先的基础上让APP把固件地址发给设备,而不是设备主动获取了;

其实就是远程升级和MQTT的结合;

整体升级流程如下:(APP和设备通过MQTT通信)

1,用户在APP上点击 "固件升级" 按钮, APP使用MQTT发送:  {"data":"updata","cmd":"DeviceInfo"} //询问设备固件信息

2,设备通过MQTT收到该消息以后,发送 {"data":"updata","cmd":"DeviceInfo","DeviceModel":"STM32EC800BKAPP","FirmwareVersion":"0.0.0"}

(STM32EC800BKAPP是设备的型号;  0.0.0是设备当前的固件版本)

3,APP收到以上消息以后,根据设备型号使用http请求云端记录的固件信息文件(info.txt)

提示:info.txt 存放的位置是固定的;    http://ota/hardware/设备型号/info.txt

4,APP把info.txt里面的固件版本和设备当前的进行对比, 如果不一致, 弹窗提示

对话框里面写的更新内容是 info.txt里面的  -----------"info":"1.解决了部分BUG 2.优化了部分程序"    

用户点击确认以后就把info.txt里面的固件版本和下载地址发送给设备(当然也可以直接发送这个命令让设备升级)

{"data":"updata","cmd":"start","version":"0.0.1","url":"http://mnif.cn/ota/hardware/STM32EC200BK/user_crc.bin"}

5,设备收到更新的命令以后,存储起来url, 并给APP发送开始升级  {"data":"updata","cmd":"start"}   ,然后开始重启升级

6,APP收到 {"data":"updata","cmd":"start"}  以后, 弹窗提示设备正在升级,

同时开始每隔1S通过MQTT发送查询设备版本指令   {"data":"updata","cmd":"version"} 

7,设备升级完了以后, 正常运行,设备就会通过MQTT收到APP的查询指令, 然后把当前的设备固件版本发送给APP

{"data":"updata","cmd":"version","FirmwareVersion":"0.0.1"}

8,最后APP提示升级完成

 文章来源地址https://www.toymoban.com/news/detail-853452.html

开始测试

1,GPRS模块和底板安装说明

单片机通过串口2和GPRS模块通信;  单片机PA8引脚作为复位模组使用;PB15连接模组的开机引脚

(单片机)PA2    ----   (EC800K)RX;

(单片机)PA3    ----   (EC800K)TX;

(单片机)PA8    ----   (EC800K)RST

(单片机)PB15  ----   (EC800K)PWR

注意: 单片机都是使用串口2和模组通信,所以需要拆掉ESP8266

2.使用下载器下载BootLoader程序

使用单片机串口1打印串口日志(115200)

 

2.下载用户程序到开发板

3.显示连接上MQTT服务器说明正确执行

4.安装APP

6.手机APP安装包位置

7.点击APP右上方的菜单栏,选择 扫一扫

8.扫描模组上面的二维码

9.扫描成功以后将会在主页面添加一个设备

注:显示的内容为模组的IMEI号

10.点击显示的设备,进入设备控制页面

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

12.点击确认

13,更新完成之后

14,再次点击菜单的固件升级会提示

应用到自己的服务器

1,打开用户程序(mcu_project)的tcp_mqtt.c文件, 修改为自己的MQTT服务器

2,确定好程序文件在服务器的路径

关于本人服务器文件夹解释:(自己随意就好,最后的文件夹命名使用产品的型号)

html:网站根目录

ota: ota升级

hardware : 硬件程序

STM32EC800BKAPP: 作为产品的型号(根据自己的产品型号修改)

我把固件放到了里面那么固件程序下载地址为:

http://服务器IP地址/ota/hardware/STM32EC800BKAPP/user_crc.bin

那么固件信息的下载地址为:

http://服务器IP地址/ota/hardware/STM32EC800BKAPP/info.txt

3.修改  用户程序(mcu_project)  的IAP.C文件

提示:我把它们存储在程序bin文件的1024字节倍数的位置是为了BootLoader下载的时候便于提取这些数据;

1.产品型号(我设置的为STM32EC800BKAPP)

2.修改固件程序版本(可随意指定,我设置的为0.0.2)

3.修改记录云端固件信息文件下载地址(我的为:http://mnif.cn/ota/hardware/STM32EC800BKAPP/info.txt)

4.修改BootLoader程序 的 IAP.c (设置下产品型号和默认的固件程序下载地址)

注意:BootLoader里面的产品型号要和用户里面的一样!!!!

BootLoader程序下载的时候会判断这个型号一不一致

5.编译用户程序(mcu_project)

会在工程目录的bin文件夹生成 user.bin文件

6.打开OTA Tools上位机软件

 

7.按照红框选择配置

 

9.选择用户程序生成的 bin文件

10.点击 生成固件

 

11.将在user.bin目录生成user_crc.bin文件

12.把生成的user_crc.bin文件拷贝到服务器

13.还差一个info.txt文件

我准备了一个模板

14.修改版本号(和用户程序里面设置的一样)

16.修改固件程序下载地址(和服务器上面的保持一致)

17.最后的提示信息是APP控制升级时提示的信息,可以自己修改

18.把info.txt文件也拷贝到服务器

19.使用android studio 打开 android工程(注意需要把工程放到英文目录)

20.修改自己的MQTT服务器

21.根据自己的web服务器修改(这个地方是获取服务器上面的 info.txt文件)

22.全部修改完成以后,重新下载单片机程序, 重新安装APP,按照前面的测试步骤测试即可

升级流程说明

1,APP上点击固件升级按钮

2,单片机收到以后回复

3,APP收到回复以后根据设备型号获取云端固件信息文件

用户点击是, 发送升级命令给设备

4,单片机通过MQTT收到以后,存储升级地址, 回复给APP, 然后写入升级标志,重启

单片机程序其实和咱前面的一样,只不过不是自己主动获取的升级地址

重启之后就在BootLoader里面升级哈,和前面的一样,就不多说了

5,APP收到设备开始升级

6,单片机升级完成以后,收到APP的询问固件版本命令, 回复固件版本给APP

7,APP收到固件版本,和之前记录的云端固件版本作对比. 一样就提示升级成功

到了这里,关于2-远程升级篇(自建物联网平台)-STM32通过EC800使用http或https下载程序文件升级程序(APP通过MQTT控制单片机更新)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • stm32利用bootloader与app实现远程升级

    1、flash空间分配: 事先在flash开辟好空间,假设flash为128k,我这边给它分为五个区,分别为bootloader、标志位、application、application backup、标签ID。 (注:升级之前,app的代码烧录于application的flash存储区域内。用于app升级的 bin文件 大小一定要小于自己开辟的flash空间大小)

    2024年02月13日
    浏览(50)
  • STM32 10个工程篇:1.IAP远程升级(四)

          在前三篇博客中主要介绍了 IAP 远程升级的应用背景、下位机的实现原理、以及基于 STM32CubeMX 对 STM32F103 串口 DMA 的基本配置,第四篇博客主要想介绍 Labview 端上位机和下位机端的报文定义和通信等。        当笔者工作上刚接触到 STM32 IAP 升级的时候,实事求是地说存

    2024年02月06日
    浏览(37)
  • STM32 10个工程篇:1.IAP远程升级(三)

           本想着周六去更新 IAP 远程升级(三),但是周三单位突然通知团建周六去爬水长城,晚上回来已经精疲力竭,打开电脑不由地点开网易云音乐听着听着感觉很乏,去床上躺了会可一觉醒来已经夜里三点,于是调整一下周日晚上开始撰写这篇博客,言简意赅不想赘述过

    2024年02月13日
    浏览(36)
  • STM32 10个工程篇:1.IAP远程升级(五)

            伴随着催更不断,周日晚上来继续撰写STM32 IAP远程升级的项目例程,在这篇博客中笔者主要结合上位机报文发送机制来介绍下位机的报文解析设计,坚持做原创博客确实是一件很考验耐力的事情,一方面博客的文字和图片需要投入大量精力和时间,另一方面想要把意

    2024年02月13日
    浏览(39)
  • STM32 10个工程篇:1.IAP远程升级(六)

           在IAP远程升级的最后一篇博客里,笔者想概括性地梳理总结IAP程序设计中值得注意的问题,诚然市面上或者工作后存在不同版本的IAP下位机和上位机软件,也存在不同定义的报文格式,甚至对于相似的知识点不同教程又有着完全不同的解读,这就很容易让初学者摸不

    2024年02月06日
    浏览(43)
  • STM32F407串口IAP远程升级程序

    相关代码和工程文件链接:https://pan.baidu.com/s/1wN4THWJwqzjjIe7e2TENBA?pwd=o86o 提取码:o86o         STM32代码烧录主要有三种:ICP、ISP、IAP。         ICP(In Circuit Programing),在电路编程,通过JTAG或者SWD接口进行程序的烧录,就是平时利用ST-Link或者J-Link烧录程序;       

    2024年02月10日
    浏览(117)
  • 调试笔记-stm32的OTA/IAP 通过485升级固件

    背景:最近需要在stm32上实现通过rs485升级固件功能。经过几天搜索和调试,实现了功能。 目标:使用cubeIDE实现stm32F407VGT6,通过RS485升级固件 调试记录: 步骤1. 在keil环境下的rs485升级固件(含源码):STM32 OTA应用开发——通过串口/RS485实现OTA升级(方式2)_stm32串口升级_柒壹漆

    2024年02月11日
    浏览(52)
  • STM32 IAP应用开发——通过USB实现固件升级

    什么是IAP? IAP(In-Application Programming) 指MCU可以在系统中获取新代码并对自己重新编程,即可用程序来改变程序。在应用编程(IAP)是用户的应用代码对片内Flash存储器进行擦除/编程的方法。这种方式的典型应用就是用一小段代码来实现程序的下载,实际上单片机的ISP功能就

    2024年02月12日
    浏览(48)
  • STM32_通过Ymodem协议进行蓝牙OTA升级固件教程

    作为单片机进阶能力,IAP升级固件的学习是非常重要的。 想直接看如何操作的从第三条开始看。 蓝牙OTA(Over-The-Air)升级是指通过蓝牙无线技术,对设备中的固件或软件进行远程升级和更新的过程。蓝牙OTA升级在现代物联网和智能设备领域有着重要的应用和意义。 重要性:

    2024年02月04日
    浏览(45)
  • stm32毕设分享 单片机远程wifi红外无接触体温测量系统 - 物联网 stm32

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月19日
    浏览(70)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包