Pendahuluan

Salah satu keunggulan utama ESP32 adalah kemampuannya terhubung ke WiFi. Pada tutorial ini, kita belajar menghubungkan ESP32 ke jaringan WiFi 2.4 GHz dan mengirim data ke server menggunakan protokol HTTP — fondasi untuk sensor DHT22 (#5), Web Server (#6), dan MQTT (#7).

Prasyarat: Sudah bisa upload sketch dari Blink LED (#3) dan install Arduino IDE (#2).

Topologi Jaringan

ESP32 terhubung ke router WiFi rumah/kantor, lalu berkomunikasi dengan server HTTP di internet atau LAN:

ESP32 WiFi.h · HTTPClient 2.4 GHz client WiFi Router WiFi SSID 2.4 GHz DHCP → IP lokal HTTP Server HTTP GET / POST JSON payload Ganti GANTI_SSID_WIFI / GANTI_PASSWORD_WIFI — jangan commit kredensial nyata
Topologi: ESP32 → router WiFi → server HTTP (GET/POST).

Library yang Digunakan

Untuk koneksi WiFi, ESP32 sudah memiliki library bawaan WiFi.h yang termasuk saat menginstall ESP32 Board Manager. Untuk HTTP request, kita pakai HTTPClient.h.

Alur Koneksi WiFi

WiFi.begin() SSID + password WL_CONNECTED tunggu loop localIP() 192.168.x.x HTTP GET/POST HTTPClient.h Produksi: lihat NVS + WiFiManager (#12) di artikel terpisah
Alur: connect → dapat IP → kirim HTTP request.

Menghubungkan ESP32 ke WiFi

Kode dasar untuk menghubungkan ESP32 ke jaringan WiFi. Ganti placeholder dengan SSID dan password jaringan kamu:

#include <WiFi.h>

const char* ssid     = "GANTI_SSID_WIFI";
const char* password = "GANTI_PASSWORD_WIFI";

void setup() {
  Serial.begin(115200);

  WiFi.begin(ssid, password);
  Serial.print("Menghubungkan ke WiFi");

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println();
  Serial.println("Terhubung ke WiFi!");
  Serial.print("IP Address: ");
  Serial.println(WiFi.localIP());
}

void loop() {
  if (WiFi.status() == WL_CONNECTED) {
    Serial.println("WiFi: Terhubung");
  } else {
    Serial.println("WiFi: Terputus, mencoba reconnect...");
    WiFi.reconnect();
  }
  delay(5000);
}

Mengirim Data ke Server (HTTP GET)

Setelah terhubung ke WiFi, kirim data ke server menggunakan HTTP request:

#include <WiFi.h>
#include <HTTPClient.h>

const char* ssid     = "GANTI_SSID_WIFI";
const char* password = "GANTI_PASSWORD_WIFI";
const char* serverURL = "http://api.example.com/data";

void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println();
  Serial.println("WiFi terhubung!");
}

void loop() {
  if (WiFi.status() == WL_CONNECTED) {
    HTTPClient http;

    String url = String(serverURL) + "?suhu=25.5&kelembaban=70";
    http.begin(url);

    int httpCode = http.GET();

    if (httpCode > 0) {
      Serial.print("HTTP Code: ");
      Serial.println(httpCode);

      if (httpCode == HTTP_CODE_OK) {
        String payload = http.getString();
        Serial.println("Response: " + payload);
      }
    } else {
      Serial.print("Error: ");
      Serial.println(http.errorToString(httpCode));
    }

    http.end();
  }

  delay(10000);
}

Mengirim Data dengan HTTP POST

Untuk data yang lebih kompleks, gunakan HTTP POST dengan format JSON:

void kirimDataJSON(float suhu, float kelembaban) {
  HTTPClient http;
  http.begin(serverURL);
  http.addHeader("Content-Type", "application/json");

  String jsonData = "{\"suhu\":" + String(suhu) +
                    ",\"kelembaban\":" + String(kelembaban) +
                    ",\"device\":\"ESP32-001\"}";

  int httpCode = http.POST(jsonData);

  if (httpCode == 200) {
    Serial.println("Data berhasil dikirim!");
  }

  http.end();
}

Produksi: Jangan hardcode password WiFi di kode yang dipublish ke repository publik. Untuk deploy ke banyak perangkat, gunakan NVS + WiFiManager (#12) agar SSID bisa dikonfigurasi lewat portal captive tanpa re-flash.

Tips: ESP32 hanya mendukung WiFi 2.4 GHz — pastikan router tidak memaksa perangkat ke band 5 GHz saja. Jika HTTP gagal, cek firewall router dan pastikan URL server dapat dijangkau dari jaringan yang sama.

Langkah Selanjutnya