Pendahuluan

Salah satu keunggulan utama ESP32 adalah kemampuannya terhubung ke WiFi. Pada tutorial ini, kita akan belajar cara menghubungkan ESP32 ke jaringan WiFi dan mengirim data ke server menggunakan protokol HTTP.

Library yang Digunakan

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

Menghubungkan ESP32 ke WiFi

Berikut adalah kode dasar untuk menghubungkan ESP32 ke jaringan WiFi:

#include <WiFi.h>

// Ganti dengan SSID dan password WiFi kamu
const char* ssid = "NamaWiFiKamu";
const char* password = "PasswordWiFiKamu";

void setup() {
  Serial.begin(115200);
  
  // Mulai koneksi WiFi
  WiFi.begin(ssid, password);
  Serial.print("Menghubungkan ke WiFi");
  
  // Tunggu hingga terhubung
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  
  Serial.println("
Terhubung ke WiFi!");
  Serial.print("IP Address: ");
  Serial.println(WiFi.localIP());
}

void loop() {
  // Cek status koneksi
  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, kita bisa mengirim data ke server menggunakan HTTP request:

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

const char* ssid = "NamaWiFiKamu";
const char* password = "PasswordWiFiKamu";
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("
WiFi terhubung!");
}

void loop() {
  if (WiFi.status() == WL_CONNECTED) {
    HTTPClient http;
    
    // Buat request dengan parameter
    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); // Kirim data setiap 10 detik
}

Mengirim Data dengan HTTP POST

Untuk mengirim 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");
  
  // Buat JSON string
  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();
}

Penting: Jangan hardcode password WiFi di dalam kode yang akan dipublish ke repository publik. Gunakan file konfigurasi terpisah atau mekanisme provisioning seperti WiFiManager.