Node MCU
Node MCU
2 (Lolin)
13.1 Tujuan
1. Mahasiswa mamahami tentang Arduino UNO dan dasar-dasar Arduino Ethernet
shield.
2. Mahasiswa mampelajari cara mengendalikan perangkat dari Protocol Internet.
3. Mahasiswa mempelajari cara membangun web server sederhana untuk menangani
permintaan klien dan mengontrol LED.
4. Mahasiswa memahami dan mengembangkan user friendly UI (User Interface)
dengan HTML (Text Hyper Markup Language) dan CSS (Cascade Style Sheet)
13.2 Peralatan
1. Sebuah Komputer
2. Satu set trainer mikrokontroler
NodeMCU Dev Dewan berdasarkan esp8266 Sistem luas dieksplorasi on Chip dari
Expressif. Ini gabungan fitur WIFI accesspoint dan stasiun + mikrokontroler dan
menggunakan bahasa pemrograman berbasis LUA sederhana. Spesifikasi ESP8266
NodeMCU :
195
Gambar 13.1 NodeMCU v.3 (Lolin)
Pada gambar 13.2 dijelaskan tentang bagaimana penggunaan pin/port program ESP-
12E NodeMCU menggunakan IDE Arduino.
Catatan :
196
Gambar 13.2 Pin Mapping NodeMCU v.3 VS Arduino
1. Installing Arduino core for NodeMCU ESP-12E using Arduino Boards Manager.
Kunjungi https://github.com/esp8266/Arduino.
197
Seperti yang ditunjukkan pada gambar, Salin link .json dengan rilis stabil terbaru
dari paket NodeMCU.
Salin bagian Boards manager link:
http://arduino.esp8266.com/stable/package_esp8266com_i
ndex.json
198
Gambar 13.4 Daftar Board Manager
Mencari board ESP8266 dengan memasukkan kata kunci “esp8266”.
199
Gambar 13.6 Proses instalasi Board ESP8266
Gambar 13.7 Seleksi Board yang sesuai NodeMCU 1.0 (ESP-12E Module)
200
Rangkaian :
Kode program :
void setup() {
// 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);
}
201
Konfigurasi perangkat NodeMCU dengan komputer OS Windows
202
Percobaan 1 ini hanya akan menguji perintah sederhana pada NodeMCU, dan coba
bandingkan dengan arduino, apakah sama atau beda dari segi kode dan cara kerjanya ?
Jika sudah merasakan persamaan tersebut akan sangat baik jika kita bisa mempunyai opsi
lain selain arduino dan kita bisa menentukan alat yang tepat untuk digunakan pada kasus
yang tepat pula.
Pada percobaan 2 akan memanfaatkan koneksi lewat wifi dengan arduino, dengan
memanfaatkan SSID jaringan wifi untuk koneksi.
Kode Program :
#include <ESP8266WiFi.h>
const char* ssid = "Full 24 Jam";
const char* password = "[password]";
WiFiServer server(80);
void setup() {
Serial.begin(115200
); delay(10);
pinMode(5, OUTPUT);
pinMode(4, OUTPUT);
pinMode(0, OUTPUT);
pinMode(13, OUTPUT);
digitalWrite(5,
LOW);
digitalWrite(4,
LOW);
digitalWrite(0,
LOW);
digitalWrite(13,
LOW);
203
Serial.println();
Serial.println();
Serial.print("Connecting to
"); Serial.println(ssid);
WiFi.begin(ssid, password);
void loop() {
// Check if a client has connected
WiFiClient client =
server.available(); if (!client) {
return;
}
204
client.readStringUntil('\r');
Serial.println(request);
client.flush();
205
app- status-bar-style' content='black-
translucent' />");
client.println("</head>"
);
client.println("<body bgcolor =
\"#f7e6ec\">");
client.println("<hr/><hr>");
client.println("<h4><center> Esp8266
Electrical
Device Control
</center></h4>");
client.println("<hr/><hr>")
;
client.println("<br><br>");
client.println("<br><br>");
client.println("<center>");
client.println("Device 1");
client.println("<a
href=\"/light1on\"\"><button>Turn On </button></a>");
client.println("<a
href=\"/light1off\"\"><button>Turn
Off
</button></a><br />");
client.println("</center>"
);
client.println("<br><br>")
;
client.println("<center>")
; client.println("Device
2"); client.println("<a
href=\"/light2on\"\"><button>Turn On </button></a>");
client.println("<a
href=\"/light2off\"\"><button>Turn
Off
</button></a><br />");
client.println("</center>");
client.println("<br><br>");
client.println("<center>");
client.println("Device 3");
client.println("<a
href=\"/light3on\"\"><button>Turn On </button></a>");
206
client.println("<a
href=\"/light3off\"\"><button>Turn
Off
</button></a><br />");
client.println("</center>");
client.println("<br><br>");
client.println("<center>");
client.println("Device 4");
client.println("<a href=\"/light4on\"\"><button>Turn
On </button></a>");
client.println("<a
href=\"/light4off\"\"><button>Turn
Off
</button></a><br />");
client.println("</center>");
client.println("<br><br>");
client.println("<center>");
client.println("<table
border=\"5\">");
client.println("<tr>");
if (digitalRead(5))
{
client.print("<td>Light 1 is ON</td>");
}else
{
client.print("<td>Light 1 is OFF</td>");
}
client.println("<br />");
if (digitalRead(4))
{
client.print("<td>Light 2 is ON</td>");
}else
{
client.print("<td>Light 2 is OFF</td>");
}
client.println("</tr>"
);
client.println("<tr>")
; if (digitalRead(0))
{
client.print("<td>Light 3 is ON</td>");
207
}else
{
client.print("<td>Light 3 is OFF</td>");
}
if (digitalRead(13))
{
client.print("<td>Light 4 is ON</td>");
}else
{
client.print("<td>Light 4 is OFF</td>");
}
client.println("</tr>");
client.println("</table>")
;
client.println("</center>"
);
client.println("</html>");
delay(1);
Serial.println("Client
disonnected"); Serial.println("");
Hasil Eksekusi :
Dari hasil eksekusi server terlihat server sudah berjalan dan siap menerima request dari
user, dengan menggunakan koneksi wifi dengan SSID “Full 24 Jam”.
208
Gambar 13.11 Kontrol Led tertampil pada browser
Pengeksekusian perintah dilakukan dengan menekan tombol Turn On atau Turn Off
sesuai dengan yang diinginkan. Turn On untuk menghidupkan LED dan Turn Off untuk
mematikan LED. Tampak dalam gambar 13.11 LED 1 hidup akibat penekanan tombol
Turn On aplikasi, yang akan diteruskan ke Arduino yang selanjutnya akan memberikan
nilai High untuk Pin digital yang terhubung dengan LED 1.
Sekarang menyesuaikan kebutuhan alat untuk suatu project mungkin akan menjadi isu
menarik, selain memangkas biaya juga akan lebih simpel dalam finsihing. Misalnya
kita punya project untuk mengendalikan sesuatu dari jaringan internet, akan sangat cocok
dengan menggunakan perangkat ini jika koneksi jaringan menggunakan Wifi.
Bandingkan dengan arduino yang mungkin kita harus tambahkan wifi shield atau ethernet
shield tambahan untuk menyelesaikan project tersebut. Selain biaya yang dibutuhkan
lebih besar dari segi desain akan lebih ramping jika kita bisa menggunakan NodeMCU
yang mempunyai desain fisik lebih kecil dari arduino.
209
Gambar 13.12 Tombol Turn On pada Device 4 ditekan
...
String request = client.readStringUntil('\r');
Serial.println(request);
client.flush();
...
Ketika tombol 4 di klik, browser akan mengkases konten web pada alamat
http://192.168.43.239/light4on. Sedangkan dari Lolin sendiri akan memberikan respon dari
client dengan menggunakan struktur URL yang ada sesuai dengan kode program yang
dituliskan dalam Lolin.
Perintah tersebut
210
Gambar 13.13 Keluaran di serial monitor ketika tombol 4 ditekan
...
if (request.indexOf("/light4on") > 0){
digitalWrite(13, HIGH);
}
...
Fungsi indexOf ()
https://www.arduino.cc/reference/en/language/variables/data-
types/string/functions/indexof/
211
Gambar 13.14 Struktur fungsi indexOf()
Pada dasarnya NodeMCU jika diposisikan sebagai webserver akan sama halnya dengan
web server pada umumnya (Apache). Dia akan menerima request dan memberikan respon
berdasarkan kode program yang dikonfigurasikan pada Lolin/NodeMCU.
212
Persiapan Kode Program :
1. Import Packet library ESP8266Wifi
#include <ESP8266WiFi.h>
7. Setting Pin I/O yang digunakan menjadi Pin Output dan set pin tersebut pada kondisi
LOW atau kondisi tegangan diskrit = 0.
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
9. Memulai koneksi dengan menggunakan SSID dan password yang sudah diberikan
diawal setup.
WiFi.begin(ssid, password);
213
10. Cek status koneksi antara Lolin dengan Wifi, selama tidak konek maka proses akan di
delay selama 500ms dan diberikan output d serial monitor berupa karakter “.”(dot)
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
11. Jika Koneksi berhasil maka berikan output d serial monitor “Wifi Connected”
Serial.println("");
Serial.println("WiFi connected");
12. Setelah koneksi terhubung, Lolin memulai server web dan berikan output di serial
monitor
// Start the server
server.begin();
Serial.println("Server started");
13. Lolin Memberikan output status koneksi dengan mengelurkan output d serial monitor
IP address yang didapatkan dari Wifi(DHCP).
// Print the IP address
Serial.print("Use this URL to connect: ");
Serial.print("http://");
Serial.print(WiFi.localIP());
Serial.println("/");
}
15. Cek jika ada komunikasi dengann client ke server yang terhubung, dimisalkan ada
yang mengakses IP server dari browser Laptop/HP. Jika tidak ada Client yang
terhubung Lolin pada posisi Listening (menunggu).
// Check if a client has connected
WiFiClient client = server.available();
if (!client) {
return;
}
16. Cek jika ada client ada yang mengirimkan data, jika tidak ada delay proses 1 ms.
// Wait until the client sends some data
Serial.println("new client");
while(!client.available()){
214
delay(1);
}
17. Tangkap/baca request dari client dan tampilkan sebagai output di serial monitor.
// Read the first line of the request
String request = client.readStringUntil('\r');
// /LED=ON
Serial.println(request);
client.flush();
18. Memberikan nilai awal untuk variabel dengan nama “value” yang nanti akan
digunakan sebagai status
int value = LOW;
19. Membandingkan antara data yang diterima server, cek apakah ada string “/LED=ON”,
jika ada tulis kondisinya pin Output yang terhubung dengan LED menjadi HIGH dan
rubah nilai dari variabel value dengan “HIGH”.
if (request.indexOf("/LED=ON") != -1) {
digitalWrite(ledPin, HIGH);
value = HIGH;
}
20. Membandingkan antara data yang diterima server, cek apakah ada string
“/LED=OFF”, jika ada tulis kondisinya pin Output yang terhubung dengan LED
menjadi LOW dan rubah nilai dari variabel value dengan “LOW”.
if (request.indexOf("/LED=OFF") != -1) {
digitalWrite(ledPin, LOW);
value = LOW;
}
21. Berikan keluaran untuk client dengan tampilan HTML dan registrasikan header
HTML
// Return the response
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println(""); // do not forget this one
client.println("<!DOCTYPE HTML>");
215
client.println("<html>");
22. Memberikan tampilan sesuai dengan kondisi dari nilai yang ada divariabel value
(HIGH/LOW). Jika nilai variabel value nilainya “HIGH” dikeluarkan string “On”, dan
jika “LOW” dikeluarkan string “Off”.
client.print("Led pin is now: ");
if(value == HIGH) {
client.print("On");
} else {
client.print("Off");
}
23. Buat 2 buah button pada tampilan HTML, dengan mengatur link tersebut dengan
“/LED=ON” untuk tombol menyalakan LED dan “/LED=OFF” untuk tombol
mematikan LED.
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>");
24. Delay proses 1 ms dan berikan tampilan ke serial monitor “Client disconnect” yang
artinya proses untuk client sudah selesai.
delay(1);
Serial.println("Client disonnected");
Serial.println("");
#include <ESP8266WiFi.h>
void setup() {
Serial.begin(115200);
delay(10);
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
216
// Connect to WiFi network
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
void loop() {
// Check if a client has connected
WiFiClient client = server.available();
if (!client) {
return;
}
217
client.flush();
if(value == HIGH) {
client.print("On");
} else {
client.print("Off");
}
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>");
delay(1);
Serial.println("Client disonnected");
Serial.println("");
218
13.7 Percobaan 4 : Setting IP Static NodeMCU/Lolin
NodeMCU tidak hanya bisa menggunakan IP dynamic yang biasa didapat dari DHCP.
Beberapa device biasanya dibutuhkan untuk menggunakan IP Static, sehingga
pengaksesan lebih pasti IP yang harus dieksekusi. Untuk penggunaan IP Dinamis juga
didibutuhkan setting koneksi dengan IP yang spesifik yang biasanya didapat dari provider
internet sehingga device bisa diremote dari jauh.
#include <ESP8266WiFi.h>
219
IPAddress ip(192,168,43,200); //Node static IP
IPAddress gateway(192,168,43,1);
IPAddress subnet(255,255,255,0);
void setup()
{
5. Mulai koneksi dengan Wifi yang digunakan untuk transaksi dengan client
WiFi.begin(ssid, pass);
7. Cek koneksi, apakah berhasil koneksi dengan Wifi, jika tidak terhubung akan
menunda proses 500 ms dan cetak “.”(dot) pada serial monitor.
//Wifi connection
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
8. Mencetak IP yang ada dalam Lolin, konfigurasi berhasil jika IP yang dikeluarkan
dari perintah Wifi.localIP() sama dengan apa yang kita konfigurasikan
sebelumnya.
Serial.println("");
Serial.print("WiFi connected, using IP address: ");
Serial.println(WiFi.localIP());
}
void loop()
{
Serial.println(WiFi.localIP());
delay(1000);
220
}
#include <ESP8266WiFi.h>
void setup()
{
Serial.begin(115200);
WiFi.begin(ssid, pass);
WiFi.config(ip, gateway, subnet);
//Wifi connection
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("WiFi connected, using IP address: ");
Serial.println(WiFi.localIP());
}
void loop()
{
}
221
Output Kode Program :
13.8 Percobaan 5 : Akses Web Server & Read Data MySQL As Client
Pada kondisi nyata NodeMCU tidak akan bisa menerima semua akses dari klien dengan
jumlah yang sangat besar, untuk itu dibutuhkan penengah antara klien dan mikrokontroler.
222
Mikrokontroler di set hanya sebagai device pengontrol dan pelapor atau sensoring, yang
akan mengirimkan hasil sensoringnya pada database server melalui webserver yang ada
pada sisi database server. Data yang dikirimkan dari mikrokontroller bisa diset berapa
detik/menit/jam sekali sehingga bisa mendekati realtime dan mengurangi load
mikrokontroller dan jaringan. Sedangkan klien akan mengakses pada database server
tersebut yang sudah dilengkapi webserver juga.
Web server disini menggunakan PC server yang pastinya akan lebih tahan terhadap load
tinggi ketika klien banyak yang mengakses, dari sini ketahanan informasi untuk klien bisa
dijaga, jika dibandingkan dengan langsung mengakses Lolin secara langsung.
Mikrokontroller(Lolin) juga dimudahkan tugasnya karena hanya bekerja untuk
mengambil data saja, tanpa mengolah permintaan server.
Jika ditanya apakah hanya Lolin yang bisa melakukan hal tersebut, jawabnya tidak!
Arduino juga bisa di set sebagai Http Client. Cek link berikut untuk contoh penggunaan
dalam arduino https://www.arduino.cc/en/Tutorial/HttpClient.
13.8.1 Percobaan 5.1 : Membaca Single Data Sensor pada database server
1. Buat database dengan nama eslolin, dan ciptakan tabel dengan nama sensor dengan 3
field.
223
3. Siapkan Script PHP untuk mengakses tabel dalam database eslolin.
sensorsingle.php
4. Set Lolin sebagai Http Client dan siapkan script di Lolin untuk melihat data yang ada
dalam halaman web tersebut.
#include <ESP8266HTTPClient.h>
#include <ESP8266WiFi.h>
224
// Variabel global
const char* ssid = "@On Liliek";
const char* password = "*****";
int pinLED = 5;
#define ON HIGH
#define OFF LOW
//#define USE_SERIAL Serial
//tambahan
int firstVal, secondVal;
void setup() {
// put your setup code here, to run once:
// Konfigurasi Modul
Serial.begin(115200);
void loop() {
HTTPClient http;
Serial.print("[HTTP] begin...\n");
//IP menuju ke server web
http.begin("http://192.168.43.196:8080/eslolin/sensorsingle.ph
225
p");
Serial.print("[HTTP] GET...\n");
int httpCode = http.GET();
Serial.print(httpCode);
if(httpCode > 0){
// HTTP header has been send and Server response header
has been handled
Serial.printf("[HTTP] GET... code: %d\n", httpCode);
}else {
Serial.println("Delay boss");
}
delay(1000);
}
226
Hasil Output :
Penjelasan program :
Program akan berjalan dengan memulai koneksi dengan konfigurasi dengan
menggunakan DHCP IP seperti percobaan sebelumnya. Yang membedakan disini adalah
Lolin akan memposisikan sebagai Client dengan membuat inisiasi/instance HTTPClient
http;.
...
if(WiFi.status() == WL_CONNECTED){
HTTPClient http;
...
...
http.begin("http://192.168.43.196:8080/eslolin/sensorsingle.php");
...
227
Gambar 13.24 Konfigurasi IP dari DHCP Server (Tethering)
Untuk menghubungi Server web karena tidak menggunakan domain jadi harus didefinisi
dengan IP (Static/Dynamic) yang digunakan, dan untuk port webserver jika tidak standard
(80) maka perlu ditambahkan port yang digunakan oleh webserver tersebut. Dengan
melihat konfigurasi server dan IP diatas sehingga untuk mengakses webserver kita dengan
menggunakan URL http://192.168.43.196:8080 yang diikuti dengan folder
penyimpanan script dan nama script PHP.
...
228
int httpCode = http.GET();
Setelah menghubungi server kita lihat status koneksi dan hasil eksekusi dari kode PHP
yang ada dalam web server dan simpan dalam tipe integer dengan nama httpCode. Jika
terdapat respon (httpCode > 0 ) maka akan dilakukan pemeriksaan isi dari hasil eksekusi.
...
if(httpCode == HTTP_CODE_OK) {
String status = http.getString();
HTTP CODE Response yang digunakan dalam HttpClient dapat dilihat detail di link
berikut :
https://github.com/esp8266/Arduino/blob/master/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient
.h
229
Gambar 13.26 Kode Error Web Server
Jika nilai hasil String status = http.getString(); dengan nilai status adalah 0,
maka pinLed yang terkoneksi dengan LED akan dibuat OFF (LOW) yang artinya LED
akan mati. Dan jika status memiliki nilai 1, maka pinLed yang terkoneksi dengan LED
akan dibuat ON (HIGH) yang artinya LED akan hidup.
...
http.end();
...
Setelah selesai dengan pembacaan respon, respon akan dihancurkan untuk menghemat
memori dan siap untuk respons selanjutnya.
5. Untuk mengganti nilai pada database gunakan phpmyadmin dengan mengubah nilai
dari 0 menjadi 1 atau sebaliknya pada field statusSensor pada tabel sensor.
230
Gambar 13.27 Update nilai kolom statusSensor
6. Lihat responnya
Untuk membaca multi data pada database server dibutuhkan untuk mengendalikan
beberapa sensor sekaligus.
Sensormulti.php
231
Gambar 13.29 Kode program pada web server
Pada kolom statusSensor pada tabel sensor digunakan untuk menentukan status
pembacaan sensor, hidup(1) atau mati(0).
Hasil pembacaan tabel sensor pada kolom statusSensor yang ditampilkan pada browser
terbaca berurutan sesuai dengan sorting id.
232
Gambar 13.31 Hasil pembacaan tabel sensor tertampil pada browser
Kode Program :
#include <ESP8266HTTPClient.h>
#include <ESP8266WiFi.h>
// Variabel global
const char* ssid = "@On Liliek";
const char* password = "******";
int led1 = 5;
int led2 = 5;
int led3 = 5;
int led4 = 5;
#define ON HIGH
#define OFF LOW
//tambahan
int firstVal, secondVal;
void setup() {
// put your setup code here, to run once:
// Konfigurasi Modul
Serial.begin(115200);
233
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
//tambahan
String getValue(String data, char separator, int index)
{
int found = 0;
int strIndex[] = {0, -1};
int maxIndex = data.length()-1;
void loop() {
HTTPClient http;
http.begin("http://192.168.43.146/presensi/loker.php?id=2");
int httpCode = http.GET();
//tambahan
234
String nilai3 = getValue(status, ',',2);
Serial.println(nilai2);
Serial.print("LED 4 --> ");
String nilai4 = getValue(status, ',',3);
Serial.println(nilai3);
Serial.println("------------------------");
if(nilai1 == "1"){
//relay = OFF;
digitalWrite(led1, OFF);
}else {
digitalWrite(led1, ON);
}
if(nilai2 == "1"){
//relay = OFF;
digitalWrite(led2, OFF);
}else {
digitalWrite(led2, ON);
}
if(nilai3 == "1"){
//relay = OFF;
digitalWrite(led3, OFF);
}else {
digitalWrite(led3, ON);
}
if(nilai4 == "1"){
//relay = OFF;
digitalWrite(led4, OFF);
}else {
digitalWrite(led4, ON);
}
}
http.end();
}else {
Serial.println("Delay boss");
}
delay(500);
}
Untuk kontrol lebih dari 1 sensor membutuhkan Dari percobaan 1 ditambahkan script
untuk memotong data yang menggambarkan setiap sensor yang ada dalam database.
...
String getValue(String data, char separator, int index)
235
{
int found = 0;
int strIndex[] = {0, -1};
int maxIndex = data.length()-1;
...
Output :
Hasil keluaran yang tertampil pada serial monitor arduino IDE merupakan hasil
pembacaan tiap record pada tabel sensor kolom statusSensor yang akan menggunakan
nilai hasil pembacaan pada tabel tersebut pada sensor atau led dengan logika 1 = hidup
dan 0 = mati.
236
13.9 Latihan
1. Buat rangkaian dengan fritzing dan implementasikan yang digunakan untuk aplikasi
sensoring kecerahan tambahkan sensor cahaya dan tampilkan hasilnya pada
webbrowser client, ruangan termasuk gelap,redup,cerah dan terang
2. Buat rangkaian dengan fritzing dan implementasikan yang digunakan untuk aplikasi
sensoring kecerahan tambahkan sensor suhu dan tampilkan hasilnya pada web
browser.
3. Desain tabel untuk menyimpan data suhu ruangan. Buat Inputan data yang mengambil
nilai suhu ruangan dengan menggunakan Lolin dan masukkan nilai tersebut dalam
database.
4. Desain tabel untuk menyimpan data lumen(kecerahan) ruangan. Buat Inputan data
yang mengambil nilai kecerahan ruangan dengan menggunakan Lolin dan masukkan
nilai tersebut dalam database.
5. Buat dashboard yang akan menampilkan data kecerahan dan suhu rungan dalam grafik,
buat auto load dengan jquery atau yang sejenis.
237
Daftar Pustaka
7 P. A. Nalwan, TeknikAntarmukadanPemrogramanMikrokontrolerAT89C51,
2003, Elex Media Komputindo.
238
Glosarium
239
Bluetooth : Spesifikasi industri untuk jaringan transmisi data kembali.
kawasan pribadi (personal area networks
atau PAN) tanpa kabel. Bluetooth Decoder : Suatu perangkat yang berfungsi
menghubungkan dan dapat dipakai untuk untuk mengubah bentuk sinyal biner
melakukan tukar-menukar informasi di menjadi decimal. khusus untuk BCD to
antara peralatan-peralatan. 7 segment mempunyai prinsip kerja
yang berbeda dengan decoder yang lain,
Breadboard : Board yang digunakan untuk dimana kombinasi dari setiap inputnya
membuat rangkaian elektronik sementara dapat mengaktifkan beberapa output
dengan tujuan uji coba atau prototipe line- nya (bukan sala satu line).
tanpa harus menyolder. Dengan
memanfaatkan breadboard, komponen- Discrete : Suatu sinyal yang memiliki nilai
komponen elektronik yang dipakai tidak pada rentang waktu tertentu.
akan rusak dan dapat digunakan kembali Download : Sebuah proses dalam
untuk membuat rangkaian yang lain. pengambilan file-file tertentu yang
Clock line : Jalur yang digunakan untuk terdapat di internet baik melalui web
memberikan periode pensinyalan pada server, FTP server, mail server, server
perangkat elektronik. Biasanya dalam ataupun sistem lain yang identik.
satuan milisecond(ms) atau second(s). Driver : Driver Motor | H-Bridge | Driver
CMOS : Complementary metal–oxide– motor merupakan bagian yang berfungsi
semiconductor (CMOS) atau untuk menggerakkan Motor DC dimana
semikonduktor oksida logam perubahan arah motor DC tersebut
komplementer, adalah sebuah jenis bergantung dari nilai tegangan yang
utama dari rangkaian terintegrasi. diinputkan pada input dari driver itu
Teknologi CMOS digunakan di sendiri. Atau bisa didefinisikan sebagai
mikroprosesor, pengontrol mikro, RAM piranti yang bertugas untuk
statis, dan sirkuit logika digital lainnya. menjalankan motor baik mengatur arah
putaran motor maupun kecepatan putar
COM : Sebuah port pada personal computer motor. Driver motor berfungsi sebagai
yang berfungsi untuk mentransmisikan piranti yang bertugas untuk
satu bit informasi pada satu satuan menjalankan motor baik mengatur arah
waktu. putaran motor maupun kecepatan putar
motor.
Data line : Jalur yang digunakan untuk
mentransmisikan sinyal elektronis yang Emulator : Perangkat lunak (software) yang
berupa input ataupun output pada tidak lain adalah program yang dibuat
perangkat elektronika. untuk meng emulasi suatu aplikasi
maupun game agar dapat berjalan atau
Datasheet : Dokumen yang berisi ringkasan
dimainkan di sistem operasi lain.
kinerja dan karakteristik komponen
elektronik maupun perangkat lunak yang
terperinci.
Debounce : Usaha pencegahan penutupan
palsu suatu kunci atau saklar yang telah
dikenali sebagai satu cara untuk menguci
sinyal masuk. Debounce juga berarti
mengenalkan waktu tunggu yang
memberi jeda sebelum dilakukan proses
240
Ethernet shield : Modul yang berfungsi IDE Arduino : Software yang sangat
menghubungkan Arduino board dengan canggih ditulis dengan menggunakan
jaringan internet. Ethernet Shield bahasa pemrograman Java. IDE Arduino
menambah kemampuan arduino board terdiri dari (1) Editor program, sebuah
agar terhubung ke jaringan komputer. window yang memungkinkan pengguna
Ethernet shield berbasiskan cip ethernet menulis dan mengedit program dalam
Wiznet W5100. Ethernet library bahasa Processing. (2) Compiler, sebuah
digunakan dalam menulis program agar modul yang mengubah kode program
arduino board dapat terhubung ke jaringan (bahasa Processing) menjadi kode biner.
dengan menggunakan arduino ethernet Bagaimanapun sebuah mikrokontroler
shield. tidak akan bisa memahami bahasa
Processing. Yang bisa dipahami oleh
FLIP FLOP : Rangkaian digital yang mikrokontroler adalah kode biner. Itulah
digunakan untuk menyimpan satu bit sebabnya compiler diperlukan dalam hal
secara semi permanen sampai ada suatu ini. (3) Uploader, sebuah modul yang
perintah untuk menghapus atau memuat kode biner dari komputer ke
mengganti isi dari bit yang disimpan. dalam memory didalam papan Arduino.
Fritzing : Software gratis yang digunakan oleh Increment : Proses perubahan
desainer, seniman, dan para penghoby penambahan nilai secara berkala dan
elektronika untuk perancangan berbagai terus menerus dengan interval yang
peralatan elektronika.Biasanya sebelum sudah ditentukan.
menggunakan program fritzing mereka
akan membuat sebuah prototype dengan Input analog : Sinyal data dalam bentuk
menggunakan komponen elektronika gelombang yang mempunyai nilai
yang sebenarnya. kontinyu (tidak terputus) dimana
besarannya berubah terhadap waktu atau
Gear Ratio : Perbandingan antara jumlah ruang, dan mempunyai semua nilai
putaran yang dihasilkan oleh gear input untuk setiap nilai waktu (dan atau setiap
(drive gear) terhadap jumlah putaran ruang), yang membawa informasi
gear output (driven gear) yang berbeda dengan mengubah karakteristik
ukuran. gelombang.
I2C : Inter Integrated Circuit standar Interface : Sering disebut antarmuka
komunikasi serial dua arah pengguna yang fungsi dan atribut sensor
menggunakan dua saluran yang didisain dari suatu sistem (aplikasi, perangkat
khusus untuk mengirim maupun lunak, kendaraan, dll) yang berhubungan
menerima data. dengan pengoperasiannya oleh
pengguna.
ICSP header : In-Circuit Serial Programming
(ICSP), adalah kemampuan beberapa Kabel jumper : Kabel penghubung yang
perangkat logika yang dapat diprogram, digunakan untuk menyambungkan dari
mikrokontroler, dan perangkat embedded satu titik elektronis ke titik yang lain.
lainnya yang diprogram saat diinstal Kapasitor : Komponen elektronika yang
dalam sistem yang lengkap, daripada mempunyai kemampuan menyimpan
membutuhkan chip untuk Diprogram
sebelum menginstalnya ke dalam sistem.
241
electron-elektron selama waktu yang banyak daripada komunikasi serial.
tidak tertentu. Kapasitor berbeda dengan LUA : Merupakan bahasa pemrograman
akumulator dalam menyimpan muatan ringkas yang dirancang sebagai bahasa
listrik terutama tidak terjadi perubahan pemrograman dinamis berbasis skrip
kimia pada bahan kapasitor, besarnya dengan semantik yang dapat
kapasitansi dari sebuah kapasitor dikembangkan atau ditambahkan.
dinyatakan dalam farad. Sebagai bahasa skrip, Lua memiliki API
Keypad : satu set tombol diatur dalam blok dalam bahasa C yang relatif lebih
atau "pad" yang biasanya menanggung sederhana dibandingkan bahasa skrip
angka, simbol dan biasanya satu set lainnya.
lengkap huruf abjad. Jika sebagian besar Memory : istilah generik bagi tempat
berisi nomor maka itu juga bisa disebut penyimpanan data dalam komputer.
sebagai keypad numerik. Memory biasanya disebut sebagai RAM,
LCD Shield : Liquid Crystal Display singkatan dari Random Access Memory.
dengan ukuran 16×2 yang sudah Memory berfungsi sebagai tempat
berbentuk shield (modul yang penyimpanan data sementara. ... Suplai
kompatibel dengan papan Arduino Uno) data ke RAM berasal dari Hard Disk,
sehingga bisa langsung diprogram dan suatu peralatan yang dapat menyimpan
digunakan (plug n play) di atas papan data secara permanen.
Arduino Uno. Di dalam modul LCD Mikrokontroler : sebuah sistem komputer
(biasanya menggunakan LCD Hitachi fungsional dalam sebuah chip. Di
HD44780) ini sudah terdapat semacam dalamnya terkandung sebuah inti
rangkaian minimumnya, sehingga kita prosesor, memori (sejumlah kecil RAM,
tidak perlu membuatnya sendiri dan memori program, atau keduanya), dan
sudah disediakan beberapa tombol yang perlengkapan input output.
dapat digunakan sebagai navigasi menu
di LCD. Mockup : sebuah media visual atau preview
dari sebuah konsep desain "datar" yang
Library : sebuah class yang memiliki tugas diberikan efek visual sehingga hasilnya
spesifik yang fungsinya bisa digunakan sangat tampak atau menyerupai wujud
oleh controller, model ataupun library nyata, mockup dapat memberikan
lainnya. Untuk mengetahui fungsi gambaran nyata dari sebuah konsep
masing-masing library ini dan cara desain bagaimana konsep itu akan
penggunaanya, silahkan lihat di bagian terlihat nantinya jika sudah
Resources. diaplikasikan menjadi benda nyata
Liquidcrystal : sebuah peralatan elektronik apakah terlihat bagus atau kuarng
yang berfungsi untuk menampilkan sesuai.
output sebuah sistem dengan cara PCB : Printed Circuit Board adalah
membentuk suatu citra atau gambaran sebuah papan yang penuh dengan sirkuit
pada sebuah layar. dari logam yang menghubungkan
LPT : Parallel Port, komunikasi paralel komponen elektronik yang berbeda jenis
yang berjalan lebih cepat dari maupun sama satu sama lain tanpa kabel.
komunikasi serial karena jumlah bit
yang dikirimkan bersamaan dalam suatu
waktu oleh komunikasi paralel lebih
242
Pemrograman : Proses menulis, menguji dan tetap. Yang artinya, total 1 perioda (T)
memperbaiki (debug), dan memelihara pulsa dalam PWM adalah tetap.
kode yang membangun suatu program QR code : sebuah kode matriks (atau dua-
komputer. Kode ini ditulis dalam dimensi bar code ) yang dibuat oleh
berbagai bahasa pemrograman. perusahaan Jepang Denso-Wave pada
Port expander : Perangkat tambahan yang tahun 1994. The “QR” berasal dari
memungkinkan untuk menjadi “Quick Response“, sebagai pencipta
penghubung dengan komponen utama kode yang dimaksudkan agar isinya
sehingga perangkat yang dapat dapat diuraikan pada kecepatan tinggi.
berkomunikasi lebih banyak. Request : Permintaan yang dilakukan
Ports : Mekanisme yang mengizinkan sebuah oleh client terhadap server untuk
komputer untuk mendukung beberapa mendapatkan hasil dari parameter
sesi koneksi dengan komputer lainnya input yang diberikan client.
dan program di dalam jaringan atau Resistor : merupakan komponen elektronik
bidang lain yang sejenis. yang memiliki dua pin dan didesain
Potensiometer : resistor tiga terminal dengan untuk mengatur tegangan listrik dan
sambungan geser yang membentuk arus listrik, dengan resistansi tertentu
pembagi tegangan dapat disetel. Jika (tahanan) dapat memproduksi tegangan
hanya dua terminal yang digunakan listrik di antara kedua pin, nilai
(salah satu terminal tetap dan terminal tegangan terhadap resistansi berbanding
geser), potensiometer berperan sebagai lurus dengan arus yang mengalir,
resistor variabel atau Rheostat. berdasarkan hukum Ohm.
Power Supply : Sebagai perangkat keras Resolusi : Jumlah detail yang ditunjukkan
yang memberikan atau menyuplai arus dalam satuan numeris, seperti contoh
listrik yang sebelumnya diubah dari layar monitor atau hasil cetakan.
bentuk arus listrik yang berlawanan atau RFID reader : Pembaca sinyal RFID
AC, menjadi arus listrik yang searah memancarkan gelombang
atau biasa disebut sebagai arus DC. elektromagnet yang akan membaca
Prototype : Purwarupa atau arketipe, bentuk RFID tag dalam range tertentu dan
awal (contoh) atau standar ukuran dari dengan frekuensi yang telah
sebuah entitas. Dalam bidang desain, ditentukan.
sebuah prototipe dibuat sebelum RFID tag : alat yang berisi data pengenal
dikembangkan atau justru dibuat khusus (ID) sebagai identifikasi suatu
untuk pengembangan sebelum dibuat objek(barang/benda).
dalam skala sebenarnya atau sebelum
diproduksi secara massal. Scratch : Merupakan penggambaran awal
pada suatu bidang tertentu yang
PWM : Pulse-Width Modulation, salah satu
menggambarkan alur sistem atau
jenis modulasi. Modulasi PWM
proses yang harus dilakukan.
dilakukan dengan cara mengubah
perbandingan lebar-pulsa-positif Sensor : sesuatu yang digunakan untuk
terhadap lebar-pulsa-negatif ataupun mendeteksi adanya perubahan
sebaliknya dalam frekuensi sinyal yang lingkungan fisik atau kimia. Variabel
243
keluaran dari sensor yang diubah Transceiver : Sebuah perangkat elektronik
menjadi besaran listrik disebut yang dapat digunakan untuk
Transduser. menghubungkan sebuah komputer ke
sebuah jaringan dengan teknologi
Serial Monitor : Tool yang ada dalam pemancaran pita basis (baseband)
Arduino IDE yang digunakan untuk sehingga komputer tersebut dapat
melihat aktivitas (input/output) memancarkan dan menerima sinyal di
komunikasi lewat Serial Port. dalam jaringan tersebut.
Shield : Sebutan untuk modul tambahan USB : standar bus serial untuk perangkat
dengan berbagai fungsinya, yang penghubung, biasanya kepada komputer
kebanyakan pinnya cocok dengan namun juga digunakan di peralatan
arduino, sehingga cara lainnya seperti konsol permainan, ponsel
menghubungkannya dengan arduino bisa dan PDA.
dengan menyusunnya diatas board
arduino. WebServer : sebuah software yang
memberikan layanan berbasis data dan
Sinyal analog : sinyal data dalam bentuk berfungsi menerima permintaan dari
gelombang yang kontinyu, yang HTTP atau HTTPS pada klien yang
membawa informasi dengan mengubah dikenal dan biasanya kita kenal dengan
karakteristik gelombangnya. Sinyal nama web browser (Mozilla Firefox,
analog bekerja dengan mentransmisikan Google Chrome) dan untuk mengirimkan
suara dan gambar dalam bentuk kembali yang hasilnya dalam bentuk
gelombang kontinu (continous varying). beberapa halaman web dan pada
Skala : Perbandingan antara jarak pada umumnya akan berbentuk dokumen
gambar dengan jarak yang sebenarnya. HTML
244