前言

  这节演示下,上两节写的利用MQTT来控制STM32控制的程序

测试准备工作(默认访问我的服务器,改为自己的服务器,请看后面说明)

  

一,下载BootLoader程序(请自行下载)

  

首先BootLoader默认是先尝试加载第一份用户程序

后面咱分为两种情况:

人为下载进去第一份APP用户程序和不下载进去第一份APP用户程序

第一种:人为下载进去第一份APP用户程序

  一,注:咱的目的是把相应的程序文件烧录到相应的位置

  为避免清除BootLoader程序,下载的时候按照下面的选择

  这样在不清楚BootLoader程序的情况下,就把第一份用户程序烧录进了相应的位置

    

  提示:

    APP用户程序里面也是按下按钮3S执行配网

    只不过配网以后是连接MQTT服务器

    

  

  二,调整波动开关位置,STM32和Wi-Fi 串口 通信

    

  三,短接STM32的PB2和Wi-Fi模块的RST引脚(内部程序使用该引脚硬件复位Wi-Fi)

    

  四,安装这节使用的APP

    注:这节APP其实就是前面的

    

        

    

  五,绑定配网

    5.1 打开手机APP,点击右上角菜单 "添加设备" ,手动输入自家路由器密码.(路由器名称为自动获取,不需要用户填写)

                       

    5.2,长按PB5大约4S,等待指示灯快闪,松开PB5,Wi-Fi模块进入配网状态

      

    5.3,点击APP的搜索设备按钮,开始搜索设备,搜索成功,将自动跳转到主页面,并显示设备

              

    5.4,单片机控制Wi-Fi连接上MQTT服务器以后,指示灯1S闪耀

      

    5.5, 点击设备进入,设备控制页面,点击最下面的检查更新

      点击检测更新的时候,其实就是APP首先通过MQTT询问设备的型号和版本号

      然后根据型号,用http访问Web服务器里面的 updatainfo.txt 文件

      如果判断版本不一致,就提示更新

      

    5.6  点击确认

      

    5.7  模块返回他要更新了

      

    5.8  更新完成

      

    5.9  如果再点击更新

      

    后面大家有了新程序以后,替换掉Web里面的文件,然后改一下  updatainfo.txt 里面的信息就可以

第二种:只下载BootLoader

  一,大家还记得咱在BootLoader里面也是按钮按下3S左右配网

  不过配网以后是写入更新标志,重启

    

  二,有了更新标志,再次启动 BootLoader的时候就去下载程序文件了

  下载完以后执行程序文件

  其实就和上面的一样了

  

应用到自己的服务器

  一,BootLoader里面

    1.1 TCP连接的Web服务器的地址

      

    1.2 请求的 updatainfo.txt 文件的路径

      

    1.3 请求的程序文件的路径

      

  二,APP用户程序里面

    2.1 设备型号要和BootLoader里面的保持一致

      

  三, 修改APP

    3.1 访问的MQTT信息

      

    3.2,修改APP访问的http信息

      

  四, Web服务器文件访问路径根据自己的修改

    

    

