Pemrograman ESP8266 Over The Air (OTA) di Arduino IDE

Pemrograman Over-The-Air (OTA) pada ESP8266 menjadi solusi praktis bagi pengguna yang ingin memperbarui firmware tanpa harus menyambungkan perangkat secara fisik ke komputer. Jika Anda membutuhkan cara cepat dan efisien untuk memperbarui program pada ESP8266, fitur OTA adalah teknologi yang wajib Anda kenal. Dalam dunia IoT yang serba dinamis, kemampuan ESP8266 untuk menerima pembaruan firmware melalui jaringan Wi-Fi menjadi salah satu fitur paling menguntungkan. Banyak pengguna ESP8266 belum mengetahui bahwa modul ini sebenarnya dapat diperbarui secara nirkabel berkat fitur Over-The-Air (OTA). OTA pada ESP8266 menawarkan cara yang lebih mudah, fleksibel, dan hemat waktu untuk melakukan pembaruan firmware tanpa perlu kabel USB. Salah satu alasan ESP8266 begitu populer adalah dukungannya terhadap pemrograman OTA yang memungkinkan proses pembaruan dilakukan dari jarak jauh. Dengan fitur OTA, ESP8266 memberi kemudahan besar bagi pengembang IoT untuk mengelola pembaruan firmware pada banyak perangkat sekaligus hanya melalui jaringan Wi-Fi. Salah satu keunggulan ESP8266 adalah firmware-nya dapat diperbarui secara nirkabel. Pemrograman semacam ini disebut "Over-The-Air" (OTA).

Apa itu pemrograman OTA pada ESP8266?

Pemrograman OTA memungkinkan Anda memperbarui/mengunggah program baru ke ESP8266 melalui Wi-Fi tanpa harus menghubungkan ESP8266 ke komputer melalui USB. Fungsi OTA berguna ketika tidak ada akses fisik ke modul ESP. Selain itu, fungsi ini mengurangi waktu yang diperlukan untuk memperbarui setiap modul ESP selama pemeliharaan. Salah satu keuntungan utama OTA adalah bahwa satu lokasi pusat dapat mengirim pembaruan ke beberapa ESP pada jaringan yang sama. Satu-satunya kelemahan adalah Anda harus menyertakan kode OTA dengan setiap sketsa yang Anda unggah agar dapat menggunakan OTA pada pembaruan berikutnya. 

3 Langkah Mudah Menggunakan OTA dengan ESP8266

1. Menginstal Python seri 2.7.x: Langkah pertama adalah menginstal Python seri 2.7.x di komputer Anda.

2. Mengunggah Firmware OTA Dasar Secara Serial: Unggah sketsa yang berisi firmware OTA secara serial. Langkah ini diperlukan untuk melakukan pembaruan selanjutnya melalui udara.

3. Mengunggah Sketsa Baru Melalui Udara: Anda sekarang dapat mengunggah sketsa baru ke ESP8266 dari Arduino IDE melalui OTA.

Langkah 1: Instal Python seri 2.7.x

Untuk menggunakan fungsionalitas OTA, Anda harus menginstal Python 2.7.x terlebih dahulu, jika belum terpasang di komputer Anda.

Unduh Python 2.7.x untuk Windows (penginstal MSI) dari situs web resmi Python.

Luncurkan penginstal dan lanjutkan melalui panduan penginstalan.

 


Pastikan opsi “Tambahkan python.exe ke Jalur” diaktifkan di bagian Kustomisasi Python 2.7.X.

 


Langkah 2: Unggah Firmware OTA Dasar Secara Serial


Karena citra pabrik ESP8266 tidak memiliki kemampuan Pemutakhiran OTA, Anda harus terlebih dahulu memuat firmware OTA pada ESP8266 melalui antarmuka serial.

Diperlukan pembaruan firmware terlebih dahulu agar pembaruan selanjutnya dapat dilakukan melalui udara.

Add-on ESP8266 untuk Arduino IDE menyertakan pustaka OTA dan contoh BasicOTA. Cukup buka File > Contoh > ArduinoOTA > BasicOTA.

 


Sebelum Anda mulai mengunggah sketsa, Anda harus memodifikasi dua variabel berikut dengan kredensial jaringan Anda sehingga ESP8266 dapat terhubung ke jaringan yang ada.

 

const char* ssid = "..........";

const char* password = "..........";

 

Setelah selesai, lanjutkan dan unggah sketsa.

 

