位置导航: 首页 / 物联网教程 / 第3章 – 用C/C++开发物联网 / ESP8266应用技巧 / 本页
所谓OTA,就是Over-The-Air的缩写。有人将其翻译为“空中下载”,也有翻译为“隔空传输”。无论如何翻译,对于ESP2866来说,通过OTA我们无需将ESP8266与电脑连接,而仅仅通过WiFi就可以用Arduino IDE向ESP8266上传程序。
在这一节课程里,我们将分步骤向您介绍如何实现ESP8266的OTA操作。
1 通过数据线上传初始示例程序
首先,请将以下示例程序通过Arduino IDE上传到ESP8266。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
/********************************************************************** 项目名称/Project : 零基础入门学用物联网 程序名称/Program name : OTA_Flash_Example 团队/Team : 太极创客团队 / Taichi-Maker (www.taichi-maker.com) 作者/Author : CYNO朔 日期/Date(YYYYMMDD) : 20200713 程序目的/Purpose : 本示例程序用于演示ESP8266的OTA功能。通过本程序,我们将启动ESP8266的OTA程序上传功能。 我们将无需使用连接线将ESP8266与电脑进行连接,而可以使用WiFi对ESP8266上传程序。 如需了解本程序的详细说明,请参考以下链接: http://www.taichi-maker.com/homepage/esp8266-nodemcu-iot/iot-c/esp8266-tips/esp8266-ota/ ----------------------------------------------------------------------- 其它说明 / Other Description: 本程序为太极创客团队制作的免费视频教程《零基础入门学用物联网 》中一部分。该教程系统的 向您讲述ESP8266的物联网应用相关的软件和硬件知识。以下是该教程目录页: http://www.taichi-maker.com/homepage/esp8266-nodemcu-iot/ ***********************************************************************/ #include <ESP8266WiFi.h> #include <ArduinoOTA.h> #include <Ticker.h> // 闪烁时间间隔(秒) const int blinkInterval = 2; // 设置wifi接入信息(请根据您的WiFi信息进行修改) const char* ssid = "taichimaker"; const char* password = "12345678"; Ticker ticker; void setup() { Serial.begin(9600); Serial.println(""); pinMode(LED_BUILTIN, OUTPUT); ticker.attach(blinkInterval, tickerCount); // 设置Ticker对象 connectWifi(); // OTA设置并启动 ArduinoOTA.setHostname("ESP8266"); ArduinoOTA.setPassword("12345678"); ArduinoOTA.begin(); Serial.println("OTA ready"); } void loop() { ArduinoOTA.handle(); } // 在Tinker对象控制下,此函数将会定时执行。 void tickerCount(){ digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN)); } void connectWifi(){ //开始连接wifi WiFi.begin(ssid, password); //等待WiFi连接,连接成功打印IP while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.print("."); } Serial.println(""); Serial.println("WiFi Connected!"); Serial.print("IP address:\t"); Serial.println(WiFi.localIP()); } |
2 通过Arduino IDE正确选择OTA端口
程序上传后,请重新启动Arduino IDE。并且通过Arduino IDE正确选择ESP8266的OTA端口。
如下图所示:
3. 认证并上传程序
点击Arduino IDE的”上传”按钮后, IDE将会弹出对话框让用户输入OTA上传密码。请根据示例程序中的setPassword
函数所设置的信息来输入密码。完成密码输入后,点击确定。如果密码无误,您将看到程序开始上传。
程序上传结束后,ESP8266将会自动重启开发板,新的程序也将在重启后开始运行。
4. OTA的局限性
1. 程序占用空间变大
在OTA上传新程序过程中, ESP8266开发板将会保持旧程序的运行。这将导致ESP8266开发板的程序占用空间翻倍。假如您的程序非常复杂,占用空间很大,那么使用OTA上传就不太适合了。
2. Arduino IDE无法通过OTA端口与开发板进行串口通讯
当Arduino IDE的上传端口选为“网络端口”,Arduino IDE将无法获取ESP8266的串口通讯数据。不过ESP8266的串口通讯并不会因为OTA功能而受到影响。换句话说,您可以使用其它电脑串口通讯软件,如Putty等,来实现ESP8266与电脑之间的串口通讯。
3.使用OTA上传程序的电脑与ESP8266必须连接同一WiFi
若要使用OTA上传功能,那么电脑和ESP8266必须要在同一WiFi中,否则是无法实现OTA上传的。