Blog Archive

Arduino Indonesia. Gambar tema oleh Storman. Diberdayakan oleh Blogger.

Supported by Electronics 3 in 1

1. Jasa pencetakan PCB single layer dengan harga paling murah.

(Metode Pembuatan dengan Transfer Toner)
>PCB design sendiri (siap cetak) : Rp.150,-/Cm2
>PCB design dari kami : Rp.250,-/Cm2

(Metode Sablon Full Masking dan Silk Screen minimal pemesanan 100 Pcs)
>PCB design sendiri (siap cetak) : Rp.200,-/Cm2
>PCB design dari kami : Rp.250,-/Cm2

2. Jasa perancangan, perakitan, dan pembuatan trainer pembelajaran elektronika untuk SMK dan Mahasiswa.

3. Jasa perancangan, perakitan, dan pembuatan berbagai macam kontroller, sensor, aktuator, dan tranduser.
>Design Rangkaian / Sistem Elektronika
>Design Rangkaian / Sistem Instrumentasi
>Design Rangkaian / Sistem Kendali
>Kerjasama Riset (data atau peralatan)
>Kerjasama Produksi Produk-Produk KIT Elektronika
>Produksi Instrumentasi Elektronika

4. Jasa Pembuatan Proyek, Tugas Akhir, Tugas Laboratorium, PKM, Karya Ilmiah, SKRIPSI, dll

Like My Facebook

Popular Posts

Senin, 27 Juli 2026

DIYables ESP32 Web Server - Cara Mengontrol LED melalui Web Browser Menggunakan ESP32

Mengendalikan perangkat elektronik melalui web browser merupakan salah satu kemampuan yang membuat ESP32 sangat populer dalam pengembangan proyek Internet of Things (IoT). Dengan memanfaatkan fitur WiFi yang telah terintegrasi, ESP32 dapat berfungsi sebagai Web Server, sehingga Anda dapat mengontrol perangkat seperti LED langsung dari browser di komputer maupun smartphone tanpa memerlukan aplikasi tambahan. Pada tutorial ini, Anda akan mempelajari cara membuat Web Server ESP32 yang mampu mengontrol LED melalui halaman web sederhana. Selain itu, Anda juga akan mempelajari dua metode penyusunan kode HTML, yaitu dengan menyematkan HTML langsung ke dalam sketch Arduino dan memisahkan HTML ke dalam file terpisah agar program lebih rapi serta mudah dikembangkan.

Cara Kerja ESP32 sebagai Web Server untuk Mengontrol LED

Pada tutorial ini, ESP32 akan dikonfigurasi sebagai Web Server yang menerima permintaan (HTTP Request) dari browser. Setelah menerima permintaan tersebut, ESP32 akan memprosesnya, mengubah status LED sesuai perintah, kemudian mengirimkan kembali halaman web sebagai respons. Sebagai contoh, misalkan ESP32 memperoleh alamat IP 192.168.0.2 setelah berhasil terhubung ke jaringan WiFi. Alur kerjanya adalah sebagai berikut:

- Ketika Anda membuka alamat http://192.168.0.2 melalui browser, browser akan mengirimkan permintaan (request) ke ESP32. Selanjutnya ESP32 akan mengirimkan halaman web yang berisi tombol untuk mengendalikan LED.

- Saat tombol Turn ON ditekan, browser akan mengirimkan permintaan ke alamat:
http://10.252.6.32/LED1/on
Setelah menerima permintaan tersebut, ESP32 akan mengubah pin LED menjadi HIGH, sehingga LED menyala. Setelah itu halaman web diperbarui untuk menampilkan status LED terbaru.

- Sebaliknya, ketika tombol Turn OFF ditekan atau alamat berikut diakses:
http://10.252.6.32/LED1/off

 
ESP32 akan mengubah pin LED menjadi LOW, sehingga LED padam. Selanjutnya ESP32 mengirimkan respons ke browser agar tampilan halaman web menunjukkan kondisi LED yang telah berubah. Dengan konsep ini, browser berfungsi sebagai client, sedangkan ESP32 bertindak sebagai server yang menerima dan memproses setiap permintaan HTTP. Metode yang Dipelajari pada Tutorial Ini Tutorial ini membahas dua pendekatan dalam membuat halaman web pada ESP32, yaitu:

- Konten HTML disematkan langsung ke dalam sketch ESP32 (.ino).

- Konten HTML dipisahkan ke dalam file index.h sehingga struktur program menjadi lebih rapi.

Masing-masing metode memiliki kelebihan tersendiri. Metode pertama lebih sederhana dan cocok untuk belajar, sedangkan metode kedua lebih direkomendasikan untuk proyek yang memiliki tampilan web lebih kompleks.

 

Baca juga: DIYables ESP32 Web Apps Web Plotter - Cara Membuat Serial Plotter Berbasis Web pada ESP32 

Pengembangan yang Dapat Dilakukan

Setelah memahami tutorial ini, Anda dapat mengembangkannya menjadi berbagai proyek IoT yang lebih menarik, misalnya:

- Mengontrol beberapa LED melalui satu halaman web.

- Mengontrol relay untuk menghidupkan atau mematikan peralatan listrik.

- Mendesain ulang tampilan User Interface (UI) menggunakan HTML dan CSS.

- Menambahkan JavaScript agar halaman web menjadi lebih interaktif.

- Mengontrol berbagai perangkat lain seperti servo, motor DC, buzzer, maupun sensor melalui browser.

Perangkat Keras yang Dibutuhkan

- Modul ESP32 Dev Module (ESP-WROOM-32) 38 Pin

- Kabel Micro USB

Metode 1: Konten HTML Disematkan ke dalam Sketch ESP32

Pada metode pertama ini, seluruh kode program, termasuk HTML, berada di dalam file sketch Arduino (.ino). Cara ini sangat cocok untuk mempelajari dasar pembuatan Web Server karena seluruh kode berada dalam satu file.

Langkah-langkah

1. Hubungkan ESP32 ke Komputer

Hubungkan board ESP32 ke komputer atau laptop menggunakan kabel Micro USB.

2. Buka Arduino IDE

Jalankan Arduino IDE yang telah terpasang pada komputer Anda.

3. Pilih Board dan Port

Pilih jenis board ESP32 yang digunakan, buka menu Tools → Board → ESP32 Arduino → ESP32 Dev Module. Kemudian pilih COM Port yang sesuai.

4. Install Library DIYables ESP32 WebServer

Buka Library Manager melalui Arduino IDE. Cari library DIYables ESP32 WebServer. Kemudian install library yang dikembangkan oleh DIYables.



5. Buat Sketch Baru

Buat sketch baru, misalnya dengan nama:

esp32-webserver.ino

Catatan: Pada artikel asli terdapat nama esp32-websokcet.ino. Nama tersebut kemungkinan merupakan kesalahan penulisan (typo). Anda dapat menggunakan nama yang lebih sesuai, misalnya esp32-webserver.ino.

6. Masukkan Program

Salin kode berikut ke dalam Arduino IDE.


#include <DIYables_ESP32_WebServer.h>

#define LED_PIN 18  // ESP32 pin GPIO18 connected to LED


int LED_state = LOW;


// WiFi credentials

const char WIFI_SSID[] = "YOUR_WIFI_SSID";

const char WIFI_PASSWORD[] = "YOUR_WIFI_PASSWORD";


// Create web server instance

DIYables_ESP32_WebServer server;


// Page handlers

String getHTML() {

  String html = "<!DOCTYPE HTML>";

  html += "<html>";

  html += "<head>";

  html += "<link rel='icon' href='data:,'>";

  html += "</head>";

  html += "<p>LED state: <span style='color: red;'>";


  if (LED_state == LOW)

    html += "OFF";

  else

    html += "ON";


  html += "</span></p>";

  html += "<a href='/led1/on'>Turn ON</a>";

  html += "<br><br>";

  html += "<a href='/led1/off'>Turn OFF</a>";

  html += "</html>";


  return html;

}


// home page

void handleHome(WiFiClient& client, const String& method, const String& request, const QueryParams& params, const String& jsonData) {

  Serial.println("ESP32 Web Server: New request received");

  server.sendResponse(client, getHTML().c_str());

}


