ESP32 OTA无线更新系列——Basic OTA

电子说

1.2w人已加入

描述

OTA为OverTheAir的缩写,意思就是空中更新程序代码,个人认为这个IoT产业非常重要的一环,毕竟当你的装置从实验室走到实际场域后,一定会遇到很多问题。如果场域分散在很多不同的地方,光程序改版就会让你疲于奔波,带着USB线到处更新你的ESP32,想想就很累。如果今天你的装置支持OTA,那你在家里就可以直接更新客户端装置的程序,是不是很方便。

OTA并非是ESP32的专属功能,很多Arduino系列也都支持,以目前笔者所观察到的OTA目前来说主要分成以下四种模式

1.Basic OTA:在Arduino IDE中形成一个虚拟的Port,选择该Port即可上传新的程序代码

2.OTAWebUpload:ESP32会变成一台Webserver,透过ESP32的网页上传ArduinoIDE编译过得bin(binary)檔

3.HTTP Update:将编译好的bin档放在一个公开的网站上,让ESP32主动下载

4.Stream Update:透过MQTT将编译好的bin档直接上传到ESP32中

除了4之外,目前我都实做过,本篇先从最简单的1. Basic OTA开始吧。

Basic OTA

Basic OTA是内建的功能,只要档案/范例ArduinoOTA/BasicOTA就可以找到,范例程序这里就不列出。

OTA

上传时选择Partition Scheme为Default 4MB wiht spiffs(1.2MM APP/1.5M SPIFFS)

OTA

修改好程序最上面的WiFi设定后,上传即可。

OTA

BasicOTA由于笔者很少用,程序内容我就不一一说明。

程序上传后,如果网络有连上,理论上就可以在ArduinoIDE中找到装置。

OTA

找到的画面会向下面这样,在原本串行端口下方会出现一个ESP32虚拟的Port,后方则为ESP32的IP。

OTA

注意事项

经过反复测试,需要注意以下状况:

1.计算机与ESP32必须使用同一个局域网络,切必须关闭防火墙

2.无法使用手机AP分享网络:我将计算机及ESP32都选用手机分享的网络,但是无论如何测试就是找不到…..

3.计算机可能需要重新启动

4.结论就是这种模式似乎不是很稳定(也可能是我家网络的问题吧….)

不过网络程序代码更新,只要选择上面的虚拟Port不用再插USB就可以更新了。

OTA

这里再附注两点说明一下

1.delay问题:当使用OTA时,太长的delay就会导致送出需求时没被ESP32收到,因此建议程序有delay的地方修改为检测时间,与之前介绍MQTT时类似,其方式如下:

OTA

2.为了能持续使用OTA功能,新一版的程序代码也必须包含OTA功能,否则这版烧上去,就没有OTA了

审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分