Contents
Ini nih salah satu kelebihan NodeMCU yang berbasis ESP8266 dibanding mikrontroller lain, yakni fitur update firmware melalui OTA atau Over the Air. Apa maksudnya? Biasanya Anda mengupload program/sketch ke NodeMCU melalui kabel data bukan? Nah, dengan fitur update via OTA ini, Anda tidak memerlukan kabel lagi alias dilakukan secara wireless. Bahkan memungkinkan juga lewat jaringan internet sehingga device Anda bisa di-update firmware-nya dari manapun juga. Gimana? tambah cinta sama NodeMCU/ESP8266, ngga? :). Fitur ini sangat dibutuhkan seandainya Anda menjual produk Anda ke pasaran, kemudian ada fitur baru yang perlu di-update ke device Anda. Melalui fitur OTA ini Anda dapat melakukannya dengan sangat mudah, dari jarak jauh secara wireless
Teknik Upload Sketh NodeMCU secara OTA
Untuk mengupload sketch atau firmware NodeMCU secara OTA setidaknya ada tiga teknik yang dapat Anda coba, yakni:
1. OTA melalui Arduino IDE
OTA melalui Arduino IDE hanya dapat dilakukan dalam jaringan lokal (LAN) yang sama atau satu segmen. OTA tipe pertama ini tidak dapat dilakukan melalui internet kecuali Anda punya akses ke router setempat untuk melakukan port forwarding. Secara garis besar untuk melakukan OTA ini Anda perlu menginstal Python 2.7.x ke atas, upload sketch BasicOTA (ada di File-Examples-ArduinoOTA). Setelah Anda upload akan muncul network port di menu Tools-Port
2. OTA melalui web browser
OTA melalui web browser ini maksudnya adalah kita dapat mengupload sketch/firmware ke NodeMCU melalui web server internal yang sebelumnya sudah diupload ke NodeMCU. File yang di-upload adalah file bin yang dapat Anda peroleh melalui menu Sketch-Export compiled Binary. Sama dengan teknik yang pertama, OTA versi ini hanya dilakukan di jaringan LAN yang sama, kecuali ada rule forwarding di router Anda yang mem-forward paket dari luar (internet). Berhubung step-by-step OTA agak panjang, silahkan Anda baca detailnya di sini.
3. OTA melalui HTTP server
Nah, teknik yang ketiga inilah yang akan kita bahas lebih detail dalam artikel ini, karena lebih fleksibel dan simpel. Lebih fleksibel karena hanya membutuhkan koneksi transparent internet (tidak harus di jaringan lokal) dan dapat dilakukan di mana saja, serta lebih simpel karena coding-nya yang minimalis (ini nih kesukaan para programmer 🙂 ). Inti dari teknik ini adalah pengambilan firmware baru (yang paling update) dari file storage yang ada di internet menggunakan protokol HTTP
Material dan Bahan OTA HTTP Server NodeMCU
Untuk dapat menjalankan contoh program NodeMCU di bawah dalam melakukan OTA, beberapa hal yang perlu Anda siapkan adalah sbb:
– NodeMCU dan kabel, bisa dibeli di sini
– protoboard dan kabel jumper secukupnya, bisa dibeli di sini
– led dan resistor 10K (atau bisa menggunakan LED_BUILTIN)
– tombol/micro switch tipe Push-ON (atau bisa menggunakan kabel jumper saja)
[AdSense-A]
Jika sudah lengkap, silahkam rangkai komponen seperti gambar di bawah
Sedangkan dari sisi sofware yang perlu Anda instal adalah library ‘ESP8266httpUpdate.h‘ (bisa Anda instal melalui menu Tools-Manage Libraries)
Sketch NodeMCU OTA HTTP Server
Sebelum praktek OTA dengan NodeMCU, ada baiknya Anda mengetahui topologi/blok diagram dari project yang akan kita buat. Perhatikan gambar di bawah
Jadi nanti kita akan membuat sebuah sistem, dimana dengan menekan tombol upload maka NodeMCU akan mengambil firmware terbaru yang tersimpan di file server (contoh: http://domain_anda.com/firmware.bin atau http://192.168.1.4/espware/firmware.bin untuk file server di lokal)
Langkah selanjutnya, silahkan upload sketch OTA HTTP server sebagai berikut ke NodeMCU atau ESP8266 Anda
#include <ESP8266httpUpdate.h>
#define tombol D7
#define led D6
const char* ssid = "ssid_Anda";
const char* password = "password_Anda";
//variabls for blinking an LED with Millis
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);
pinMode(tombol, INPUT_PULLUP);
Serial.begin(115200);
Serial.println("Starting");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(1000);
}
}
void loop() {
//loop to blink without delay
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
if (ledState == LOW)
ledState = HIGH; // Note that this switches the LED *off*
else
ledState = LOW; // Note that this switches the LED *on*
digitalWrite(led, ledState);
}
byte statusd7=digitalRead(tombol);
if (statusd7==0) updateota();
}
void updateota(){
/* warning - the update is done after each reboot now */
t_httpUpdate_return ret = ESPhttpUpdate.update("http://192.168.1.4/espware/otahttp_tombol2.ino.nodemcu.bin"); //Lokasi file firmware Anda (contoh di jaringan lokal_
switch (ret) {
case HTTP_UPDATE_FAILED:
Serial.printf("HTTP_UPDATE_FAILD Error (%d): %s", ESPhttpUpdate.getLastError(), ESPhttpUpdate.getLastErrorString().c_str());
break;
case HTTP_UPDATE_NO_UPDATES:
Serial.println("HTTP_UPDATE_NO_UPDATES");
break;
case HTTP_UPDATE_OK:
Serial.println("HTTP_UPDATE_OK");
break;
}
}
Sebelumnya siapkan file firmware Anda (*.bin) ke folder yang dapat diakses melalui internet (jika ingin diakses darimana aja) atau di server LAN Anda (khusus untuk device di jaringan lokal). Pada tutorial ini saya menggunakan web server lokal di laptop saya sendiri menggunakan XAMPP (instal dulu jika belum punya ya). Jika sudah, salin file bin firmware yang mau di-update ke folder c:/xampp/htdocs/espware (create folder espware jika belum ada). Perhatikan bahwa antara nodeMCU dan file server (dalam case ini adalah laptop saya) harus berada di jaringan yang sama (IP laptop: 192.168.1.4, IP NodeMCU: 192.168.1.5).
[AdSense-A]
Catatan: file *.bin bisa Anda dapatkan dengan cara meng-compile sketch melalui menu Sketch-Export compiled Binary. Hasilnya, file bin akan terlihat di folder sketch Anda berada
Kemudian jalankan service web server Apache melalui XAMPP Control Panel (Start Menu-XAMMP- XAMPP Control Panel). Untuk sementara, matikan dulu Windows Firewall Anda untuk memastikan file firmware dapat diakses dari luar laptop melalui protokol HTTP
Jika semua persiapan di atas selesai dilakukan, coba jalankan nodeMCU Anda, kemudian tekan sebentar tombol untuk mentrigger aksi update firmware. Anda bisa sambil mengecek Serial Monitor untuk sekedar menganalisa event debug yang terjadi. Normalnya setelah berhasil update firmware, NodeMCU akan auto restart, tapi jika ada sesuatu hal yang menyebabkan kegagalan update, Anda bisa restart secara hardware. Ohya, jangan lupa selipkan script update OTA http (subrutin updateota() pada script di atas) agar Anda bisa selalu update firmware di kemudian hari
a Technopreneur – writer – Enthusiastic about learning AI, IoT, Robotics, Raspberry Pi, Arduino, ESP8266, Delphi, Python, Javascript, PHP, etc. Founder of startup Indomaker.com
bang, gambarnya kok ga nampak ya bang ?