#include <ESP8266WiFi.h>

#include <ESP8266mDNS.h>

#include <WiFiUdp.h>

#include <ArduinoOTA.h>


const char* ssid = "..........";

const char* 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("admin");


  // Password can be set with it's md5 value as well

  // MD5(admin) = 21232f297a57a5a743894a0e4a801fc3

  // ArduinoOTA.setPasswordHash("21232f297a57a5a743894a0e4a801fc3");


  ArduinoOTA.onStart([]() {

    String type;

    if (ArduinoOTA.getCommand() == U_FLASH)

      type = "sketch";

    else // U_SPIFFS

      type = "filesystem";


    // NOTE: if updating SPIFFS this would be the place to unmount SPIFFS using SPIFFS.end()

    Serial.println("Start updating " + type);

  });

  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();

}

 

Sekarang, buka Serial Monitor pada kecepatan baud 115200 dan tekan tombol RST pada ESP8266. Jika semuanya baik-baik saja, Anda akan melihat alamat IP dinamis yang ditetapkan oleh router Anda. Catatlah.

 


Langkah 3: Unggah Sketsa Baru Melalui Udara

Sekarang, mari kita unggah sketsa baru melalui udara.

Ingatlah bahwa Anda harus menyertakan kode OTA di setiap sketsa yang Anda unggah. Jika tidak, Anda akan kehilangan kemampuan OTA dan tidak akan dapat melakukan unggahan melalui udara berikutnya. Oleh karena itu, disarankan untuk mengubah kode sebelumnya agar menyertakan kode baru Anda.

Sebagai contoh, kita akan menyertakan sketsa Blink sederhana dalam kode OTA Dasar. Ingatlah untuk mengubah variabel SSID dan kata sandi dengan kredensial jaringan Anda.

Perubahan pada kode disorot dengan warna biru.

 

#include <ESP8266WiFi.h>

#include <ESP8266mDNS.h>

#include <WiFiUdp.h>

#include <ArduinoOTA.h>


const char* ssid = "..........";

const char* password = "..........";


//variabls for blinking an LED with Millis

const int led = D0; // ESP8266 Pin to which onboard LED is connected

unsigned long previousMillis = 0;  // will store last time LED was updated

const long interval = 1000;  // interval at which to blink (milliseconds)

int ledState = LOW;  // ledState used to set the LED

void setup() {

pinMode(led, OUTPUT);

    

  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("admin");


  // Password can be set with it's md5 value as well

  // MD5(admin) = 21232f297a57a5a743894a0e4a801fc3

  // ArduinoOTA.setPasswordHash("21232f297a57a5a743894a0e4a801fc3");


  ArduinoOTA.onStart([]() {

    String type;

    if (ArduinoOTA.getCommand() == U_FLASH)

      type = "sketch";

    else // U_SPIFFS

      type = "filesystem";


    // NOTE: if updating SPIFFS this would be the place to unmount SPIFFS using SPIFFS.end()

    Serial.println("Start updating " + type);

  });

  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();


//loop to blink without delay

  unsigned long currentMillis = millis();

  if (currentMillis - previousMillis >= interval) {

  // save the last time you blinked the LED

  previousMillis = currentMillis;

  // if the LED is off turn it on and vice-versa:

  ledState = not(ledState);

  // set the LED with the ledState of the variable:

  digitalWrite(led,  ledState);

  }

}

 

Perhatikan bahwa kita belum menggunakan fungsi delay() untuk membuat LED berkedip. Ini karena fungsi delay() menjeda program. Jika permintaan OTA berikutnya dibuat saat ESP8266 dijeda sambil menunggu delay() selesai, program Anda akan melewatkan permintaan tersebut.

Setelah menyalin sketsa di atas ke Arduino IDE Anda, buka opsi Alat > Port. Cari sesuatu seperti: esp8266-xxxxxx di alamat_ip_esp_Anda. Jika Anda tidak dapat menemukannya, Anda mungkin perlu memulai ulang IDE Anda.

Gambar

Pilih port dan tekan tombol Unggah. Sketsa baru akan diunggah dalam hitungan detik. LED onboard akan mulai berkedip.




 

 







Siap Untuk Membuat Proyek Impianmu Menjadi Kenyataan?

Klik di sini untuk chat langsung via WhatsApp dan dapatkan dukungan langsung dari tim ahli kami! 

 

Posting Komentar

0 Komentar