Anda di halaman 1dari 74

IoT Development Board 2017

Arduino
IoT Development Board

Arif Syaripudin ST.

Naro Smart
Smart Choice

2| Arif Sy aripudin
IoT Development Board 2017

Kata Pengantar

Assalamu’alaikum warahmatullahi wabarakatu

Segala puji kehadirat Allah SWT. yang telah memberikan kesempatan dan
kemudahan kepada penulis untuk menyelesaikan module IoT Development
Board ini. Shalawat serta salam tercurahkan atas Nabi Muhammad SAW, serta
keluarganya, sahabat-sahabatnya dan para pelanjut risalahnya yang setia
sampai akhir zaman.

IoT Development Board merupakan suatu module pengembangan Internet Of


Think berbasis Arduino. Module ini dapat digunakan sebagai media
pembelajaran pemrograman Arduino dengan beberapa aplikasi yaitu : aplikasi
Bluetooth, control realay, wifi, radio, sensor kelembaban tanah, sensor
kelembaban ruangan, motor servo dan RF ID Card.

Secara khusus penulis mengucapkan Terimakasih kepada seluruh pihak yang


telah membantu semoga Allah SWT selalu memberikan perlindungan,
kebaikan, dan limpahan nikmat yang tiada terputus.

Penulis mengharapkan kritik dan saran yang dapat digunakan untuk perbaikan
dan pengembangan module pembelajaran ini pada edisi berikutnya.

Wassalamualaikum

Bandung, 5 September 2017

Arif Syaripudin ST.


3| Arif Sy aripudin
IoT Development Board 2017
DAFTAR ISI

Hal

Kata Pengantar ........................................................................ 3

Pengenalan IoT Development Board ........................................ 4

Pemrograman Dasar Arduino ................................................... 20

Control Buzzer ......................................................................... 40

Servo dan Buzzer ..................................................................... 42

Relay dan Bluetooth ................................................................ 44

Relay dan Wifi ......................................................................... 47

Kendali Servo dengan Sensor Kelembaban Tanah .................... 56

RFID dan Relay ......................................................................... 57

Sensor DHT11 .......................................................................... 61

Monitoring Sensor DHT11 ........................................................ 64

NRF24L01 dan DHT11............................................................... 68

Daftar Pustaka ......................................................................... 74

4| Arif Sy aripudin
IoT Development Board 2017
Pengenalan IoT Development Board

1.1. Pengenalan Hardware

IoT Development Board terdiri dari beberapa aplikasi pendukung yaitu :


Aplikasi Control Relay, Aplikasi Wemos Wifi, Aplikasi Bluetooth, Aplikasi
Buzzer, Aplikasi Radio, Aplikasi Sensor Kelembaban Tanah, Aplikasi Sensor
Kelembaban Ruangan, Aplikasi RF ID Card dan Aplikasi Motor Servo. IoT
Development Board didukung dengan system minimum microcontroller mini
yang terintegrasi dalam board Arduino Nano serta PSU eksternal dengan input
tegangan 7-12Vdc dan output stabil pada 5Vdc-3A.

A. Aplikasi Control Relay

Aplikasi control relay merupakan suatu output yang dapat digunakan


sebagai saklar elektromagnetik sebagai pengendali perangkat elektronik
lainnya yang membutuhkan tegangan lebih dari 5VDC-1A. Pada aplikasi

5| Arif Sy aripudin
IoT Development Board 2017
control relay terdapat 3 channel yang setiap channel memiliki kapasitas
kontak dengan daya hingga 10A.

Keterangan :

G : Tegangan Supply Negative


5V : Tegangan Supply Positif 5VDC
R1 : Kendali Logic untuk R1-OUT
R2 : Kendali Logic untuk R2-OUT
R3 : Kendali Logic untuk R3-OUT
R1-OUT : Kontak Output Relay 1
R2-OUT : Kontak Output Relay 2
R3-OUT : Kontak Output Relay 3

Relay Aktif : Jika pin R1 atau R2 atau R3 terberi tegangan +5VDC (HIGH)
Relay Off : Jika pin R1 atau R2 atau R3 terberi tegangan 0VDC (LOW)

B. Aplikasi Wemos Wifi

Aplikasi Wemos Wifi merupakan suatu perangkat yang dapat digunakan


sebagai system interfacing nir kabel melalui jaringan wifi (ISM 2,4GHz, PA
+25dBm, 802,11 b/g/n). Aplikasi Wemos Wifi ini sudah terintegrasi

6| Arif Sy aripudin
IoT Development Board 2017
dengan microcontroller dan dapat langsung di program kedalam chip
8266 yang terdapat didalm wemos wifi ini sendiri melalui USB Micro.

Keterangan :

5V : Tegangan Supply 5VDC


G : Tegangan Supply 0VDC
Pin I/O Digital : D0 – D8
Pin Input Analog : A0
RST : Tombol Riset
3V3 : Output Tegangan 3,3VDC
RX : Komunikasi Serial Eksternal
TX : Komunikasi Serial Eksternal

C. Aplikasi Bluetooth

Aplikasi Bluetooth merupakan suatu perangkat yang dapat digunakan


sebagai system interfacing nir kabel melalui jaringan radio frekuensi
dengan system integrasi komunikasi serial. Dengan aplikasi Bluetooth, IoT
Development Board dapat terhubung ke perangkat eksternal seperti
Smart Phone, Laptop atau antar IoT Development Board itu sendiri.

7| Arif Sy aripudin
IoT Development Board 2017

EN
5V
G
TX
RX
ST

Keterangan :

EN : Untuk aktivasi penggantian ID device


5V : Tegangan Supply 5VDC
G : Tegangan Supply 0VDC
TX : Komunikasi Serial (Transmitter Port)
RX : Komunikasi Serial (Receiver Port)

D. Aplikasi Buzzer

Aplikasi Buzzer merupakan suatu aplikasi output yang termasuk kedalam


AUDIO. Aplikasi Buzzer dapat dipergunakan untuk indikator suatu
keadaan dengan memanfaatkan suara sebagai outputnya (Alarm).
Tegangan kerja yang diperlukan oleh buzzer ini adalah 5VDC dan dapat
langsung terhubung ke pin Arduino tanpa melalui penguatan tambahan
terlebih dahulu.

Keterangan :

G : Tegangan Supply 0VDC (GND)


S : Sinyal dari Pin Arduino

8| Arif Sy aripudin
IoT Development Board 2017
Buzzer aktif : Jika pin ‘S’ diberi tegangan 5VDC (HIGH)
Buzzer Off : Jika pin ‘S’ diberi tegangan 0VDC (LOW)

E. Aplikasi Radio

Aplikasi Radio merupakan suatu perangkat yang dapat digunakan untuk


komunikasi nir kabel dengan memanfaatkan gelombang radio. Tipe
modul radio yang digunakan adalah NRF24L01 Trainceiver dengan
frekuensi kerja 2.4GHz. Modul ini memliki 3 pilihan data rate (250Kbps,
1Mbps dan 2Mbps). Selain itu modul NRF24L01 ini memiliki konsumsi
daya yang sangat rendah yaitu 22uA pada posisi standby.

1
2
Konfigurasi Pin :

1 : GND (Tegangan Supply 0VDC)


2 : 3V3 (Tegangan Supply 3,3VDC)
3 : CE (SPI Port, pin D9 Arduino)
4 : CSN (SPI Port, pin D10 Arduino)
5 : SCK (SPI Port, pin D13 Arduino)
6 : MOSI (SPI Port, pin D11 Arduino)
7 : MISO (SPI Port, pin D12 Arduino)
8 : Not Connected

9| Arif Sy aripudin
IoT Development Board 2017
F. Aplikasi Sensor Kelembaban Tanah

Aplikasi ini berfungsi sebagai pendeteksi kadar air yang terdapat didalam
tanah. Sinyal yang dikeluarkan oleh sensor ini berupa nilai tegangan
analog. Semakin tinggi kadar air yang terdapat dalam tanah maka
semakin besar nilai tegangan yang diberikan oleh sensor pada
mikrokontroller dan semakin rendah kadar air yang terdapat dalam tanah
maka semakin kecil nilai tegangan yang diberikan oleh sensor pada
mikrokontroller.

A0
D0
GND
VCC

Sensor Tranducer

Keterangan :

A0 : Sinyal Output Jenis Analog


D0 : Sinyal Output Jenis Digital
GND : Tegangan Supply 0VDC
VCC : Tegangan Supply 5VDC

G. Aplikasi Sensor Kelembaban Ruangan

Aplikasi ini berfungsi sebagai sensor pendeteksi kelembaban dan suhu


