Anda di halaman 1dari 14

PRAKTIKUM MIKROPROSESSOR DAN

MIKROKONTROLLER

“Interface Wireless-WiFi”

DISUSUN OLEH:
MELISA
42220011
3A TRJT

PROGRAM STUDI D4 TEKNOLOGI REKAYASA JARINGAN


TELEKOMUNIKASI

JURUSAN TEKNIK ELEKTRO

POLITEKNIK NEGERI UJUNG PANDANG


Modul 9 Interface Wireless-WiFi

1. Tujuan
- Indentifikasi modul wifi esp8266
- Konfigurasi modul wifi esp8266 webserver mode station
- Konfigurasi modul wifi esp8266 webserver mode access point
- Membuat program aplikasi modul wifi esp8266

2. Dasar Teori
2.1 Wifi
Wi-Fi (Wireless Fidelity) adalah jaringan area lokal nirkabel yang memungkinkan
perangkat komputasi portabel untuk terhubung dengan mudah ke Internet berdasarkan standar
IEEE 802.11 a, b, g, n. Wi-Fi merupakan salah satu varian teknologi komunikasi dan
informasi yang bekerja pada jaringan dan perangkat WLAN (wireless local area network).
Teknologi internet berbasis Wi-Fi dibuat dan dikembangkan sekelompok engineer Amerika
Serikat yang bekerja pada Institute of Electrical and Electronis Engineers (IEEE) berdasarkan
standar teknis perangkat bernomor 802.11b, 802.11a dan 802.16. Perangkat Wi-Fi
sebenarnya tidak hanya mampu bekerja di jaringan WLAN, tetapi juga di jaringan Wireless
Metropolitan Area Network (WMAN). Karena perangkat dengan standar teknis 802.11b
diperuntukkan bagi perangkat WLAN yang digunakan di frekuensi 2,4 GHz atau yang lazim
disebut frekuensi ISM (Industrial, Scientific dan Medical). Sedang untuk perangkat yang
berstandar teknis 802.11a dan 802.16 diperuntukkan bagi perangkat WMAN atau juga
disebut Wi-Max, yang bekerja di sekitar pita frekuensi 5 GHz.
2.2. ESP8266
ESP8266 merupakan modul wifi yang berfungsi sebagai perangkat tambahan
mikrokontroler seperti Arduino agar dapat terhubung langsung dengan wifi dan membuat
koneksi TCP/IP. Modul ini membutuhkan daya sekitar 3.3v dengan tiga mode wifi yaitu
Station, Access Point dan Both (keduanya). Modul ini juga dilengkapi dengan prosesor,
memori dan GPIO dimana jumlah pin bergantung dengan jenis ESP8266 yang digunakan.
Sehingga modul ini bisa berdiri sendiri tanpa menggunakan mikrokontroler apapun karena
sudah memiliki perlengkapan layaknya mikrokontroler.
Firmware default yang digunakan oleh perangkat ini menggunakan AT Command,
selain itu ada beberapa Firmware SDK yang digunakan oleh perangkat ini berbasis
opensource yang diantaranya adalah sebagai berikut:
• NodeMCU dengan menggunakan basic programming lua
• MicroPython dengan menggunakan basic programming python
• AT Command dengan menggunakan perintah perintah AT command

Gambar 2.8 Diagram pin input-output Esp8266-12E

