ESP8266-01高阶——OTA下载

OTA简介

什么是OTA下载?空中下载(OTA)是通过移动通信的空中接口实现对移动终端设备及SIM卡数据进行远程管理的技术。之前做的OLED网络时钟更新代码要反复拆装十分不便,于是在机缘巧合下了解到了esp8266的OTA技术,show time!

OTA怎么用

在网上疯狂的搜也没有找到合适的、简洁明了的示例,于是在B站找到了太极创客.,感谢UP的团队整理了这么多的资料,他们官网也有OTA资料,可以去借鉴,以下是个人理解,有错欢迎指正

基本控制原理

先让8266连上WiFi,然后让8266和PC在同一局域网下进行Over-The-Air传输代码,当单片机正常运行时,收到PC发来的OTA指令,单片机要保存当前的代码,在跳转到OTA传输函数去执行传输新代码,如果这时候取消传输了,程序还能回到原始代码,这全靠loop里面的 ArduinoOTA.handle()函数了,具体的底层我们先不管,接下来是代码,如下:

#include <ESP8266WiFi.h>
#include <ArduinoOTA.h>//引入OTA库,这是关键
 
// 设置wifi接入信息,PC也要连这个WiFi
const char* ssid = "ssid";
const char* password = "password";
 
void connectWifi(){
  //开始连接wifi
  WiFi.begin(ssid, password);
 
  //等待WiFi连接,连接成功打印IP
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi Connected!");  
  Serial.print("IP address:\t");            
  Serial.println(WiFi.localIP());          
}
void setup() {
  Serial.begin(9600);            
  Serial.println("");
 
  connectWifi();
 
  // OTA设置并启动,以下两行是账户密码设置,使工程具有保密性,也可去除,直接下载
  ArduinoOTA.setHostname("ESP8266");
  ArduinoOTA.setPassword("12345678");
  ArduinoOTA.begin();
  
  Serial.println("OTA ready");
}
void loop() {
  ArduinoOTA.handle();//OTA回调函数,相当于OTA中断处理
}
 

烧录代码

点击 工具 选择OTA 端口,再点击上传即可(一定要都在同一个WiFi下😂)
在这里插入图片描述

高级用法

经过几天的搜寻,又找到了OTA的其他有趣的函数,就像下载软件一样,往往都会有一个进度条来显示当前进度,那么OTA能不能做到呢?答案是肯定的,ArduinoOTA.onProgress()为我们提供了两个参数:当前进度和总共进度,这样我们就可以知道当前进度了,代码如下:


  ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) {
    display.drawProgressBar(4, 32, 120, 8, progress / (total / 100) );
    display.display();
  });

C++11 提供了对匿名函数的支持,称为 Lambda 函数(也叫 Lambda 表达式)。具体用法不多赘述,看了这么多代码了,接下来一个视频带你看懂效果! B站视频.
是不是很有意思😁

题外话

之前的OLED时钟现在加入了OTA下载,就可以不用频繁拆开烧录程序了,其次加上了断网检测,断网会显示断网图标,连网也会显示连网图标,十分银杏了,关键是OTA进度也能显示出来👍👍👍
正在连网图标
断网图标
OTA进度

工程资料

稍后开源。。。。。。。密码:kl6w 网盘链接.

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值