Anda di halaman 1dari 12

PRAKTIKUM APPL

Judul :Kontrol & Monitoring LED


Percobaan :5
Nama : Zacky Maulana Achmad
NRP : 2210191016
Dosen : M. Mobed Bachtiar
Kontrol & Monitoring LED

1. Internet of Things - Kendali Perangkat Dari Jarak Jauh Menggunakan Web


Server
- Control LED dengan Web Server
Gambar Rangkaian

Source Code :
Output serial monitor:

Hasil Simulasi Program :


-Ketika User menekan button On
- Ketika User menekan button Off

Analisa :
Percobaan pertama diatas adalah kontrol LED dengan web Server. Alat yang
dipakai menggunakan mikrokontroller ESP32 (sebagai pengganti NodeMcu) yang
tersambung dengan LED dengan Pin yang disesuaikan. Beberapa library pendukung
program disini adalah Wifi.h , WifiClient.h dan WebServer.h . pertama mengisi ssid
Wifi dan passwordnya yang akan digunakan praktikum ini , yang pasti tersambung
dengan perangkat laptop dan esp32. lalu menginisialisasi server pada port 80, yakni
agar server dapat merespon client dari port 80 dengan perintah WebServer
server(80) . Selanjutnya menginisialisasi pin di ESP32 untuk LED. Disini
menggunakan pin 4 ,dimana pada ESP32 adalah pin D4. pada fungsi void setup() ,
selanjutnya membuat program HTML yang nantinya ditampilkan di WebClient. Yang
diantaranya membuat button On dan Off untuk kontrol LED . selanjutnya terdapat
perintah Wifi.begin() untuk menyambungkan koneksi wifi dengan ssid dan password
yang telah dimasukan di program . apabila status wifi masih belum
tersambungkan ,maka pada serial monitor akan memunculkan titik (.) dengan delay
500ms. Apabia terlah tersambung , maka akan memunculkan Ip addres yang akan
membuka web yang telah kita buat untuk kontrol LED. Selanjutnya terdapat perintah
server.on() dimana apabila client tersambung dengan server , maka akan memberikan
informasi yang dikirim dari server ke webclient sesuai request client. Yang pertama “/”
yang akan menampilkan isi HTML yang telah dibuat . Kedua “/LEDon” yang akan
memberikan perintah LED dalam keadaan HIGH dan terakhir “/LEDoff”
memberikan perintah LED untuk LOW. Dan masing masing perintah LED tersebut
butuh delay selama 1 detik. Pada fungsi void loop () terdapat perintah
server.handleClient() yang digunakan untuk menangani permintaan masuk HTTP
secara actual

Tugas :
1. Jelaskan kemampuan apa saja yang dimiliki NodeMCU ESC8266!
Jawab:
Karena pada praktikum ini saya menggunakan ESP32 , maka akan saya paparkan
tentang kemampuan dari ESP32. ESP32 adalah sistem dengan biaya yang rendah,
berdaya rendah pada seri chip (SoC) dengan Wi-Fi & kemampuan Bluetooth dua
mode. Keluarga ESP32 termasuk chip ESP32-D0WDQ6 (dan ESP32-D0WD),
ESP32-D2WD, ESP32-S0WD, dan sistem dalam paket (SiP) ESP32-PICO-D4.
Didalam ESP32 terdapat mikroprosesor Tensilica Xtensa LX6 dual-core atau single-
core dengan clock rate hingga 240 MHz. ESP32 telah terintegrasi dengan built-in
antenna switches, RF balun, power amplifier, low-noise receive amplifier, filters, and
power management modules. Didesain untuk perangkat seluler, perangkat elektronik
yang dapat dipakai, dan aplikasi IoT, ESP32 juga bekerja dengan konsumsi daya
sangat rendah melalui fitur hemat daya termasuk fine resolution clock gating, multiple
power modes, and dynamic power scaling.
2. Jika tidak ada Hotsopt, buatlah jaringan hotspot menggunakan tethering dari
Hp Anda
Jawab :
Disini saya sudah menggunakan Wifi rumah

2. Tugas - Menambahkan Timer dan tombol manual/auto


Source Code :
#include <WiFi.h>
const char* ssid = "Lafea10";
const char* password = "cute1000";
WiFiServer server(80);
String header;
String ledstatus = "OFF";
String autostatus = "OFF";
const int led = 25;
int desc = 0;
String page = "<h1>ESP32 Web Server</h1><a
href=\"AutoMan\"><button>Auto/Manual</button></a></p><p> <a
href=\"LEDOn\"><button>ON</button></a>&nbsp;<a
href=\"LEDOff\"><button>OFF</button></a></p><p>Timer : <span
id=\"countdown timer\">7</span></p>";