pada ruangan. Didalam sensor ini terdapat sebuah thermistor tipe NTC
untuk mengukur suhu, sebuah sensor kelembaban tipe resistif dan
sebuah mikrokontroller 8-bit yang mengolah kedua sensor tersebut dan
mengirim hasilnya ke pin output dengan format Single-Wire bi-directional
(Kabel tunggal 2 arah/ I2C).

10 | A r i f S y a r i p u d i n
IoT Development Board 2017

Keterangan :

(+) : Tegangan Supply 5VDC


(-) : Tegangan Supply 0VDC
Out : Sinyal Output (Single-Wire Bi-Directional)
Pengukuran Kelembaban Udara :

- Resolusi pengukuran : 16bit


- Repeability : ± 1 % RH
- Akurasi pengukuran : 25°C ± 5 % RH
- Interchangeability : fully interchangeable
- Waktu respon : 1 / e (63%) of 25°C 6 detik
- Histerisis : <± 0.3% RH
- Long – Term Stability : <± 0.5% RH / yr in

Pengukuran Temperature :

- Resolusi pengukuran : 16 Bit


- Repeatability : ±0.2°C
- Range : At 25°C ± 2°C
- Waktu respon : 1 / e (63%) 10 detik

Karakteristik Elektrikal :

- Tegangan Kerja 3,5 s/d 5VDC


- Arus : 0.3mA dan standby 60uA

H. Aplikasi RF ID Card

Aplikasi ini berfungsi sebagai pendeteksi gelombang radio yang


dikeluarkan oleh kartu identitas. Frekuensi kerja alat ini adalah 13.56
11 | A r i f S y a r i p u d i n
IoT Development Board 2017
MHz. Metode pengiriman sinyal yang diberikan oleh apalikasi ini
terhadap Arduino yaitu melalui Serial Peripheral Interface (SPI).

3v3
RST
GND
RQ
MISO
MOSI
SCK
SDA

Keterangan :

3V3 : Tegangan Supply 3.3VDC


RST : SPI Port, pin D9 Arduino
GND : Tegangan Supply 0VDC
RQ : Not Connected
MISO : SPI Port, pin D12 Arduino
MOSI : SPI Port, pin D11 Arduino
SCK : SPI Port, pin D13 Arduino
SDA : SPI Port, pin D10 Arduino

I. Aplikasi Motor Servo

Motor servo adalah sebuah motor DC dengan system umpan balik


tertutup di mana posisi rotor akan di informasikan kembali ke rangkaian
control yang ada di dalam motor servo. Motor ini terdiri dari sebuah
motor DC, rangkaian gear, potensio meter dan rangkaian control.

12 | A r i f S y a r i p u d i n
IoT Development Board 2017

Keterangan :

Kabel Orange : Sinyal Input


Kabel Merah : Tegangan Supply 5VDC (up to 1A)
Kabel Coklat : Tegangan Supply 0VDC

Karakteristik :

Posisi 180° Posisi 0° Posisi 90°

Area kerja motor servo MG90S dapat dilihat pada gambar diatas, ketika
servo diperintahkan untuk berada pada posisi 0° maka gear akan berada
pada arah paling sebelah kanan, pada posisi 90° maka gear akan berada
pada posisi center dan pada posisi 180° maka gear akan berada pada
posisi paling sebelah kiri.

13 | A r i f S y a r i p u d i n
IoT Development Board 2017

1.2. Pengenalan Software

Arduino IDE adalah software yang disediakan di situs web Arduino.cc yang
ditujukan sebagai perangkat pengembangan sketch yang digunakan sebagai
program di papan Arduino. IDE (Integrated Development Environment) berarti
bentuk alat pengembangan program yang terintegrasi sehingga berbagai
keperluan disediakan dan dinyatakan dalam bentuk antarmuka berbasis
menu. Dengan menggunakan Arduino IDE dengan langkah-langkah, yaitu :
menulis sketch, memeriksa ada kesalahan atau tidak di sketch (compile), dan
kemudian mengunggah sketch yang sudah terkompilasi ke papan Arduino.
Adapun cara instalasi software Arduino yaitu :

- Pengunduhan IDE Arduino

Untuk mendapatkan software arduino bisa mengunjungi langsung halaman


download di https: //www.arduino.cc/en/Main/ Software, dan akan terlihat
seperti pada Gambar di bawah ini. Pada saat pengunduhan pilih “Windows Zip

14 | A r i f S y a r i p u d i n
IoT Development Board 2017
file non admin install” dan disesuaikan dengan jenis OS yang digunakan pada
PC.

Setelah pemilihan jenis instalasi dengan klik ganda pada konten yang di pilih,
maka akan tampil menu untuk memulai pengunduhan seperti yang terlihat
pada Gambar di bawah ini.

Pada tampilan menu tersebut di beri pilihan “Just Download” atau “Contribute
& Download”, untuk pemilihan free download klik “Just Download” dan jika
ingin memberikan kontribusi berupa uang maka klik “Contribute & Download”.
Jenis file yang di dapat dari keduanya sama persis. Setelah instruksi download
di pilih kemudian proses download akan berjalan, file yang di download kurang
lebih berukuran 147MB dengan nama file “arduino-1.6.6-windows.zip” (versi
yang lama).

15 | A r i f S y a r i p u d i n
IoT Development Board 2017
- Instalasi IDE Arduino pada PC

Setelah proses download selesai kemudian file akan terunduh dengan format
.zip, file ini tidak membutuhkan proses instalasi untuk dapat digunakan,
dengan kata lain, ini merupakan file IDE Arduino yang bersifat portable.

Sebelum IDE Arduino ini di gunakan maka lakukan extract terlebih dahulu pada
file .zip Arduino yang telah di unduh tadi. Untuk lokasi penyimpanan dapat di
tempatkan secara bebas.

Proses extract akan menghasilkan folder baru seperti yang terlihat pada
Gambar 1.7 di atas. Untuk membuka aplikasi Arduino dapat di lakukan dengan

16 | A r i f S y a r i p u d i n
IoT Development Board 2017
membuka folder “arduino-1.6.6” terlebih dahulu dan akan tampil di dalamnya
berupa file seperti pada Gambar di bawah ini.

Kemudian klik ganda pada file “arduino” maka tampilan aplikasi Arduino
akan terbuka pada layar PC seperti pada Gambar di bawah ini.

Setelah aplikasi arduino terbuka maka pemrograman sudah dapat di lakukan.

17 | A r i f S y a r i p u d i n
IoT Development Board 2017
- Instalasi USB Driver Arduino

Tahap terakhir yaitu dengan instalasi USB Driver Arduino agar program yang
telah di buat pada aplikasi dapat di pindahkan ke papan arduino melalui kabel
USB. Pada langkah pertama yaitu download terlebih dahulu file CH341SER.zip
dan di dalamnya terdapat 2 folder seperti pada Gambar di bawah ini.

Sebelum melakukan instalasi extract terlebih dahulu folder “CH341SER” dan


simpan di lokasi penyimpanan sesuai keinginan. Kemudian buka file hasil
extract tadi maka akan tampil isi file tersebut seperti pada Gambar di bawah
ini.

Pada Gambar diatas terdapat file setup, untuk memulai instalasi USB Driver
klik ganda pada file tersebut dan akan muncul tampilan seperti pada Gambar
di bawah ini.

18 | A r i f S y a r i p u d i n
IoT Development Board 2017

Kemudian langkah terakhir yaitu dengan klik pada button “INSTALL” dan
proses instalasi akan berjalan, tunggu sampai proses instalasi driver selesai.
Setelah instalasi USB Driver selesai maka koneksifitas antara Arduino dan PC
melalui USB sudah dapat berjalan dengan baik.

19 | A r i f S y a r i p u d i n
IoT Development Board 2017
Pemrograman Dasar Arduino

2.1. Struktur Pemrograman Arduino


Pada dasarnya pemrograman Arduino sering disebut dengan sketch.
Skectch biasanya melibatkan dua buah fungsi yaitu setup() dan loop()
seperti yang terlihat pada Gambar dibawah ini.

Gambar diatas merupakan sketch yang di dalamnya terdapat dua buah


bentuk definisi dari suatu fungsi. Pada baris yang mengandung “void” dan
nama fungsi adalah judul dari suatu fungsi. Sedangkan “{}” adalah
pembuka fungsi, isi fungsi dan penutup fungsi. Fungsi merupakan deretan
instruksi yang di beri nama. Pada umumnya fungsi memberikan nilai

