ESP32 OTA升级之 HTTP OTA

文章目录

  • ESP32 OTA升级之 HTTP OTA
    • 1. 前言
    • 2. 搭建http本地服务器
    • 2. HTTP OTA
    • 3. 补充学习

1. 前言

在所有电子设备中,OTA 功能目前都成为了必要之选,所谓 OTA (空中升级),也就是当设备在客户现场正常运转过程中,亦可通过外部通讯的方式,获取新的固件,将新的固件存放到 flash 内,并在下一次启动或复位后运行。

由于 OTA 操作实际是和 flash 紧密结合的,因此在进行esp32OTA 之前,首先需要对 esp32flash 布局有充足的了解,关于 esp32flash 布局,esp32 内采用分区表这个概念进行描述,关于分区表的详细介绍,大家可以自行阅读编程指南对应文章内的内容,再次不进行过多赘述: ESP32 分区表(点击跳转)。

本文主要描述如何采用http通讯方案获取升级固件完成esp32的ota升级。

本文主要采用官方提供的Example例程,虽然乐鑫官方提供了有关例程,但是对于OTA有关例程实际完整运行起来还是有着诸多复杂配置,本文将一步一步记录如何真正在本地实现ESP32的 HTTP OTA。此外本文主要介绍关于采用 http 通讯方案完成ESP32的OTA升级,如需了解 https 方案,可查看博主另外一篇博客: ESP32 OTA升级之https ota详解 (点击跳转)

2. 搭建http本地服务器

由于我们采用http进行升级,在调试阶段,我们可以采用 python 先建立一个简单的本地 http 服务器以方便我们进行调试,具体操作细节如下:

  1. 首先需要在电脑上安装 python 环境(推荐python3),具体操作自行上网学习

  2. 采用 python 的内置 http.server 模块搭建一个简易的http服务器(python2版本对应模块名称为 SimpleHTTPServer

  3. 在工程目录下打开 windows power shell

  4. 输入 python --version 检查python的版本以及是否可以正常使用

  5. 输入 python -m http.server 8080 命令,创建 http 本地服务器(python2 对应命令为python -m SimpleHTTPServer 7890

    • -m 表示使用模块;8080 表示http对应的端口 port,此参数可自行修改

  1. 之后可在浏览器输入以下网址访问http本地服务器:http://127.0.0.1:8080/http://localhost:8080/ 进行访问(如果测试失败,有可能是你电脑上其他软件占用了端口所致,可尝试更换端口号测试)

  2. 通过以上简单操作,一行指令就完成了一个http服务器的搭建,并在电脑端可以进行访问,不过关于访问的域名地址,由于我们的服务器是在电脑上搭建的,所以在电脑上的浏览器可以使用127.0.0.1localhost进行访问,那其他电脑或设备如何进行访问呢?
  3. 接下来我们介绍如何在局域网内访问我们刚刚建立的http服务器
  4. 首先需要知道开启服务器的电脑的ip地址,在 power shell 内输入ipconfig.exe 进行查看,其实对应的IPv4 地址也就是http服务器的地址啦
  5. 因此局域网内的其他机器需要访问我们这台电脑的http服务器内的内容,可将对应的url修改为:http://(服务器电脑IPv4地址):(服务器端口号),我这对应的即http://192.168.1.5:8080

2. HTTP OTA

  1. esp-idf目录下的 example 文件夹下拷贝相应示例工程

    具体路径为:esp-idf\examples\system\ota\simple_ota_example

  1. 在新的目录下,进入simple_ota_exmaple 文件夹下,单击右键,在当前目录下打开 windows power shell 终端

  2. power shell 内输入 get_idf 命令,完成此终端的esp32环境配置

(关于环境搭建请查看ESP32开发环境搭建 ESP-IDF+(PowerShell / Vscode) (windows)(点击跳转))

  1. 输入 idf.py build 直接编译示例工程

  2. 由于我们这里是直接编译的例程,什么都没有修改,因此正常编译是不会有什么问题的,如果有,请检查环境是否搭建成功,或者上述操作是否存在错误。
    ps:编译错误,一般编译信息里面会有提示,可以根据提示查找问题原因!

  3. 修改工程配置参数,输入idf.py menuconfig,打开menuconfig配置项

    • 修改 wifi 连接信息

    • 修改升级文件路径, 注意此路径的填写,根据我们在第二章节所述,地址因修改为对应的 http 服务器电脑的地址,此外注意需要找到对应的 bin 文件的路径,工程bin文件一般在工程目录下的 ./build 目录下

  4. 如果不知道具体的路径,可先使用浏览器访问,找到对应的bin文件,如果工程目录下没有bin文件,请检查工程是否执行过idf.py build编译过,新的工程是没有bin文件的!!!

    此处路径参数填写,请参考第二章节描述!

  5. 退出menuconfig,重新编译工程idf.py build

  6. 烧录下载进行测试 idf.py -p COM4 flash monitor


创作不易,转载请注明出处!

关注、点赞+收藏,可快速查收博主有关分享!


3. 补充学习

  
强烈推荐:

  • 1) ESP32 OTA升级之https ota详解 (点击跳转!!!)
  • 2) ESP32 bin文件生成及多个bin文件合并指南 (点击跳转!!!)
  • 3) ESP32 分区表(点击跳转!!!)
  • 4) ESP32 专栏(点击跳转!!!)

