Anda di halaman 1dari 23

Hari, tanggal : Selasa, 15 September 2022

Minggu : ke-3

Praktek : NodeMCU sebagai client dan acces point wifi dengan 1 LED

--------------------------------------------------------------------------------------------------------------------------------------

Pastikan di Arduino IDE kamu sudah menginstal nodemcu

Install nodemcu
1. File -> preferences
Masukkan url : http://arduino.esp8266.com/stable/package_esp8266com_index.json

2. Ikuti
3. Search ini

PRAKTIKUM NodeMCU sebagai Client Wifi


1. Peralatan yang dibutuhkan
- 1 LED
- 1 NodeMCU
- 2 Kabel jumper / bebas
- 1 Resistor 220 ohm
- 2 Breadboard
- 1 Kabel micro usb
- Arduino IDE

2. Topologi, pastikan sudah dihubungkan dengan micro usb


3. Nyalakan hotspot HP

4. Masukan Kode
#include <ESP8266WiFi.h>

#include <ESP8266WebServer.h>

const char* ssid = "Redmi Note 7"; (Masukan nama hotspot)

const char* password = "rahasialoo"; (Masukkan password hotspot)

ESP8266WebServer server(80);

void setup() {

Serial.begin(115200);

// memulai koneksi wiFi NodeMCU ke Akses Poin

WiFi.begin(ssid, password);

Serial.println("");

while (WiFi.status() != WL_CONNECTED){

Serial.print(".");

delay(500);

Serial.println("");

Serial.println("terkoneksi dengan API");

Serial.print("http://");

Serial.print(WiFi.localIP());

Serial.println("/");

// initialize digital pin 13 as an output.

pinMode(13, OUTPUT);

void loop() {

digitalWrite(13, HIGH);

// turn the LED on

delay(1000);

digitalWrite(13, LOW);

// turn the LED off

delay(1000);
}

5. Hasil, buka serial monitor

6. Kode diupdate (yang aku tandain warna merah)

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>

const char* ssid = "Redmi Note 7";


const char* password = "rahasialoo";

ESP8266WebServer server(80);

void setup() {
Serial.begin(115200);
// memulai koneksi wiFi NodeMCU ke Akses Poin
WiFi.begin(ssid, password);
Serial.println("");
while (WiFi.status() != WL_CONNECTED){
Serial.print(".");
delay(500);
}
Serial.println("");
Serial.println("terkoneksi dengan API");

Serial.print("http://");
Serial.print(WiFi.localIP());
Serial.println("/");

//Kode untuk mengaktifkan server


server.on("/", handleOnConnect);
server.on("/ledon", handleLedOn);
server.on("/ledoff", handleLedOff);
server.onNotFound(handleNotFound);
server.begin();
Serial.println("Servis web server dimulai");

// initialize digital pin 13 as an output.


pinMode(13, OUTPUT);
}

void handleOnConnect(){
Serial.println("web root");
}

void handleLedOn(){
Serial.println("LED menyala!");
}

void handleLedOff(){
Serial.println("LED mati");
}

void handleNotFound(){
Serial.println("Alamat web tidak ada");
}

void loop() {
server.handleClient();
digitalWrite(13, HIGH);
// turn the LED on
delay(1000);
digitalWrite(13, LOW);
// turn the LED off
delay(1000);
}

7. Hasil, buka serial monitor

8. Buka google masukan alamat ip di atas, tambahkan +ledon


9. Hasil, hasil serial monitor

10. Coba tambahkan ledoff

11. Hasil, buka serial monitor


12. Ubah kodenya, tambahin yang ditandai warna biru
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>

const char* ssid = "Hanna Fasya";


const char* password = "hannaf123";

ESP8266WebServer server(80);

void setup() {
Serial.begin(115200);
// memulai koneksi wiFi NodeMCU ke Akses Poin
WiFi.begin(ssid, password);
Serial.println("");
while (WiFi.status() != WL_CONNECTED){
Serial.print(".");
delay(500);
}
Serial.println("");
Serial.println("terkoneksi dengan API");

Serial.print("http://");
Serial.print(WiFi.localIP());
Serial.println("/");

//Kode untuk mengaktifkan server


server.on("/", handleOnConnect);
server.on("/ledon", handleLedOn);
server.on("/ledoff", handleLedOff);
server.onNotFound(handleNotFound);
server.begin();
Serial.println("Servis web server dimulai");

// initialize digital pin 13 as an output.


pinMode(13, OUTPUT);
}

void handleOnConnect(){
Serial.println("web root");
server.send(200, "text/plain", "web root");
}

void handleLedOn(){
Serial.println("LED menyala!");
server.send(200, "text/plain", "LED menyala");
}

void handleLedOff(){
Serial.println("LED mati");
server.send(200, "text/plain", "LED mati");
}

void handleNotFound(){
Serial.println("Alamat web tidak ada");
server.send(404, "text/plain", "Alamat web tidak ketemu");
}

void loop() {
server.handleClient();

digitalWrite(13, HIGH);
// turn the LED on
delay(1000);
digitalWrite(13, LOW);
// turn the LED off
delay(1000);
}

13. Buka google chrome


14. Modifikasi kode, aku tanda warna hijau

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>

const char* ssid = "Hanna Fasya";


const char* password = "hannaf123";

ESP8266WebServer server(80);

int led = 16;


bool LEDStatus = LOW;

void setup() {
Serial.begin(115200);
// memulai koneksi wiFi NodeMCU ke Akses Poin
WiFi.begin(ssid, password);
Serial.println("");
while (WiFi.status() != WL_CONNECTED){
Serial.print(".");
delay(500);
}
Serial.println("");
Serial.println("terkoneksi dengan API");

Serial.print("http://");
Serial.print(WiFi.localIP());
Serial.println("/");

//Kode untuk mengaktifkan server


server.on("/", handleOnConnect);
server.on("/ledon", handleLedOn);
server.on("/ledoff", handleLedOff);
server.onNotFound(handleNotFound);
server.begin();
Serial.println("Servis web server dimulai");

// initialize digital pin 13 as an output.


pinMode(13, OUTPUT);
}

void handleOnConnect(){
LEDStatus = LOW;
Serial.println("web root");
server.send(200, "text/html", tampilkanHTML());
}

void handleLedOn(){
LEDStatus = HIGH;
Serial.println("LED menyala!");
server.send(200, "text/html",tampilkanHTML());
}

void handleLedOff(){
LEDStatus = LOW;
Serial.println("LED mati");
server.send(200, "text/html", tampilkanHTML());
}

void handleNotFound(){
Serial.println("Alamat web tidak ada");
server.send(404, "text/plain", "Alamat web tidak ketemu");
}

String tampilkanHTML (){


String ptr = "";
if(LEDStatus){
ptr += "<h1>LED Menyala</h1>";
}else {
ptr = ptr + "<h1>LED Mati</h1>";
}
return ptr;
}
void loop() {
server.handleClient();
digitalWrite(13, LEDStatus);

// digitalWrite(13, HIGH);
// // turn the LED on
// delay(1000);
// digitalWrite(13, LOW);
// // turn the LED off
// delay(1000);
}

15. Hasil

16. Ubah kode Kembali, aku tanda warna pink

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>

const char* ssid = "Hanna Fasya";


const char* password = "hannaf123";

ESP8266WebServer server(80);

int led = 16;


bool LEDStatus = LOW;

void setup() {
Serial.begin(115200);
// memulai koneksi wiFi NodeMCU ke Akses Poin
WiFi.begin(ssid, password);
Serial.println("");
while (WiFi.status() != WL_CONNECTED){
Serial.print(".");
delay(500);
}
Serial.println("");
Serial.println("terkoneksi dengan API");

Serial.print("http://");
Serial.print(WiFi.localIP());
Serial.println("/");

//Kode untuk mengaktifkan server


server.on("/", handleOnConnect);
server.on("/ledon", handleLedOn);
server.on("/ledoff", handleLedOff);
server.onNotFound(handleNotFound);
server.begin();
Serial.println("Servis web server dimulai");

// initialize digital pin 13 as an output.


pinMode(13, OUTPUT);
}

void handleOnConnect(){
LEDStatus = LOW;
Serial.println("web root");
server.send(200, "text/html", tampilkanHTML());
}

void handleLedOn(){
LEDStatus = HIGH;
Serial.println("LED menyala!");
server.send(200, "text/html",tampilkanHTML());
}

void handleLedOff(){
LEDStatus = LOW;
Serial.println("LED mati");
server.send(200, "text/html", tampilkanHTML());
}

void handleNotFound(){
Serial.println("Alamat web tidak ada");
server.send(404, "text/plain", "Alamat web tidak ketemu");
}
String tampilkanHTML (){
String ptr = "<!DOCTYPE html> <html>\n";
ptr +="<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0,
user-scalable=no\">\n";
ptr +="<title>Mengontrol LED</title>\n";
ptr +="<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-
align: center;}\n";
ptr +="body{margin-top: 50px;} h1 {color: #444444;margin: 50px auto 30px;} h3 {color:
#444444;margin-bottom: 50px;}\n";
ptr +=".button {display: block;width: 80px;background-color: #1abc9c;border: none;color:
white;padding: 13px 30px;text-decoration: none;font-size: 25px;margin: 0px auto
35px;cursor: pointer;border-radius: 4px;}\n";
ptr +=".button-on {background-color: #1abc9c;}\n";
ptr +=".button-on:active {background-color: #16a085;}\n";
ptr +=".button-off {background-color: #34495e;}\n";
ptr +=".button-off:active {background-color: #2c3e50;}\n";
ptr +="p {font-size: 14px;color: #888;margin-bottom: 10px;}\n";
ptr +="</style>\n";
ptr +="</head>\n";
ptr +="<body>\n";
ptr +="<h1>ESP8266 Web Server</h1>\n";
ptr +="<h3>Menggunakan Mode Station (STA)</h3>\n";
if(LEDStatus){
{ptr +="<p>Status LED: ON</p><a class=\"button button-off\"
href=\"/ledoff\">OFF</a>\n";}
}else{
{ptr +="<p>Status LED: OFF</p><a class=\"button button-on\" href=\"/ledon\">ON</a>\
n";}
}
ptr +="</body>\n";
ptr +="</html>\n";

return ptr;
}