ESA2GJK1DH1K升级篇: STM32远程乒乓升级,基于Wi-Fi模块(ESP8266)AT指令TCP透传方式,MQTT通信控制升级(加入数据校验)的更多相关文章

  1. ESA2GJK1DH1K升级篇: STM32远程乒乓升级,基于(Wi-Fi模块AT指令TCP透传方式),MQTT通信控制升级

    实现功能概要 前面的版本都是,定时访问云端的程序版本,如果版本不一致,然后下载最新的升级文件,实现升级. 这一节,在用户程序里面加入MQTT通信,执行用户程序的时候,通过接收MQTT的升级命令实现升级 ...

  2. ESA2GJK1DH1K升级篇: STM32远程乒乓升级,基于GPRS模块(Air202,SIM800)AT指令TCP透传方式,MQTT通信控制升级

    实现功能概要 这节和上一节的功能一样(只不过上节是利用Wi-Fi模块,这节是利用GPRS模块) 用户程序里面加入MQTT通信,执行用户程序的时候, 通过接收MQTT的升级命令实现升级. 凡是可以实现M ...

  3. ESA2GJK1DH1K升级篇: STM32远程乒乓升级,基于Wi-Fi模块AT指令TCP透传方式,MQTT通信控制升级(含有数据校验)-APP用户程序制作过程

    前言 这一节和上一节是搭配的 给大家鱼,也必须给鱼竿! 我期望自己封装的代码,无论过了多少年都有应用的价值! 这节说明一下制作APP用户程序的过程 咱是用MQTT通信控制模块实现升级,所以首先自己的程 ...

  4. ESA2GJK1DH1K升级篇: STM32远程乒乓升级,基于GPRS模块AT指令TCP透传方式,定时访问升级(含有数据校验)

    实现功能概要 单片机定时使用http访问云端的程序版本,如果版本不一致, 然后通过http下载最新的升级文件,实现远程升级STM32程序. 兼容Air202 ,SIM800 测试准备工作(默认访问我的 ...

  5. ESA2GJK1DH1K升级篇: STM32远程乒乓升级,基于(GPRS模块AT指令TCP透传方式),定时访问升级(兼容Air202,SIM800)

    实现功能概要 单片机定时使用http访问云端的程序版本, 如果版本不一致,然后通过http下载最新的升级文件,实现远程升级STM32. 兼容Air202,SIM800 测试准备工作(默认访问我的服务器 ...

  6. ESA2GJK1DH1K升级篇: STM32远程乒乓升级,基于WIFI模块AT指令TCP透传方式,定时访问升级(含有数据校验)

    实现功能概要 定时使用http访问云端的程序版本,如果版本不一致,然后通过http下载最新的升级文件,实现升级. 测试准备工作(默认访问我的服务器,改为自己的服务器,请看后面说明) 一,下载BootL ...

  7. ESA2GJK1DH1K升级篇: STM32远程乒乓升级,基于(WIFI模块AT指令TCP透传方式),定时访问升级

    前言 学习此代码所需: 实现功能概要 定时使用http访问云端的程序版本,如果版本不一致,然后通过http下载最新的升级文件,实现升级. 测试准备工作(默认访问我的服务器,改为自己的服务器,请看后面说 ...

  8. ESA2GJK1DH1K升级篇: 移植远程更新程序到STM32F103RET6型号的单片机,基于(GPRS模块AT指令TCP透传方式)

    前言 上节实现远程更新是更新的STM32F103C8T6的单片机 GPRS网络(Air202/SIM800)升级STM32: 测试STM32远程乒乓升级,基于(GPRS模块AT指令TCP透传方式),定 ...

  9. ESA2GJK1DH1K升级篇: STM32远程乒乓升级,升级流程源码详细说明

    前言 1.BootLoader程序,升级简要流程图 2.其实主要的就是把程序文件写入环形队列,然后环形队列取出来数据写入Flash 3.用户程序,简要流程图 下面的读一下,有个印象就可以: 说白了就是 ...

随机推荐

  1. 给Java0基础的五个学习的思路?

    关于Java初学者来说,想学习Java教程,需求了解,根底打好才干学得更好,Java教程之学习Java的路线图的五个必经阶段,希望能对Java学习者有所帮忙. 第一个阶段-java根底阶段 1.jav ...

  2. Note | 用Hugo搭建博客并部署到GitHub Pages

    目录 1. 本地搭建 1.1 安装Hugo 1.2 创建站点 1.3 新建页面和文章 1.4 使用主题 1.5 修改配置文件 1.6 预览 2. 部署 之前担心过现有博客平台(如博客园,CSDN)突然 ...

  3. Ubuntu 16.04 + Realsense D435i + ROS 环境配置

    参考: [1] Realsense-Ros: https://github.com/IntelRealSense/realsense-ros#installation-instructions [2] ...

  4. 适合新手:从零开发一个IM服务端(基于Netty,有完整源码)

    本文由“yuanrw”分享,博客:juejin.im/user/5cefab8451882510eb758606,收录时内容有改动和修订. 0.引言 站长提示:本文适合IM新手阅读,但最好有一定的网络 ...

  5. Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'infor

    今天在Navicat上执行SQL增删改查数据操作的时候出现了下面这个问题 Expression #1 of ORDER BY clause is not in GROUP BY clause and ...

  6. @PostConstruct - 静态方法调用IOC容器Bean对象

    需求:工具类里面引用IOC容器Bean,强迫症患者在调用工具类时喜欢用静态方法的方式而非注入的方式去调用,但是spring 不支持注解注入静态成员变量. 静态变量/类变量不是对象的属性,而是一个类的属 ...

  7. 为了“小命”,这款APP一定要下!火爆了!

    前言中国地震台网在 6 月 17 日测定:6 月 17 日 22 时 55 分,四川省宜宾市长宁县发生 6 级地震,震源深度 16 千米.成都高新减灾研究所通过电台广播.手机短信.电视等途径,提前 6 ...

  8. C++ 运行时类别识别

    运行时动态类型的识别其实应该是多态方面的知识,这里我直接拿来单独成章. dynamic_cast和static_cast 1.static_cast用法如下: static_cast < Typ ...

  9. jquery 全选样例

    代码: $(function(){ $("#checkAllOld").click(function() { $("input[id^='box_old_']" ...

  10. django中're_path'的用法

    1.re_path和path的作用是一样的.只不过're_path'是在写url的时候可以用正则表达式,功能更加强大.2.写正则表达式都推荐使用原生字符串.也就是以‘r’开头的字符串:r'move/' ...