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:
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
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
- Membaca sensor DHT22 (#5) — gabungkan sensor dengan WiFi
- Web Server ESP32 + DHT22 (#6) — tampilkan data di browser LAN
- Publish data via MQTT (#7) — alternatif HTTP untuk IoT
- NVS + WiFiManager (#12) — konfigurasi WiFi tanpa hardcode
- Seri 2: ESP32 + Firebase (#30) — simpan data sensor di cloud