void loop() {
server.handleClient();
digitalWrite(13, LEDStatus);

// digitalWrite(13, HIGH);
// // turn the LED on
// delay(1000);
// digitalWrite(13, LOW);
// // turn the LED off
// delay(1000);
}
17. Hasil

NodeMCU sebagai Acces Point


Access point tidak memiliki IP DHCP, jadi IP nya harus di static / manual
1. Masukkan kode, aku tanda hijau sebagai pembeda dari kode sebelumnya kalo ini
nodemcu sebagai acces point :

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>

const char* ssid = "Nodemcu_hannadistee";


const char* password = "hannaf123";

IPAddress local_ip(192,168,1,1);
IPAddress gateway (192, 168, 1, 1);
IPAddress subnet (255, 255, 255, 0);

ESP8266WebServer server(80);

int led = 16;


bool LEDStatus = LOW;

void setup() {
//sebagai access point
Serial.begin(115200);
WiFi.softAP(ssid, password);
WiFi.softAPConfig(local_ip, gateway, subnet);

Serial.println("");
Serial.println("terkoneksi dengan API");

Serial.print("http://");
Serial.print(WiFi.localIP());
Serial.println("/");

//Kode untuk mengaktifkan server


server.on("/", handleOnConnect);
server.on("/ledon", handleLedOn);
server.on("/ledoff", handleLedOff);
server.onNotFound(handleNotFound);
server.begin();
Serial.println("Servis web server dimulai");

// initialize digital pin 13 as an output.


pinMode(13, OUTPUT);
}