20 | A r i f S y a r i p u d i n
IoT Development Board 2017
ketika di panggil. Nilai yang di berikan tersebut dinamakan nilai balik.
Fungsi yang tidak memiliki nilai balik di definisikan dengan “void”. Dengan
kata lain fungsi dari setup() dan loop() di sini tidak memiliki nilai balik.
Fungsi setup() adalah fungsi yang di jalankan secara otomatis pertama kali
oleh papan Arduino. Karena sifatnya demikian, kode yang di simpan pada
fungsi ini adalah kode yang perlu di jalankan dengan pembacaan sekali
saja pada awal pemrograman di mulai.
Fungsi loop() adalah fungsi yang di jalankan secara berulang. Lebih
tepatnya lagi untuk penyimpanan kode pemrograman yang berupa aksi
dengan fungsi yang harus di jalankan secara terus menerus.

Diagram Alir Struktur Pemrograman Arduino

21 | A r i f S y a r i p u d i n
IoT Development Board 2017
Gambar 2.2. menunjukan proses pembacaan program yang di lakukan
oleh Arduino. Pada saat pertaman kali program di jalankan maka fungsi
“setup” akan terbaca lebih dahulu kemudian di lanjutkan dengan
pembacaan fungsi-fungsi yang ada pada fungsi “loop”. Program akan
terus melakukan pembacaan secara berulang pada fungsi “loop”
sedangkan fungsi “setup” hanya di baca sekali saja pada awal pembacaan
di mulai.

2.2. Instruksi Pemrograman I/O Pada Arduino


Setelah mengenal sketch pemrograman Arduino, sekarang akan di
bahas tentang kode instruksi untuk pemrograman input dan output
digital. Adapun instruksi-instruksi tersebut yaitu :

- delay(parameter1)
merupakan instruksi yang berfungsi untuk melakukan penjedaan dalam
suatu program dengan satuan nilai parameter1 adalah mili detik.
Contoh penulisan :
…............
delay(1000); //penjedaan program selama 1000mS (1S).
…………

22 | A r i f S y a r i p u d i n
IoT Development Board 2017
- delayMicroseconds(parameter1)
merupakan instruksi yang berfungsi untuk melakukan penjedaan dalam
suatu program dengan satuan nilai parameter1 adalah mikro detik.
Contoh penulisan :
…............
delayMicroseconds(1000); //penjedaan program selama
………… 1000uS (1mS).

- pinMode(parameter1, parameter2)
Merupakan instruksi yang berfungsi untuk menentukan mode suatu pin
pada Arduino sebagai input maupun output. Pada Arduino untuk mode
pin sebagai input secara default jika tidak ada instruksi yang di berikan
akan membaca dengan keadaan LOW. Jika input aktif yang diberikan
pada kondisi LOW maka pada instruksi ini perlu di tambahkan kode
“INPUT_PULLUP” sebagai modenya. Jika input aktif yang di berikan
pada kondisi HIGH maka cukup dengan kode “INPUT” sebagai modenya.
Parameter1 : Alamat pin yang akan digunakan
Parameter2 : Mode pin yang akan digunakan
Contoh penulisan :

pinMode(13,OUTPUT); //pin 13 digunakan sebagai output

pinMode(13,INPUT); //pin 13 digunakan sebagai input


nilai default LOW
23 | A r i f S y a r i p u d i n
IoT Development Board 2017

pinMode(13,INPUT_PULLUP); //pin 13 digunakan sebagai


input nilai default HIGH

- digitalWrite(parameter1,parameter2)
Merupakan instruksi yang berfungsi sebagai pemberi nilai kondisi suatu
pin digital (parameter1) output Arduino dengan keadaan (parameter2)
yaitu “HIGH” atau “LOW” disesuaikan dengan perintah yang di berikan.
Parameter1 : Alamat pin Arduino
Parameter2 : Nilai yang di berikan (HIGH atau LOW)
Contoh penulisan :

digitalWrite(13,HIGH); //pin 13 diberi kondisi HIGH


digitalWrite(13,LOW); //pin 13 diberi kondisi LOW

- digitalRead(parameter1)
Merupakan instruksi yang berfungsi untuk membaca nilai input digital
yang masuk sesuai dengan pin yang di baca (parameter1).
Parameter1 : Alamat pin Arduino
Contoh penulisan :

int nilai; //tipe bilangan bulat variable nilai


nilai = digitalRead(12); //penyimpanan nilai input pin 12
digitalWrite(13,nilai); //pemberian kondisi pada pin 13
24 | A r i f S y a r i p u d i n
IoT Development Board 2017

pada contoh penulisan di atas dapat disimpulkan bahwa variable nilai


berfungsi sebagai penyimpan kondisi input dari pin 12 Arduino
kemudian hasilnya di jadikan suatu parameter kondisi untuk
menentukan nilai dari pin 13 Arduino. Dengan kata lain jika input pin 12
bernilai HIGH maka Arduino akan memberikan nilai output pada pin 13
dengan kondisi HIGH yang di wakilkan oleh variable nilai, begitupun
sebaliknya.

- analogWrite(pin Number,nilai PWM)


Merupakan suatu perintah untuk memberikan nilai analog yang dapat
di fungsikan sebagai kendali kecepatan motor melalui rangkaian driver
motor. Pin Number adalah alamat pin yang akan di berikan sinyal output
analog oleh Arduino sedangkan nilai PWM merupakan nilai output yang
di berikan yaitu 8 bit (0 s.d 255). Contoh penulisan :
………..
int speed; //variable untuk menyimpan nilai analog
void setup(){
pinMode(13,OUTPUT); //pin 13 dijadikan output
}
void loop(){
speed=analogRead(A0); //pembacaan nilai analog A0
analogWrite(13,speed); //nilai analog pin 13 dipengaruhi A0
}
25 | A r i f S y a r i p u d i n
IoT Development Board 2017
- analogRead(channel)
ADC merupakan kepanjangan dari Analog to Digital Converter yang
berarti memiliki fungsi sebagai pengubah sinyal analog menjadi digital.
ADC banyak digunakan sebagai pengatur proses industri, komunikasi
digital dan rangkaian pengujian maupun pengukuran. ADC umumnya
digunakan sebagai perantara hubungan antara sensor dengan jenis
analog terhadap system komuter.
ADC memiliki 2 karakter prinsip, yaitu kecepatan sampling dan resolusi.
Kecepatan sampling suatu ADC menyatakan seberapa sering sinyal
analog dikonversikan ke bentuk sinyal digital pada selang waktu
tertentu. Kecepatan sampling biasanya dinyatakan dalam sample per
second (SPS).
Resolusi ADC menentukan ketelitian nilai konversi ADC. Sebagai contoh
ADC 8 bit akan memiliki output 8 bit data digital, berarti sinyal input
dapat dinyatakan dalam 255 (2𝑛 − 1) nilai diskrit. ADC 12 bit memiliki
12 bit output data digital, berarti sinyal input dapat dinyatakan dalam
4096 nilai diskrit. Untuk menentukan resolusi dapat digunakan rumus:

𝑉𝑟𝑒𝑓𝑓
𝑅𝑒𝑠𝑜𝑙𝑢𝑠𝑖 =
𝑏𝑖𝑡

Prinsip kerja ADC adalah mengkonversi sinyal analog kedalam bentuk


besaran yang merupakan rasio perbandingan sinyal input dan tegangan
referensi. Sebagai contoh, bila tegangan referensi 5 Volt, tegangan
input 2 Volt, rasio input terhadap referensi adalah 60%. Jadi jika
26 | A r i f S y a r i p u d i n
IoT Development Board 2017
menggunakan ADC 10 bit dengan skala maksimum 1024, akan
didapatkan sinyal digital sebesar 60% x 1024 = 614 (bentuk decimal).

Signal = (sample/max_value)*reference_voltage

= (614/1024)*5

= 2.998 Volts

Contoh penulisan :
………..
int data_analog0; //variable penyimpanan untuk nilai analog
………..
data_analog0=analogRead(A0); //hasil pembacaan analog A0

……….. //disimpan di variable data_analog0

2.3. Instruksi Pemrograman Bahasa C


Pada pembahasan materi instruksi pemrograman Bahasa c tahap
pertama meliputi bahasan mengenai header dan komentar, variable,
pengulangan (while) dan percabangan (if).

- Header dan komentar


Header merupakan include file (.hex), yang berguna untuk memberitahu
compiler agar membaca file yang ada pada library tersebut. Sehinga
compiler dapat mengenali definisi dari instruksi yang telah dibuat pada
27 | A r i f S y a r i p u d i n
IoT Development Board 2017
program dan tidak dianggap error. Sedangkan komentar berguna untuk
mempermudah mengingat fungsi dari statment yang kita buat
diprogram. Ada dua cara penulisan komentar yaitu dengan menggunakan
“//’ (untuk komentar 1 baris) dan “/*_____*/”(untuk komentar lebih dari
1 baris/bisa berupa paragraf). Contoh :

