Nggak Perlu Colok Kabel Data Lagi Ota Update Esp32 Dari Jarak Jauh
Nggak Perlu Colok Kabel Data Lagi Ota Update Esp32 Dari Jarak Jauh
Mengembangkan proyek berbasis ESP32 sering kali mengharuskan kita melakukan perubahan kode berulang kali. Biasanya, setiap kali ingin memperbarui firmware, kita harus mencolokkan kabel data ke board dan melakukan upload via USB. Proses ini bukan hanya memakan waktu, tetapi juga merepotkan jika perangkat sudah terpasang jauh di luar jangkauan atau berada dalam casing yang sulit dibuka.
Untungnya, ESP32 menyediakan fitur Over-The-Air (OTA) Update, yaitu cara mengunggah firmware tanpa menyentuh perangkat secara fisik. Dengan OTA, cukup melalui jaringan WiFi yang sama, kita bisa mengirim versi firmware terbaru langsung ke microcontroller. Ini sangat membantu terutama untuk perangkat IoT yang ditempatkan jauh, dipasang permanen, atau digunakan dalam jumlah banyak.
Melalui tulisan ini, kita akan membahas bagaimana cara mengaktifkan dan menggunakan OTA di ESP32, mulai dari konfigurasi awal, setup PlatformIO, hingga proses upload firmware dari jarak jauh. Dengan memahami OTA, kamu bisa mempercepat workflow pengembangan, mengurangi risiko kerusakan port USB, dan membuat proyekmu jauh lebih fleksibel serta profesional.
Script Program
platformio.ini
; PlatformIO Project Configuration File
;
; Build options: build flags, source filter
; Upload options: custom upload port, speed and extra flags
; Library options: dependencies, extra library storages
; Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html
[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
; --- Serial Upload ---
upload_port = COM12
; ganti sesuai port kamu
lib_extra_dirs = ../shared
[env:esp32dev-ota]
platform = espressif32
board = esp32dev
framework = arduino
; --- Serial Upload ---
upload_protocol = espota
upload_port = xxx.xxx.xxx.xxx //isi dengan ip esp32 yang muncul di serial monitor
upload_flags =
--port=3232 ; OTA port default
--auth=otapassword ; jika pakai password, optional
; ganti sesuai port kamu
lib_extra_dirs = ../shared
WiFiModule.h
#pragma once
#include <WiFi.h>
class WiFiModule {
public:
WiFiModule(String ssid, String password);
void begin();
bool isConnected();
private:
String _ssid;
String _password;
};
WiFiModule.cpp
#include "WiFiModule.h"
WiFiModule::WiFiModule(String ssid, String password)
: _ssid(ssid), _password(password) {
_ssid = ssid;
_password = password;
}
void WiFiModule::begin() {
Serial.println("[WiFi] Initializing WiFi...");
Serial.println("[WiFi] Connecting to: " + _ssid);
WiFi.begin(_ssid.c_str(), _password.c_str());
int retries = 0;
while (WiFi.status() != WL_CONNECTED && retries < 20) {
delay(500);
Serial.print(".");
retries++;
}
if (WiFi.status() == WL_CONNECTED) {
Serial.println("\n[WiFi] Connected! IP: " + WiFi.localIP().toString());
} else {
Serial.println("\n[WiFi] Failed to connect.");
}
}
bool WiFiModule::isConnected() {
return WiFi.status() == WL_CONNECTED;
}
main.cpp
#include <Arduino.h> #include <BlinkModule.h> #include <WiFiModule.h> #include <ArduinoOTA.h>
BlinkModule blink(2, 500); WiFiModule wifi(“MyPad”, “12345678”);
void setup() {
delay(200);
Serial.begin(115200);
Serial.println(“Project 01 - Blink Module”);
blink.start();
wifi.begin();
ArduinoOTA.setPort(3232);
ArduinoOTA.setPassword(“otapassword”);
ArduinoOTA.begin();
}
void loop() { ArduinoOTA.handle(); }
Check it out!
Tags:
Ikuti terus tutorial saya di e-Project dan channel
saya di