void handleOnConnect(){
LEDStatus = LOW;
Serial.println("web root");
server.send(200, "text/html", tampilkanHTML());
}

void handleLedOn(){
LEDStatus = HIGH;
Serial.println("LED menyala!");
server.send(200, "text/html",tampilkanHTML());
}

void handleLedOff(){
LEDStatus = LOW;
Serial.println("LED mati");
server.send(200, "text/html", tampilkanHTML());
}

void handleNotFound(){
Serial.println("Alamat web tidak ada");
server.send(404, "text/plain", "Alamat web tidak ketemu");
}

String tampilkanHTML (){


String ptr = "<!DOCTYPE html> <html>\n";
ptr +="<head><meta name=\"viewport\" content=\"width=device-width, initial-
scale=1.0, user-scalable=no\">\n";
ptr +="<title>Mengontrol LED</title>\n";
ptr +="<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto;
text-align: center;}\n";
ptr +="body{margin-top: 50px;} h1 {color: #444444;margin: 50px auto 30px;} h3
{color: #444444;margin-bottom: 50px;}\n";
ptr +=".button {display: block;width: 80px;background-color: #1abc9c;border:
none;color: white;padding: 13px 30px;text-decoration: none;font-size: 25px;margin: 0px
auto 35px;cursor: pointer;border-radius: 4px;}\n";
ptr +=".button-on {background-color: #1abc9c;}\n";
ptr +=".button-on:active {background-color: #16a085;}\n";
ptr +=".button-off {background-color: #34495e;}\n";
ptr +=".button-off:active {background-color: #2c3e50;}\n";
ptr +="p {font-size: 14px;color: #888;margin-bottom: 10px;}\n";
ptr +="</style>\n";
ptr +="</head>\n";
ptr +="<body>\n";
ptr +="<h1>ESP8266 Web Server</h1>\n";
ptr +="<h3>Menggunakan Mode Station (STA)</h3>\n";
if(LEDStatus){
{ptr +="<p>Status LED: ON</p><a class=\"button button-off\"
href=\"/ledoff\">OFF</a>\n";}
}else{
{ptr +="<p>Status LED: OFF</p><a class=\"button button-on\"
href=\"/ledon\">ON</a>\n";}
}
ptr +="</body>\n";
ptr +="</html>\n";

