国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

ESP8266 OTA(無線遠程升級)熱更新

這篇具有很好參考價值的文章主要介紹了ESP8266 OTA(無線遠程升級)熱更新。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

ESP8266或者ESP32 有一個問題,就是在上傳程序在開發(fā)板中里面的程序聯(lián)網(wǎng)IP是固定;
1、如果你的MQTT服務(wù)器換 ip、端口、域名等情況那么開發(fā)板將無法連接MQTT服務(wù)。
esp8266 ota,arm開發(fā),單片機,嵌入式硬件
2、如果業(yè)務(wù)需求有變更需要在開發(fā)板原有的基礎(chǔ)增加一些功能,而這些開發(fā)板已經(jīng)上線部署在各的自動售賣機,那如果按照傳統(tǒng)方法,是不是要跑遍每個智能物聯(lián)網(wǎng)設(shè)備,拿根數(shù)據(jù)線連接電腦重新上傳燒錄程序???
所以這時候就需要進行OTA熱更新,類似于手機自動更新系統(tǒng)功能,自動獲取版本,并且下載安裝包在主板里,然后系統(tǒng)升級成功。

具體步驟流程
1、需要把 編譯后更新包,掛在服務(wù)器上,目的是能夠下載
比如我把下面的代碼熱更新到開發(fā)板里

#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include <ArduinoJson.h>
#include <MD5Builder.h>

// GPIO 5 D1
#define LED 5
#define JDQ D0  //繼電器

// WiFi
const char *ssid = "yang1";          // Enter your WiFi name
const char *password = "872332847";  // Enter WiFi password

// MQTT Broker
const char *mqtt_broker = "172.20.10.2";
const char *topic = "esp8266";
const char *mqtt_username = "admin";
const char *mqtt_password = "admints";
const int mqtt_port = 1883;

WiFiClient espClient;
PubSubClient client(espClient);

void setup() {
  // Set software serial baud to 115200;
  Serial.begin(115200);
  pinMode(LED_BUILTIN, OUTPUT);
  digitalWrite(LED_BUILTIN, HIGH);
  pinMode(JDQ, OUTPUT);
  digitalWrite(JDQ, HIGH);
  // connecting to a WiFi network
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.println("Connecting to WiFi..");
  }
  Serial.println("Connected to the WiFi network");
  //connecting to a mqtt broker
  client.setServer(mqtt_broker, mqtt_port);
  client.setCallback(callback);
  while (!client.connected()) {
    String client_id = "esp8266-client-";
    client_id += String(WiFi.macAddress());
    Serial.printf("The client %s connects to the public mqtt broker\n", client_id.c_str());
    if (client.connect(client_id.c_str(), mqtt_username, mqtt_password)) {
      Serial.println("Public emqx mqtt broker connected");
    } else {
      Serial.print("failed with state ");
      Serial.print(client.state());
      delay(1000);
    }
  }
  // publish and subscribe
  client.publish(topic, "hello emqx");
  client.subscribe(topic);
}

void callback(char *topic, byte *payload, unsigned int length) {
  Serial.print("Message arrived in topic: ");
  Serial.println(topic);
  Serial.print("Message:");
  String message;
  for (int i = 0; i < length; i++) {
    message = message + (char)payload[i];  // convert *byte to string
  }
  Serial.print(message);

  // 解析JSON數(shù)據(jù)
  DynamicJsonDocument jsondoc(1024);
  deserializeJson(jsondoc, message);
  JsonObject obj = jsondoc.as<JsonObject>();
  String type = obj["type"];
  String value = obj["msg"];
  //LED
  if (type == "LED") {
    if (value == "ON") {
      digitalWrite(LED, LOW);
      digitalWrite(LED_BUILTIN, LOW);
    }
    if (value == "OFF") {
      digitalWrite(LED, HIGH);
      digitalWrite(LED_BUILTIN, HIGH);
    }
  }
  //繼電器
  if (type == "JDQ") {
    if (value == "ON") {
      digitalWrite(JDQ, LOW);
    }
    if (value == "OFF") {
      digitalWrite(JDQ, HIGH);
    }
  }
  //digitalWrite(LED, LOW);

  /*
  if (value == "on") {
    digitalWrite(LED, LOW);
    digitalWrite(LED_BUILTIN, LOW);
  }  // LED on
  if (value == "off") {
    digitalWrite(LED, HIGH);
    digitalWrite(LED_BUILTIN, HIGH);
  }  // LED off
  */

  Serial.println();
  Serial.println("-----------------------");
}

void loop() {
  client.loop();
}

把以上代碼編譯成二進制文件
esp8266 ota,arm開發(fā),單片機,嵌入式硬件esp8266 ota,arm開發(fā),單片機,嵌入式硬件esp8266 ota,arm開發(fā),單片機,嵌入式硬件以上編譯成二進制文件,接下來我們掛在服務(wù)器上面,能夠下載就行
下面以最簡單的方式,方便演示直接掛在iis 默認文件下面
esp8266 ota,arm開發(fā),單片機,嵌入式硬件esp8266 ota,arm開發(fā),單片機,嵌入式硬件看一下是否能下載
esp8266 ota,arm開發(fā),單片機,嵌入式硬件

