UNIVERSITAS GUNADARMA
1 TUJUAN
▪ Pengenalan Mikrokontroler ESP8266 NodeMCU V3 dan WeMos
D1/R2
▪ Pengenalan WebSocket
▪ Pengenalan SPIFFS (LittleFS)
▪ Mengetahui cara kerja kendali PWM menggunakan web server
(WebSocket) melalui NodeMCU V3 atau WeMos D1 R1
▪ Mengimplementasikan NodeMCU V3 atau WeMos D1 R1 dalam
mengontrol robot melalui web server (WebSocket)
2 PERSIAPAN
▪ Aplikasi Proteus dan Arduino IDE
▪ Library Board Manager ESP8266
▪ Library Arduino JSON
▪ Library ESPAsyncWebServer dan ESPAsyncTCP
▪ Plugin LittleFS
3 PERALATAN PRAKTIKUM
▪ NodeMCU V3 atau WeMos D1 R1
▪ Micro USB
▪ Motor Servo
▪ Protoboard
▪ Skematik Rangkaian
▪ DC Supply 5V (Adaptor / Baterai)
P r a k t i k u m R o b o t i k a | 53
3.1 Pengenal Robot Web
Robot web merupakan robot yang dikendalikan menggunakan web yang
melalui media transmisi wifi terhubung ke suatu jaringan untuk mengendalikan
suatu device. Robot web dikendalikan menggunakan HTML sebagai kontrol. Untuk
board yang digunakan pada device robot ini adalah board WeMos D1 R2 / WeMos
D1 R1 / NodeMCU V3.
P r a k t i k u m R o b o t i k a | 54
Gambar 3.2 Konfigurasi Pin NodeMCU V3
P r a k t i k u m R o b o t i k a | 55
Tabel 3.1 Konfigurasi Pin NodeMCU
Pin Keterangan
VIN Tegangan masuk 5V
MicroUSB Socket Catu daya 3.3V
GND Ground
RX Receiver
TX Transmitter
RST Pin untuk mereset/restart NodeMCU
ADC Analog Digital Converter.
EN Enable chip
MISO Slave Output dan Main Input
MOSI Main Output dan Slave Input
SCLK Clock
GPIO Pin Input dan Output
Digunakan untuk membangunkan chip dari
WAKE
deep-sleep.
CS Chip Selection
P r a k t i k u m R o b o t i k a | 56
cepat dari Arduino yang hanya menggunakan prosesor 8-bit, mendukung High
Level Language, dapat diprogram juga menggunakan bahasa Phyton dan Lua.
P r a k t i k u m R o b o t i k a | 57
Tabel 3.3 Perbedaan Arduino Uno R3 dan ESP8266
P r a k t i k u m R o b o t i k a | 58
3.2.5 Hubungan Antara Servo dengan PWM
Sebuah motor servo dikendalikan dengan memberikan sinyal modulasi lebar
pulsa (PWM) melalui kabel kontrol. Lebar pulsa sinyal kontrol yang diberikan akan
menentukan posisi sudut putaran dari poros motor servo. Sebagai contoh, lebar
pulsa dengan waktu 1,5 ms (mili detik) akan memutar poros motor servo ke posisi
sudut 90⁰. Bila pulsa lebih pendek dari 1,5 ms maka akan berputar ke arah posisi 0⁰
atau ke kiri (berlawanan dengan arah jarum jam), sedangkan bila pulsa yang
diberikan lebih lama dari 1,5 ms maka poros motor servo akan berputar ke arah
posisi 180⁰ atau ke kanan (searah jarum jam). Lebih jelasnya perhatikan gambar
dibawah ini
Ketika lebar pulsa kendali telah diberikan, maka poros motor servo akan
bergerakatau berputar ke posisi yang telah diperintahkan, dan berhenti pada posisi
tersebut dan akan tetap bertahan pada posisi tersebut. Jika ada kekuatan eksternal
yang mencobamemutar atau mengubah posisi tersebut, maka motor servo akan
mencoba menahan atau melawan dengan besarnya kekuatan torsi yang dimilikinya
(rating torsi servo).
P r a k t i k u m R o b o t i k a | 59
Tabel 3.4 Konfigurasi Pin Motor Servo
Pin Keterangan
Cokelat Ground
P r a k t i k u m R o b o t i k a | 60
3.3.2 Cara Kerja WebSocket
Berikut cara kerja WebSocket:
1. ESP meng-hosting Server web yang menampilkan halaman web dengan
sebuah slider.
2. Saat posisi baru slider ditetapkan, Client mengirimkan nomor slider dan
nilai slider ke Server melalui protokol WebSocket. Misalnya, jika Anda
mengatur slider ke posisi nomor 40 maka, Client akan mengirim pesan
bernilai 3s40 ke Server.
3. Server (ESP) menerima nomor slider serta nilai yang sesuai dan
menyesuaikan siklus kerja PWM pada MCU. Selain itu, Server juga
memberi tahu semua Client lain dengan nilai slider baru saat ini. Hal ini
memungkinkan untuk memperbarui semua Client hampir secara instan.
P r a k t i k u m R o b o t i k a | 61
4. ESP8266 mengeluarkan sinyal PWM dengan siklus kerja yang sesuai untuk
mengontrol kecerahan LED. Siklus kerja 0% berarti LED mati, siklus kerja
50% berarti LED redup, dan siklus kerja 100% berarti LED menyala terang.
5. Setiap kali jendela web browser baru dibuka (saat Client baru terhubung),
Client akan mengirim pesan ke ESP8266 (juga melalui protokol
WebSocket) denganpesan getValues. Ketika mendapatkan pesan ini
ESP8266 akan mengirimkan nilai slider saat itu juga. Dengan cara ini, setiap
kali tab baru dibuka, halaman webselalu menunjukkan nilai saat itu juga
yang terus diperbarui (realtime).
P r a k t i k u m R o b o t i k a | 62
- Membuat file untuk menyimpan sejumlah kecil data daripada menggunakan
kartu microSD
- Menyimpan file HTML, CSS, dan JavaScript untuk membangun server web
- Menyimpan gambar-gambar dan ikon
Sebelumnya halaman HTML perlu diketik menjadi satu pada Arduino IDE
yang akan memakan banyak memori dan menyulitkan pembacaan kode. Dengan
LittleFS kode-kode halaman web (html, css, dan js) yang dibuat dapat
dikelompokkan berdasarkan jenisnya masing-masing ke dalam bentuk folder
sehingga dapat mengurangi error kode.
http://arduino.esp8266.com/stable/package_esp8266com_index.json
P r a k t i k u m R o b o t i k a | 63
3.5.2 Library Arduino JSON
Proses instalasi library Arduino JSON:
1. Pada Arduino IDE, buka tab Tools > Manage Libraries
2. Setelah Pop Up muncul, ketik “Arduino_JSON” pada kolom “Filter your
search...”
3. Pilih library yang dirancang oleh Arduino, klik instal.
4. Tunggu beberapa saat sampai muncul tanda “INSTALLED” dan library
dapat digunakan.
P r a k t i k u m R o b o t i k a | 64
Gambar 3.13 Directory Instalasi LittleFS
4. Buka atau restart Arduino IDE (jika Arduino IDE dibuka saat menginstall
LittleFS)
5. Cek apakah sudah terdapat ESP8266 LittleFS Data Upload seperti gambar
dibawah ini (Arduino IDE > Tools > ESP8266 LittleFS Data Upload).
P r a k t i k u m R o b o t i k a | 65
PERCOBAAN 3.1
PENYUSUNAN RANGKAIAN ROBOT WEB
Langkah Kerja:
Rangkailah Robot Web berdasarkan skematik dengan komponen yang
dimiliki.
Skematik Rangkaian
➢ NodeMCU V3
➢ WeMos D1 R1
P r a k t i k u m R o b o t i k a | 66
PERCOBAAN 3.2
PEMROGRAMAN ARDUINO IDE ROBOT WEB
Langkah Kerja:
1. Pastikan robot telah terangkai sesuai dengan skematik yang diberikan
2. Hubungkan mikrokontroler dengan komputer menggunakan kabel MicroUSB
3. Buka aplikasi Arduino IDE
4. Ketikan program dibawah ini Program
Program
#include<ESP8266WiFi.h>
#include<ESPAsyncTCP.h>
#include<ESPAsyncWebServer.h>
#include "LittleFS.h"
#include <Arduino_JSON.h>
#include <Servo.h>
#define base_servo_pin D3
#define wifi_no_led D8
Servo base_servo;
P r a k t i k u m R o b o t i k a | 67
// Menyiapkan variabel-variabel sudut servo
int base_servo_angle = 0;
// Inisialisasi LittleFS
void initFS(){
if (!LittleFS.begin()){
Serial.println("An error has occurred while mounting LittleFS");
}
else{
Serial.println("LittleFS mounted successfully");
}
}
// Inisialisasi WiFi
void initWiFi(){
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
Serial.print("Connecting to WiFi ..");
}
P r a k t i k u m R o b o t i k a | 68
void notifyClients(String sliderValues){
ws.textAll(sliderValues);
}
P r a k t i k u m R o b o t i k a | 69