return ptr;
}

void loop() {
server.handleClient();
digitalWrite(13, LEDStatus);

// digitalWrite(13, HIGH);
// // turn the LED on
// delay(1000);
// digitalWrite(13, LOW);
// // turn the LED off
// delay(1000);
}

2. Hasil
TAMBAH 2 LED
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>

const char* ssid = "Nodemcu_hannadistee";


const char* password = "hannaf123";

IPAddress local_ip(192,168,1,1);
IPAddress gateway (192, 168, 1, 1);
IPAddress subnet (255, 255, 255, 0);

ESP8266WebServer server(80);

int led1 = 16;


int led2 = 13;
bool LED1Status = LOW;
bool LED2Status = LOW;
void setup() {
Serial.begin(115200);
WiFi.softAP(ssid, password);
WiFi.softAPConfig(local_ip, gateway, subnet);

Serial.println("Memulai layanan akses point...");

server.on("/", handleOnConnect);
server.on("/led1-on", handleLed1On);
server.on("/led1-off", handleLed1Off);
server.on("/led2-on", handleLed2On);
server.on("/led2-off", handleLed2Off);
server.onNotFound(handleNotFound);

server.begin();
Serial.println("Web Service dimulai!");

pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
}

void handleOnConnect() {
Serial.println("Web root");
LED1Status = LOW;
LED2Status = LOW;
server.send(200, "text/html", tampilkanHTML());
}

void handleLed1On() {
Serial.println("LED menyala!");
LED1Status = HIGH;
server.send(200, "text/html", tampilkanHTML());
}

void handleLed1Off() {
Serial.println("LED mati!");
LED1Status = LOW;
server.send(200, "text/html", tampilkanHTML());
}

void handleLed2On() {
Serial.println("LED menyala!");
LED2Status = HIGH;
server.send(200, "text/html", tampilkanHTML());
}

void handleLed2Off() {
Serial.println("LED mati!");
LED2Status = LOW;
server.send(200, "text/html", tampilkanHTML());
}

void handleNotFound() {
Serial.println("Alamat tidak ditemukan!");
server.send(404, "text/plain", "Address is Not Found");
}

String tampilkanHTML() {
String ptr = "<!DOCTYPE html> <html>\n";
ptr +="<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0,
user-scalable=no\">\n";
ptr +="<title>Mengontrol LED</title>\n";
ptr +="<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-
align: center;}\n";
ptr +="body{margin-top: 50px;} h1 {color: #444444;margin: 50px auto 30px;} h3 {color:
#444444;margin-bottom: 50px;}\n";
ptr +=".button {display: block;width: 80px;background-color: #1abc9c;border: none;color:
white;padding: 13px 30px;text-decoration: none;font-size: 25px;margin: 0px auto
35px;cursor: pointer;border-radius: 4px;}\n";
ptr +=".button-on {background-color: #1abc9c;}\n";
ptr +=".button-on:active {background-color: #16a085;}\n";
ptr +=".button-off {background-color: #34495e;}\n";
ptr +=".button-off:active {background-color: #2c3e50;}\n";
ptr +="p {font-size: 14px;color: #888;margin-bottom: 10px;}\n";
ptr +="</style>\n";
ptr +="</head>\n";
ptr +="<body>\n";
ptr +="<h1>ESP8266 Web Server</h1>\n";
ptr +="<h3>Menggunakan Mode Station (STA)</h3>\n";
if(LED1Status){
{ptr +="<p>Status LED 1: ON</p><a class=\"button button-off\" href=\"/led1-
off\">OFF</a>\n";}
}else{
{ptr +="<p>Status LED 1: OFF</p><a class=\"button button-on\" href=\"/led1-
on\">ON</a>\n";}
}

if(LED2Status){
{ptr +="<p>Status LED 2: ON</p><a class=\"button button-off\" href=\"/led2-
off\">OFF</a>\n";}
}else{
{ptr +="<p>Status LED 2: OFF</p><a class=\"button button-on\" href=\"/led2-
on\">ON</a>\n";}
}
ptr +="</body>\n";
ptr +="</html>\n";
return ptr;
}

void loop() {
server.handleClient();
digitalWrite(led1, LED1Status);
digitalWrite(led2, LED2Status);
}

HASIL

Anda mungkin juga menyukai