0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

jf_cVC5iyAO 来源:易心Microbit编程 作者:易心Microbit编程 2022-12-16 16:47 次阅读

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就可以找到,范例程序这里就不列出。

2bf955ce-7d18-11ed-8abf-dac502259ad0.png

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

2c35a39e-7d18-11ed-8abf-dac502259ad0.png

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

2c5fcde0-7d18-11ed-8abf-dac502259ad0.png

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

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

2c8997d8-7d18-11ed-8abf-dac502259ad0.png

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

2cac3b76-7d18-11ed-8abf-dac502259ad0.png

注意事项

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

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

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

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

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

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

2cd28100-7d18-11ed-8abf-dac502259ad0.png

这里再附注两点说明一下

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

2cf52840-7d18-11ed-8abf-dac502259ad0.png

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

审核编辑:汤梓红

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

    关注

    7

    文章

    544

    浏览量

    34779
  • BASIC
    +关注

    关注

    0

    文章

    28

    浏览量

    12297
  • ESP32
    +关注

    关注

    13

    文章

    904

    浏览量

    16252

原文标题:ESP32 OTA无线更新系列——Basic OTA

文章出处:【微信号:易心Microbit编程,微信公众号:易心Microbit编程】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何从ESP32中删除OTA

    通过 Arduino IDE 和示例等对 ESP32 Dev 32 模块进行了一些 OTA 测试,一切正常。 现在我们想恢复到正常的串行/USB 编程,虽然我们似乎可以编程一个新程序,但它只是恢复到现有的 OTA 程序。 有没有
    发表于 01-31 07:37

    ESP32对Flash加密后能否使用OTA进行后续的维护更新

    ESP32对Flash加密后能否使用OTA进行后续的维护更新
    发表于 06-07 08:21

    请问esp32 ota升级如何获取更新进度?

    所用的是esp32-s2 idf:4.4调用esp_https_ota API进行固件升级,想获取更新进度,但不知道怎么实现,有人做过或者有思路指点一下吗?
    发表于 06-14 07:20

    请问如何实现ESP32固件的OTA在线升级更新

    什么是OTAESP32OTA升级有哪几种方式?如何实现ESP32固件的OTA在线升级更新
    发表于 01-14 06:05

    乐鑫ESP32空中下载(OTA)解决方案实操

    OTA分区,并利用otatool.py脚本在应用仍在运行时执行固件更新。 PART02以ESP32模块进行OTA升级测试 有几种不同的ESP32
    发表于 06-30 10:39

    OTA升级失败的原因?

    硬件:esp32 dwodidf v4.4参照例子:native_ota_example写的ota程序,升级完成后,重启进入: const esp_partition_t *runni
    发表于 02-10 08:55

    求助,esp32 ota升级如何获取更新进度?

    所用的是esp32-s2idf:4.4调用esp_https_ota API进行固件升级,想获取更新进度,但不知道怎么实现,有人做过或者有思路指点一下吗?
    发表于 02-14 07:15

    ESP32中使用esp_ota_write()来写flash出现5379是啥意思?

    ESP32中,使用esp_ota_write()来写flash,并将返回值打印出来。却出现了如下结果:[11:21:07.083] [0;31mE (108967) esp_ota
    发表于 02-15 06:11

    MQTT和HTTP OTA同时使用,加了指令后就不能OTA了是什么原因?

    我是用的IDF版本是4.4.2MQTT是拷贝"F:\ESP32-S3\idf\esp-idf\examples\protocols\mqtt\tcp"这个例程OTA是拷贝
    发表于 03-03 08:35

    MQTT和HTTP OTA同时使用就不能OTA了怎么解决?

    我是用的IDF版本是4.4.2MQTT是拷贝"F:\ESP32-S3\idf\esp-idf\examples\protocols\mqtt\tcp"这个例程OTA是拷贝
    发表于 03-07 08:09

    esp32 OTA升级确定运行分区时重启的原因?

    硬件:esp32 dwodidf v4.4参照例子:native_ota_example写的ota程序,升级完成后,重启进入: const esp_partition_t *runni
    发表于 03-08 06:06

    esp32是否支持aws ota,有没有实例参考?

    esp32 是否支持 aws ota ,有没有实例参考,请大神们指导指导
    发表于 03-09 06:57

    如何使用GSM网络的ESP32 OTA更新

    大家好!我正在使用LilyGo T-Call SIM800 系列中的一些,这是一个基于 ESP32 和 SIM800L 的模块,使用 GSM 网络进行互联网连接。有了这些,我可以建立 MQTT 连接
    发表于 04-12 08:30

    通过OTA从Google Drive下载文件来更新ESP32OTA更新时退出是为什么?

    我正在尝试通过 OTA 从我的 Google Drive 下载文件来更新我的 ESP32。当我开始 OTA 更新时,系统开始写入分区,但随后
    发表于 04-13 06:00

    如何使用Arduino IDE对ESP32进行无线编程

    在本教程中,我们将使用Arduino IDE 中的 OTA Web Updater对 ESP32 进行无线OTA) 编程。
    发表于 08-11 15:42 4569次阅读
    如何使用Arduino IDE对<b class='flag-5'>ESP32</b>进行<b class='flag-5'>无线</b>编程