Pemrograman modul wifi ini dapat menggunakan ESPlorer untuk Firmware berbasis
NodeMCU dan menggunakan putty sebagai terminal control untuk AT Command. Selain itu,
program perangkat ini juga dapat menggunakan Arduino IDE. dengan menambahkan library
ESP8266 pada board manager dengan basic program arduino.
2.2.1. Daya/Power
ESP8266 menggunakan standar tegangan JEDEC (tegangan 3.3V) untuk bisa
berfungsi. Tidak seperti mikrokontroler AVR dan sebagian besar board Arduino yang
memiliki tegangan TTL 5 volt. Meskipun begitu, nodeMCU masih bisa terhubung dengan 5V
namun melalui port micro USB atau pin Vin pada board-nya. Namun karena semua pin pada
ESP8266 tidak toleran terhadap masukan 5V. Maka tidak disarankan mencatunya langsung
dengan tegangan TTL jika tidak ingin merusak boardnya. Sehingga diperlukan Level Logic
Converter untuk mengubah tegangan ke nilai aman 3.3v.
2.2.2. Memori
Esp8266E yang memiliki prosesor 32 bit. Sedangkan Arduino UNO berintikan AVR
8 bit. Board berbasis ESP8266 memiliki spesifikasi yang sama yaitu:
• A 32 bit RISC CPU running at 80MHz
• 64Kb of instruction RAM and 96Kb of data RAM
• 4MB flash memory
2.2.3. Input dan Output
ESP8266 dikembangkan oleh Espressif, pengembang asal negeri tiongkok. Produk
sen ESP8266 memiliki banyak varian seperti ESP8266 ESP-01, ESP-07, dan ESP-12,
termasuk ESP-12E. ESP8266 ini adalah sebuah system-on-a-chip (SoC) yang memiliki
kemampuan untuk 2.4 GHz Wi-Fi, 16 GPIO (general-purpose input/output), PC (Inter-
Integrated Circuit), 10-bit ADC (analog-to-digital conversion), SPI (Serial Peripheral
Interface), UART dan PWM (pulse-width modulation) sehingga menjadi pilihan perangkat
pada pengembangan IoT.
2.2.4. Pemrograman
ESP8266 dapat diprogram dengan software Arduino IDE. IDE merupakan
kependekan dari Integrated Developtment Enviroenment, atau secara bahasa merupakan
Enviroenment terintegrasi yang digunakan untuk melakukan pengembangan. Disebut sebagai
Enviroenmen karena melalui software inilah dilakukan pemrograman Arduino untuk
melakukan fungsi-fungsi yang dibenamkan melalui sintaks pemrograman. Arduino
menggunakan bahasa pemrograman sendiri yang menyerupai bahasa C. Bahasa pemrograman
Arduino (Sketch) sudah disederhanakan untuk memudahkan pemula dalam melakukan
pemrograman dari bahasa aslinya. Sebelum dijual ke pasaran, IC mikrokontroler Arduino
telah ditanamkan suatu program bemama Bootlader yang berfungsi sebagai penengah
antara compiler Arduino dengan mikrokontroler.
Arduino IDE dibuat dari bahasa pemrograman JAVA. Arduino IDE juga dilengkapi
dengan library CIC++ yang biasa disebut Wiring yang membuat operasi input dan output
menjadi lebih mudah. Arduino IDE ini dikembangkan dari software Processing yang
dirombak menjadi Arduino IDE khusus untuk pemrograman dengan Arduino.Program yang
ditulis dengan menggunaan Arduino Software (IDE) disebut sebagai sketch. Sketch ditulis
dalam suatu editor teks dan disimpan dalam file dengan ekstensi .ino. Teks editor pada
Arduino Software memiliki fitur" seperti cutting/paste dan searching/replacing sehingga
memudahkan dalam menulis kode program.
III. Data Percobaan dan Analisis
Percobaan 1
Memasukkan program ke dalam aplikasi Arduino Uno dan menyambungkan WiFi
menggunakan kabel USB.
Input Program
Masukkan program
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>

/*Put your SSID & Password*/


const char* ssid = "PNUP HOTSPOT"; // Enter SSID here
const char* password = ""; //Enter Password here

ESP8266WebServer server(80);

uint8_t LED1pin = 2;
bool LED1status = LOW;

uint8_t LED2pin = D6;


bool LED2status = LOW;

void setup() {
Serial.begin(115200);
delay(100);
pinMode(LED1pin, OUTPUT);
pinMode(LED2pin, OUTPUT);

Serial.println("Connecting to ");
Serial.println(ssid);

//connect to your local wi-fi network


WiFi.begin(ssid, password);

//check wi-fi is connected to wi-fi network


while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected..!");
Serial.print("Got IP: "); Serial.println(WiFi.localIP());

server.on("/", handle_OnConnect);
server.on("/led1on", handle_led1on);
server.on("/led1off", handle_led1off);
server.on("/led2on", handle_led2on);
server.on("/led2off", handle_led2off);
server.onNotFound(handle_NotFound);

server.begin();
Serial.println("HTTP server started");
}
void loop() {
server.handleClient();
if(LED1status)
{digitalWrite(LED1pin, HIGH);}
else
{digitalWrite(LED1pin, LOW);}

if(LED2status)
{digitalWrite(LED2pin, HIGH);}
else
{digitalWrite(LED2pin, LOW);}
}

void handle_OnConnect() {
LED1status = LOW;
LED2status = LOW;
Serial.println("GPIO7 Status: OFF | GPIO6 Status: OFF");
server.send(200, "text/html", SendHTML(LED1status,LED2status));
}