#include <Servo.h> //program include dengan file Servo


/*yang dimana terdapat informasi dan fungsi untuk kontroller Servo*/
#include <math.h> //program include pustaka matematika

- Variable
Variable adalah perintah untuk menyimpan data untuk dibaca datanya
dengan diwakilkan memori pada mikrokontroller. Namun sebelumnya
harus dideklarasikan dengan “tipe data” dan “nama variable” yang akan
digunakan. Untuk nama varible dan fungsi dapat berupa huruf (A...Z,
a...z) dan angka (0...9), juga karakter underscore(_). Cara penulisan
hanya bisa diawali dengan huruf atau underscore.
Varible global adalah variable yang nilainya dapat diakses dan ditulis
dari seluruh fungsi program yang ada. Sedangkan varible lokal hanya
dapat diakses dan ditulis sesuai dimana letak dari variable tersebut.

28 | A r i f S y a r i p u d i n
IoT Development Board 2017
Jenis-jenis type data

Type Size Range


(bits)
bit 1 0,1
char 8 -128 to 127
unsigned char 8 0 to 255
Signed char 8 -128 to 127
int 16 -32768 to 32767
short int 16 -32768 to 32767
unsigned int 16 0 to 65535
signed int 16 -32768 to 32767
long int 32 -2147483648 to 2147483647
unsigned long 32 0 to 4294967295
int
signed long int 32 -2147483648 to 2147483647
Float 32 ±1.175e-38 to ±3.402e38
Double 32 ±1.175e-38 to ±3.402e38

Khusus untuk tipe data bit hanya dapat dideklarasikan sebagai variable
global. Adapun cara penulisan konstanta :

a. int atau long int, format desimal (1234), biner (0b101001),


heksadesimal (0xff), oktal (0777).
b. unsigned int (10000U).
c. Long int (99L).
d. unsigned long int (99UL).
e. Floating point (1.234F).

29 | A r i f S y a r i p u d i n
IoT Development Board 2017
Karakter konstanta harus diikuti dengan tanda kutip (‘a’) sedangkan
konstanta string (“saya arif”). Contoh penulisan program seperti pada
listing di bawah ini.

#include <Servo.h> //program include dengan file Servo


#include <math.h> //Program include pustaka matematika
unsigned char a; //dklarasi variable global
/*deklarasi fungsi atau prosedur*/
void lampu(unsigned char kondisi)
{
digitalWrite(13,kondisi);
}

void setup (){ //Inisialisasi I/O


pinMode(13,OUTPUT); //inisialisasi pin 13 sebagai output
pinMode(12,INPUT); //inisialisasi pin 12 sebagai input
}

void loop(){
a=digitalRead(12); //keadaan input pin 12 disimpan ke var “a”
lampu(a); }

- Operator
Operator adalah karakter – karakter khusus untuk manipulasi variable.
Operator terdiri dari operator aritmatika, penugasan, logika dan bit.

Operator Aritmatika
Binary Operator Keterangan Contohnya
+ Penambahan Z=c+a
- Pengurangan Z=c-a

30 | A r i f S y a r i p u d i n
IoT Development Board 2017
* Perkalian Z=c*a
/ Pembagian Z=c/a
% Modulo Z=c%a

Unary Operator Keterangan Contohnya


++ Penambahan nilai Z++
dengan nilai 1
(increment)
-- Pengurangan nilai Z--
dengan nilai 1
(decrement)

Operator Penugasan

Penugasan Penjelasan Contoh Keterangan


= Pemberian nilai G=2 -
+= Penambahan nilai G+=2 G=G+2
-= Pengurangan nilai G-=2 G=G-2
*= Perkalian nilai G*=2 G=G*2
/= Pembagian nilai G/=2 G=G/2
%= Modulo nilai G%=2 G=G%2
<<= Pergeseran nilai ke kiri G<<=2 G=G<<2
>>= Pergeseran nilai ke kanan G>>=2 G=G>>2

31 | A r i f S y a r i p u d i n
IoT Development Board 2017
Untuk menguji benar atau tidaknya variable terhadap nilai yang akan
diuji, operator ini biasanya digunakan pada perintah yang terdapat
kondisinya.
Operastor Relasional

Operator Kondisi Contoh


== Sama dengan if(A==5)//jika nilai A sama
dengan 5
!= Tidak sama if(A!=5)//jika nilai A tidak sama
dengan dengan 5
> Lebih besar if(A>5)//jika nilai A lebih besar
dari 5
< Lebih kecil if(A<5)//jika nilai A lebih kecil dari
5
>= Lebih besar sama if(A>=5)//jika nilai A lebih besar
dengan sama dengan 5
<= Lebih kecil sama if(A<=5)//jika nilai A lebih kecil
dengan sama dengan 5

Operator Bit
Operator Operation
& Perintah kogika and
| Perintah logika or
^ Perintah lohika ex-or

32 | A r i f S y a r i p u d i n
IoT Development Board 2017
~ Perintah logika not
>> Perintah untuk menggeser tiap bit ke kanan
<< Perintah untuk menggeser tiap bit ke kiri

Pemeriksaan suatu kondisi dengan dua buah data untuk menentukan


benar atau salahnya nilai kondisi tersebut. Biasanya operator ini
digunakan pada control aliran program bersyarat kondisi nilai.

Operator Logika
Operator Operation
&& Operator untuk memeriksa dua data yang nilai
keduanya harus benar (and) baru kondisi tersebut
dinyatakan benar
|| Operator untuk memeriksa dua data yang salah
satu nilai harus benar (or) baru kondisi tersebut
dinyatakan benar
! Operator ini untuk pemeriksaan nilai yang salah
dianggap benar (kebalikannya /not)

- Pengulangan (while)
Merupakan suatu perulangan yang dimana alur programnya yaitu, jika
suatu kondisi bernilai true atau benar maka pernyataan-pernyataan
dibawahnya (while) akan diteruskan hingga selesai kemudian akan
menguji kembali kondisi diatas.
33 | A r i f S y a r i p u d i n
IoT Development Board 2017

Diagram alir fungsi “while”


Contoh penulisan pemrograman :
………..
void loop(){
data=0;
while(data>8) //syarat pengulangan
{
data++; //perubahan add pada variable data +=1
digitalWrite(13,HIGH); //pin 13 berkondisi high
delay(200); //penjedaan 200ms setiap cycle
}
digitalWrite(13,LOW); //pin 13 berkondisi low
delay(1000); //penjedaan 1s sebelum program kembali ke awal
}
………...

34 | A r i f S y a r i p u d i n
IoT Development Board 2017
- Percabangann (if)

Diagram alir fungsi “if”


Fungsi “if” merupakan percabangan untuk memeriksa suatu kondisi dan
jika kondisi tersebut memenuhi syarat maka operasi yang ada dalam
fungsi “if” akan di proses. Apabila kondisi tersebut tidak memenuhi syarat
maka operasi dalam fungsi “if” tidak akan di proses.
Contoh penulisan program :
………
void loop(){
int tombol=digitalWrite(12);
if(tombol==HIGH) {
digitalWrite(13,HIGH);
}
}
………
Jika variable tombol bernilai HIGH maka pin 13 akan berkondisi HIGH
namun apabila variable tombol tidak bernilai HIGH maka pin 13 tidak
35 | A r i f S y a r i p u d i n
IoT Development Board 2017
akan di proses menjadi HIGH dalam fungsi “if”. Variable tombol
dipengaruhi oleh keadaan pin 12 yang berstatus sebagai INPUT.

- Percabangan (if-else)

Diagram alir fungsi if-else

Fungsi if-else merupakan suatu percabangan yang berfungsi untuk


memriksa suatu kondisi dengan dua pemilihan operasi pada masing-
masing proses. Jika kondisi yang di harapkan tidak memenuhi syarat
maka operasi yang akan di proses yaitu hanya system operasi yang berada
pada fungsi “else”. Namun apabila kondisi memenuhi syarat maka
operasi yang akan di proses yaitu hanya system operasi yang berada pada
fungsi “if”. Contoh penulisan program :
………
void loop(){
36 | A r i f S y a r i p u d i n
IoT Development Board 2017
int tombol=digitalWrite(12);
if(tombol==HIGH) {
digitalWrite(13,HIGH);
}
else {
digitalWrite(13,LOW);
}
}
………
Jika variable tombol bernilai HIGH maka pin 13 akan berkondisi HIGH
namun apabila variable tombol tidak bernilai HIGH maka pin 13
berkondisi LOW. Variable tombol dipengaruhi oleh keadaan pin 12 yang
berstatus sebagai INPUT.

