【ArduinoOTA无线(OTA)更新的EASY指南】

【ArduinoOTA无线(OTA)更新的EASY指南】

  • 1. 前言
  • 2. 了解 ESP32 的 ArduinoOTA
  • 3. 无线更新案例
  • 4. ArduinoOTA入门
  • 5. 安装必备组件
  • 6. 设置硬件
  • 7. ESP32 OTA 的最低代码
  • 8. 按照我们的流程学习Arduino编程➜
  • 9. 这对OTA来说非常重要
  • 10. 通过无线方式将草图上传到 ESP32 Arduino 开发板
  • 11. OTA还有更多吗?
  • 12. 尝试自己的挑战
  • 13. 结语

1. 前言

无线 (OTA) 更新允许您将代码上传到您的电子项目,而无需将其物理连接到计算机。

在本课中,我们将引导您使用 ArduinoOTA 库将草图无线上传到 ESP32 开发板。

在这里插入图片描述

本指南将重点介绍实际获得无线 (OTA) 更新所需的最低限度的东西。

您将了解使 OTA 超级简单 (ArduinoOTA) 所需的关键 Arduino 库,此外,我们还将详细说明您需要使用的确切功能!

电缆?我们要去的地方,我们不需要电缆!

2. 了解 ESP32 的 ArduinoOTA

在我们深入探讨实际细节之前,让我们先强调一下 ArduinoOTA 是什么,以及它是如何专门针对 ESP32 工作的。

ArduinoOTA(Over-The-Air)是一个轻量级库,可通过 WiFi 连接将草图无线上传到基于 ESP32 的 Arduino 开发板。

通过在Arduino项目中使用此库,您可以远程更新草图,无需USB电缆或任何其他有线连接,并在无线部署项目时提供更大的灵活性。

3. 无线更新案例

使用 ESP32 进行 OTA 编程的优势很多。

它允许您将基于 ESP32 的项目部署在难以到达的位置,或者在安装后将它们嵌入到无法访问的设备中。

此外,OTA 编程可以快速部署更新,从而节省宝贵的时间和精力。

4. ArduinoOTA入门

要踏上 ArduinoOTA 之旅,您需要安装所需的库并设置硬件以实现无缝过程。

在继续操作之前,请确保您拥有 ESP32 开发板、Arduino IDE 和稳定的 WiFi 连接。

一切准备就绪后,让我们继续进行下一个Arduino IDE设置。

5. 安装必备组件

开始安装 ArduinoOTA 库并为 ESP32 开发板设置 Arduino IDE(如果您尚未这样做)。

首先,我们来安装 ESP32 开发板包:

  • 打开Arduino IDE。
  • 导航到侧边栏中的 Board Manager。
  • 搜索“ESP32”,选择乐鑫的 esp32。
  1. Arduino IDE:下载并安装 Arduino IDE;
  2. ESP32 开发板库:在 Arduino IDE 中添加 ESP32 支持;
    参考博客:【esp32c3配置arduino IDE教程】
    为安装过程留出一些时间,具体时间可能因您的互联网连接而异。
    在这里插入图片描述

CP2102驱动端口配置,去官网下载:https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers?tab=downloads
在这里插入图片描述
大家根据自己的系统类型选择安装,通过设备管理器查看匹配端口
在这里插入图片描述

  1. 完成后,您将在开发板管理器中找到 ESP32 开发板选项。
    现在,让我们安装 ArduinoOTA 库。

  2. 转到Arduino IDE中的库管理器。

  3. 搜索 ArduinoOTA,然后安装库。
    在这里插入图片描述
    安装成功如下
    在这里插入图片描述

有了先决条件,我们就可以设置硬件并建立初始连接了,如下一节所述。

6. 设置硬件

安装 ESP32 开发板后,使用 USB 数据线将其连接到计算机。确保开发板已通电并被Arduino IDE检测到。

等等,什么?我们还需要物理连接?!

