ESP32-OTA

news/2024/11/28 20:49:41/

文章目录

      • 1. 什么是OTA?
      • 2. OTA的基本原理
      • 3. ESP32远程OTA
        • 步骤:
          • 3.1 将需要升级的程序放在该目录下
          • 3.2 启动HTTP服务器
          • 3.3 配置
          • 3.4 烧录程序
          • 3.5 上电测试
          • ESP32端
      • 4. 问题:
      • 5. 通过命令控制OTA
      • 6. 参考:

1. 什么是OTA?

OTA(Over-The-Air)是一种通过网络无线传输固件或软件更新的技术。它允许远程更新设备上的固件或软件,而无需物理连接或手动干预。OTA 技术在许多领域得到广泛应用,包括智能家居、物联网设备、嵌入式系统等。

OTA 的主要优势包括:

  1. 远程更新:通过 OTA,可以在设备部署在远程位置时对其进行更新,无需人工干预或物理连接。
  2. 方便性和灵活性:设备可以通过无线网络自动下载和安装更新,用户不需要手动介入,提供了更大的便利性和灵活性。
  3. 效率和成本节约:OTA 可以大大降低更新固件或软件的成本和工作量,不再需要人工逐个设备更新,节约了时间和资源。
  4. 功能增强和错误修复:通过 OTA,可以在设备上快速部署新功能、修复错误或漏洞,提供更好的用户体验和安全性。

2. OTA的基本原理

OTA的原理是在服务器端(本地服务器或者远程服务器)放置新的固件,被升级设备访问服务器获取固件后即可将固件放到被升级设备的OTA分区升级程序。

3. ESP32远程OTA

刚开始参考的是乐鑫官方的教程,但是根据其教程部署http服务器后会访问失败。然后修改了一下http服务器的搭建方式,使用python搭建http服务器后成功。

步骤:

根据乐鑫官方搭建http服务器的部分使用删除线描述。

将ota需要用到的ca_cert.pem文件放到服务器

image-20230527210441216

输入命令openssl req -x509 -newkey rsa:2048 -keyout ca_key.pem -out ca_cert.pem -days 365 -nodes

输入配置信息

image-20230527210728893

3.1 将需要升级的程序放在该目录下

我用的是宝塔,具体上传方式可以根据自己常用的来。

把需要升级的.bin程序文件放到目录下,因为使用python搭建http服务器的原因,所以ca_cert.pem和ca_key.pem这两个文件不需要放到服务器

image-20230527211156418

3.2 启动HTTP服务器

命令:

openssl s_server -WWW -key ca_key.pem -cert ca_cert.pem -port 8070

nohup python -m SimpleHTTPServer 8070 &

  • nohup是使程序运行在后台的一种方式,也可以不用nohup &,程序直接运行在终端,方便查看日志

下图出现nohup.out表示服务器运行成功,nohup.out将原先在终端中输出的内容放到nohup.out中。我用的是腾讯云服务器,刚装的系统中是有python的,如果没有python需要自行安装一下

image-20230527224648972

3.3 配置

使用ESPIDF新建ota工程,ESPIDF开发环境搭建教程:https://blog.csdn.net/weixin_51954217/article/details/130462085?spm=1001.2014.3001.5501

image-20230527225447462

点击界面左下角的设置按钮,进入SDK configuration配置工程

image-20230527211742837

注意:服务器地址设置为http,不要https

3.4 烧录程序

image-20230527225725316

3.5 上电测试

image-20230527212215237

查了一下好像是SSL证书的问题

image-20230527213113621

又排查了一下,是因为刚才设置的域名为https的原因,然后将https改为http后用浏览器直接访问也可以。

http服务器直接使用python运行,命令:nohup python -m SimpleHTTPServer 8070 &同上面3.2启动mqtt服务器

image-20230527222213120

成功

用浏览器也是可以访问的到的

image-20230527222747889

ESP32端

image-20230527222456705

因为ota的程序是读取dht11温湿度的程序,然后dht11没有连接,所以会出现读取失败。但是说明ota成功。

板子重启后还是运行的ota程序

4. 问题:

image-20230527212215237

查了一下好像是SSL证书的问题

image-20230527213113621

5. 通过命令控制OTA

待补充

6. 参考:

  • https://blog.csdn.net/felix_tao/article/details/126075783

http://www.ppmy.cn/news/96081.html

相关文章

如何用 GPT-4 帮你写游戏(以24点游戏举例)

目录 给我一个24点游戏 游戏规则 GPT给的代码 ​改进 再改进 最近呢掀起了一阵GPT-4的热潮,很多人都想用GPT-4,这里呢我就打一个广告(嘿嘿),如果不知道国内如何使用GPT的,可以看看这个博客:G…

动态分配内存new和delete

动态分配内存new和delete 栈:存储局部变量、函数参数和返回值。 栈区的效率很高,但是空间很小,如果需要处理大量的数据,就必须使用堆区的内存 动态分配内存new和delete 使用堆区的内存有四个步骤: 1)声明…

网络规划与设计实验+配置案例报告+pkt

目录 第一部分:网络规划与设计实验..... 7 实验一 用户需求分析报告的撰写... 7 一、实验目的和要求... 7 二、实验内容... 7 三、实验步骤... 7 3.1 项目背景... 7 3.1.1 信息化发展趋势... 7 3.1.2 学校基本情况介绍... 8 3.1.3 学校对网络建设的基本要求…

Full-Scanner是一个多功能扫描工具,支持被动/主动信息收集,漏洞扫描工具联动,可导入POC和EXP

github项目地址:https://github.com/Zhao-sai-sai/Full-Scanner gitee项目地址:https://gitee.com/wZass/Full-Scanner 工具简介 做挖漏洞渗透测试有的时候要去用这个工具那个工具去找感觉麻烦我自己就写了一个简单的整合工具,有互联网大佬不…

Seata之@GlobalTransactional验证

下订单 -> 减库存 -> 扣余额 -> 改(订单)状态 1.数据库初始情况: 2.正常下单 http://localhost:2001/order/create?userId1&productId1&count10&money100 3.超时异常,没加GlobalTransactional 模拟Accou…

当下的程序员该如何面对复杂的就业坏境

已经2023年了,我们都知道现在开发趋向于年轻化,大部分都是90后、95后,毕竟,软件开发不像硬件开发一样,年限越高,相对来说越吃香。 31岁,前端工程师,工作经历8年,7年左右都在外包公司…

什么是C语言?

C语言是一种高级编程语言,于1972年由Dennis Ritchie在贝尔实验室开发出来。它是一种通用的、结构化的编程语言,被广泛用于系统软件、嵌入式系统、游戏开发以及科学计算等领域。 C语言的设计目标是提供一种简洁、高效、可移植的编程语言,以便…

Spring 事件相关知识ApplicationEvent

Spring 事件相关知识ApplicationEvent 事件工作流程相关类ApplicationListenerApplicationEvent 我们可以发布自己的事件ApplicationEventPublisher Spring框架中提供了多种事件类型,常用的几个事件类型如下: Spring 事件驱动模型是 Spring 框架中的一个…