Arduino的OTA在线升级

一、OTA 介绍

 OTA是Over-the-Air的缩写,中文意思是空中下载技术。通过移动通信(GSM或CDMA)的空中接口对SIM卡数据及应用进行远程管理的技术。空中接口可以采用WAP、GPRS、CDMA1X及短消息技术。OTA技术的应用,使得移动通信不仅可以提供语音和数据服务,而且还能提供新业务下载。
 在物联网(IoT)领域,尤其是嵌入式设备如ESP8266这样的Wi-Fi微控制器上,OTA功能允许设备通过无线连接接收并安装新的软件或固件更新。这对于远程管理和维护大量设备非常有用,因为它可以避免手动更新每一台设备的繁琐过程。
 在ESP8266的Arduino开发环境中,OTA功能是通过特定的库和代码实现的,允许开发者通过Wi-Fi连接将新的固件上传到设备中。这大大简化了固件更新的过程,并使得设备可以持续获得新的功能和修复。
 总的来说,OTA是一种强大且灵活的技术,使得嵌入式设备和物联网设备能够更方便地进行软件更新和维护。

二、OTA 代码

 工程使用Arduino IDE开发ESP8266模块并实现OTA(Over-The-Air)功能可以允许通过Wi-Fi连接远程更新设备上的固件。

#include <ESP8266WiFi.h>  
#include <ESP8266mDNS.h>  
#include <WiFiUdp.h>  
#include <ArduinoOTA.h>  
  
const char* ssid = "your_wifi_ssid";  
const char* password = "your_wifi_password";  
  
void setup() {  
  Serial.begin(115200);  
  delay(10);  
  
  // 连接到Wi-Fi网络  
  WiFi.begin(ssid, password);  
  while (WiFi.status() != WL_CONNECTED) {  
    delay(500);  
    Serial.print(".");  
  }  
  Serial.println("");  
  Serial.println("WiFi connected");  
  Serial.print("IP address: ");  
  Serial.println(WiFi.localIP());  
  
  // 初始化mDNS和ArduinoOTA  
  if (!MDNS.begin("esp8266")) {  
    Serial.println("Error setting up mDNS");  
  } else {  
    Serial.println("mDNS responder started");  
  }  
  
  ArduinoOTA.setHostname("myesp8266");  
  ArduinoOTA.setPassword("your_ota_password");  
    
  ArduinoOTA.begin();  
  
  Serial.println("OTA address: " + ArduinoOTA.getLocalIp().toString() + ":8266");  
}  
  
void loop() {  
  // 检查是否有OTA更新  
  ArduinoOTA.handle();  
  
  // 在这里添加您的主循环代码  
}

 首先连接到Wi-Fi网络,然后初始化mDNS和ArduinoOTA。ArduinoOTA.setHostname()设置设备的hostname,ArduinoOTA.setPassword()设置用于OTA更新的密码。最后,ArduinoOTA.begin()启动OTA服务。
 代码上传成功并设备连接到Wi-Fi,就可以使用Arduino IDE的OTA功能来更新固件了。在Arduino IDE中,选择“工具”>“ESP8266 Sketch Data Upload”来上传新的固件。
注意:确保设备IP地址和OTA密码正确。
 按照上述操作在工具有没有发现ESP8266 Sketch Data Upload…
可参考https://mc.dfrobot.com.cn/thread-314415-1-1.html

三、第三方库 BGWiFiConfig

BGWiFiConfig 库支持OTA升级,修改官方代码进行测试,测试代码

#include <BGWiFiConfig.h>
BGWiFiConfig wifipw;

void setup() {
  Serial.begin(115200);
  Serial.println();
  //Serial.println("V1.1");//初始版本无此打印信息,升级版本才有此打印信息
  wifipw.begin();
  wifipw.OTAbegin();
}

void loop() {
  char rxBuf[10];
  wifipw.Loop();
  wifipw.OTALoop();
    if( Serial.available() ) //检查串口是否有数据
  {
    String data = Serial.readStringUntil('\n');//读取数据
    Serial.println("Rx:");
    Serial.println(data); 
    std::memset(rxBuf,0,sizeof(rxBuf));
    strcpy(rxBuf,data.c_str());
    if(strcmp("wifiClear", rxBuf)==0) 
      wifipw.clearWiFi(); 
    
  }
}

先进行配网,重新启动,获取连接网络后的本地地址,网页输入地址,选择需要升级的bin文件即可进行OTA在线升级。
在这里插入图片描述

  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ESP32 Arduino OTA是指利用ESP32开发板和Arduino框架进行远程固件升级的技术。 OTA即"Over-The-Air"的简称,意味着通过网络无线传输数据进行固件升级。ESP32 Arduino OTA提供了一种方便的方式来更新设备的固件,而无需将设备连接到计算机进行拆卸和重新烧写固件。 使用ESP32 Arduino OTA进行固件升级非常简单。首先,确保ESP32开发板上已经安装了Arduino框架。然后,在Arduino IDE中选择正确的开发板类型以及端口,并加载您的项目代码。 在您的代码中添加OTA库的引用,并配置OTA密码、端口和主机名。这些参数将用于识别设备和进行远程固件升级。 接下来,在您的代码的适当位置调用OTA库的函数。通过调用`ArduinoOTA.begin()`函数,您的ESP32将开始监听OTA端口,准备接受固件更新。然后,您可以通过您偏好的方式(例如,使用Arduino IDE中的固件升级工具)将新的固件发送到设备。 一旦新的固件被接收到,ESP32将暂停当前的运行,安全地擦除旧的固件并将新的固件写入设备的闪存。一切完成后,设备将重新启动,并开始运行这个新的固件。 使用ESP32 Arduino OTA不仅方便快捷,而且可以避免拆卸设备进行固件升级的麻烦。无论您是为自己的项目还是为客户提供远程支持,ESP32 Arduino OTA都是一种强大的工具。只需几行代码和简单的步骤,您就可以轻松地将新的功能和改进推送到您的设备上。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值