- Percabangan (if-else if,…..else if-else)

Diagram alir fungsi “if-else if,….,else if-else”


37 | A r i f S y a r i p u d i n
IoT Development Board 2017
Fungsi “if-else if,…..,else if-else” merupakan suatu percabangan dengan
pemeriksaan syarat lebih dari dua dan begitupun pemilihan operasi yang
disesuaikan dengan setiap syarat yang harus di penuhi dengan jumlah
syarat ke-n dan operasi sesuai jumlah percabangan (syarat) yang
digunakan. Contoh penulisan :
……….
void loop(){
int tombol1=digitalRead(12);
int tombol2=digitalRead(11);
int tombol3=digitalRead(10);
if(tombol1==HIGH){
digitalWrite(13,HIGH);
}
else if(tombol2==HIGH){
digitalWrite(14,HIGH);
}
else if(tombol3==HIGH){
digitalWrite(15,HIGH);
}
else {
digitalWrite(13,LOW);
digitalWrite(14,LOW);
digitalWrite(15,LOW);
}
38 | A r i f S y a r i p u d i n
IoT Development Board 2017
}
……….

Dari listing program di atas dapat di jelaskan bahwa ketika program


dimulai maka pertama kali yang akan di periksa yaitu syarat apakah
tombol1 bernilai HIGH? Jika tidak maka dilanjutkan apakah tombol2
bernilai HIGH? Jika tidak maka dilanjutkan apakah tombol3 bernilai HIGH?
Jika tidak maka operasi yang akan di proses yaitu pin 13, 14 dan 15 akan
bernilai LOW. Apabila pada percabangan tombol1 memenuhi nilai HIGH
maka operasi yang akan di proses yaitu pin 13 bernilai HIGH. Begitupun
pada syarat-syarat percabngan berikutnya.

39 | A r i f S y a r i p u d i n
IoT Development Board 2017
Control Buzzer

Alat dan Bahan

- Kabel USB to Micro (1pcs)


- IoT Development Board (1unit)
- Kabel Jumper Female to Female (2pcs)

Pengkabelan

Buzzer Pin Board / Arduino Pin


G G
S D3

Program
void setup() {
pinMode(3,OUTPUT);
}

void loop() {
digitalWrite(3,HIGH);
delay(100);
digitalWrite(3,LOW);
delay(100);
}

40 | A r i f S y a r i p u d i n
IoT Development Board 2017
Penjelasan

Setup :

pinMode(3,OUTPUT), merupakan instruksi pengkondisi status pin D3


pada Arduino menjadi output yang terhubung ke pin ‘S’ pada Buzzer.

Loop :

digitalWrite(3,HIGH), instruksi untuk memberi kondisi HIGH pada pin 3


arduino. delay(100), instruksi untuk membuat jeda program selama
100mS. Berdasar listing pemrograman di atas tadi maka akan menghasilkan
suara beep yang berulang terus menerus dengan waktu jeda 100mS setiap
pergantian kondisi Buzzer antara bunyi dan mati.

41 | A r i f S y a r i p u d i n
IoT Development Board 2017
Servo dan Buzzer
Alat dan Bahan

- Motor Servo (1unit)


- IoT Development Board (1unit)
- Kabel Jumper Female to Female (2 pcs)
- Adaptop/PSU 7 s/d 12 VDC
- Library Servo.h

Pengkabelan

Buzzer Pin Board / Arduino Pin


G G
S D3

Servo Cable Motor Servo / Board


Orange S (D5)
Merah V
Coklat G

Adaptor Regulator 5V / Board


(+) V (Terminal Blok)
(-) G (Terminal Blok)

Program
#include <Servo.h>
Servo servo1;
void setup() {
servo1.attach(5);
pinMode(3,OUTPUT);
}

42 | A r i f S y a r i p u d i n
IoT Development Board 2017
void loop() {
digitalWrite(3,HIGH);
delay(500); A
digitalWrite(3,LOW);
for(int sweep=0;sweep<=180;sweep++){
servo1.write(sweep); B
delay(20);
}
digitalWrite(3,HIGH);
delay(500); C
digitalWrite(3,LOW);
for(int sweep=180;sweep>=0;sweep--){
servo1.write(sweep); D
delay(20);
}
}

Penjelasan

Setup :

#include <Servo.h> , merupakan pustaka untuk pemanggilan fungsi Servo.


Servo servo1, merupakan deklarasi dari fungsi “Servo” menjadi “servo1”.
Servo1.attach(5), pengalamatan pin yang akan digunakan untuk sinyal servo
yaitu pin 5 pada Arduino. pinMode(3,OUTPUT) yaitu menetapkan pin D3
Arduino untuk dijadikan pin Output (Buzzer).

Loop :

A , merupakan fungsi dimana buzzer akan bunyi selama 500mS kemudian


mati kembali. B, merupakan fungsi untuk “servo1.write(sweep)”
melakukan gerakan sweeper dari posisi 0° hingga 180°. C, merupakan
fungsi dimana buzzer akan bunyi selama 500mS kemudian mati kembali.
D, merupakan fungsi untuk “servo1.write(sweep)” melakukan gerakan
sweeper dari posisi 180° hingga 0°.

43 | A r i f S y a r i p u d i n
IoT Development Board 2017
Relay Dan Bluetooth
Alat dan Bahan

- Module Bluetooth HC-05 (1unit)


- IoT Development Board (1unit)
- Kabel Jumper Female to Female (9pcs)
- Lampu 220VAC (3unit)
- Library Software Serial

Pengkabelan

Bluetooth Module Board / Arduino Pin


5V 5V-A
G G
TX D2 (RX)
RX D3 (TX)

Relay Control Board / Arduino Pin


G G
5V 5V-A
R1 D4
R2 D5
R3 D6

Relay Control Lampu 220V AC PLN 220V AC


R1-OUT (Com) - L (Phase)
R2-OUT (Com) - L (Phase)
R3-OUT (Com) - L (Phase)
R1-OUT (NO) L1 (Phase Lampu 1) -
R1-OUT (NO) L2 (Phase Lampu 2) -
R1-OUT (NO) L3 (Phase Lampu 3) -
- N1 (Netral Lampu1) N (Netral)
- N2 (Netral Lampu 2) N (Netral)
- N3 (Netral Lampu 3) N (Netral)

44 | A r i f S y a r i p u d i n
IoT Development Board 2017
Program
#include <SoftwareSerial.h>
A
SoftwareSerial bluetooth(2,3);
int data_b; B

void setup() {
// put your setup code here, to run once:
bluetooth.begin(9600); C
pinMode(4,OUTPUT);
pinMode(5,OUTPUT); D
pinMode(6,OUTPUT);
}

void loop() {
// put your main code here, to run repeatedly:
if(bluetooth.available()){ E
data_b=bluetooth.read(); F
if(data_b=='A') { digitalWrite(4,HIGH); }
else if(data_b=='a') { digitalWrite(4,LOW); }
if(data_b=='B') { digitalWrite(5,HIGH); }
else if(data_b=='b') { digitalWrite(5,LOW); } G
if(data_b=='C') { digitalWrite(6,HIGH); }
else if(data_b=='c') { digitalWrite(6,LOW); }
}
}

Penjelasan

Setup :

A, merupakan library untuk fungsi software serial serta deklarasi pin untuk
penggunaan software serial tersebut. B, variable yang berfungsi untuk
menyimpan hasil pembacaan dari komunikasi serial melalui fungsi
“Software Serial”. C, Penentuan bitrate komunikasi software serial yang
digunakan yaitu 9600. D, Penetapan pin digital 4 s.d 6 sebagai output untuk
kendali R2, R2 dan R3.

45 | A r i f S y a r i p u d i n
IoT Development Board 2017
Loop :

E, Instruksi untuk memfilter agar pembacaan komunikasi software serial


aktif ketika ada data pengiriman dari device lainnya (smart phone, modul
Bluetooth atau laptop). F, data_b merupakan suatu variable yang
berfungsi untuk menyimpan hasil pembacaan komunikasi software serial.
G, Event yang terjadi untuk mengendalikan ke tiga relay (R1, R2 dan R3)
pada saat data komunikasi software serial diterima.

Note :

Instal pada smart phone aplikasi “S2 Terminal for Bluetooth” agar dapat
melakukan percobaan sesuai dengan listing program di atas.

46 | A r i f S y a r i p u d i n
IoT Development Board 2017
Relay Dan Wifi
Installasi Library Wemos Wifi D1 Mini

Untuk mengoperasikan modul wifi wemos d1 mini diperlukan library yang


harus di tanam pada aplikasi Arduino agar dapat beroperasi dengan baik.
Langkah – langkah yang harus dilakukan pada saat installasi library wifi ini
yaitu :