void handle_led1on() {
LED1status = HIGH;
Serial.println("GPIO7 Status: ON");
server.send(200, "text/html", SendHTML(true,LED2status));
}

void handle_led1off() {
LED1status = LOW;
Serial.println("GPIO7 Status: OFF");
server.send(200, "text/html", SendHTML(false,LED2status));
}

void handle_led2on() {
LED2status = HIGH;
Serial.println("GPIO6 Status: ON");
server.send(200, "text/html", SendHTML(LED1status,true));
}

void handle_led2off() {
LED2status = LOW;
Serial.println("GPIO6 Status: OFF");
server.send(200, "text/html", SendHTML(LED1status,false));
}

void handle_NotFound(){
server.send(404, "text/plain", "Not found");
}

String SendHTML(uint8_t led1stat,uint8_t led2stat){


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>LED Control</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>RINDIANI </h1>\n";
ptr +="<h1>42220002 </h1>\n";
ptr +="<h3>TRJT 3 A </h3>\n";

if(led1stat)
{ptr +="<p>LED1 Status: ON</p><a class=\"button button-off\" href=\"/led1off\">OFF</a>\n";}
else
{ptr +="<p>LED1 Status: OFF</p><a class=\"button button-on\" href=\"/led1on\">ON</a>\n";}

if(led2stat)
{ptr +="<p>LED2 Status: ON</p><a class=\"button button-off\" href=\"/led2off\">OFF</a>\n";}
else
{ptr +="<p>LED2 Status: OFF</p><a class=\"button button-on\" href=\"/led2on\">ON</a>\n";}

ptr +="</body>\n";
ptr +="</html>\n";
return ptr;
}
Output
Melakukan Pengetesan

- Keadaan LED1 ON dan LED2 ON

- Keadaan LED1 OFF dan LED2 ON

- Keadaan LED1 ON dan LED2 OFF


- Keadaan LED1 OFF dan LED2 OFF

Analisis :
Pada Percobaan 1 kita Memasukkan program ke dalam aplikasi Arduino Uno dan
menyambungkan WiFi menggunakan kabel USB,Setelah itu kita mengubah bagian <h1>
menjadi Nama “Melisa” dan <h3> menjadi Nim “42220011”.lalu menghubungkan WeMos D1
atau WiFi ke labtop menggunakan kabel USB.
Apabila sudah Tersambung selanjutnya mengupload program yang telah dibuat di
Arduino Uno dan dilanjuti dengan membuka COM6 pada Arduino Uno untuk mengecek apakah
WiFi telah tersambung atau tidak. Jika Wifi telah tersambung maka Got IP : 10.43.159 kita
salin dan membuka Google Chrome lalu memasukkan Got IP yang telah di salin kemudian akan
muncul Nama dan Nim yang telah kita ubah tadi. Kita juga bisa melihat keadaan LED1 dan
LES2. Dimana kaki led yang digunakan yaitu pada kaki led yang panjang di masukkan ke D6
dan kaki led yang pendek ke GND. Dapat dilihat data percobaan Pengetesan diatas. LED akan
menyala apabila keadaan LED1 ON dan LED2 OFF, LED1 dan LED2 OFF.Sedangkan jika
LED1 dan LED2 ON maka LED dalam keadaan mati sama halnya pada saat LED1 OFF dan
LED2 ON
Percobaan 2
Input Program
#include <ESP8266WiFi.h>
#include <PubSubClient.h>

// Update these with values suitable for your network.

const char* ssid = "PNUP HOTSPOT";


const char* password = "";
const char* mqtt_server = "broker.hivemq.com";

WiFiClient espClient;
PubSubClient client(espClient);
unsigned long lastMsg = 0;
#define MSG_BUFFER_SIZE (50)
char msg[MSG_BUFFER_SIZE];
int value = 0;

void setup_wifi() {

delay(10);
// We start by connecting to a WiFi network
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);

WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);

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


delay(500);
Serial.print(".");
}

randomSeed(micros());

Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}