此时,您可能想知道是否仍然需要物理连接。答案很简单:虽然初始配置需要物理连接,但后续的无线更新可以通过本地网络无线实现。

现在我们已经介绍了硬件设置,让我们继续讨论激动人心的部分——为 OTA 功能配置草图。

7. ESP32 OTA 的最低代码

以下是使用 ESP32 启用无线更新的近乎绝对的最小代码。

我们将暂时浏览此代码的每一行。

#include <WiFi.h>        // For connecting ESP32 to WiFi
#include <ArduinoOTA.h>  // For enabling over-the-air updates

const char* ssid = "Your SSID";  // Change to your WiFi Network name
const char* password = "You Password";  // Change to your password

void setup() {

  WiFi.begin(ssid, password);  // Connect to WiFi - defaults to WiFi Station mode

  // Ensure WiFi is connected
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
  }

  ArduinoOTA.begin();  // Starts OTA
}

void loop() {

  ArduinoOTA.handle();  // Handles a code update request

  // All loop you're code goes here.
}

在这里插入图片描述

8. 按照我们的流程学习Arduino编程➜

了解更多信息

OTA 代码的逐行代码演练
在这个草图中,我们做的第一件事是包含必要的库:

#include <ArduinoOTA.h>  // For enabling over-the-air updates
#include <WiFi.h>        // For connecting ESP32 to WiFi

const char* ssid = "Your SSID";         // Change to your WiFi Network name
const char* password = "Your Password";  // Change to your password

为了使用无线更新,您需要连接到 WiFi,因此需要 WiFi.h 库、ssid 和密码字符常量。

下一段代码在 setup() 函数中:

void setup() {

  WiFi.begin(ssid, password);  // Connect to WiFi - defaults to WiFi Station mode

  // Ensure WiFi is connected
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
  }

  ArduinoOTA.begin();  // Starts OTA
}

我们要做的第一件事是使用我们的凭据启动 wifi 连接,然后等待以确保我们已连接。您可能会跳过等待部分 - OTA不需要等待,但通常的做法是确保您确实连接到WiFi,然后再继续该程序。

设置的最后一部分是使用 ArduinoOTA.begin() 函数开始无线功能。

循环甚至更简单:

void loop() {

  ArduinoOTA.handle();  // Handles a code update request

  // All loop your code goes here.
}

你看我们在循环中只有一行代码,ArduinoOTA.handle()。这是将处理传入的无线更新请求的函数。

在此代码之后,您可以编写自己的代码来执行您希望 ESP32 执行的任何操作,例如读取传感器、闪烁 LED、接管世界等…

这就是为 ESP32 设置 OTA 所需的全部代码!但是有一件非常重要的事情要记住…

9. 这对OTA来说非常重要

每次使用此 OTA 流程将代码上传到开发板时,您的新草图必须至少包含上面显示的最低 OTA 代码——否则您的新草图将无法使用 OTA!

这是交易…这个 OTA 代码不是作为 ESP32 的“后台”进程运行的特殊东西。这不是您在 ESP32 中“启用”的东西。

代码本身就是使 OTA 成为可能的原因。如果您以无线方式上传到 ESP32 的程序中不包含此最低 OTA 代码,则在使用 USB 数据线将其物理连接到计算机并上传包含最低 OTS 代码的新草图之前,您无法对该开发板进行无线更新。

10. 通过无线方式将草图上传到 ESP32 Arduino 开发板

那么,如何将新草图上传到运行了 OTA 代码的电路板呢?

