1-关于ESP8266配网,单片机程序远程升级(我的配网和升级程
这一系列文章会把自己所有知道的关于ESP8266配网,单片机程序远程升级等都介绍和说明一下,具体实现要看我的开发板的教程,不过还没写到。。。。
资料 链接:https://pan.baidu.com/s/1az-cNXXdXi6JD1eGtNPrKg 密码:v4qx
先说自己现在做的APP是如何实现的配网和升级程序,这篇文章也作为自己所有WIFI开发板的参考文章,自己的所有的WIFI的开发板配网和升级程序现在都是一个套路。。如果后期自己改变了做法,会再说,,,
先说升级过程,别的文章也说过自己的程序是WIFI模块一开始烧进去一部分,然后另一部分是手机发给的,先说怎么烧第一部分程序,抱歉哈,因为这篇文章会作为所有板子的通用文章,所以会写的详细点。。
自己的源码是公开的,亲们可以直接烧进去自己的源码,然后就能用自己的APP实现远程控制。。
因为自己的开发板型号不一样所以就用自己的这块开发板
![](https://img.haomeiwen.com/i8454753/0cc86656e1fadcae.png)
![](https://img.haomeiwen.com/i8454753/3f97c4966eb681bc.png)
![](https://img.haomeiwen.com/i8454753/cd6c0697a0ca6f58.png)
先刷固件,因为自己是用LUA写的,所以先把板子烧进LUA的固件
无论哪一个型号的8266都是先把GPIO0接到低电平,然后复位一下
先烧小板的,
![](https://img.haomeiwen.com/i8454753/1f8dadd416d25fc7.png)
![](https://img.haomeiwen.com/i8454753/d1fdffb6347828d5.png)
![](https://img.haomeiwen.com/i8454753/4f61b7b695d5713f.png)
![](https://img.haomeiwen.com/i8454753/2636d8515209bf1d.png)
![](https://img.haomeiwen.com/i8454753/e525c201e3ce35e6.png)
![](https://img.haomeiwen.com/i8454753/85026c0f92844fa2.png)
![](https://img.haomeiwen.com/i8454753/eb362f7e0e02d2cc.png)
![](https://img.haomeiwen.com/i8454753/911b8320137ccc62.png)
![](https://img.haomeiwen.com/i8454753/b9dc0727fcfd1537.png)
![](https://img.haomeiwen.com/i8454753/d45d0c147987d6c7.png)
![](https://img.haomeiwen.com/i8454753/b47633df4f8027ad.png)
拔掉GPIO0拉低的跳线帽
![](https://img.haomeiwen.com/i8454753/a8712b467e950759.png)
现在往里面写程序
![](https://img.haomeiwen.com/i8454753/c910072ae56b71f9.png)
![](https://img.haomeiwen.com/i8454753/ec98a93ca2861b80.png)
没有JAVA运行环境的安装这个
![](https://img.haomeiwen.com/i8454753/c95e202411e411cf.png)
也可以自己去下载别的版本
http://www.oracle.com/technetwork/java/javase/downloads/index.html
安装教程()
https://jingyan.baidu.com/article/3c343ff70bc6ea0d377963df.html
https://blog.csdn.net/u012934325/article/details/73441617
只要测试安装了就行
![](https://img.haomeiwen.com/i8454753/4b78d862ffb59de3.png)
![](https://img.haomeiwen.com/i8454753/0dd15d1a0256b47c.png)
![](https://img.haomeiwen.com/i8454753/7b1e36c6221dc924.png)
复位一下板子
![](https://img.haomeiwen.com/i8454753/f0a2f440c47e5470.png)
![](https://img.haomeiwen.com/i8454753/0f802081aa571328.png)
![](https://img.haomeiwen.com/i8454753/3f4834417853973b.png)
![](https://img.haomeiwen.com/i8454753/409f203822ee02ce.png)
![](https://img.haomeiwen.com/i8454753/e4bf138462809881.png)
![](https://img.haomeiwen.com/i8454753/468b6ae8f1c4ceee.png)
![](https://img.haomeiwen.com/i8454753/47a74b0ff8c7dcd7.png)
![](https://img.haomeiwen.com/i8454753/613d010e65ad1d6e.png)
![](https://img.haomeiwen.com/i8454753/3d56fe64c4253fa9.png)
![](https://img.haomeiwen.com/i8454753/a6e8705221828855.png)
![](https://img.haomeiwen.com/i8454753/072e85f22ba5a676.png)
因为我这个测试版没有任何灯。。。所以就看打印的信息吧
![](https://img.haomeiwen.com/i8454753/9e1a3f2f566b2a05.png)
![](https://img.haomeiwen.com/i8454753/edf26e6149d79f44.png)
![](https://img.haomeiwen.com/i8454753/6063f5f3b638827f.png)
![](https://img.haomeiwen.com/i8454753/f4122698cadad7d8.png)
![](https://img.haomeiwen.com/i8454753/ad1037717548ef61.png)
说一下,如果亲们用
![](https://img.haomeiwen.com/i8454753/d1b6c95e8b5ba1b1.png)
建议控制的引脚是GPIO0
![](https://img.haomeiwen.com/i8454753/9dadc908e905e226.png)
GPIO2有的模块作为了通信指示灯,,,
还有就是千万小心,不要让GPIO0一上电的时候是低电平
![](https://img.haomeiwen.com/i8454753/c5de40de7a4227f0.png)
或者中间接一个电阻,大一点。。。以至于不会拉低GPIO0
![](https://img.haomeiwen.com/i8454753/12ae28710453a402.png)
![](https://img.haomeiwen.com/i8454753/c3f4d3ff2711bfa6.png)
那个大的模块就不说了,一样的方式。。只不过
![](https://img.haomeiwen.com/i8454753/330919104f4707a4.png)
升级程序和配置连接的路由器实际上是模块连接了手机的TCP服务器,然后通信发给的模块
是这样的,,
1,手机开启无线热点(自己设置了隐藏,固定为qqqqqq密码11223344)
2,手机建了TCP服务器监听一个端口
3,模块默认连接手机的无线,
4,然后连接手机的TCP服务器,
这里大家可能会问,手机的TCP服务器IP地址怎么知道的
因为是手机自己开的热点然后建立的TCP服务器,所以手机服务器的IP当然是网关啦。。。
![](https://img.haomeiwen.com/i8454753/fab96e9176a680e9.png)
![](https://img.haomeiwen.com/i8454753/da75355846177bbc.png)
这不就通信上了,只要通信上了,就好说了。。。发给模块路由器信息什么的不是问题了,,,,
现在看升级
升级其实就是往文件系统里面写程序
看这篇
http://www.cnblogs.com/yangfengwu/p/7534521.html
很多人以为只能保存个数据什么的。。。。其实可以直接往里面写程序然后让它执行这个文件,,知识要学会活学活用
![](https://img.haomeiwen.com/i8454753/ee520d7cedcac654.png)
其实写进去直接执行就可以 dofile("XXX.lua")
![](https://img.haomeiwen.com/i8454753/8d635552ee0112f2.png)
![](https://img.haomeiwen.com/i8454753/896720300f4afb7d.png)
第二部分程序就是通过TCP通信发给的模块,模块往updata里面写,不过程序分成了四小份,因为一次性太多,芯片的全局变量存不了。。。。
其实自己在做这个的时候,考虑了好几天实现方式,最终定为这样的方式是因为
1,因为手机是服务器所以一次性可以绑定好多设备(现在不可以,原则上可以,懒,需要再加一个指令,查询下自己有没有程序,程序的版本是不是和手机的一样,然后一样就不管了,不一样就接收)。后期再说,现在还没有感觉到有很大用处
2,程序存在手机里面,我自己认为最好不要自己主动的去更新程序,对于用户感觉是不好的,假设工作着呢,一更新。。。麻烦。更新程序的选择权在用户手里,只有用户重新绑定一下就能够重新更新下程序,(用户绑定的时候设备一定是不用的)
3,我做这个软件面向的是开发者和直接使用者,程序是手机发给的,只要修改手机里面的程序就可以更新,自己的软件后期只要多加个编辑框就可以了,开发者可以写自己的程序,然后下进去
4,因为后期还有上位机软件,上位机软件还要有更新的功能,其实和手机一样,建立TCP服务器(WIFI共享),然后也是做一个编辑框,然后写自己的程序发给模块,主要是面向开发者
5,用TCP是因为TCP都很熟悉,后期讲远程升级,我也会先说TCP如何实现,在云端建一个TCP服务器,然后让模块连接,和现在差不多的意思就实现了远程升级,远程升级的程序可以绑定手机的时候手机发给模块
6,然后再用MQTT实现远程升级,其实一样的道理,手机和上位机以后都可以轻轻松松的让模块升级程序。。。
7,有些是用WEB实现的,和TCP一样的道理,绑定的时候想用什么升级就发什么样的程序。。。。自己自定义去吧
其实综上所诉感觉自己的这种方式挺好的,毕竟先规划了一个多星期。。。。