风筝
发表于: 2020-2-9 10:58:17 | 显示全部楼层

OTA(Over the Air)编程可以无线升级器件的固件或软件,而无需任何物理访问。它使用Wi-Fi、蓝牙、GPRS或4G / 3G等无线技术,而不是采用有线串行通信。 OTA用于对微控制器、手机、计算机、机顶盒等设备进行重新编程。通常会发送OTA更新指令以更新软件、解决错误、添加一些功能等。随着物联网设备使用的增加,OTA的使用数据传输速率较低的频段(868 MHz、900 MHz、2400 MHz)。


在本篇文章中,我们将OTA更新发送给ESP8266 NodeMCU使LED闪烁。


ESP8266 NodeMCU

NodeMCU是一个开源物联网平台。它包括在Espressif Systems的低成本支持Wi-Fi的ESP8266 Wi-Fi SoC上运行的固件,以及基于ESP-12模块的硬件。它具有GPIO、SPI、I2C、ADC、PWM和UART引脚。可以使用Arduino IDE进行编程。板上NodeMCU具有CP2102 IC,可提供USB转TTL功能。

NodeMCU-ESP-12.png


所需的组件

●    NodeMCU ESP8266开发板

●    Micro USB电缆

●    Arduino IDE


准备NodeMCU以无线接收OTA更新

首先使用Micro USB电缆将NodeMCU ESP8266与PC连接。然后,要使用OTA上传固件,我们需要使用micro USB串口上传草图以生成ESP IP地址。以下是上传固件的必要步骤。从Tools -> Port中选择连接电缆的串行端口。


ESP8266附带了可从Arduino IDE直接访问的库和示例。打开Arduino IDE,然后打开BasicOTA示例。

Preparing-NodeMCU-to-Receive-OTA-Update-Wirelessly.png


编辑草图,用Wi-Fi SSID和密码替换“ your-ssid”和“ your-password”,然后上传草图

Upoading-Code-to-NodeMCU-to-Receive-OTA-Update-Wirelessly.png


成功上传程序后,打开串口监视器。在串口监视器上设置115200的波特率,然后按NodeMCU ESP8266上的Reset按钮。将NodeMCU ESP8266与Wi-Fi连接需要花费一些时间,因为它会检查Wi-Fi凭据。如果SSID和密码正确,则NodeMCU ESP8266将连接到Wi-Fi,并且ESP的IP地址将显示在串口监视器上。

Arduino-Serial-for-NodeMCU-to-Receive-OTA-Update-Wirelessly.png


ESP8266指示灯闪烁的OTA传输程序

文章末尾给出了用于通过OTA传输闪烁的LED程序的完整代码,在这里我们解释了该代码的一些重要部分。


首先在代码中导入所需的库。 ESP8266WiFi.h库提供了连接到网络所需的ESP8266特定Wi-Fi例程。它还提供了在站模式或软接入点模式下运行ESP8266的方法和属性。 ESP8266mDNS.h允许Sketch响应多播DNS查询。

  1. #include <ESP8266WiFi.h>          //provides ESP8266 specific Wi-Fi routines we are calling to connect to network.
  2. #include <ESP8266mDNS.h>
  3. #include <WiFiUdp.h>
  4. #include <ArduinoOTA.h> //OTA libraries
复制代码

定义要与ESP连接的Wi-Fi网络的SSID和密码的变量。我们必须将PC和ESP连接到同一Wi-Fi网络。

  1. #ifndef STASSID
  2. #define STASSID "your-ssid"
  3. #define STAPSK  "your-password"
  4. #endif

  5. const char* ssid = STASSID;
  6. const char* password = STAPSK;
复制代码

ESP8266设置为station模式,并通过提供证书启动Wi-Fi连接。 ESP需要一些时间才能连接到Wi-Fi模块。如果SSID和密码正确,它将连接到Wi-Fi;如果SSID和密码不正确,则它将每1秒钟重启一次。

  1. Serial.begin(115200);                //Set Baud Rate to 115200
  2.   Serial.println("Booting");
  3.                                                      // Step to connect ESP with the Wi-Fi
  4.   WiFi.mode(WIFI_STA);          //Set ESP as station mode
  5.   WiFi.begin(ssid, password);      //Wi-Fi Credentials
  6.   while (WiFi.waitForConnectResult() != WL_CONNECTED)        //Connecting  ESP to wi-fi takes some time, so wait till it gets connected
  7. {
  8.     Serial.println("Connection Failed! Rebooting...");
  9.     delay(1000);
  10.     ESP.restart();
  11.   }
复制代码

连接到Wi-Fi模块时,ESP模块的IP地址被打印在串口监视器上。 WiFi.localIP()给出ESP的IP地址。


成功上传代码后,以115200波特率打开串口监视器。按下重置按钮,几秒钟后,您将能够在串口监视器上看到ESP IP地址。现在,您将能够无线上传固件。


通过OTA更新使ESP8266上的LED闪烁

在上传下一个草图之前,请转到“Tools”,然后将“PORT”更改为ESP IP地址,以将固件无线上传到NodeMCU。

ESP8266-Blinking-LED-Program-for-OTA-Transfer.png


现在,使用Arduino IDE以无线方式在NodeMCU上上传以下给定的LED闪烁草图,并确保您的PC和ESP连接到相同的Wi-Fi网络,并且ESP模块通电。


成功上传代码后,NodeMCU ESP8266上的LED指示灯将每1秒闪烁一次。您还可以在草图中设置主机名和密码,以确保在ESP上上传固件时的安全性。

Blinking-the-LED-on-NodeMCU-through-OTA-Update.jpg


代码

以下是本文使用的完整代码: main.rar (1.25 KB, 下载次数: 49)

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 700 | 回复: 1480



手机版|

GMT+8, 2024-4-26 23:16 , Processed in 0.042165 second(s), 6 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表