- Buka IDE Arduino yang sudah terinstal


- Kemudian pilih file > preference

47 | A r i f S y a r i p u d i n
IoT Development Board 2017
- Tambahkan alamat URl ini
http://arduino.esp8266.com/stable/package_esp8266com_index.json
pada addational board manager dan klik “OK”.

- Pilih “Tools” > “Board” > “Board Manager”

48 | A r i f S y a r i p u d i n
IoT Development Board 2017
- Cari direktori “esp8266” (biasa berada paling bawah), kemudian klik
“Instal” dan pastikan computer anda sedang terhubung dengan
internet. Tunggu hingga proses installasi selesai.

- Jika sudah selesai Klik “OK” dan library ESP8266 sudah dapat
digunakan.

Alat dan Bahan

- Module Wifi D1 Mini (1unit)


- IoT Development Board (1unit)
- Adaptor / PSU 7 s/d 12 VDC – 1A
- Kabel Female to Female (7pcs)
- Library ESP8266
- Hotspot (Smartphone)
- Browser (Chrome)

49 | A r i f S y a r i p u d i n
IoT Development Board 2017
Pengkabelan

Wemos D1 Mini Board / IoT Relay Control


Development Board
5V 5V-B 5V
G G G
D5 - R1
D6 - R2
D7 - R3

Adaptor / PSU Regulator 5VDC


(+) 7-12VDC V (Terminal Blok)
(-) 0VDC G (Terminal Blok)

Program
#include <ESP8266WiFi.h>

const char* ssid = "Arifah";


A
const char* password = "filzaharifah";
String Relay1 = "OFF", Relay2="OFF", Relay3="OFF";
WiFiServer server(80);

void setup() {
Serial.begin(115200);
B
delay(10);
//setting pin output
pinMode(LED_BUILTIN, OUTPUT);
pinMode(D5,OUTPUT);
pinMode(D6,OUTPUT);
C
pinMode(D7,OUTPUT);
digitalWrite(LED_BUILTIN, LOW);
//terhubung ke network wifi
Serial.println();
Serial.println();
Serial.print("Connecting to ");

50 | A r i f S y a r i p u d i n
IoT Development Board 2017
Serial.println(ssid);

//hubungkan ke alamat hot spot


D
WiFi.begin(ssid, password);
//pengecekan status koneksi wifi
while (WiFi.status() != WL_CONNECTED) {
delay(500);
E
Serial.print(".");
}
//di eksekusi jika wifi telah terhubung
Serial.println("");
Serial.println("WiFi connected");
//memulai server
server.begin();
Serial.println("Server started");
//tampilkan IP Address pada serial monitor
Serial.print("Use this URL to connect: "); F
Serial.print("http://");
Serial.print(WiFi.localIP());
Serial.println("/");
}

void loop() {
//periksa konektifitas client
WiFiClient client = server.available();
if (!client) {
G
return;
}

//menunggu sampai client mengirimkan data


Serial.println("new client");
while(!client.available()){ H
delay(1);
}

// Read the first line of the request


String request = client.readStringUntil('\r');
Serial.println(request);
I
51 | A r i f S y a r i p u d i n
IoT Development Board 2017
client.flush();
// Match the request

if (request.indexOf("/R1=ON") != -1) {
digitalWrite(D5, HIGH);
Relay1 = "ON";
}
if (request.indexOf("/R1=OFF") != -1) {
digitalWrite(D5, LOW);
Relay1 = "OFF";
}
if (request.indexOf("/R2=ON") != -1) {
digitalWrite(D6, HIGH);
Relay2 = "ON";
}
if (request.indexOf("/R2=OFF") != -1) {
digitalWrite(D6, LOW);
Relay2 = "OFF";
}
if (request.indexOf("/R3=ON") != -1) {
digitalWrite(D7, HIGH);
J
Relay3 = "ON";
}
if (request.indexOf("/R3=OFF") != -1) {
digitalWrite(D7, LOW);
Relay3 = "OFF";
}
if (request.indexOf("/ALL=ON") != -1) {
digitalWrite(D7, HIGH);
digitalWrite(D6, HIGH);
digitalWrite(D5, HIGH);
Relay3 = "ON";
Relay2 = "ON";
Relay1 = "ON";
}
if (request.indexOf("/ALL=OFF") != -1) {
digitalWrite(D7, LOW);
digitalWrite(D6, LOW);

52 | A r i f S y a r i p u d i n
IoT Development Board 2017
digitalWrite(D5, LOW);
Relay3 = "OFF";
Relay2 = "OFF";
Relay1 = "OFF";
}

// Set ledPin according to the request


//digitalWrite(ledPin, value);

// 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>");
client.println("<html>");
K
client.println("<head>");
client.println("<title>Relay Control</title>");
client.println("</head>");

client.println("<h2 align=\"Left\">Relay Control</h2>");


L
client.println("<a href=\"/R1=ON\"\"><button>R1 On</button></a>");
client.println("&nbsp");
client.println("<a href=\"/R1=OFF\"\"><button>R1 Off</button></a>");
client.println("&nbsp");
client.println("Relay1 is ");
M
client.println(String(Relay1));
client.println("<br><br>");

client.println("<a href=\"/R2=ON\"\"><button>R2 On</button></a>");


client.println("&nbsp");
client.println("<a href=\"/R2=OFF\"\"><button>R2 Off</button></a>");
client.println("&nbsp");
client.println("Relay2 is ");
N
client.println(String(Relay2));
client.println("<br><br>");

53 | A r i f S y a r i p u d i n
IoT Development Board 2017
client.println("<a href=\"/R3=ON\"\"><button>R3 On</button></a>");
client.println("&nbsp");
client.println("<a href=\"/R3=OFF\"\"><button>R3 Off</button></a>");
client.println("&nbsp");
client.println("Relay3 is ");
O
client.println(String(Relay3));
client.println("<br><br>");

client.println("<a href=\"/ALL=ON\"\"><button>All On</button></a>");


client.println("&nbsp");
client.println("<a href=\"/ALL=OFF\"\"><button>All Off</button></a>");
client.println("<br><br>"); P

client.println("</html>");

delay(1);
Serial.println("Client disonnected");
Serial.println("");

Penjelasan

Setup :

A, pemanggilan library “ESP8266WiFi.h” dan deklarasi penetapan jaringan


wifi yang akan digunakan (ssid dan password). B, setting bit rate untuk
serial monitor pada “115200”. C, konfigurasi pin D5-D7 pada module
wemos wifi yang terintegrasi dengan Relay 1- 3 sebagai pin Output. D,
Menghubungkan ke jaringan wifi (sesuai dengan ssid dan passwordnya). E,
perintah untuk menunggu hingga module wemos wifi terhubung ke
jaringan wifi sesuai dengan ssid dan password yang digunakan. F, perintah
untuk menampilkan IP Address yang didapat oleh module wifi ke serial
monitor.

54 | A r i f S y a r i p u d i n
IoT Development Board 2017
Loop :

G, memeriksa konekifitas client terhadap module wemos wifi. H, perintah


untuk menunggu hingga client mengirimkan data ke module wemos wifi. I,
perintah untuk membaca data yang dikirim oleh client. J, sinkronisasi event
yang akan diberikan untuk output berdasarkan penerimaan data yang
dikirim oleh client. K, Pembuatan title untuk tampilan pada browser
dengan metode pemrograman HTML. L, pembuatan judul. M, Pembuatan
button untuk fungsi relay 1. N, pembuatan Button untuk fungsi relay 2. O,
pembuatan button untuk fungsi relay 3. O, pembuatan button untuk fungsi
semua relay.

Tampilan Aplikasi Pada Browser (Copas IP Addressnya pada Browser)

Tampilan Ip Address pada Serial Monitor

55 | A r i f S y a r i p u d i n
IoT Development Board 2017
Kendali Servo Dengan Sensor Kelembaban Tanah
Alat dan Bahan
- Module Sensor Kelembaban Tanah (1unit)
- IoT Development Board (1unit)
- Motor Servo MG905 (1uit)
- Toples yang berisi tanah berair dan kering / berisi air saja
- Adaptor / PSU 7-12VDC (min 1A)

Pengkabelan
Sensor Tranducer Board / Arduino Servo
Kelembaban
Pin Out 1,2 Conector 2pin - -
- VCC 5V-A -
- GND G -
- A0 A0 -
Motor Servo
- - G Coklat
- - V Merah
- - S (D5) Orange
Program
#include <Servo.h>

Servo servo1; A
int kadar_air;
int sweep;

void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
B
servo1.attach(5);
}