void handleLedOn(WiFiClient& client, const String& method, const String& request, const QueryParams& params, const String& jsonData) {

  Serial.println("ESP32 Web Server: New request received");


  LED_state = HIGH;

  digitalWrite(LED_PIN, LED_state);


  server.sendResponse(client, getHTML().c_str());

}


void handleLedOff(WiFiClient& client, const String& method, const String& request, const QueryParams& params, const String& jsonData) {

  Serial.println("ESP32 Web Server: New request received");

  LED_state = LOW;

  digitalWrite(LED_PIN, LED_state);


  server.sendResponse(client, getHTML().c_str());

}


void setup() {

  Serial.begin(9600);

  delay(1000);


  pinMode(LED_PIN, OUTPUT);

  digitalWrite(LED_PIN, LED_state);


  Serial.println("ESP32 Web Server");


  // Configure routes

  server.addRoute("/", handleHome);

  server.addRoute("/led1/on", handleLedOn);

  server.addRoute("/led1/off", handleLedOff);


  // Start web server with WiFi connection

  server.begin(WIFI_SSID, WIFI_PASSWORD);

}


void loop() {

  server.handleClient();

  // Your code here

}


7. Konfigurasi WiFi

Ubah nilai SSID dan password pada program agar sesuai dengan jaringan WiFi yang akan digunakan.

8. Upload Program

Klik tombol Upload untuk mengunggah sketch ke board ESP32.

9. Buka Serial Monitor

Setelah proses upload selesai, buka Serial Monitor.

10. Periksa Alamat IP ESP32

Jika ESP32 berhasil terhubung ke jaringan WiFi, Serial Monitor akan menampilkan alamat IP, misalnya: 10.252.6.32. Alamat IP tersebut merupakan alamat Web Server ESP32 yang nantinya diakses melalui browser.



11. Akses Web Server ESP32

Buka browser pada komputer atau smartphone yang terhubung ke jaringan WiFi yang sama. Selanjutnya akses salah satu alamat berikut:

- http://10.252.6.32

- http://10.252.6.32//LED1/on

- http://10.252.6.32/LED1/off

Catatan: Alamat IP setiap ESP32 dapat berbeda-beda tergantung jaringan yang digunakan. Oleh karena itu, selalu gunakan alamat IP yang muncul pada Serial Monitor.

12. Amati Output pada Serial Monitor

Selain mengendalikan LED, Anda juga dapat melihat informasi permintaan HTTP yang diterima ESP32 melalui Serial Monitor.

13. Periksa Status LED

Setiap kali tombol Turn ON atau Turn OFF ditekan, LED akan berubah sesuai dengan perintah yang dikirim melalui browser.

14. Tampilan Halaman Web

Jika semua langkah dilakukan dengan benar, browser akan menampilkan halaman web seperti berikut.



Sekarang Anda dapat mengontrol LED secara langsung melalui halaman web tanpa perlu mengunggah ulang program.

Metode 2: Memisahkan Konten HTML ke dalam File index.h

Pada proyek Web Server yang lebih besar, halaman web biasanya terdiri dari banyak kode HTML, CSS, dan JavaScript. Jika seluruh kode tersebut ditempatkan di dalam file .ino, maka sketch akan menjadi sangat panjang dan sulit dipelajari. Karena itu, pendekatan yang lebih baik adalah memisahkan halaman web ke dalam file terpisah. Struktur file yang digunakan adalah sebagai berikut:

- esp32-webserver.ino → berisi program utama ESP32.

- index.h → berisi kode HTML, CSS, dan JavaScript.

Dengan cara ini, program menjadi lebih rapi, mudah dibaca, serta lebih mudah dikembangkan ketika halaman web semakin kompleks.

Langkah-langkah

1. Buat Sketch Baru

Buat sketch baru dengan nama:

esp32-webserver.ino

2. Salin Program Utama

Masukkan kode program berikut ke dalam sketch.


#include <DIYables_ESP32_WebServer.h>

#include "index.h"  // Include the index.h file

#define LED_PIN 18  // ESP32 pin GPIO18 connected to LED