void callback(char* topic, byte* payload, unsigned int length) {


Serial.print("Message arrived [");
Serial.print(topic);
Serial.print("] ");
for (int i = 0; i < length; i++) {
Serial.print((char)payload[i]);
}
Serial.println();

// Switch on the LED if an 1 was received as first character


if ((char)payload[0] == '1') {
digitalWrite(BUILTIN_LED, LOW); // Turn the LED on (Note that LOW is the voltage
level
// but actually the LED is on; this is because
// it is active low on the ESP-01)
} else {
digitalWrite(BUILTIN_LED, HIGH); // Turn the LED off by making the voltage HIGH
}

void reconnect() {
// Loop until we're reconnected
while (!client.connected()) {
Serial.print("Attempting MQTT connection...");
// Create a random client ID
String clientId = "ESP8266Client-";
clientId += String(random(0xffff), HEX);
// Attempt to connect
if (client.connect(clientId.c_str())) {
Serial.println("connected");
// Once connected, publish an announcement...
client.publish("outTopic", "hello world");
// ... and resubscribe
client.subscribe("inTopicTrjt");
} else {

Serial.print("failed, rc=");
Serial.print(client.state());
Serial.println(" try again in 5 seconds");
// Wait 5 seconds before retrying
delay(5000);
}
}
}

void setup() {
pinMode(BUILTIN_LED, OUTPUT); // Initialize the BUILTIN_LED pin as an output
Serial.begin(115200);
setup_wifi();
client.setServer(mqtt_server, 1883);
client.setCallback(callback);
}
void loop() {

if (!client.connected()) {
reconnect();
}
client.loop();
unsigned long now = millis();
if (now - lastMsg > 2000) {
lastMsg = now;
++value;
snprintf (msg, MSG_BUFFER_SIZE, "hello world #%ld", value);
Serial.print("Publish message: ");
Serial.println(msg);
client.publish("outTopicTrjt", msg);
}
}
Output
- Keadaan Wi-fi OFF pada Aplikasi MQTT Dash

- Keadaan Wi-fi ON pada Aplikasi MQTT Dash


Analisis :
Pada Percobaan 2 kita Memasukkan program ke dalam aplikasi Arduino Uno dan
menyambungkan WiFi menggunakan kabel USB dan aplikasi MQTT Dash.
Pertama Kita memasukkan program ke dalam aplikasi Arduino Uno, memberi nama
pada (msg,MSG_BUFFER_SIZE, “hello world #%ld”, value), kemudian mengupload program
tersebut sampai programnya dinyatakan sukses dan dilanjuti dengan membuka COM9 pada
Arduino Uno untuk mengecek apakah telah terhubung atau tidak. Output dari Program :

 Connection: trjt

 Subscribe: outTopicTrjt

 Publish: inTopicTrjt
Kita juga di minta untuk mendownload aplikasi “MQTT Dash” untuk melihat keadaan
pada Wifi yang dihubungkan menggunakan kabel USB. Dimana pada aplikasi yang telah
didownload akan muncul tampilan yaitu: Trjt dan hello world#1501 menandakan bahwa
aplikasi dan program tersebut telah terhubung. Kemuadian kita melakukan pengetesan
pada WiFi yaitu :
- Keadaan Wifi (OFF) pada aplikasi MQTT Dash
Jika kita ingin memastikan bahwa jika kita memencet tombol (OFF) maka Led pada
Wifi tidak menyala atau dalam keadaan mati.
- Keadaan Wifi (ON) pada aplikasi MQTT Dash
Jika kita ingin memastikan bahwa jika kita memencet tombol (ON) pada aplikasi maka
Led pada Wifi dalam keadaan menyala.
IV. Kesimpulan
Dari Hasil Praktikum dengan judul Interface Wireless-WiFi, Dapat disimpulkan bahwa :

 Wireless adalah Koneksi tanpa kabel (koneksi nirkabel) sambungan antar perangkat
tanpa menggunakan media fisik seperti kabel tembaga maupun kabel optik. Sebagai
gantinya, digunakan gelombang radio seperti WiFi. Wi-Fi (Wireless Fidelity) adalah
koneksi tanpa kabel seperti handphone dengan mempergunakan teknologi radio
sehingga pemakainya dapat mentransfer data dengan cepat.

 Aplikasi “MQTT Dash” digunakan mengirimkan data publish dan menerima data
subscribe secara bergantian dengan topik yang berbeda. Sebagai contoh, saat ada
penekanan tombol lampu/led pada Aplikasi MQTT-Dash, maka smartphone akan
mengirimkan data publish “1” dengan topik “/esp/lampu”, untuk menghidupkan lampu
LED.

 Respon LED Jika nilainya 0 maka akan menyala dan jika nilainya 1 maka akan mati.

Anda mungkin juga menyukai