void loop() {
56 | A r i f S y a r i p u d i n
IoT Development Board 2017
// put your main code here, to run repeatedly:
kadar_air=analogRead(A0);
C
kadar_air=map(kadar_air,1024,0,0,100);
Serial.print("Kadar Air : ");
Serial.print(kadar_air);
D
Serial.println(" %");
delay(100);

if(kadar_air<30){
sweep=map(kadar_air,0,29,180,0);
E
servo1.write(sweep);
}
else if(kadar_air>=30){
servo1.write(0); F
}
}
Penjelasan
Setup :

A, Pemanggilan library “Servo.h”, deklarasi class dari “Servo” dan variable


global untuk penyimpanan nilai dari pembacaan sensor kelembaban
tanah. B, setting baud komunikasi serial pada bit rate 9600 dan
pengalamatan untuk penggunaan pin Arduino sebagai fungsi output
sinyal Servo pada pin D5.

Loop :

C, pembacaan nilai sensor kelembaban dan pengkonversian nilai ADC 10


bit menjadi persentase dari 0 s.d 100. D, Penampilan nilai hasil konversi
ADC ke dalam serial monitor. E, Percabangan event jika kadar air terbaca
kurang dari 30 % maka servo1 akan bergerak dari 0 derajat hingga 180
derajat sesuai dengan skala persentase air yaitu dari mulai 29% hingga
0%. F, instruksi jika kadar air melebihi 30% maka kondisi servo akan
berada pada posisi 0 derajat.

57 | A r i f S y a r i p u d i n
IoT Development Board 2017
RF ID
Alat dan Bahan
- Module RFID (1unit)
- IoT Development Board (1unit)
- Kabel Jumper Female to Female (10pcs)
- Library RFID

Pengkabelan
Module RFID Board / Arduino Relay Control
SDA D10 -
SCK D13 -
MOSI D11 -
MISO D12 -
GND G -
RST D9 -
3V3 3V3 -
- G G
- 5V-A 5V
- D3 R1

Program
#include <SPI.h>
#include <RFID.h>

A
#define SS_PIN 10
#define RST_PIN 9

RFID rfid(SS_PIN,RST_PIN);
int serNum[5];
int cards[][5] = { B
{37,116,194,17,130},
{70,131,61,217,33} };

58 | A r i f S y a r i p u d i n
IoT Development Board 2017
bool access = false;

void setup(){
Serial.begin(9600);
SPI.begin();
rfid.init(); C
pinMode(3,OUTPUT);
}

void loop(){
if(rfid.isCard()){
if(rfid.readCardSerial()){
Serial.print(rfid.serNum[0]); Serial.print('\t');
Serial.print(rfid.serNum[1]); Serial.print('\t');
Serial.print(rfid.serNum[2]); Serial.print('\t');
D
Serial.print(rfid.serNum[3]); Serial.print('\t');
Serial.print(rfid.serNum[4]); Serial.print('\t');
Serial.print('\n');
for(int x = 0; x < sizeof(cards); x++)
{
for(int i = 0; i < sizeof(rfid.serNum); i++ )
{
if(rfid.serNum[i] != cards[x][i])
{
access = false;
E
break;
}
else
{
access = true;
}
}
if(access)
{
digitalWrite(3,HIGH); delay(2000);
F
digitalWrite(3,LOW);
break;
}

59 | A r i f S y a r i p u d i n
IoT Development Board 2017
}
}
}
delay(500);
}

Penjelasan
Setup :

A, Pemanggilan library SPI.h dan RFID.h, deklarasi pin 10 sebagai SS dan


pin 9 pada Arduino sebagai reset. B, Deklarasi class RFID beserta
pengalamatan pin SS dan Reset, Variable (buffer) untuk pembacaan
setiap ID. C, Konfigurasi komunikasi pada serial monitor dengan baud rate
9600, inisialisasi fungsi SPI dan RFID beserta pengalamatan pin D3 sebagai
output yang terintegrasi dengan relay1 pada Iot Board Development.

Loop :

D, Pengecekan jika ada ID Card yang terdeteksi maka akan ditampilkan


pada Serial monitor. E, Sinkronisasi setiap ID Card yang terdeteksi dengan
Nomor ID yang tersimpan pada buffer. F, Event jika ID Card yang
terdeteksi sama dengan nomor ID yang terdapat pada buffer maka relay1
akan On selama 2 detik setelah itu mati kembali dan menunggu respon
dari ID Card berikutnya.

60 | A r i f S y a r i p u d i n
IoT Development Board 2017
Sensor DHT11
Alat dan Bahan
- Module DHT11 (1unit)
- IoT Development Board (1unit)
- Kabel Jumper Female to Female (7pcs)
- Library DHT11

Pengkabelan
DHT11 Board / Arduino Buzzer Control Relay
(+) 5V-A - 5V
Out D5 - -
(-) G G G
- D6 S -
- D2 - R1
- D3 - R2
- D4 - R3

Program
#include <dht.h>

dht DHT; A
#define DHT11_PIN 5
int dht_;

void setup()
{
Serial.begin(9600);
pinMode(2,OUTPUT);
B
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(6,OUTPUT);
}

61 | A r i f S y a r i p u d i n
IoT Development Board 2017

void loop()
{
dht_= DHT.read11(DHT11_PIN);
Serial.print("Humidity : ");
Serial.print(DHT.humidity, 1); C
Serial.print(",\t");
Serial.print("Temperature : ");
Serial.println(DHT.temperature, 1);

if(DHT.temperature>=27&&DHT.temperature<=30){
digitalWrite(2,HIGH);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(6,LOW);
}
if(DHT.temperature>=31&&DHT.temperature<=35){
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,LOW); D
digitalWrite(6,LOW);
}
if(DHT.temperature>=36){
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(6,HIGH);
}

}
Penjelasan
Setup :
A, Pemanggilan library DHT11, deklarasi class “dht” dan variable untuk
penyimpanan hasil pembacaan sensor DHT11. B, Konfigurasi baud rate
untuk serial monitor dengan bit rate 9600 dan pengalamatan pin 2 s.d 4

62 | A r i f S y a r i p u d i n
IoT Development Board 2017
sebagai Output yang terhubung dengan R1-3 pada Control Relay. Dan pin
6 sebagai output yang terhubung dengan pin “S” pada Buzzer.

Loop :
C, Pembacaan sensor DHT11 yang nilainya disimpan pada variable dht_ dan
hasilnya berupa humidity serta temperature ditampilkan pada serial
monitor. D, Event jika temperature yang terbaca diantara range 27 – 30
derajat Celcius maka relay 1 akan ON, jika range 31 – 35 derajat celcius
maka relay 1 dan 2 akan ON, jika temperature terbaca lebih besar dari 36
maka relai 1,2,3 dan buzzer akan On.

63 | A r i f S y a r i p u d i n
IoT Development Board 2017
Monitoring Sensor DHT11
Alat dan Bahan
- Module DHT11 (1unit)
- IoT Development Board (1unit)
- Kabel Jumper Female to Female (7pcs)
- Libarary DHT11 dan Wemos Wifi ESP8266
- Library Software Serial

Pengkabelan
DHT11 Board / Arduino Wemos Wifi Buzzer
(+) 5V-A 5V -
Out D5 - -
(-) G G G
- - D4 S
- D2 D3 -
- D3 D2 -

Program
1. Arduino Nano
#include <SoftwareSerial.h>
#include <dht.h>

dht DHT; A
SoftwareSerial rxtx(2,3);
#define DHT11_PIN 5

int dht_;

void setup()
{
Serial.begin(9600);
rxtx.begin(115200);

64 | A r i f S y a r i p u d i n
IoT Development Board 2017
}

