通过 Wi-Fi 在 ESP32 上上传代码 – BasicOTA

什么是 OTA?

OTA 代表 Over The Air。它允许使用 Wi-Fi 将新程序上传到 ESP32,而不是通过 USB 将 ESP32 连接到计算机进行更新。在您无法物理访问模块的情况下,它非常有用。这里提到了这样一个例子。

OTA 的需求是什么?

假设您使用 ESP32 创建了一个非凡的项目。你把它修好了,然后给它通电了。一切都运行良好,您已经舒适地进入了您的智能家居。但是有一天你需要对代码进行细微的更改,或者使用更新版本的库和东西来更改代码,或者向它添加更多功能。您是否喜欢插入 整个模块、删除连接、将其插入 PC、上传代码、重新进行连接然后重新设置的混乱?

嗯,不!没有人会。这就是 OTA 发挥作用的地方。要使用 ESP32 建立 OTA,您需要在代码中包含几行额外的代码,然后您可以通过无线方式上传代码。

如何使用 ESP32 实现 OTA?

有两种方法可以对 ESP32 开发板执行 OTA 更新。

  1. 基本 OTA – 通过 Arduino IDE 发送更新
  2. Web 更新程序 OTA – 通过网
以下是一个基本的 ESP32 Wi-Fi 配置的 IDF 完整代码示例: ```c #include <stdio.h> #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "esp_log.h" #include "esp_wifi.h" #include "esp_event.h" #include "nvs_flash.h" #define WIFI_SSID "your_SSID_here" // 替换为您的 Wi-Fi 热点名称 #define WIFI_PASS "your_PASSWORD_here" // 替换为您的 Wi-Fi 热点密码 static const char *TAG = "wifi station"; static esp_err_t event_handler(void *ctx, system_event_t *event) { switch(event->event_id) { case SYSTEM_EVENT_STA_START: esp_wifi_connect(); break; case SYSTEM_EVENT_STA_CONNECTED: ESP_LOGI(TAG, "Wi-Fi connected"); break; case SYSTEM_EVENT_STA_DISCONNECTED: esp_wifi_connect(); ESP_LOGI(TAG, "Wi-Fi disconnected, try to reconnect..."); break; case SYSTEM_EVENT_STA_GOT_IP: ESP_LOGI(TAG, "Got IP address: %s", ip4addr_ntoa(&event->event_info.got_ip.ip_info.ip)); break; default: break; } return ESP_OK; } void wifi_init_sta(void) { ESP_LOGI(TAG, "Initializing Wi-Fi..."); tcpip_adapter_init(); ESP_ERROR_CHECK(esp_event_loop_init(event_handler, NULL)); wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); ESP_ERROR_CHECK(esp_wifi_init(&cfg)); wifi_config_t wifi_config = { .sta = { .ssid = WIFI_SSID, .password = WIFI_PASS, }, }; ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA)); ESP_ERROR_CHECK(esp_wifi_set_config(ESP_IF_WIFI_STA, &wifi_config)); ESP_ERROR_CHECK(esp_wifi_start()); } void app_main() { ESP_ERROR_CHECK(nvs_flash_init()); wifi_init_sta(); } ``` 代码中的 `WIFI_SSID` 和 `WIFI_PASS` 分别为您的 Wi-Fi 热点名称和密码,需要您自行替换。 在 `event_handler` 函数中,我们处理 Wi-Fi 连接和断开事件,并在连接成功后打印获取到的 IP 地址。 在 `wifi_init_sta` 函数中,我们初始化 Wi-Fi,并设置 Wi-Fi 模式为 `WIFI_MODE_STA`,即 Wi-Fi 客户端模式。然后,我们为 Wi-Fi 客户端设置配置,包括 Wi-Fi 热点名称和密码。最后,我们启动 Wi-Fi。 在 `app_main` 函数中,我们初始化 NVS 闪存并启动 Wi-Fi 客户端。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

David WangYang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值