一、前言
由于有时候单片机放置的位置受到遮挡或其他原因,引出烧录线比较麻烦,因ESP32有强大的WiFi功能,固想寻找有无可能通过无线远程烧录的办法。经过查阅借鉴,找到了通过OTA的方式进行无线烧录。
关于OTA等一些介绍可进行上网查阅,本文仅进行实操过程记录,学习记录如下。
二、准备
在Arduino IDE工具中选择开发板。选择好开发板型号后,打开示例程序OTAWebUpdater,路径如下图。
注意,这个库是默认的,不需要额外下载。
一开始以为是需要自行安装的库,下载了之后找不到网上一些教程的例程。如下图,是另外的库,具体用法有兴趣可以自行了解。由于许久没打开这个软件了,有些设置是默认的,发现把开发板的型号配置好,就能找到如上图的例程。
三、实现过程
首先,打开示例程序OTAWebUpdater,找到如下代码。
此处,对host,ssid,password进行修改。
注意,此处修改的是你需要连入wifi的信息,确保无误。
将代码烧录到单片机,烧录完成后,打开串口助手。
代码设置的串口波特率为115200,接受设置ASCII码格式。准备完毕,按复位EN键,重启单片机,复位后会列出一些基本信息,随后一直发送.....,点点,就是在连接中。连接完成后,发送连接消息,并发送自己的IP地址,随后停止发送。
在此过程中,如果发现一直在发点点,就应该是前面的ssid和password错误,检查下。
获取IP地址后,打开浏览器,输入IP地址回车。出现如下界面。
输入
账号:admin
密码:admin
输入账号密码后,登录如下界面。
此处账号密码在程序中设置,需要可以自行更改。
下面我们准备我们需要烧录的测试代码。
在例程代码中添加所需代码。
定义LED引脚,我这里板子接的是2号脚。
const int led = 2;
初始化引脚。
pinMode(led, OUTPUT);
闪烁代码。
digitalWrite(led, HIGH);
delay(500);
digitalWrite(led, LOW);
delay(500);
如果LED灯能够闪烁,则证明通过OTA的方式烧录成功。
Arduino IDE编译出来的是ino文件,此处我们需要bin文件。
这里建议先将代码ino文件另存为在自己想放的地方,保存好路径,以免导出bin文件保存默认为路径,等下找不到。
选择“导出已编译的二进制文件”。
随后,选择文件,选择我们生成的bin,点击Update。
看网上很多参考都是直接成功的,但是我这里出现了点问题。
具体解决方法参考文章:
如何实现 ESP32 固件的 OTA 在线升级更新_esp32 serverindex update-CSDN博客初始配置、启动nginx后用浏览器访问127.0.0.1时出现404 not found解决方法_nginx 127.0.0.1不能访问-CSDN博客解决步骤:
找到Server Index Page部分代码,将action='#'改成action='update'。
修改完毕,重新烧录。
(注意,此处例程代码和测试代码两份都需要修改,修改完代码,需要将例程代码重新通过串口烧录进去到ESP32,因为这个网页是写在ESP32上的,不仅仅是把需要通过OTA烧录的测试代码修改就可以了。)
这里我修改完之后,会出现404,但是灯是可以闪烁的,则证明可以烧录。
我又重新试了下,不会出现404,结果如下图。
至此,ESP远程烧录实验完毕。电灯大师成就+1