void loop()
{
dht_= DHT.read11(DHT11_PIN);
Serial.print("Humidity : ");
Serial.print(DHT.humidity, 1);
Serial.print(",\t");
Serial.print("Temperature : ");
Serial.println(DHT.temperature, 1);

rxtx.println(DHT.humidity, 1);
rxtx.println(DHT.temperature, 1); B
delay(1000);

2. Module Wemos Wifi


#include <SoftwareSerial.h>
#include <ESP8266WiFi.h>

const char* ssid = "Arifah";


const char* password = "filzaharifah";
String suhu, suhu1, lembab, alarm; C
int suhu_alarm;

SoftwareSerial rxtx(D2,D3);
WiFiServer server(80);

void setup() {
Serial.begin(115200);
delay(10);
rxtx.begin(115200);
pinMode(D4, OUTPUT);
D
digitalWrite(D4, LOW);

WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
65 | A r i f S y a r i p u d i n
IoT Development Board 2017
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");

// Start the server


server.begin();
Serial.println("Server started");

// Print the IP address


Serial.print("Use this URL to connect: ");
Serial.print("http://");
Serial.print(WiFi.localIP());
Serial.println("/");

void loop() {
// Check if a client has connected
WiFiClient client = server.available();
if (!client) {
return;
}
if(rxtx.available()){
suhu1=rxtx.readString();
suhu=suhu1.substring(5,9);
suhu_alarm=suhu.toInt(); E
lembab=suhu1.substring(0,4);
suhu1="";
}
if(suhu_alarm>32){ digitalWrite(D4,HIGH); alarm="ON"; }
else if(suhu_alarm<32) { digitalWrite(D4,LOW); alarm="OFF"; } F

client.flush();
// Return the response
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");

66 | A r i f S y a r i p u d i n
IoT Development Board 2017
client.println(""); // do not forget this one
//=====================================================================
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.println("<head>");
client.println("<title>Monitoring DHT11</title>");
client.println("<meta http-equiv=\"refresh\"content=\"5\">"); //set refresh time \"1\"
rubah angka (detik)
client.println("</head>");

client.println("<body>");
client.println("<h2 align=\"left\">Monitoring Sensor DHT11</h2>");

client.println("<tr>");
client.println("<td align=\"left\">Suhu : "+String(suhu)+" C</td>");
client.println("<br></br>");
client.println("<td align=\"left\">Humidity : "+String(lembab)+"</td>");
client.println("<br></br>");
client.println("<td align=\"left\">Alarm : "+String(alarm)+"</td>"); G
client.println("</tr>");

client.println("</table>");
client.println("</body>");
client.println("</html>");
delay(1);
//Serial.println("Client disonnected");
//Serial.println("");

67 | A r i f S y a r i p u d i n
IoT Development Board 2017
Penjelasan
1. Arduino Nano
A, merupakan pemanggilan library software serial beserta deklarasi
pin D2 = RX dan D3 = TX pada Arduino nano. B, pengiriman data dari
hasil pembacaan sensor berupa nilai temperature dan humidity ke
wemos wifi melalui port software serial D2 dan D3.

2. Wemos Wifi
C, Setting yang sama dengan penggunaan wemos wifi pada percobaan
sebelumnya, namun disini ditambahkan fungsi dari library software
serial dimana D2=RX dan D3=TX pada module wemos wifi. D, setting
bau rate komunikasi software serial (D2, D3) dan pengalamatan
Output D4 yang terhubung ke Buzzer. E, Pembacaan data yang dikirim
oleh Arduino Nano untuk disimpan pada masing-masing variable
sesuai dengan fungsinya. F, Pengkondisi output jika suhu mencapai
lebih dari 32 derajat Celcius maka alarm akan berbunyi dan
sebaliknya. G, Fungsi untuk menampilkan nilai suhu pada halaman
browser.

Tampilan Pada Browser

68 | A r i f S y a r i p u d i n
IoT Development Board 2017
NRF24L01
Alat dan Bahan
- Module DHT11 (1unit)
- IoT Development Board (2unit)
- Linrary NRF24L01 dan DHT11
- IoT Development Board 1 (Node)
- IoT Development Board 2 (Server)

Pengkabelan
DHT11 Board / Arduino 1 Board / Arduino 2
(+) 5V-A -
Out D5 -
(-) G -

NRF24L01 (Board1) - -
CE 9 -
CSN 10 -

NRF24L01 (Board2) - -
CE - 9
CSN - 10

Program
1. IoT Development Board 1 (Node)

#include <SPI.h>
#include <nRF24L01.h>
A
#include <RF24.h>
#include <dht.h>

69 | A r i f S y a r i p u d i n
IoT Development Board 2017
dht DHT;
#define DHT11_PIN 5
RF24 radio(9,10); B
const uint64_t rxAddr=0xE8E8F0F0E1LL;
char text[30]={0};
String RadioSend;

//---------Variable DHT
int dht_sens, dht_hum, dht_temp;
String sens_temp, sens_hum; C

void setup() {
Serial.begin(9600); D
radio.begin();
}

void loop() {
dht_sens=DHT.read11(DHT11_PIN);
dht_hum=DHT.humidity; E
dht_temp=DHT.temperature;
sens_hum=String(dht_hum)+"A";
//------------------------------------temperature
F
sens_temp=String(dht_temp)+"B";
//------------------------------------
radio.setRetries(15,15);
radio.openWritingPipe(rxAddr);
radio.stopListening();
RadioSend=sens_hum+sens_temp; G
Serial.println(RadioSend);
RadioSend.toCharArray(text,100);
radio.write(&text,sizeof(text));
delay(1000);
}

70 | A r i f S y a r i p u d i n
IoT Development Board 2017
2. IoT Development Board 2 (Server)
#include <SPI.h>
#include <nRF24L01.h>
A
#include <RF24.h>

RF24 radio(9,10);
const uint64_t rxAddr=0xE8E8F0F0E1LL; B
char text[100]={0};
String baca1;

//-------Untuk Humidity
String sens_hum;
int hum_sens;
//-------Untuk Temperature
C
String sens_temp;
int temp_sens;

void setup() {
Serial.begin(9600);
radio.begin();
D
}

void loop() {
radio.openReadingPipe(1,rxAddr);
radio.startListening(); E
if(radio.available())
{
radio.read(&text,sizeof(text));
if(text){
baca1+=text;
if(baca1.indexOf("B")>-1){
sens_hum=baca1.substring(0,2); //A F
sens_temp=baca1.substring(3,5); //B
hum_sens=sens_hum.toInt();
temp_sens=sens_temp.toInt();
//------------------
baca1="";
text[100]={0};
71 | A r i f S y a r i p u d i n
IoT Development Board 2017
}
}
baca1="";
}
Serial.print("Suhu : ");
Serial.print(temp_sens); Serial.print("`C");
Serial.print('\t');
Serial.print("Humidity : "); G
Serial.print(hum_sens); Serial.println("%");
delay(1000);
}

Penjelasan
1. IoT Development Board 1 (Node)
Setup :
A, pustaka library SPI, NRF24L01 dan NRF serta sensor DHT11. B,
Deklarasi class dari DHT, Pengalamatan Pin CE dan CSN radio ke pin
9 dan 10, pengalamatan untuk komunikasi NRF24L01
(“0xE8E8F0F0E1LL”), buffer untuk pengiriman data dari Node ke
Server, penyimpanan data sensor keseluruhan yang akan di kirim
ke Server. C, Variable penyimpanan data hasil pembacaan sensor
DHT11. D, Setting baudrate untuk serial monitor dan inisialisasi
fungsi radio NRF24L01.

Loop :
E, Fungsi pembacaan nilai sensor DHT11 berupa temperature dan
humidity. F, Peubah nilai temperature dan humidity yang

72 | A r i f S y a r i p u d i n
IoT Development Board 2017
tersimpan menjadi sebuah String. G, Pengiriman data berupa
String (Sensor DHT11) melalui NRF24L01.

2. IoT Development Board 2 (Server)


Setup :
A, pustaka library SPI, NRF24L01 dan NRF. B, Deklarasi class dari
Pengalamatan Pin CE dan CSN radio ke pin 9 dan 10,
pengalamatan untuk komunikasi NRF24L01 (“0xE8E8F0F0E1LL”),
buffer untuk penerimaan data dari Node, penyimpanan data
pembacaan sensor keseluruhan yang akan di kirim ke variable
temperature dan humidity. C, Variable penyimpanan data hasil
pembacaan Radio Node (sensor DHT11). D, Setting baudrate
untuk serial monitor dan inisialisasi fungsi radio NRF24L01.

Loop :
E, memulai untuk penerimaan data yang dikirim oleh NRF24L01
(Node). F, Jika komunikasi radio terdeteksi maka pembacaan data
Radio Node (Sensor DHT11) akan segera dimulai. G, Menampilkan
data yang diterima pada serial monitor.

73 | A r i f S y a r i p u d i n
IoT Development Board 2017
Daftar Pustaka

[1]. Arduino, Software Serial Library,


https://www.arduino.cc/en/Reference/SoftwareSerial, di unduh: Pukul
11.30 WIB pada tanggal 8 September 2017.
[2]. Dinata Y, M.,(2015),Arduino Itu Mudah, Jakarta.
[3]. Jha A., Simple Tutorial Using of NRF24L01 & Arduino,
http://www.instructables.com/id/Wireless-Remote-Using-24-Ghz-
NRF24L01-Simple-Tutor, di unduh: Pukul 10.30 WIB pada tanggal 8
September 2017.
[4]. Kadir, A.,(2015), From Zero to a Pro, Yogyakarta: Penerbit ANDI.

74 | A r i f S y a r i p u d i n