当前位置: 首页 > news >正文

ESP32-CAM在PlatformIO IDE里实现OTA的几个小TIPS

小TIPS.

  1. 在用platformIO IDE实现OTA之前,要在ArduinoIDE里给ESP32CAM的分区,注意要用带有OTA的分区,如下图。可以直接用示例中的ArduinoOTA–>BasicOTA,在烧录的同时也分区了。很多上传失败就是因为没有注意分区里忘记选择OTA了
    在这里插入图片描述
  2. 第一次使用PlatformIO IDE烧录时,要先注释掉这两行代码。成功上传后,后面再取消注释。(注意:有的路由器要用upload_port = ESP32CAM-OTA.local)
upload_protocol = espota
upload_port = ESP32CAM-OTA
  1. 在setup()函数里,用如下代码给你的设备起个名字,这样就不用在platformio.ini里每次手动输入IP了。
ArduinoOTA.setHostname("ESP32CAM-OTA"); // 设置OTA主机名

如果没有使用setHostname方法,那upload_port的后面跟的就应该是你的ESP32CAM的IP地址了。例如:upload_port = 192.168.1.20

源代码如下:

  1. 首先,把main.cpp的源码提供如下:
#include <Arduino.h>
#include <WiFi.h>
#include <ArduinoOTA.h> // 添加ArduinoOTA库
#include <WiFiUdp.h>
#include <ESPmDNS.h>
#include "config.h"void reconnectWiFi();void setup()
{Serial.begin(115200);// 连接 WiFiWiFi.begin(ssid, password);int connectAttempts = 0;    // 初始化连接尝试次数const int maxAttempts = 10; // 最大尝试次数// 循环直到连接成功或达到最大尝试次数while (WiFi.status() != WL_CONNECTED && connectAttempts < maxAttempts){delay(1000);Serial.println("Connecting to WiFi...");connectAttempts++; // 增加尝试次数} if (WiFi.status() == WL_CONNECTED){Serial.println("Connected to WiFi");Serial.print("IP address: ");Serial.println(WiFi.localIP());// 初始化 mDNSif (MDNS.begin("esp32cam")){Serial.println("mDNS responder started");}else{Serial.println("Error setting up mDNS responder!");}// 初始化 ArduinoOTAArduinoOTA.setHostname("ESP32CAM-OTA"); // 设置OTA主机名ArduinoOTA.begin();Serial.println("Ready for OTA updates");}else{Serial.println("Failed to connect to WiFi");}
}void loop()
{// 检查WiFi连接状态if (WiFi.status() != WL_CONNECTED){reconnectWiFi();}// 处理OTA更新请求ArduinoOTA.handle();
}void reconnectWiFi()
{Serial.println("WiFi disconnected, attempting to reconnect...");WiFi.begin(ssid, password);int connectAttempts = 0;    // 初始化连接尝试次数const int maxAttempts = 10; // 最大尝试次数// 循环直到连接成功或达到最大尝试次数while (WiFi.status() != WL_CONNECTED && connectAttempts < maxAttempts){delay(1000);Serial.println("Connecting to WiFi...");connectAttempts++; // 增加尝试次数}
}
  1. 把wifi的用户名密码放到单独的config.cpp里。当然,你也可以直接把用户名密码放到main.cpp里。
#include "config.h"//wifi
const char *ssid = "yourwifi";
const char *password = "password";

头文件:

#include <arduino.h>
//config.h
#ifndef CONFIG_H
#define CONFIG_H// Wi-Fi credentials
extern const char *ssid;
extern const char *password;#endif
  1. platformio.ini文件内容:
[env:esp32cam]
platform = espressif32
board = esp32cam
framework = arduino
monitor_speed = 115200
upload_protocol = espota
upload_port = ESP32CAM-OTA
;upload_port = ESP32CAM-OTA.local #如果你用ESP32CAM-OTA不能上传的话,加上.local[platformio]
description = ESP32 Camera Web Server

http://www.mrgr.cn/news/96183.html

相关文章:

  • 骨密度以及骨密度测量,测量方案,意义;提高;实现方案
  • jmeter 镜像构建
  • C语言学习关键笔记
  • 数据结构C语言练习(顺序表)
  • 论文阅读笔记:Denoising Diffusion Implicit Models
  • nara wpe去混响学习笔记
  • 力扣刷题第一遍
  • Microi吾码界面设计引擎之基础组件用法大全【内置组件篇·中】
  • Leetcode算法方法总结
  • 生成器的应用 async与await实现
  • 【leetcode hot 100 347】前 K 个高频元素
  • centos8上实现lvs集群负载均衡nat模式
  • mysql--主从复制--部署
  • 循环神经网络(RNN)
  • 大数据(2)Hadoop架构深度拆解:HDFS与MapReduce企业级实战与高阶调优
  • STM32F103_LL库+寄存器学习笔记08 - DMA串口发送,开启DMA传输完成中断
  • java程序员实用英语学习总结
  • STM32F103_LL库+寄存器学习笔记07 - 串口接收缓冲区非空中断
  • 网络安全法律法规简介
  • 锐捷EWEB路由器 timeout.php任意文件上传漏洞代码审计(DVB-2025-9003)