实现功能概要 单片机定时使用http访问云端的程序版本,如果版本不一致, 然后通过http下载最新的升级文件,实现远程升级STM32程序. 兼容Air202 ,SIM800 测试准备工作(默认访问我的服务器,改为自己的服务器,请看后面说明) 一,下载BootLoader程序(请自行下载) 二,调整波动开关位置,STM32和GPRS 串口1 通信 二,别忘了插手机卡,还有安装上天线 三.准备两个串口模块,两个串口模块的RX,分别接到单片机的PA9和PA10. 4.1注:此为监控STM32和GPRS…
实现功能概要 单片机定时使用http访问云端的程序版本, 如果版本不一致,然后通过http下载最新的升级文件,实现远程升级STM32. 兼容Air202,SIM800 测试准备工作(默认访问我的服务器,改为自己的服务器,请看后面说明) 一,下载BootLoader程序(请自行下载) 二,调整波动开关位置,STM32和GPRS 串口1 通信 三,别忘了插手机卡,还有安装上天线 四.准备两个串口模块,两个串口模块的RX,分别接到单片机的PA9和PA10. 4.1注:此为监控STM32和GPRS之间的…
前言 学习此代码所需: 实现功能概要 定时使用http访问云端的程序版本,如果版本不一致,然后通过http下载最新的升级文件,实现升级. 测试准备工作(默认访问我的服务器,改为自己的服务器,请看后面说明) 一,下载BootLoader程序(请自行下载) 二,调整波动开关位置,STM32和Wi-Fi 串口 通信 三,短接STM32的PB2和Wi-Fi模块的RST引脚(内部程序使用该引脚硬件复位Wi-Fi) 四.两个串口模块的RX,分别接到单片机的PA9和PA10. 4.1注:此为监控STM32和W…
实现功能概要 定时使用http访问云端的程序版本,如果版本不一致,然后通过http下载最新的升级文件,实现升级. 测试准备工作(默认访问我的服务器,改为自己的服务器,请看后面说明) 一,下载BootLoader程序(请自行下载) 二,调整波动开关位置,STM32和Wi-Fi 串口 通信 三,短接STM32的PB2和Wi-Fi模块的RST引脚(内部程序使用该引脚硬件复位Wi-Fi) 四.两个串口模块的RX,分别接到单片机的PA9和PA10. 4.1注:此为监控STM32和Wi-Fi之间的数据,看到…
前言 上节实现远程更新是更新的STM32F103C8T6的单片机 GPRS网络(Air202/SIM800)升级STM32: 测试STM32远程乒乓升级,基于(GPRS模块AT指令TCP透传方式),定时访问升级 这节将告诉大家如何移植到其它型号的单片机. 这一节以 STM32F103RET6 (512KB Flash 64KB RAM) 为例 我使用我的这块板子 大家测试的时候可以按照下面的方式接到自己的GPRS模块(Air202 / SIM800) 单片机串口1 接到GPRS的AT指令配置串口…
实现功能概要 前面的版本都是,定时访问云端的程序版本,如果版本不一致,然后下载最新的升级文件,实现升级. 这一节,在用户程序里面加入MQTT通信,执行用户程序的时候,通过接收MQTT的升级命令实现升级 注意:BootLoader程序还是用以前的程序. 一开始设计这个升级篇的时候,我就规定好了大的框架 BootLoader只是负责升级,其它一概不管 用户程序只是写入升级标志,然后重启,所有的升级步骤全部交给BootLoader! 协议: 注:所有的实现MQTT的软件,统称为MQTT上位机 一,MQ…
前言 这一节和上一节是搭配的 给大家鱼,也必须给鱼竿! 我期望自己封装的代码,无论过了多少年都有应用的价值! 这节说明一下制作APP用户程序的过程 咱是用MQTT通信控制模块实现升级,所以首先自己的程序先实现MQTT哈. 协议 注:所有的实现MQTT的软件,统称为MQTT上位机 一,MQTT上位机通过MQTT发送获取设备信息指令 {"data":"updata","cmd":"DeviceInfo"} //设备接收到回复 {&…
实现功能概要 这节和上一节的功能一样(只不过上节是利用Wi-Fi模块,这节是利用GPRS模块) 用户程序里面加入MQTT通信,执行用户程序的时候, 通过接收MQTT的升级命令实现升级. 凡是可以实现MQTT通信的上位机皆可控制单片机升级. 通信控制协议和上一节一样 注:所有的实现MQTT的软件,统称为MQTT上位机 一,MQTT上位机通过MQTT发送获取设备信息指令 {"data":"updata","cmd":"DeviceInfo&…
前言 这节演示下,上两节写的利用MQTT来控制STM32控制的程序 测试准备工作(默认访问我的服务器,改为自己的服务器,请看后面说明) 一,下载BootLoader程序(请自行下载) 首先BootLoader默认是先尝试加载第一份用户程序 后面咱分为两种情况: 人为下载进去第一份APP用户程序和不下载进去第一份APP用户程序 第一种:人为下载进去第一份APP用户程序 一,注:咱的目的是把相应的程序文件烧录到相应的位置 为避免清除BootLoader程序,下载的时候按照下面的选择 这样在不清楚Bo…
前言 1.BootLoader程序,升级简要流程图 2.其实主要的就是把程序文件写入环形队列,然后环形队列取出来数据写入Flash 3.用户程序,简要流程图 下面的读一下,有个印象就可以: 说白了就是BootLoader里面通过http远程下载完程序以后, 设置更新状态是 0x01  然后重启 重启以后还是会先执行BootLoader,然后BootLoader判断更新状态是 0x01 那么就设置更新状态是 0xFF 然后就会执行 用户程序,用户程序判断更新状态是 0xFF 就切换下版本号.设置升…
实现的功能 上一节是使用的Wi-Fi模块连接的阿里云平台,这节呢咱用GPRS连接. 阿里云的设备配置还是按照上一节的,有个温度,有个湿度. 测试 一,打开单片机程序 二,根据自己的修改,然后下载进去单片机程序 三,调整波动开关位置,STM32和GPRS 串口1 通信 四,别忘了插手机卡,还有安装上天线 五,单片机控制GPRS连接上阿里云服务器以后,指示灯1S闪耀 六,可到云端查看温湿度数据 七,控制继电器吸合 {"data":"switch","bit&q…
本文基本公开了如何移植MQTT物联网协议到STM32平台上,并结合GPRS模块(SIM800C/SIM900A/SIM868等)实现publish和订阅topic从onenet,阿里云,百度云等.如果不想移植,可以在如下淘宝链接中直接购买源代码,全部源码+资料300,全部源码+资料包售后500元. 物联网开发板裸板只要168,套餐可自己搭配. 淘宝链接:https://item.taobao.com/item.htm?spm=a2126o.11854294.0.0.120c4831Ic87Zt&…
前言 注: 本程序发送心跳包,发送温湿度,返回控制数据这三个发送是单独的,有可能凑到一起发. 由于本身程序就是复杂性的程序,所以这节程序没有使用中断发送,没有使用环形队列发送,为了避免多条消息可能凑到一起发 如果嫌弃这个延时请自行优化,或者采用自己的方式解决,谢谢支持! 抱歉哈!我首先期望的是大部分人都先要看懂程序,至于其他优化我会提供个思路和源码,大家可以根据自己的情况自行优化. 打开第一节的源码 我只说注意的地方 现在的程序没有硬件复位Air202的地方 大家做项目的时候一定要加个硬件复位A…
前言 注: 本程序发送心跳包,发送温湿度,返回控制数据这三个发送是单独的,有可能凑到一起发. 由于本身程序就是复杂性的程序,所以这节程序没有使用中断发送,没有使用环形队列发送,为了避免多条消息可能凑到一起发 如果嫌弃这个延时请自行优化,或者采用自己的方式解决,谢谢支持! 抱歉哈!我首先期望的是大部分人都先要看懂程序,至于其他优化我会提供个思路和源码,大家可以根据自己的情况自行优化. 打开第一节的源码 为了方便修改,我用数组存储了些参数 然后看链接MQTT部分 说个地方 然后看 判断连接状态 接着…
简单说明:后边要做exl解析(还没做呢),所以先有一个excel的的上传以及获取excel中的数据,展示出来. 代码: //html代码 <div class="btn-group"> <button class="btn sbold green" id="" onclick="initUpload('excelFile','/vraxx/rightAxx/upload');"> <span cl…
前言 此程序兼容SIM800 如果想绑定SIM800,请把其IMEI号,生成二维码,用手机APP扫描. 实现功能概要 APP通过扫描二维码获取GPRS设备的IMEI号,然后设置订阅的主题:device/设备IMEI号 发布的主题:user/设备IMEI号 注:实际上和上一节代码唯一不同的地方是控制GPRS连接TCP服务器,然后实现透传.其它程序完全一致! 测试准备工作(详细下载步骤请参考 硬件使用说明 ) 一,下载单片机程序 二,安装APP软件(APP软件还是上一节的那个软件) 三,调整波动开关…
前言 实现功能概要 STM32控制WI-Fi模块以AT指令TCP透传方式连接MQTT服务器, 实现MQTT通信控制. 测试准备工作(详细下载步骤请参考 硬件使用说明 ) 一,下载单片机程序 二,安装APP软件 三,调整波动开关位置,STM32和Wi-Fi通信 四,短接STM32的PB2和Wi-Fi模块的RST引脚(为了做项目稳定可靠,请使用单片机硬件复位Wi-Fi) 开始测试 一.打开手机APP,点击右上角菜单 "添加设备" ,手动输入自家路由器密码.(路由器名称为自动获取,不需要用户…
前言: 实现功能概要: STM32使用AT指令控制Wi-Fi以TCP方式连接服务器(YY天气Web服务器),然后使用http的get协议获取今天的天气数据 单片机提取今天的温度和湿度数据,把温湿度数据显示在OLED液晶屏.          效果图 访问天气服务器: http://api.yytianqi.com/observe?city=CH010100&key=1qwt0q9jj4felio2   获取北京天气 http://api.yytianqi.com/observe?city=城市代…
前言: 实现功能概要 STM32使用AT指令控制Wi-Fi以TCP方式连接咱上节安装的Web服务器,然后使用http的get协议获取云端文本文件里面的内容, 然后把获取的数据显示在OLED液晶屏.          效果图 实现功能的前提 1.在云端的电脑上的Web服务器的根目录放一个文件 注:以后Web服务器肯定还要做其它功能,所以最好在根目录多建几个文件夹,区分开各个功能,这个不用我说了吧! 我在根目录(html)建了一个 hardware文件夹-->STM32_AT8266 文件夹,然后里…
前言 鉴于有些用户直接想使用现成的物联网平台实现 OTA 远程升级 我就写一写这系列的文章 注意:首先大家必须把我自建服务器是如何实现的看明白! 我看了下阿里云提供的,实际上流程和咱自建实现的差别不大 https://help.aliyun.com/document_detail/85700.html?spm=a2c4g.11186623.6.699.6292740d5hzKl6 首先控制升级获取当前程序的版本号等走的还是MQTT 设备端首先通过MQTT获取云端的版本信息,还有程序固件的http…
前言 此代码兼容STM32F103全系列 为避免添加上升级程序造成内存不足,请使用128KB Flash及其以上的型号 这篇文章是为了能够让大家快速移植我的升级模板程序到自己的项目 BootLoader 程序制作 拷贝文件到自己的项目 拷贝到自己的项目(我准备了一个工程作为叙述) 在自己工程的定时器里面添加以下信息 if(IAPStructValue.PutDataFlage && IAPStructValue.UpdateFlage)IAPStructValue.DownloadTime…
https://www.cnblogs.com/yangfengwu/p/10360618.html 演示视频: https://www.bilibili.com/video/av54894356/ 在本人服务器上测试的请看演示视频,不再贴文字介绍 主要说明怎么安装部署到自己的服务器上 确定自己的固件所具有的功能:SmartConfig,FILE,GPIO,HTTP,MQTT,NODE,SJSON,TMR,UART,WIFI 可自行编译  https://www.cnblogs.com/yang…
前言 用户程序比较简单,但是起着至关重要的作用 用户程序是和BootLoader程序相互配合的 拷贝文件到自己的项目 APP用户程序的 stmflash.c stmflash.h 和 上一节的BootLoader 是一样的. 只有IAP有点差别 用户程序需要做两件事情 一.获取更新的信息(版本号,更新的状态) 二,在认为APP用户程序运行没有问题以后写上 现在就完成了APP用户程序的处理工作. 现在我说明一下为啥会有如此操作 在前面的BootLoader程序里面就有很多的状态判断, 在APP用户…
前言 鉴于大家都希望升级的时候加入数据校验,所以就满足大家的要求. 其实我也希望自己做的足够的稳定可靠,让大家使用起来放心. 上一节测试了一节加入校验以后的操作方式,这节来详细的说一下校验部分的代码. 数据校验方式 数据校验方式是 每个数据做累加 注意哈,单片机程序是 char 型的数据类型,然后像下面做数据累加. char  sum; sum= sum + 数据; 数据呢就是升级的时候接收的一个字节一个字节的数据. 我还是多说一句吧! 问一下就像是上面  假设现在 sum = 255;  然后…
步骤: 1.生成bin文件并将bin文件放到虚拟主机目录内 2.做一个php的页面分块读取该bin文件,以asc字符echo出来,并标记好头尾长度和校验. 3.GPRS协议栈连接主机路径,收到内容,将内容解析,校验,无误后保存到备份flash空间 4.全部保存完成后,做个标识在参数flash区,等待重新开机 5.做个bootloader,开机后检测是否有保存好的新版本号,如果有则覆盖旧版本,否则直接进入入口向量. 由于GPRS传输http协议的内容属于短连接,AT指令的情况多而复杂,很多需要判断…
64位下Hook NtOpenProcess的实现进程保护 + 源码 (升级篇 ) [PS: 如果在64位系统下,出现调用测试demo,返回false的情况下,请修改Hook Dll的代码] glhHook = SetWindowsHookEx(WH_SHELL,ShellHookProc, 0 , 0); //改成跟X86下一样的 glhHook = SetWindowsHookEx(WH_SHELL,ShellHookProc,glhInstance, 0); 2013.09.11代码修改,…
1-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇(方案总揽) https://v.youku.com/v_show/id_XNDE0Njk3Njg2OA==.html?spm=a2h3j.8428770.3416059.1      (源码下载和测试) https://v.youku.com/v_show/id_XNDE0Njk3Njc4OA==.html?spm=a2h3j.8428770.3416059.1        (为什么可以实现lua语言升…
我的这个升级篇的代码适用于自己所有的带WIFI和GPRS模块的开发板,升级功能实质上是通过MQTT把数据发给WIFI和GPRS模块,然后模块进行保存和运行. 这个升级程序是当时自己花了两个星期的时间写的,当时自己写的时候给自己定了很多要求. 1,可以方便每个人升级自己的设备 2,不能让用户自己去搭建服务器 3,保证每个人不能冲突 4,要在现有的远程通信的基础上,不能够再去走其它通信的路线 5,考虑以上条件,想到用户要在自己电脑上运行一个上位机软件(MQTT通信),设备是访问上位机的数据实现升级…
C#不用union,而是有更好的方式实现   用过C/C++的人都知道有个union,特别好用,似乎char数组到short,int,float等的转换无所不能,也确实是能,并且用起来十分方便.那C#为什么没有这个关键字呢?怎么实现这个功能?其实C#只是没有了这个关键字,但是功能是能实现的,而且也是非常方便,并且是安全的.网上有人用StructLayout特性来实现union,也确实是实现了一些功能.比如:C/C++:    union {        unsigned char ch    …
之前在两篇文章中都有简单介绍或者提到过 自定义属性的用法: 25.Spring Boot使用自定义的properties[从零开始学Spring Boot] 51. spring boot属性文件之多环境配置[从零开始学Spring Boot] 但是在实际开发过程中有更复杂的需求,我们在对properties进一步的升华.在本篇博客中您将会学到如下知识(这节中有对之前的知识的温故,对之前的升华): (1) 在application.properties文件中添加自定义属性(单个属性使用): (2…