int LED_state = LOW;


// WiFi credentials

const char WIFI_SSID[] = "YOUR_WIFI_SSID";

const char WIFI_PASSWORD[] = "YOUR_WIFI_PASSWORD";


// Create web server instance

DIYables_ESP32_WebServer server;


// Page handlers

String getHTML() {

  String html = webpage;                                  // Use the HTML content from the index.h file

  html.replace("%LED_STATE%", LED_state ? "ON" : "OFF");  // update the led state


  return html;

}


// home page

void handleHome(WiFiClient& client, const String& method, const String& request, const QueryParams& params, const String& jsonData) {

  Serial.println("ESP32 Web Server: New request received");

  server.sendResponse(client, getHTML().c_str());

}


void handleLedOn(WiFiClient& client, const String& method, const String& request, const QueryParams& params, const String& jsonData) {

  Serial.println("ESP32 Web Server: New request received");


  LED_state = HIGH;

  digitalWrite(LED_PIN, LED_state);


  server.sendResponse(client, getHTML().c_str());

}


void handleLedOff(WiFiClient& client, const String& method, const String& request, const QueryParams& params, const String& jsonData) {

  Serial.println("ESP32 Web Server: New request received");

  LED_state = LOW;

  digitalWrite(LED_PIN, LED_state);


  server.sendResponse(client, getHTML().c_str());

}


void setup() {

  Serial.begin(9600);

  delay(1000);


  pinMode(LED_PIN, OUTPUT);

  digitalWrite(LED_PIN, LED_state);


  Serial.println("ESP32 Web Server");


  // Configure routes

  server.addRoute("/", handleHome);

  server.addRoute("/led1/on", handleLedOn);

  server.addRoute("/led1/off", handleLedOff);


  // Start web server with WiFi connection

  server.begin(WIFI_SSID, WIFI_PASSWORD);

}


void loop() {

  server.handleClient();

  // Your code here

}


3. Konfigurasi WiFi

Sesuaikan SSID dan password dengan jaringan WiFi yang digunakan.

4. Buat File index.h

Tambahkan file baru pada Arduino IDE dengan langkah berikut:

- Klik tombol New Tab yang berada di bawah ikon Serial Monitor, atau tekan Ctrl + Shift + N.



- Beri nama file index.h. Kemudian klik OK.



- Salin seluruh kode HTML berikut ke dalam file index.h.


#ifndef WEBPAGE_H

#define WEBPAGE_H


const char* webpage = R"=====(

<!DOCTYPE HTML>

<html>

<head>

<link rel='icon' href='data:,'>

</head>

<p>LED state: <span style='color: red;'>%LED_STATE%</span></p>

<a href='/led1/on'>Turn ON</a>

<br><br>

<a href='/led1/off'>Turn OFF</a>

</html>

)=====";


#endif


5. Pastikan Struktur Project

Setelah selesai, project akan memiliki dua file utama, yaitu:

- esp32-webserver.ino

- index.h

Dengan struktur seperti ini, pemisahan antara logika program dan tampilan web menjadi jauh lebih jelas sehingga proses pengembangan akan lebih mudah dilakukan.

6. Upload Program

Klik tombol Upload untuk mengunggah program ke ESP32.

7. Uji Web Server

Buka browser pada komputer maupun smartphone yang berada pada jaringan WiFi yang sama dengan ESP32. Masukkan alamat IP ESP32 seperti yang ditampilkan pada Serial Monitor. Jika seluruh konfigurasi telah dilakukan dengan benar, maka halaman web yang muncul akan memiliki fungsi yang sama seperti metode sebelumnya, yaitu dapat digunakan untuk menyalakan maupun mematikan LED melalui browser.



 

Baca juga: DIYables ESP32 Gmail - Cara Mengirim Email Menggunakan Gmail dengan ESP32 

 

 

 

Dalam praktik, hasil dan kendala yang ditemui bisa berbeda tergantung perangkat, konfigurasi, versi library, dan sistem yang digunakan.  

0 on: "DIYables ESP32 Web Server - Cara Mengontrol LED melalui Web Browser Menggunakan ESP32"