ESP8266如何使用自己的云服务器进行无线升级(OTA教程)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/shitingdi/article/details/78216290

本文讲解的是如何使用最简单的方法来实现esp8266的无线升级,同时支持远程服务器和本地服务器升级.

下面是我用esp8266的sdk实现在线升级的整个流程(点击链接下载 源代码 )。

1. 需要准备的软件工具:

1.1  搭建本地服务器(或者远程服务器)

1.2  我使用的本地服务器是一个轻量级的小型服务器EasyWebserver1.9,好处是可以直接把需要升级的两个bin文件放在服务器的主目录就ok,不需要添加其它PHP代码,也不用安装WAMP软件,更不需要做其它各种繁琐配置, 使用起来极其简单,个人非常推荐使用哦 (点击链接下载)

1.3  ESP_DOWNLOAD_TOOL_V2.4 烧录工具,相信做8266开发的都不陌生,我就不一一介绍了.

需要注意的是烧录地址:以下是我自己的烧录文件对应的烧录地址(4M flash,不同的flash大小烧录地址不一样,请注意查看自己的模块flash);

boot_v1.6.bin ---- 0x00000

user1.4096.new.4.bin----0x01000      //也就是user1.bin

blank.bin----0x3FE000

esp_init_data_default.bin----0x3FC000

esp8266的升级流程:

1.生成两个bin文件:

2. 通过./gen_misc.sh或者gen_misc.bat 编译都可以生成我们需要的bin文件,区别在于生成user1.4096.new.4.bin的时候step2选择1,生成user2.4096.new.4.bin的时候step2选择2.具体生成两个bin的其它步骤选项这里不再介绍,其它网友写的很清楚了.

3.将生成的两个bin文件放在EasyWebserver的主目录下.

4. 第一次通过ESP_DOWNLOAD_TOOL_V2.4 烧录user1.4096.new.4.bin到esp8266模块.(当然包括其它上面讲到的必要烧录文件)

    后面需要烧录程序可以通过无线升级方式,升级速度杠杠的.



以上只是讲解大概流程,具体操作还需要网友自己.

下面的源代码是我写的两个函数,里面封装了OTA相关的API接口,拿来可以直接使用.

经本人反复测试,无线更新后的程序稳定运行.


说明:下载的资料包里是具体详细操作步骤,下载资料后请先仔细阅读教程和说明,然后再做无线升级.

http://download.csdn.net/download/shitingdi/10018021

注意:

1. 在我提供的源代码中,升级更新检测时间是10s ,就是这条语句 update->check_times = 10000;

个人后期测试发现10s的升级时间如果网络不好容易造成升级未完成的情况, 所以建议设置成30s,就是把源代码里的语句改成

update->check_times = 30000;

2. 补充说明

case OTA:

  os_printf("ready to upgrade\r\n");
  char serverip[]={192,168,0,***}; //这里是本地服务器的ip地址,也可以是远程服务器ip地址.  
  uint16_t port = 807 ; //本地端口或者远程服务器端口,看自己使用选择

 //文件路径,即easywebserver的bin文件所在的具体文件夹

//写法:对于整个文件路径为F:\esp_upgrade (esp_upgrade文件夹下是bin文件) ---> char path[] = "esp_upgrade/" ;

 //假设整个文件路径为F:\cygwin\ESP8266_NONOS_SDK\bin\upgrade (upgrade文件夹下是bin文件)---> char path[] = "upgrade/";
  char path[] = "esp_upgrade/" ;    //本次测试的文件路劲   

  ota_start_Upgrade( 2 , serverip, port, path) ;//无线升级开始,其中第一个参数表示版本号,

//升级新版本一般要大于旧版本,填写具体版本号根据自己的需求,这里随意写了2.

  break;

}





展开阅读全文

没有更多推荐了,返回首页