ESP8266 Pembaruan OTA dengan Arduino IDE

April 05, 2020
 Pembaruan OTA (Over the Air) adalah proses memuat firmware baru ke modul ESP8266 menggunakan koneksi WiFi alih-alih komunikasi serial. Jenis fungsi ini sangat berguna jika tidak ada akses fisik ke modul ESP. Mengunggah sketsa baru secara nirkabel dari Arduino IDE dimaksudkan untuk skenario khas berikut:

  • selama pengembangan firmware - sebagai alternatif yang lebih cepat untuk mengunggah sketsa baru melalui serial
  • untuk memperbarui firmware beberapa ESP di jaringan Anda
Ayo mulai!

Langkah # 1 - Mengunggah BasicOTA.ino dengan komunikasi serial
Untuk mengunggah firmware ke ESP8266 Anda secara nirkabel, Anda harus mengunggah contoh sketsa BasicOTA.ino terlebih dahulu. Memiliki perangkat lunak IDE Arduino terbaru yang diinstal dari arduino.cc/en/Main/Software. Ikuti instruksi berikut ini:
1) Hubungkan ESP8266 Anda ke komputer dengan kabel USB:
2) Buka Tool untuk memilih model papan ESP Anda. Anda juga harus memilih port COM ESP Anda
3) Buka contoh BasicOTA.ino: File > Examples > Arduino OTA > BasicOTA.ino atau salin sketsa berikut ke Arduino IDE Anda
#include <ESP8266WiFi.h>
#include <ESP8266mDNS.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>

// Replace with your network credentials
const char* ssid = "YOUR_SSID";
const char* password = "YOUR_PASSWORD";

void setup() {
  Serial.begin(115200);
  Serial.println("Booting");
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  while (WiFi.waitForConnectResult() != WL_CONNECTED) {
    Serial.println("Connection Failed! Rebooting...");
    delay(5000);
    ESP.restart();
  }

  // Port defaults to 8266
  // ArduinoOTA.setPort(8266);

  // Hostname defaults to esp8266-[ChipID]
  // ArduinoOTA.setHostname("myesp8266");

  // No authentication by default
  // ArduinoOTA.setPassword((const char *)"123");

  ArduinoOTA.onStart([]() {
    Serial.println("Start");
  });
  ArduinoOTA.onEnd([]() {
    Serial.println("\nEnd");
  });
  ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) {
    Serial.printf("Progress: %u%%\r", (progress / (total / 100)));
  });
  ArduinoOTA.onError([](ota_error_t error) {
    Serial.printf("Error[%u]: ", error);
    if (error == OTA_AUTH_ERROR) Serial.println("Auth Failed");
    else if (error == OTA_BEGIN_ERROR) Serial.println("Begin Failed");
    else if (error == OTA_CONNECT_ERROR) Serial.println("Connect Failed");
    else if (error == OTA_RECEIVE_ERROR) Serial.println("Receive Failed");
    else if (error == OTA_END_ERROR) Serial.println("End Failed");
  });
  ArduinoOTA.begin();
  Serial.println("Ready");
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
}

void loop() {
  ArduinoOTA.handle();
}

Catatan: Anda harus mengubah contoh sketsa dengan SSID dan kata sandi Anda.
4) Tekan tombol "Upload" di Arduino IDE dan tunggu pesan "Done Upload"

5) Buka monitor serial Arduino IDE dengan baudrate 115200. Jika Anda telah memasukkan kredensial jaringan yang tepat, Anda akan melihat alamat IP ESP Anda setelah beberapa detik:

Langkah # 2 - Mengunggah sketsa OTA (Over the Air)
Sekarang ESP8266 Anda siap menerima pembaruan firmware OTA. Anda dapat mencabut ESP8266 Anda dari komputer dan menyalakannya melalui sumber daya apa pun (misalnya bank daya). Jika ESP8266 Anda memiliki koneksi nirkabel ke router Anda, Anda boleh saja mengunggah firmware baru.

1) Pergi ke IDE Arduino Anda. Buka tab Tools pilih opsi Port dan Anda akan melihat sesuatu seperti ini: esp8266-xxxxxx di your_esp_ip_address

2) Salin sketsa berikut ke Arduino IDE Anda dan unggah ke ESP8266 Anda. Sketsa ini mengedipkan LED bawaan kit ESP12-E NodeMCU setiap detik
#include <ESP8266WiFi.h>
#include <ESP8266mDNS.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>

// Replace with your network credentials
const char* ssid = "YOUR_SSID";
const char* password = "YOUR_PASSWORD";

const int ESP_BUILTIN_LED = 2;

void setup() {
  Serial.begin(115200);
  Serial.println("Booting");
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  while (WiFi.waitForConnectResult() != WL_CONNECTED) {
    Serial.println("Connection Failed! Rebooting...");
    delay(5000);
    ESP.restart();
  }

  // Port defaults to 8266
  // ArduinoOTA.setPort(8266);

  // Hostname defaults to esp8266-[ChipID]
  // ArduinoOTA.setHostname("myesp8266");

  // No authentication by default
  // ArduinoOTA.setPassword((const char *)"123");

  ArduinoOTA.onStart([]() {
    Serial.println("Start");
  });
  ArduinoOTA.onEnd([]() {
    Serial.println("\nEnd");
  });
  ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) {
    Serial.printf("Progress: %u%%\r", (progress / (total / 100)));
  });
  ArduinoOTA.onError([](ota_error_t error) {
    Serial.printf("Error[%u]: ", error);
    if (error == OTA_AUTH_ERROR) Serial.println("Auth Failed");
    else if (error == OTA_BEGIN_ERROR) Serial.println("Begin Failed");
    else if (error == OTA_CONNECT_ERROR) Serial.println("Connect Failed");
    else if (error == OTA_RECEIVE_ERROR) Serial.println("Receive Failed");
    else if (error == OTA_END_ERROR) Serial.println("End Failed");
  });
  ArduinoOTA.begin();
  Serial.println("Ready");
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
  pinMode(ESP_BUILTIN_LED, OUTPUT);
}

void loop() {
  ArduinoOTA.handle();
  digitalWrite(ESP_BUILTIN_LED, LOW);
  delay(1000);
  digitalWrite(ESP_BUILTIN_LED, HIGH);
  delay(1000);
}
Catatan: Anda harus mengubah contoh sketsa dengan SSID dan kata sandi Anda.
3) Tekan tombol "Upload" di Arduino IDE dan tunggu pesan "done upload"
4) ESP Anda seharusnya memiliki LED bawaan yang berkedip setiap detik

Semoga tutorial ini bermanfaat. Sekarang, Anda dapat memiliki ESP8266 Anda di lokasi yang jauh dan memperbarui firmware-nya tanpa memiliki akses fisik ke perangkat ESP.

Artikel Terkait

Previous
Next Post »