ESP8266 bukan hanya WiFi module, tapi juga bisa menjadi server web mini yang berjalan mandiri. Dalam mode Access Point (AP), ESP8266 bisa membuat jaringan WiFi sendiri tanpa butuh router.
Dalam tutorial ini, kita akan:
- Mengatur ESP8266 sebagai Access Point
- Menyajikan halaman HTML sederhana
- Mengontrol LED dari halaman web
Alat dan Bahan
- ESP8266 (NodeMCU atau Wemos D1 Mini)
- Kabel USB
- LED (Builtin NodeMCU)
- Software: Arduino IDE + ESP8266 board package
Kode Program ESP8266 Access Point + Web Server
/*
* Nama Proyek : Kontrol LED via Web Server (Mode AP - Access Point)
* Platform : ESP8266 (NodeMCU, Wemos, dll)
* Fungsi : Membuat jaringan Wi-Fi dan server web lokal untuk kontrol LED
* Penulis : YOARDUINO
*/
// Library dasar untuk komunikasi Wi-Fi pada chip ESP8266
#include "esp8266wifi.h"
// Konfigurasi nama jaringan Wi-Fi (SSID) yang akan dibuat oleh ESP8266
const char* ssid = "YOARDUINO";
// Kata sandi Wi-Fi (minimal 8 karakter), diperlukan untuk terhubung ke jaringan ini
const char* password = "00000000";
// Membuat objek server web yang berjalan di port 80 (port default HTTP)
WiFiServer server(80);
void setup() {
// Mengaktifkan komunikasi Serial Monitor dengan kecepatan baud 115200
Serial.begin(115200);
// Menetapkan pin LED_BUILTIN (biasanya D4 pada NodeMCU) sebagai output digital
pinMode(LED_BUILTIN, OUTPUT);
// Mengaktifkan mode Access Point (AP) pada ESP8266
WiFi.softAP(ssid, password);
// Menampilkan alamat IP dari Access Point yang dibuat di Serial Monitor
Serial.print("AP IP address: ");
Serial.println(WiFi.softAPIP()); // Alamat IP default biasanya adalah 192.168.4.1
// Memulai server web agar dapat menerima permintaan dari klien
server.begin();
}
void loop() {
// Memeriksa apakah ada klien (misalnya browser) yang mencoba terhubung ke server
WiFiClient client = server.available();
// Jika tidak ada klien yang terhubung, keluar dari loop dan ulangi proses
if (!client) return;
// Menunggu sampai klien mulai mengirimkan data (permintaan HTTP)
while (!client.available()) delay(1); // Delay pendek hingga data tersedia
// Membaca bagian pertama dari permintaan HTTP, yaitu baris GET
String request = client.readStringUntil('\r'); // Misalnya: "GET /LED=ON HTTP/1.1"
// Membaca header HTTP selanjutnya untuk menyelesaikan parsing permintaan
client.readStringUntil('\n');
// Memeriksa apakah permintaan mengandung "/LED=ON"
if (request.indexOf("/LED=ON") != -1) {
digitalWrite(LED_BUILTIN, LOW); // Nyalakan LED (aktif rendah pada LED_BUILTIN)
}
// Memeriksa apakah permintaan mengandung "/LED=OFF"
if (request.indexOf("/LED=OFF") != -1) {
digitalWrite(LED_BUILTIN, HIGH); // Matikan LED
}
// Mengirim respons HTTP 200 OK ke klien (browser)
client.println("HTTP/1.1 200 OK");
// Menentukan jenis konten yang dikirim adalah HTML
client.println("Content-Type: text/html");
// Menambahkan baris kosong untuk menunjukkan akhir dari header HTTP
client.println();
// Mulai mengirim halaman HTML sederhana sebagai antarmuka kontrol LED
// Bagian pembuka HTML dan judul halaman
client.println("<html><head><title>ESP8266 AP Mode</title></head><body>");
// Judul besar di halaman
client.println("<h1>Kontrol LED</h1>");
// Tombol ON dalam bentuk tautan (link) yang mengarah ke /LED=ON
client.println("<p><a href="/LED=ON"><button>ON</button></a>");
// Tombol OFF dalam bentuk tautan (link) yang mengarah ke /LED=OFF
client.println("<a href="/LED=OFF"><button>OFF</button></a></p>");
// Penutup tag HTML
client.println("</body></html>");
// Delay sangat singkat (opsional, bisa dihapus jika tidak diperlukan)
delay(1);
}
Penjelasan Kode
- WiFi.softAP() mengaktifkan mode Access Point
- server.begin() memulai web server di port 80
- Halaman web menyediakan dua tombol untuk menyalakan/mematikan LED
Tampilan Serial Monitor
Tampilan Web Server
Cara Uji Coba
- Upload kode ke ESP8266
- Hubungkan perangkat ke WiFi YOARDUINO dengan password 00000000
- Buka browser dan akses 192.168.4.1
- Coba klik tombol ON dan OFF untuk mengontrol LED
Yuk mulai kembangkan proyek IoT kamu dengan server lokal dari ESP8266!
EmoticonEmoticon
Note: Only a member of this blog may post a comment.