اطلاعیه

Collapse
No announcement yet.

آپدیت خودکار ماژول ESP8266

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    آپدیت خودکار ماژول ESP8266

    با سلام و وقت بخیر
    سورسی که در ذیل پیوست کردم سمپلی هست که داخل خود برنامه آردوینو موجوده برای آپدیت برنامه ESP8266 که توسط اینترنت میتونیم برنامه رو آپدیت کنیم که تست هم کردم و به خوبی جواب میده.
    میخوام فقط بدونم که چطوری میشه چک کنیم که اگه نسخه برنامه موجود بر روی سرور جدید بود عمل آپدیت رو انجام بده در غیر اینصورت خیر.
    ممنون میشم راهنمایی بفرمایید
    کد:
    #include <Arduino.h>
    #include <ESP8266WiFi.h>
    #include <ESP8266WiFiMulti.h>
    #include <ESP8266HTTPClient.h>
    #include <ESP8266httpUpdate.h>
    
    
    #define USE_SERIAL Serial
    
    
    #ifndef APSSID
    #define APSSID "APSSID"
    #define APPSK  "APPSK"
    #endif
    
    
    ESP8266WiFiMulti WiFiMulti;
    
    
    void setup() {
    
    
      USE_SERIAL.begin(115200);
      // USE_SERIAL.setDebugOutput(true);
    
    
      USE_SERIAL.println();
      USE_SERIAL.println();
      USE_SERIAL.println();
    
    
      for (uint8_t t = 4; t > 0; t--) {
        USE_SERIAL.printf("[SETUP] WAIT %d...\n", t);
        USE_SERIAL.flush();
        delay(1000);
      }
      WiFi.mode(WIFI_STA);
      WiFiMulti.addAP(APSSID, APPSK);
    }
    
    
    void update_started() {
      USE_SERIAL.println("CALLBACK:  HTTP update process started");
    }
    
    
    void update_finished() {
      USE_SERIAL.println("CALLBACK:  HTTP update process finished");
    }
    
    
    void update_progress(int cur, int total) {
      USE_SERIAL.printf("CALLBACK:  HTTP update process at %d of %d bytes...\n", cur, total);
    }
    
    
    void update_error(int err) {
      USE_SERIAL.printf("CALLBACK:  HTTP update fatal error code %d\n", err);
    }
    
    
    void loop() {
      // wait for WiFi connection
      if ((WiFiMulti.run() == WL_CONNECTED)) {
    
    
        WiFiClient client;
        ESPhttpUpdate.setLedPin(LED_BUILTIN, LOW);
    
    
        // Add optional callback notifiers
        ESPhttpUpdate.onStart(update_started);
        ESPhttpUpdate.onEnd(update_finished);
        ESPhttpUpdate.onProgress(update_progress);
        ESPhttpUpdate.onError(update_error);
    
    
        t_httpUpdate_return ret = ESPhttpUpdate.update(client, "http://server/file.bin");
        // Or:
        //t_httpUpdate_return ret = ESPhttpUpdate.update(client, "server", 80, "file.bin");
    
    
        switch (ret) {
          case HTTP_UPDATE_FAILED:
            USE_SERIAL.printf("HTTP_UPDATE_FAILD Error (%d): %s\n", ESPhttpUpdate.getLastError(), ESPhttpUpdate.getLastErrorString().c_str());
            break;
    
    
          case HTTP_UPDATE_NO_UPDATES:
            USE_SERIAL.println("HTTP_UPDATE_NO_UPDATES");
            break;
    
    
          case HTTP_UPDATE_OK:
            USE_SERIAL.println("HTTP_UPDATE_OK");
            break;
        }
      }
    }
    قال امام صادق (ع):
    هر چیزی زکاتی دارد و زکات علم آنست که به اهلش بیاموزی.

    #2
    پاسخ : آپدیت خودکار ماژول ESP8266

    سلام
    طبق نوشته های برخی سایتها آپدیت مدام esp8266 پیشنهاد نشده
    طبق تجربه خودم کلاً esp8266 نیاز به آپدیت جدید نداره ونسخه خیلی قدیمی اون هم کار راه اندازه وکلا هرکاری که ازش انتظار میره رو انجام میده وکارخاصی نیست که در نسخه های قدیمی تر نباشه.دلیلش هم حافظه محدود آن است.اینطور بگم به شخصه کلا نیازی به اینکار ندیدم

    ولی اگر اصرار دارید دستور at command وجوددارد که ورژن firmware ونسخه را مینویسد
    AT+GMR که با حروف بزرگ است
    میتوانید نتیجه آنرا چک کنید وبا نسخه بروز مقایسه کنید ودرصورت تفاوت دستور آپدیت انجام شود

    دیدگاه

    لطفا صبر کنید...
    X