Catatan Oleh : Reza Ervani bin Asmanu
Panduan Lengkap Mengoneksikan ESP32 ke WiFi dan Mengakses API (HTTPS)
ESP32 adalah mikrokontroler yang sangat populer karena fitur WiFi dan Bluetooth bawaannya. Namun, bagi pemula maupun pengembang berpengalaman, mengoneksikan ESP32 ke internet seringkali mendatangkan tantangan tersendiri, mulai dari masalah library hingga protokol keamanan HTTPS.
Artikel ini akan membahas langkah-langkah komprehensif untuk menghubungkan ESP32 Anda ke jaringan WiFi hingga berhasil mengambil data dari API eksternal.
1. Persiapan Dasar (Library & Struktur)
Hal pertama yang sering menjadi kendala adalah pesan error 'WiFi' was not declared in this scope. Ini terjadi karena library utama belum dipanggil.
Library Wajib
Untuk ESP32, gunakan:
#include <WiFi.h>
Catatan: Jika Anda menggunakan ESP8266, library-nya adalah <ESP8266WiFi.h>.
Struktur Fungsi Minimal
ESP32 (dan Arduino pada umumnya) wajib memiliki dua fungsi utama:
setup(): Berjalan satu kali (inisialisasi).loop(): Berjalan terus-menerus. Jika fungsi ini hilang, proses compile akan gagal dengan errorundefined reference to loop.
2. Kode Koneksi WiFi Sederhana
Berikut adalah skrip standar untuk memulai koneksi:
const char* ssid = "NAMA_WIFI_ANDA";
const char* password = "PASSWORD_WIFI_ANDA";
void setup() {
Serial.begin(115200); // Gunakan baud rate tinggi untuk ESP32
WiFi.begin(ssid, password);
Serial.print("Connecting");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nConnected!");
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
}
void loop() { }
3. Menghadapi Tantangan API Modern (HTTPS & Redirect)
Saat Anda mencoba mengambil data dari internet (misalnya jadwal shalat atau data astronomi), Anda akan menghadapi protokol HTTPS (SSL/TLS). Menggunakan HTTPClient biasa seringkali menghasilkan error 302 (Redirect) atau EmptyInput.
Solusi Stabil: WiFiClientSecure & HTTP 1.0
Untuk mengatasi keamanan SSL dan masalah data yang terpotong (chunked data), kita harus menggunakan WiFiClientSecure dan memaksa protokol ke HTTP 1.0.
Contoh Kode Pengambilan Data API (Fixed)
#include <WiFi.h>
#include <HTTPClient.h>
#include <WiFiClientSecure.h>
#include <ArduinoJson.h>
void ambilDataAPI() {
if (WiFi.status() == WL_CONNECTED) {
WiFiClientSecure client;
client.setInsecure(); // Bypass validasi sertifikat SSL agar lebih simpel
HTTPClient http;
String url = "https://api.aladhan.com/v1/timingsByCity?city=Jakarta&country=Indonesia";
if (http.begin(client, url)) {
// PENTING: Ikuti pengalihan otomatis (Solusi Error 302)
http.setFollowRedirects(HTTPC_FORCE_FOLLOW_REDIRECTS);
// PENTING: Gunakan HTTP 1.0 agar data diterima utuh (Solusi EmptyInput)
http.useHTTP10(true);
int httpCode = http.GET();
if (httpCode == HTTP_CODE_OK) {
String payload = http.getString();
// Proses data JSON Anda di sini...
Serial.println(payload);
}
http.end();
}
}
}
4. Troubleshooting: Masalah Umum & Solusi
| Pesan Error / Gejala | Penyebab | Solusi |
'WiFi' was not declared | Library belum di-import. | Tambahkan #include <WiFi.h>. |
undefined reference to loop | Fungsi loop() tidak ada. | Tambahkan void loop() { }. |
HTTP Code: 302 | Server meminta pindah alamat (Redirect). | Gunakan http.setFollowRedirects(true). |
EmptyInput / JSON Gagal | Data terpotong (Chunked) atau SSL gagal. | Gunakan http.useHTTP10(true) dan WiFiClientSecure. |
| Karakter “ di Serial | Baud rate tidak cocok. | Set Serial Monitor ke 115200. |
5. Kesimpulan
Mengoneksikan ESP32 ke WiFi hanyalah langkah awal. Kunci keberhasilan dalam proyek IoT yang melibatkan API publik adalah penanganan protokol HTTPS yang tepat dan manajemen memori saat melakukan parsing JSON. Dengan konfigurasi WiFiClientSecure yang benar, ESP32 Anda dapat berkomunikasi dengan hampir seluruh layanan web modern secara stabil.