2、需要使用 #include <ESP8266httpUpdate.h> 熱更新庫
3、上傳程序
String upUrl = "http://172.20.10.2/ad/sketch.bin"; //更新包地址 也就是剛剛部署在iis上面的bin文件

#include <ESP8266WiFi.h>
#include <ESP8266httpUpdate.h>

/******需要修改的地方****************/

#define wifi_name       "yang1"       //WIFI名稱,區(qū)分大小寫,不要寫錯
#define wifi_password   "872332847"   //WIFI密碼
                                      //固件鏈接,在巴法云控制臺復(fù)制、粘貼到這里即可
String upUrl = "http://172.20.10.2/ad/sketch.bin";  //更新包地址

/**********************************/

/*
 * 主函數(shù)
 */

void setup() {
  Serial.begin(115200);                     //波特率115200
  WiFi.begin(wifi_name, wifi_password);     //連接wifi
  while (WiFi.status() != WL_CONNECTED) {   //等待連接wifi
    delay(500);
    Serial.println("Connecting to WiFi..");
  }
  updateBin();                              //開始升級
}

/**
 * 循環(huán)函數(shù)
 */
void loop() {

}

//當(dāng)升級開始時,打印日志
void update_started() {
  Serial.println("CALLBACK:  HTTP update process started");
}

//當(dāng)升級結(jié)束時,打印日志
void update_finished() {
  Serial.println("CALLBACK:  HTTP update process finished");
}

//當(dāng)升級中,打印日志
void update_progress(int cur, int total) {
  Serial.printf("CALLBACK:  HTTP update process at %d of %d bytes...\n", cur, total);
}

//當(dāng)升級失敗時,打印日志
void update_error(int err) {
  Serial.printf("CALLBACK:  HTTP update fatal error code %d\n", err);
}

/**
 * 固件升級函數(shù)
 * 在需要升級的地方,加上這個函數(shù)即可,例如setup中加的updateBin(); 
 * 原理:通過http請求獲取遠程固件,實現(xiàn)升級
 */
void updateBin(){
  Serial.println("start update");    
  WiFiClient UpdateClient;
  
  ESPhttpUpdate.onStart(update_started);//當(dāng)升級開始時
  ESPhttpUpdate.onEnd(update_finished); //當(dāng)升級結(jié)束時
  ESPhttpUpdate.onProgress(update_progress); //當(dāng)升級中
  ESPhttpUpdate.onError(update_error); //當(dāng)升級失敗時
  
   
  t_httpUpdate_return ret = ESPhttpUpdate.update(UpdateClient, upUrl);
  Serial.println(ret);
  Serial.println("測試2");  
  switch(ret) {
    case HTTP_UPDATE_FAILED:      //當(dāng)升級失敗
        Serial.println("[update] Update failed.");
        break;
    case HTTP_UPDATE_NO_UPDATES:  //當(dāng)無升級
        Serial.println("[update] Update no Update.");
        break;
    case HTTP_UPDATE_OK:         //當(dāng)升級成功
        Serial.println("[update] Update ok.");
        break;
  }
}

連接開發(fā)板上傳程序
esp8266 ota,arm開發(fā),單片機,嵌入式硬件這時候開發(fā)板上面的程序就會自動更新到我們剛剛部署編譯成二進制bin文件文章來源地址http://www.zghlxwxcb.cn/news/detail-645611.html