事实证明,这非常简单。(一定要爱上Arduino!

首先,您需要使用一台连接到与您的 ESP32 相同的 WiFi 网络的计算机(还记得我们执行 WiFi.begin() 的代码吗?您的计算机需要连接到同一个 WiFi 网络)。

接下来,只需打开Arduino IDE(我们正在使用Arduino IDE 2.x进行演示,但Arduino IDE 1.x也可以正常工作。

现在,转到“工具>端口”,您应该会在“网络端口”下看到一个新端口。
在这里插入图片描述

这个网络端口代表与运行 OTA 代码的 ESP32 的连接,现在只需选择端口,您就可以将代码上传到它,就像它连接到 USB 一样!

请记住在您的新草图中包含最低限度的 OTA 代码 😀

Arduino IDE下拉列表,选择网络端口进行无线更新
如果您使用的是 Arduino IDE 1.x,则可能需要关闭并重新打开 IDE 才能看到列出的网络端口。

在Arduino IDE 2.x中选择网络端口的另一种方法是只需单击左上角“验证”和“上传”按钮旁边的板和端口下拉列表即可。您应该会看到网络端口前面有一个 WiFi 符号。

Arduino IDE 2.x 开发板和端口下拉列表显示列出的网络端口。该端口来自使用 ArduinoOTA 的板

11. OTA还有更多吗?

我们在这里演示的代码是让 OTA 正常工作所需的绝对最低限度。

我想让它保持裸露的骨架,以确保涵盖基础知识。但是,如果您想查看更多功能,请查看 Arduino IDE 中提供的 ArduinoOTA 示例。

为此,请转到 File>Examples>ArduinoOTA>BasicOTA。当你打开草图时,你很快就会意识到还有很多事情要做——但这些都是好东西,如果你有兴趣,绝对值得探索。

12. 尝试自己的挑战

读一堂课是一回事,完全靠自己做这件事又是另一回事。尝试其中的几个挑战,看看这是否已经击中了家。

创建一个新的草图,并自己写出 OTA 的最小代码。上传此…你能看到你的网络端口吗?
以及连接到其中一个 ESP32 引脚的简单 LED 电路。现在修改您的最小 OTA 草图,使循环中的 LED 闪烁。上传此新代码…您看到 LED 闪烁吗?

#include <WiFi.h>        // For connecting ESP32 to WiFi
#include <ArduinoOTA.h>  // For enabling over-the-air updates
#define LED_BUILTIN 2
const char* ssid = "J09 502";  // Change to your WiFi Network name
const char* password = "qwertyuiop111";  // Change to your password
int i = 0;
void setup() {

  WiFi.begin(ssid, password);  // Connect to WiFi - defaults to WiFi Station mode
  pinMode(LED_BUILTIN, OUTPUT);

  // Ensure WiFi is connected
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
  }
  Serial.begin(9600);
  ArduinoOTA.begin();  // Starts OTA
}

void loop() {

  ArduinoOTA.handle();  // Handles a code update request
  digitalWrite(LED_BUILTIN, HIGH);  // turn the LED on (HIGH is the voltage level)
  delay(1000);                      // wait for a second
  digitalWrite(LED_BUILTIN, LOW);   // turn the LED off by making the voltage LOW
  delay(1000); 
  Serial.println(i++);

  // All loop you're code goes here.
}

在这里插入图片描述
在这里插入图片描述
上传成功
在这里插入图片描述
切换端口,打印计数,并且闪烁LED端口GPIO02

在这里插入图片描述

通过调整 LED 闪烁的延迟时间再次修改草图。上传此新代码 - 您能直观地确

13. 结语

🥳🥳🥳现在,我们讨论了使用 Arduino ArduinoOTA 库和 Arduino IDE 以无线方式将草图上传到 ESP32 开发板。🛹🛹🛹从而实现对外部世界进行感知,充分认识这个有机与无机的环境,🥳🥳🥳科学地合理地进行创作和发挥效益,然后为人类社会发展贡献一点微薄之力。🤣🤣🤣
希望这篇文章对你有所帮助!如果你有任何问题或建议,欢迎在评论区留言讨论。

参考文献:
【esp32c3配置arduino IDE教程】

The EASY Guide To Over-The-Air (OTA) Updates With ArduinoOTA

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/266395.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

IIS服务器的配置与管理

1) 安装IIS服务器&#xff0c;并添加站点&#xff0c;该服务器的IP地址为192.168.1.xx 。 2) 配置网站&#xff0c;并设置该站点不允许匿名访问&#xff0c;仅允许使用自己的本地用户登录连接。 3) 配置网站&#xff0c;限制拒绝192.168.1.100IP地址访问 。 4) 客户端使用19…

