Mengkoneksikan ESP32 ke WIFI

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 error undefined 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 / GejalaPenyebabSolusi
'WiFi' was not declaredLibrary belum di-import.Tambahkan #include <WiFi.h>.
undefined reference to loopFungsi loop() tidak ada.Tambahkan void loop() { }.
HTTP Code: 302Server meminta pindah alamat (Redirect).Gunakan http.setFollowRedirects(true).
EmptyInput / JSON GagalData terpotong (Chunked) atau SSL gagal.Gunakan http.useHTTP10(true) dan WiFiClientSecure.
Karakter “ di SerialBaud 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.