文章目录
- 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 的主要优势包括:
- 远程更新:通过 OTA,可以在设备部署在远程位置时对其进行更新,无需人工干预或物理连接。
- 方便性和灵活性:设备可以通过无线网络自动下载和安装更新,用户不需要手动介入,提供了更大的便利性和灵活性。
- 效率和成本节约:OTA 可以大大降低更新固件或软件的成本和工作量,不再需要人工逐个设备更新,节约了时间和资源。
- 功能增强和错误修复:通过 OTA,可以在设备上快速部署新功能、修复错误或漏洞,提供更好的用户体验和安全性。
2. OTA的基本原理
OTA的原理是在服务器端(本地服务器或者远程服务器)放置新的固件,被升级设备访问服务器获取固件后即可将固件放到被升级设备的OTA分区升级程序。
3. ESP32远程OTA
刚开始参考的是乐鑫官方的教程,但是根据其教程部署http服务器后会访问失败。然后修改了一下http服务器的搭建方式,使用python搭建http服务器后成功。
步骤:
根据乐鑫官方搭建http服务器的部分使用删除线描述。
将ota需要用到的ca_cert.pem文件放到服务器
输入命令openssl req -x509 -newkey rsa:2048 -keyout ca_key.pem -out ca_cert.pem -days 365 -nodes
输入配置信息
3.1 将需要升级的程序放在该目录下
我用的是宝塔,具体上传方式可以根据自己常用的来。
把需要升级的.bin程序文件放到目录下,因为使用python搭建http服务器的原因,所以ca_cert.pem和ca_key.pem这两个文件不需要放到服务器
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需要自行安装一下
3.3 配置
使用ESPIDF新建ota工程,ESPIDF开发环境搭建教程:https://blog.csdn.net/weixin_51954217/article/details/130462085?spm=1001.2014.3001.5501
点击界面左下角的设置按钮,进入SDK configuration配置工程
注意:服务器地址设置为http,不要https
3.4 烧录程序
3.5 上电测试
查了一下好像是SSL证书的问题
又排查了一下,是因为刚才设置的域名为https的原因,然后将https改为http后用浏览器直接访问也可以。
http服务器直接使用python运行,命令:nohup python -m SimpleHTTPServer 8070 &
同上面3.2启动mqtt服务器
成功
用浏览器也是可以访问的到的
ESP32端
因为ota的程序是读取dht11温湿度的程序,然后dht11没有连接,所以会出现读取失败。但是说明ota成功。
板子重启后还是运行的ota程序
4. 问题:
查了一下好像是SSL证书的问题
5. 通过命令控制OTA
待补充
6. 参考:
- https://blog.csdn.net/felix_tao/article/details/126075783