【C++11特性篇】玩转C++11中的包装器(function&bind)

前言 大家好吖&#xff0c;欢迎来到 YY 滴C系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; 目录 一.为什么需要包装器function&#xff…

一篇文章带你搞定CTFMice基本操作

CTF比赛是在最短时间内拿到最多的flag&#xff0c;mice必须要有人做&#xff0c;或者一支战队必须留出一块时间专门写一些mice&#xff0c;web&#xff0c;pwn最后的一两道基本都会有难度&#xff0c;这时候就看mice的解题速度了&#xff01; 说实话&#xff0c;这是很大一块&…

【ubuntu 22.04】安装vscode并配置正常访问应用商店

注意&#xff1a;要去vscode官网下载deb安装包&#xff0c;在软件商店下载的版本不支持输入中文 在ubuntu下用火狐浏览器无法访问vscode官网&#xff0c;此时可以手动进行DNS解析&#xff0c;打开DNS在线查询工具&#xff0c;解析以下主机地址&#xff08;复制最后一个IP地址&a…

c++动态内存与智能指针

前言 静态内存&#xff1a;用于保存局部静态变量、类内的静态数据成员以及全局变量栈&#xff1a;用于保存函数内部的非static变量堆&#xff1a;存储动态分配的对象&#xff08;程序运行时分配的对象&#xff09; 静态内存和栈内存的对象由编译器自动创建和销毁 而堆区的动态…

​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进

在当今数字化浪潮愈发汹涌的时代&#xff0c;科技公司的发展不仅需要更强大的计算能力和创新性技术&#xff0c;还需要对环境的高度责任感。在这一背景下&#xff0c;亚马逊云科技的海外服务器产品成为了推动清洁、高效数字未来的领导者之一。亚马逊云科技的高级主管阿比谢克夏…

2024年开通抖店,相关注意事项,新手一定要注意这几个细节

我是王路飞。 马上2024年了&#xff0c;如果你在23年没开通抖店的话&#xff0c;那么2024年就一定不能再错过了。 今天给你们说下&#xff0c;在2024年开通抖店&#xff0c;新手需要注意的相关事项和细节。 内容来源于【醒醒团队-电商王路飞】 首先&#xff0c;开店的时候&a…

Unity中Shader观察空间推导(在Shader中实现)

文章目录 前言一、观察空间矩阵推导1、求观察空间基向量2、求观察空间的基向量在世界空间中的矩阵 的 逆矩阵2、求平移变换矩阵3、相乘得出 观察空间转化矩阵4、得到顶点的世界空间坐标&#xff0c;然后转化到观察空间5、把观察空间坐标转化为齐次裁剪坐标输出到屏幕 二、最终效…

测试开发体系介绍——测试体系介绍-L3

目录&#xff1a; 测试框架体系TDDDDTBDDATDD介绍 测试框架是什么&#xff1f;测试框架的价值&#xff1a;测试框架的收益&#xff1a;常见测试框架类型&#xff1a;TDDBDDBehaviorDrivenDevelopmentATDDAcceptanceTestDrivenDevelopmentMBTModelBasedTestingDDTDataDrivenTes…

HarmonyOS 签名打包Hap(s)、App(s)

1. 基本概念 HarmonyOS应用通过数字证书&#xff08;.cer文件&#xff09;和Profile文件&#xff08;.p7b文件&#xff09;来保证应用的完整性&#xff0c;数字证书和Profile文件可通过申请发布证书和Profile文件获取。   申请数字证书和Profile文件前&#xff0c;首先需要通…

mySQL数据库用户管理