void setup(){
Serial.begin(115200);
pinMode(led, OUTPUT);
digitalWrite(led, 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){
Serial.println("New Client.");
String currentLine = "";
while (client.connected()){
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("Connect-type:text/html");
client.println("Connection: close");
client.println();
if (header.indexOf("GET /LEDOn") >= 0){
ledstatus = "ON";
digitalWrite(led, HIGH);
}
else if (header.indexOf("GET /LEDOff") >= 0){
ledstatus = "OFF";
digitalWrite(led, LOW);
}
else if (header.indexOf("GET /AutoMan") >= 0){
if (desc == 1){
desc = 0;
autostatus = "Manual";
}
else {
desc = 1;
autostatus = "Auto";
}
}
else if (header.indexOf("GET /CheckLED") >= 0){
if(ledstatus == "ON"){
ledstatus = "OFF";
digitalWrite(led, LOW);
}
else if(ledstatus == "OFF"){
ledstatus = "ON";
digitalWrite(led, HIGH);
}
}
client.println(page);
client.println("Status: " + autostatus);
client.println("<br>");
client.println("Status LED: " + ledstatus);
if (desc == 1){
client.print("<script type=\"text/javascript\">");
client.print("var timeleft = 10;");
client.print("var downloadTimer = setInterval(function(){");
client.print("timeleft--;");
client.print("document.getElementById(\"countdowntimer\").textContent = timeleft;");
client.print("if(timeleft <= 0){");
client.print("window.location = \"/CheckLED\";");
client.print("clearInterval(downloadTimer);}");
client.print("},1000);</script>");
}
client.println();
break;
}
else {
currentLine = "";
}
}
else if (c != '\r'){
currentLine += c;
}
}
}
header = "";
client.stop();
Serial.println("Client disconnected.");
Serial.println("");
}
}
Output / Hasil :
Manual
Auto
3. Tugas - Monitoring data dengan Kontrol LED
Source Code :
#include<WiFi.h>
const char* ssid = "Lafea10";
const char* password = "cute1000";
WiFiServer server(80);
String request;
const int ledPin = 25;
int value = LOW;
void setup()
{
Serial.begin(115200);
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, 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)
{
Serial.println("New Client.");
String currentLine = "";
while (client.connected())
{
if (client.available())
{
char c = client.read();
Serial.write(c);
request += c;
if (c == '\n')
{
if (currentLine.length() == 0)
{
client.println("HTTP/1.1 200 OK");
client.println("Connect-type:text/html");
client.println("");
client.println("<!DOCTYPE HTML>");
client.println("<html>");
if (request.indexOf("/LED=ON") != -1){
digitalWrite(ledPin, HIGH);
value = HIGH;
}
else if (request.indexOf("/LED=OFF") != -1){
digitalWrite(ledPin, LOW);
value = LOW;
}
client.println("<br><br>");
client.println("<a href=\"/LED=ON\"\"><button>Turn On </button></a>");
client.println("<a href=\"/LED=OFF\"\"><button>Turn Off </button></a><br/>");
client.println("</html>");
client.println();
break;
}
else {
currentLine = "";
}}
else if (c != '\r'){
currentLine += c;
}}}
request = "";
client.stop();
Serial.println("Client disconnected.");
Serial.println("");
}}
Output :

Analisa

Pada percobaan tugas , pertama tugas untuk kontrol led dengan ditambahkan
tombol manual auto . prinsip kerja masih sama dengan percobaan sebelumnya , yang
ditambahkan sistem manual dan auto . sistem manual sama dengan sistem lainnya ,
dimana ketika menekan tombol on dan off akan bekerja semestinya .Sistem auto
disini menggunaakan timer. ketika LED akan dijalankan dalam kondisi HIGH , maka
timer 10 detik akan berjalan dan ketika habis akan berganti dari HIGH ke LOW. Dan
tugas kedua sama denga percobaan pertama , dengan menggunakan 2 tombol on dan
off dan sistem kerja yang sama
Kesimpulan :
- salah satu fungsi Node MCU atau ESP32 dalam IoT adalah kontrol atau monitoring
dengan webserver
- Web Server berkomunikasi antara server dan client menggunakan protokol khusus
yang disebut Hypertext Transfer Protocol (HTTP). Client menggunakan URL / Link
untuk melakukan request halaman tertentu menggunakan HTTP dan kemudian server
memberikan response berupa konten halaman web.
- Ketika program berjalan akan mendaapatkan alamat IP yang nantinya diguakan
untuk menampilkan web kontrol

Anda mungkin juga menyukai