Anda di halaman 1dari 8

HASIL LAPORAN PRAKTEK

Guru Mata Pelajaran : Amiruddin S.Pd, Gr.

Disusun Untuk Memenuhi Tugas Mata Pelajaran AKD

Oleh:

Widya Pratiwi dan Wilya Avira

Kelas XII TEI

SMK NEGERI 2 TEBING TINGGI

Tahun Ajaran 2023/2024


Judul : Kontrol lampu LED ESP32 IoT web server

Tujuan :
 siswa mampu memahami rancang bangun IoT web server dengan menggunakan
ESP32
 siswa mampu menjelaskan sistem IoT web server berbasis ESP32
 siswa mampu membuat program control lampu dengan menggunakan HP maupun PC
tanpa menggunakan aplikasi database (menggunakan browser)

Alat dan Bahan


1. Devkit ESP32
2. Kabel jumper male to female
3. Resistor 100 ohm 2 pcs
4. USB transfer (micro USB)
5. LED 5 mm 2 pcs
6. Projek board
7. Laptop/HP
8. Software Arduino IDE

Gambar Rangkaian
Langkah Kerja
 pertama siapkan nodeMCU ESP32 ke papan projek board, lalu hubungkan kaki
resistor 100 ohm ke pin D27 dan D26.
 lalu kaki satunya di hubungkan ke kaki negatif led, setelah itu kaki positif led
dihubungkan ke gnd ESP32 menggunakan kabel jumper male to male, pastikan
kaki positif dan negatif pada lampu LED tidak terbalik.
 setelah rangkaian jadi, kita masuk ke software atau aplikasi Arduino untuk
membuat program kontrol lampu led.
 apload program yang sudah jadi lalu transfer program ke ESP32 melalui kabel
micro USB dan pastikan ESP32 sudah terhubung ke jaringan internet.
 setelah di transfer program nya lalu masuk ke serial monitor di software
Arduinonya untuk mengetahui alamat IP pada ESP32 pencet tombol EN pada
ESP32 agar alamat IP muncul di serial monitor.
 setelah alamat IP nya sudah muncul, salin atau copy alamatnya setelah itu buka
chrome di HP atau PC lalu tempel atau paste alamat tadi supaya mucul tombol
on/of yang berwarna hijau untuk mengontrol hidup dan matinya lampu LED.
Kode Program

#include <WiFi.h>
const char* ssid = "VivoAD";
const char* password = "@mirudin12";
WiFiServer server(80);
String header;
String Lamp1State = "off";
String Lamp2State = "off";
const int Lamp1 = 26;
const int Lamp2 = 27;
unsigned long currentTime = millis();
unsigned long previousTime = 0;
const long timeoutTime = 2000;
void setup() {
Serial.begin(115200);
pinMode(Lamp1, OUTPUT);
pinMode(Lamp2, OUTPUT);
digitalWrite(Lamp1, LOW);
digitalWrite(Lamp2, LOW);
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected.");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
server.begin();
}
void loop(){
WiFiClient client = server.available();
if (client) {
currentTime = millis();
previousTime = currentTime;
Serial.println("New Client.");
String currentLine = "";
while (client.connected() && currentTime - previousTime <= timeoutTime) {
currentTime = millis();
if (client.available()) {
char c = client.read();
Serial.write(c);
header += c;
if (c == '\n') {
if (currentLine.length() == 0) {
client.println("HTTP/1.1 200 OK");
client.println("Content-type:text/html");
client.println("Connection: close");
client.println();

if (header.indexOf("GET /26/on") >= 0) {


Serial.println("GPIO 26 on");
Lamp1State = "on";
digitalWrite(Lamp1, HIGH);
} else if (header.indexOf("GET /26/off") >= 0) {
Serial.println("GPIO 26 off");
Lamp1State = "off";
digitalWrite(Lamp1, LOW);
} else if (header.indexOf("GET /27/on") >= 0) {
Serial.println("GPIO 27 on");
Lamp2State = "on";
digitalWrite(Lamp2, HIGH);
} else if (header.indexOf("GET /27/off") >= 0) {
Serial.println("GPIO 27 off");
Lamp2State = "off";
digitalWrite(Lamp2, LOW);
}

client.println("<!DOCTYPE html><html>");
client.println("<head><meta name=\"viewport\" content=\"width=device-width,
initial-scale=1\">");
client.println("<link rel=\"icon\" href=\"data:,\">");
client.println("<style>html { font-family: Helvetica; display: inline-block; margin:
0px auto; text-align: center;}");
client.println(".button { background-color: #3DE31B; border: none; color: black;
padding: 16px 40px;");
client.println("text-decoration: none; font-size: 30px; margin: 2px; cursor: pointer;}");
client.println(".button2 {background-color: #DB240F;}</style></head>");

client.println("<body><h1>ESP32 IOT Web Server Control Lamp</h1>");


client.println("<p>Lamp 1 - Current Condition <b>" + Lamp1State + "</b></p>");
if (Lamp1State=="off") {
client.println("<p><a href=\"/26/on\"><button
class=\"button\">ON</button></a></p>");
} else {
client.println("<p><a href=\"/26/off\"><button class=\"button
button2\">OFF</button></a></p>");
}

client.println("<p>Lamp 2 - Current Condition <b>" + Lamp2State + "</b></p>");


if (Lamp2State=="off") {
client.println("<p><a href=\"/27/on\"><button
class=\"button\">ON</button></a></p>");
} else {
client.println("<p><a href=\"/27/off\"><button class=\"button
button2\">OFF</button></a></p>");
}
client.println("</body></html>");
client.println();
break;
} else {
currentLine = "";
}
} else if (c != '\r') {
currentLine += c;
}
}
}
header = "";
client.stop();
Serial.println("Client disconnected.");
Serial.println("");
}
}
REFLEKSI
Kontrol lampu LED melalui ESP32 dengan web server adalah proyek yang sangat berguna
dan merupakan langkah awal yang baik untuk memahami dasar-dasar IoT dan pengembangan
perangkat terhubung.

Anda mungkin juga menyukai