目录 1.创建外键约束 外键的定义 主键表和外键表的理解 具体操作 2.数据库用户管理 新建用户 查看用户信息 重命名用户 删除用户 修改当前和其他用户登录密码 忘记 root密码的解决办法 3.数据库用户授权 授予权限 查看权限 撤销权限 1.创建外键约束 外键的定义…

又是阿里,通义灵码免费平替GitHub Copilot

毫无疑问&#xff0c;人工智能已经在影响着我们日常生活的方方面面&#xff0c;同样的在软件开发领域&#xff0c;AI正在改变我们的开发方式。在软件开发领域&#xff0c;尽管有许多强大的AI编码工具&#xff0c;但国产&#xff0c;免费&#xff0c;使用门槛低&#xff0c;用起…

Fastjson 常用语法

一.Json数据格式回顾 1.1 什么是json JSON:(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript(欧洲计算机协会制定的js规范)的一个子集&#xff0c;采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSO…

省时攻略:快速获得Creo安装包,释放创意天才!

不要再在网上浪费时间寻找Creo的安装包了&#xff0c;一键下载安装&#xff0c; 你要的一切都可以在这里找到&#xff01;我们深知在海量的信息中寻找合适的软件包并非易事&#xff0c;而且往往还伴随着繁琐的安装过程。然而&#xff0c;现在有了我们&#xff0c;一切变得轻松简…

常见激活函数

激活函数是神经网络中的一种非线性变换&#xff0c;它在神经元的输出上引入了非线性性质&#xff0c;使神经网络能够更好地学习和适应复杂的数据模式。以下是一些常见的激活函数&#xff1a; Sigmoid 函数 Sigmoid 函数将输入映射到&#xff08;0&#xff0c;1&#xff09;之间…

模块与包、反序列化校验源码分析、断言、drf之请求、drf之响应

模块与包 什么是模块&#xff1f; 一个py文件&#xff0c;被别的py文件导入使用&#xff0c;它就是模块 如果py文件&#xff0c;直接右键运行&#xff0c;它叫脚本文件 什么是包&#xff1f; 一个文件夹&#xff0c;下有 __init__.py &#xff0c;和很多py文件&#xff0c;这个…

Ubuntu 常用命令之 scp 命令用法介绍

&#x1f4d1;Linux/Ubuntu 常用命令归类整理 SCP&#xff08;Secure Copy&#xff09;是一种基于SSH&#xff08;Secure Shell&#xff09;的文件传输协议&#xff0c;它可以在本地和远程主机之间安全地复制文件。在Ubuntu系统下&#xff0c;我们可以使用scp命令来实现这个功…

tcp 的限制 (TCP_WRAPPERS)

#江南的江 #每日鸡汤&#xff1a;青春是打开了就合不上的书&#xff0c;人生是踏上了就回不了头的路&#xff0c;爱情是扔出了就收不回的赌注。 #初心和目标&#xff1a;拿到高级网络工程师 TCP_WRAPPERs Tcp_wrappers 对于七层模型中是位于第四层的安全工具&#xff0c;他…

零成本搭建一款博客网站(基于Vercel+Hexo完美实现)【保姆级教程】

文章目录 &#x1f438;基于VercelHexo零成本搭建博客网站&#x1f43b;实现思路 &#x1f42e;Hexo的配置与安装&#x1f412;Hexo的美化与使用&#x1f42b;Github的推送与部署&#x1f43c;Vercel部署与网站上线&#x1f41b;总结 &#x1f438;基于VercelHexo零成本搭建博客…

冬至·特辑:Note4---二叉树的链式结构

目录 前言&#x1f9f6; 1. 二叉树链式结构的实现&#x1f427; 1.1 要实现的目标&#x1f3af; 2.二叉树的创建&#x1f339; 2.1代码实现 2.1.1 TreeNode.h 2.1.2 TreeNode.c 3.实现二叉树的遍历&#x1f432; 3.1 思路分析&#x1f424; 3.2 前/中/后序遍历&#…