到了這里,關(guān)于ESP8266 OTA(無線遠程升級)熱更新的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • ESP32 OTA升級

    目錄 一、ESP32 OTA升級原理 1. ESP32固件編譯 2. 固件的遠程傳輸 二、基于ESP32HTTPUpdate庫的OTA升級 1. 硬件準備 2. 軟件實現(xiàn) 三、注意事項 1. 升級文件大小限制 2. WiFi穩(wěn)定性 3. 固件版本號 結(jié)語 ????????OTA(Over-The-Air)升級,是指通過無線網(wǎng)絡(luò)對設(shè)備進行在線的升級。通俗的說,就

    2024年02月16日
    瀏覽(22)
  • ESP32 通過HTTPS進行OTA更新固件(在platform上進行編碼)

    ESP32 通過HTTPS進行OTA更新固件(在platform上進行編碼)

    OTA:Over-the-Air Technology,字面意思理解為:空中下載技術(shù)。 OTA 在線升級:通過OTA的方式實現(xiàn)產(chǎn)品軟件更新的一種方式。 簡單說來,就是通過 無線方式 對esp32進行固件更新,而不是通過傳 統(tǒng)的連接數(shù)據(jù)線的方式 更新固件。 寫本篇文章的目的就是想向大家介紹一種ESP32 OTA更新

    2024年02月02日
    瀏覽(18)
  • ESP32-Web-Server編程綜合項目1-結(jié)合 Web Server 實現(xiàn) WiFi 配網(wǎng)和網(wǎng)頁 OTA 更新

    前述的內(nèi)容多是一個個小功能的演示,本章節(jié)講述一些實際項目中使用到的綜合項目。 首先要講述的案例是通過ESP32 上的 Web Server 實現(xiàn)對 ESP32 的 WiFi 配網(wǎng)和網(wǎng)頁 OTA 更新功能。 項目的主要功能有: 通過菜單控制多網(wǎng)頁的切換 在多網(wǎng)頁中分別實現(xiàn) WiFi 配網(wǎng)、控制設(shè)備重啟、通

    2024年01月22日
    瀏覽(24)
  • STM32 OTA遠程升級

    STM32 OTA遠程升級

    前言:OTA全稱是over the air,主要應(yīng)用于物聯(lián)網(wǎng)設(shè)備作為更新代碼使用,其原理在不同芯片上相通,應(yīng)用較為廣泛。 一、OTA硬件組成 ? 對于OTA硬件來講,常用的硬件組成是無線芯片+MCU,常用的無線模塊有WIFI、4G、LORA甚至是藍牙等具有無線傳輸功能的設(shè)備,MCU則是例如51,STM3

    2024年02月11日
    瀏覽(24)
  • STM32--ESP8266物聯(lián)網(wǎng)WIFI模塊(貝殼物聯(lián))--遠程無線控制點燈

    STM32--ESP8266物聯(lián)網(wǎng)WIFI模塊(貝殼物聯(lián))--遠程無線控制點燈

    本文適用于STM32F103C8T6等MCU,其他MCU可以移植,完整資源見文末鏈接 一、簡介 隨著移動物聯(lián)網(wǎng)的發(fā)展,各場景下對于物聯(lián)控制、數(shù)據(jù)上傳、遠程控制的訴求也越來越多,基于此樂鑫科技推出了便宜好用性價比極高的wifi物聯(lián)模塊——ESP8266,話不多少我們先來看看這個神奇的模

    2024年02月08日
    瀏覽(25)
  • 物聯(lián)網(wǎng)時代的OTA技術(shù):遠程更新的新風(fēng)潮【文末送書-11】

    物聯(lián)網(wǎng)時代的OTA技術(shù):遠程更新的新風(fēng)潮【文末送書-11】

    當(dāng)今數(shù)字化時代,Over-the-Air(OTA)技術(shù)正日益成為各種設(shè)備的關(guān)鍵要素。這項技術(shù)通過無線網(wǎng)絡(luò)傳輸數(shù)據(jù),為設(shè)備提供遠程更新、配置和管理的能力,從而推動了設(shè)備維護的靈活性和便捷性。 OTA技術(shù)在固件更新方面發(fā)揮著重要作用。以智能手機為例,用戶無需通過繁瑣的物理

    2024年02月04日
    瀏覽(13)
  • ESP8266初次如何實現(xiàn)無線通信(基于電腦與ESP8266)

    ESP8266初次如何實現(xiàn)無線通信(基于電腦與ESP8266)

    本次軟件是需要串口調(diào)試助手,網(wǎng)絡(luò)調(diào)試助手,KEIL5 ????????????????????????????下面圖標依次排列 本次硬件是需要一個ESP8266模塊,一個stm32f103c8t6芯片,一個USB轉(zhuǎn)TTL模塊 ESP8266是一個微小的且集成的國產(chǎn)WIFI模塊,它有很多種型號,但是使用

    2023年04月20日
    瀏覽(20)
  • ESP32網(wǎng)絡(luò)開發(fā)實例-搭建ESP32固件遠程升級服務(wù)器

    我們在前面的文章中,已經(jīng)實現(xiàn)了OTA方式升級固件的兩種方式:在Arduino IDE 中升級和Web瀏覽器中升級。這兩種方式都不能滿足設(shè)備自動升級的需求。在本文中,將詳細介紹如何搭建一個ESP32固件遠程升級服務(wù)器。通過遠程升級服務(wù)器,ESP32設(shè)備可以根據(jù)固件版本號進行自動升級

    2024年01月23日
    瀏覽(28)
  • 雙分區(qū)OTA升級

    雙分區(qū)(雙區(qū))OTA(Over-the-Air)升級是嵌入式系統(tǒng)中常用的一種固件升級方式。此種方式下,設(shè)備的存儲空間被分為兩個分區(qū):一個活動(active)分區(qū)和一個備用(standby)分區(qū)。 活動分區(qū):這個分區(qū)包含當(dāng)前正在運行的固件。 備用分區(qū):這個分區(qū)用于存放新下載的固件。在

    2024年02月10日
    瀏覽(18)
  • OTA升級學(xué)習(xí)筆記

    記錄下近期學(xué)習(xí)的OTA升級相關(guān)內(nèi)容 OTA(Over-the-Air Technology)簡單來說就是一種無線升級的技術(shù) 整編完成后使用make otapackage會生成target_files壓縮包(包含完整的image數(shù)據(jù))和可用于升級的ota update壓縮包。如果不想在編譯的時候生成升級包,可以將TARGET_SKIP_OTA_PACKAGE置成false(編

    2024年02月15日
    瀏覽(13)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包