ESP32 OTA升级之HTTP OTA相关推荐

  1. RTOS设备如何快速实现OTA升级--快速接入OTA平台

    目录 一. 创建产品和零件 1.1 登陆平台 1.2 添加产品 1.3 配置产品 1.4 添加升级零件 二. 添加设备 2.1 单个添加 2.2 批量添加 三. 设备注册激活 3.1 发起请求 3.2 ...

  2. 58 ESP32 OTA升级(双OTA分区无factory APP)

    1 引言 产品功能实现后,就要对产品的维护进行考虑.产品出来后,卖了N台出去,如果突然发现自己一行代码写错了,怎么办,肯定不能去现场吧N台设备,免费出差旅游也累啊,所以一般需要有远程升级设备的功能,此 ...

  3. android ota 升级脚本,Android OTA升級包制作腳本詳解(五,升級腳本updater-script的執行1)...

    寫在前面: 首先當我們執行升級腳本updater-script的時候,就表示我們已經進入了升級安裝狀態.那么在我們就從實際的安裝作為入口開始分析.也就是說我們從install.cpp中的install ...

  4. Android OTA升级(1):编译升级全包

         Android原生系统中就已经支持OTA升级.所谓OTA升级就是通过空中接口获取升级包,然后更新系统固件.一般地,升级包无论如何获取,哪怕是直接TCard本地升级,也被称为OTA升级.    ...

  5. AUTOSAR OTA升级

    一.OTA技术概念 随着高级辅助驾驶的发展和自动驾驶的引入,汽车变得越来越智能,这些智能汽车被软件控制,装有巨量的软件程序,当出现一个软件程序问题或者更新时,如果 按照传统的解决方式 ,那都将是一项很 ...

  6. CSR8670学习笔记:OTA升级固件

    为了方便大家学习,现与我爱蓝牙网联合推出[QCC300x/CSR867x/QCC30xx/QCC51xx开发板]. 技术交流QQ群号:743434463 开发板会员QQ群号:725398389(凭订单 ...

  7. MT6762 Android 8.1 打开custom分区,挂载custom分区,OTA升级custom分区

    MT6762 Android 8.1 打开custom分区,挂载custom分区,OTA升级custom分区 1.打开custom分区 2.挂载custom分区 3.OTA升级custom分区 1.打 ...

  8. Android 7.0 OTA升级(高通)

    文章目录 1. Full OTA 方式升级介绍 1.1 Full OTA 制作第一步:生成 msm89xx-target_files-eng.XXX.zip 1.2 Full OTA 制作第二步:Mo ...

  9. esp8266使用Arduino编程实现自动浇水、OTA升级功能

    创作前情: 上海疫情已有一段时间,从三月初算起来已过了一个多月,当时用了泡沫箱种了些小香葱,这几天把它搬到了室外阳台,由于浇水不方便,想着做一个自动浇水的设备. 实现目的: 可以远程控制浇水 可以实时 ...

最新文章

  1. C语言经典例96-计算字符串中子串出现的次数
  2. MATLAB R2022 最新中英文版 数据处理
  3. 栈一:用两个栈实现队列
  4. root用户登录mysql后新建用户提示1045错误
  5. python3高级 一 迭代器
  6. java 日期加一天_漫话:如何给女朋友解释为什么一到年底,部分网站就会出现日期混乱的现象?...
  7. 所以進入到二十一世紀之後
  8. clientv3 github.com与go.etcd.io冲突 /github.com/coreos/etcd/clientv3/auth.go:166:106: too many errors
  9. OpenCV threshold 二值化
  10. steam,epic,origin限免游戏推送,持续更新
  11. 条件运算符的嵌套_条件运算符
  12. 借助栈实现单链表的原地逆置
  13. android 相册png黑底,Android png透明图片转jpg时背景变黑的解决方法
  14. SPU和SKU都是什么意思
  15. 三个可替代“迅雷”的下载软件,速度超快!
  16. Android -- 每日一问:在项目中使用AsyncTask会有什么问题吗?
  17. yum 下载离线包 及其安装
  18. Taro2.* 小程序配置分享微信朋友圈
  19. c语言中错误c2062,C/C++编译器错误消息大全
  20. mandatory参数的使用

热门文章

  1. 推荐个非常非常好用的犀利搜索网站(资源搜罗),值得收藏!!
  2. android viewpager2,viewpager2原理和使用
  3. IE落幕,微软IE浏览器永久关闭
  4. 【SpringBoot】42、SpringBoot中自定义Favicon
  5. 盛大免费那天 史玉柱开始做网游
  6. GraphQL 渐进学习 06-graphql-采用-mockjs-mock数据
  7. python对电影进行预测评分_推荐系统—影视评分预测
  8. 请问C#中 if(fonrdlg .ShowDialog () ==DialogResult .OK )怎么理解
  9. 阿尔法狗是怎么用机器学习做决策的
  10. 自监督学习-MoCo-论文笔记