• Tidak ada hasil yang ditemukan

BAB II LANDASAN TEORI. (Gourav Garg, 2016). Sayangnya Raspberry pi adalah platform berbasis

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAB II LANDASAN TEORI. (Gourav Garg, 2016). Sayangnya Raspberry pi adalah platform berbasis"

Copied!
36
0
0

Teks penuh

(1)

BAB II

LANDASAN TEORI

2.1 Platform Arduino

Ada beberapa platform embedded yang dapat digunakan sebagai piranti internet of things gateway ini, misalnya dengan menggunakan Raspberry pi (Gourav Garg, 2016). Sayangnya Raspberry pi adalah platform berbasis mikrokomputer. Untuk menggunakannya, dibutuhkan kemampuan dalam sistem operasi linux dan juga bahasa pemrograman lainnya seperti php, python, dan database MySQL sebagai acuan. Kurang praktis untuk digunakan dalam penelitian tugas akhir ini.

Arduino merupakan platform komputasi fisik yang bersifat open source yang berbasis modul masukan/keluaran (I/O) sederhana dan lingkungan pengembangan yang mengimplementasikan bahasa Processing (www.processing.org). Arduino dapat dikembangkan sebagai objek interaktif mandiri atau dapat juga dihubungkan ke perangkat lunak seperti Flash, Processing, atau Visual Basic. Modul ini dapat dirakit secara manual dengan dengan tangan ataupun dibeli dalam keadaan sudah terakit; arduino IDE dapat diunduh secara gratis dari www.arduino.cc (Banzi, 2011).

Tidak seperti kebanyakan platform pengembangan mikrokontroller yang lain yang beredar di pasaran, arduino berbeda karena berbagai fitur-fitur berikut:

(2)

 Lingkungan pengembangannya yang multiplatform; bisa berjalan di Windows, OSX, dan juga Linux.

 Berbasis IDE bahasa pemrograman Processing, yang merupakan lingkungan pengembangan yang mudah digunakan, baik oleh seniman maupun desainer.

 Pemrograman melalui kabel USB, bukan port serial. Fitur ini menjadi sangat berguna mengingat kebanyakan komputer modern saat ini sudah tidak menyediakan port serial.

Baik perangkat lunak maupun perangkat kerasnya bersifat open. Keduanya bisa digunakan tanpa perlu membayar kepada pembuat Arduino.

Pada dasarnya Platform Arduino disusun dari dua bagian besar, yakni: board Arduino yang merupakan perangkat keras yang digunakan untuk membuat objek yang ingin kita bangun; dan Arduino IDE, yang merupakan perangkat lunak yang berjalan di computer. IDE digunakan untuk membuat sketch (program kecil untuk Arduino) yang akan diunggah ke board Arduino.

2.2 Arduino YUN

Tidak seperti modul-modul pendahulu dari keluarga Arduino sebelumnya yang menggunakan shield network connectivity yang terpisah untuk menghubungkannya dengan sebuah jaringan internet/intranet, dalam board Arduino YUN sudah ditambahkan sebuah prosesor, Atheros AR9331, yang

(3)

menjalankan salah satu distribusi Linux untuk system embedded yang diberi nama OpenWrt-Yun, berbasis OpenWrt.

Gambar 1 Arduino YUN

Meski dibangun dengan mengacu pada pendahulunya, Arduino dari keluarga Leonardo, Yun memiliki sejumlah perbedaan karakteristik fisik dan konektor dibandingkan Leonardo. Beberapa tambahan antara lain: slot untuk kartu micro-SD, konektor Ethernet, dan sebuah konektor USB-A Host yang bisa digunakan untuk menampung flash disk atau USB 3G Modem. Tak ada konektor DC khusus yang disediakan, untuk ini bisa digunakan konektor micro-USB sebagai penggantinya.

(4)

Konektor-konektor ini; baik slot kartu micro-SD, Ethernet, maupun USB-A, dikoneksikan secara fisik ke prosesor Atheros AR9331, bukan pada sisi prosesor ATmega32U4. Dengan demikian akses ke port-port tersebut dilakukan melalui sisi distribusi Linux.

Semua fungsi-fungsi yang digunakan pada Leonardo dapat digunakan pada sisi prosesor ATmega32U4 Yun, kecuali Serial1, yang digunakan sebagai jalur komunikasi dengan prosesor Atheros AR9331.

Untuk memfasilitasi komunikasi antara kedua prosesor digunakan sebuah library Bridge. Dengan menggunakan library Bridge, sketch Arduino bisa menjalankan shell script yang ada di sisi linux, berkomunikasi dengan antarmuka jaringan, dan menerima informasi dari prosesor Atheros AR9331. Library Bridge juga menjadi jembatan bagi Arduino untuk menggunakan port USB-A, antarmuka jaringan, dan kartu micro-SD.

(5)

Gambar 2 Diagram komunikasi AR9331 dengan ATmega32u4

Sisi prosesor Atheros AR9331 juga difungsikan sebagai modul WiFi yang bisa digunakan untuk mengakses router nirkabel, maupun difungsikan sebagai akses point.

2.2.1 ATMega32U4

Seperti pendahulunya, Leonardo, Arduino YUN menggunakan AVR ATmega32u4 sebagai mikrokontrollernya. Dibandingkan dengan seri UNO dalam keluarga Arduino, ada perbedaan fisik pada chip komunikasi serialnya. Chip ATmega32u4 telah dilengkapi dengan usb controller sehingga tidak diperlukan chip tambahan sebagai konverter usb ke serial seperti pada Arduino UNO.

(6)

Gambar 3 Blok Diagram ATmega32u4 2.2.2 AR9331 SoC

Atheros AR9331 adalah sebuah System-on-a-Chip yang terintegrasi untuk diaplikasikan pada router dan akses point. Di dalamnya berisi prosesor MIPS 24K, 5-port Fast Ethernet Switch, sebuah USB2.0, dan antarmuka untuk flash memori serial eksternal, SDRAM, baik DDR1 maupun DDR2, UART, dan juga GPIO untuk kebutuhan antarmuka pada umumnya.

(7)

Gambar 4 Blok Diagram internal AR9331

Secara internal, prosesor AR9331 tidak memiliki memori, karenanya ditambahkanlah memori RAM dan memori penyimpanan eksternal. Arduino Yun dibekali memori RAM DDR2 sebesar 64 MB dan memori flash sebesar 16 MB. Semuanya terkoneksi secara eksternal.

Sebuah image distribusi Linux OpenWRT-Yun sudah ditanamkan ke dalam memori flash. Isi image ini bisa berubah saat menginstall program atau ketika berkas konfigurasi diubah. Jika terjadi kesalahan, baik saat menginstal program atau melakukan konfigurasi, kita bisa kembali ke kondisi awal dengan menekan tombol “WLAN RST” selama 30 detik.

2.3 Arduino IDE

Mengapa arduino menjadi platform pengembangan mikrokontroller yang demikian populer? Jawabannya terletak pada Integrated Development Environment (IDE)-nya yang sangat memudahkan. Era pengembangan mikrokontroller sebelum Arduino IDE kebanyakan menggunakan bahasa

(8)

pemrograman bahasa assembler, yang bagi sebagian kalangan tidaklah mudah untuk dipelajari.

Selain bahasa assembler yang pemrogramannya tak mudah, ada juga yang menggunakan bahasa c, tetapi sebagian besar IDE untuk aplikasi programmer dan kompilernya pun tidak bisa didapatkan secara cuma-cuma, sebagian malah ada banyak yang mendistribusikannya dengan harga yang tak terjangkau para maker dan pelajar.

Massimo Banzi dan beberapa koleganya menyadari hal ini, dan ini menggerakkan mereka untuk membuat sebuah lingkungan pengembangan untuk mikrokontroller yang bertujuan agar mudah dipelajari bahkan oleh orang yang awam terhadap dunia pemrograman dan perangkat keras elektronik seperti seniman dan desainer.

Pada dasarnya platform Arduino dibuat dengan mengacu pada bahasa pemrograman C. Tetapi karena ada beberapa aspek dalam bahasa C yang cukup menyulitkan bagi pemula, tim Arduino kemudian mengembangkan library Arduino standar yang menyediakan fungsi-fungsi yang sederhana yang membuat pemrograman board Arduino menjadi sedemikian mudah.

Secara garis besar ada tiga bagian utama yang membentuk Arduino IDE yakni:

(9)

Window editor merupakan sebuah tempat bagi pengguna untuk menuliskan dan mengedit source code program. Program-program ini, dalam lingkungan pengembangan Arduino disebut sketch.

2) Compiler

Kode-kode program yang telah ditulis dalam window editor masih dalam bentuk bahasa yang mudah dipahami oleh manusia. Untuk bisa dikenali oleh mikrokontroller sebagai alur-alur perintah yang kemudian akan dieksekusi, maka kode-kode program ini harus diubah terlebih dahulu menjadi bahasa mesin (hex code). Di sini-lah fungsi compiler, mengubah barisan kode program menjadi kode-kode heksa yang dapat dimengerti oleh mikrokontroller.

3) Uploader

Untuk mengunggah kode mesin yang telah dikompilasi oleh compiler ke mikrokontroller dilakukan oleh sebuah program yang disebut uploader.

Dalam melakukan koding dengan menggunakan bahasa pemrograman Arduino ada tiga bagian utama yang akan kita jumpai yaitu struktur, variabel dan fungsi (Artanto, 2012):

1. Struktur Program Arduino a. Kerangka Program

Kerangka program arduino sangat sederhana, minimal terdiri dari dua blok fungsi dasar yang mesti ada, yaitu setup() dan loop().

(10)

Blok void setup()

Berisi kode program yang dijalankan hanya sekali sesaat setelah Arduino dihidupkan atau di reset. Biasanya untuk menyiapkan segala aspek yang berkaitan dari board Arduino untuk menjalankan program. Blok ini biasanya juga diisi dengan pemanggilan fungsi yang lain seperti serial.begin() yang digunakan untuk mengaktifkan komunikasi serial, membuat inisiasi awal pembacaan sensor, atau menjalankan tugas yang hanya diperlukan satu kali saja.

Blok void loop()

Semua baris kode program yang akan dijalankan terus menerus akan ditaruh di blok ini. Merupakan tempat untuk menaruh program utama. Kode-kode program di blok ini mulai dieksekusi segera setelah pernyataan terakhir dalam blok setup() selesai dieksekusi.

b. Statements dan Sintaks Program

Semua baris kode yang ada di dalam kurung kurawal sebuah blok disebut statement. Bisa dikatakan, statements adalah bagian dari sketch yang didesain untuk melakukan sesuatu, seperti memanggil fungsi, mendeklarasikan dan menginisiasi variabel, atau melakukan operasi aritmatika dan perbandingan.

(11)

Ada dua jenis statement yang dikenal dalam pemrograman Arduino: yang pertama adalah simple statement, yakni statement yang biasanya hanya terdiri dari satu baris. Setiap simple statement diakhiri dengan tanda “;”. Jenis statement yang kedua adalah compound statement, yang dibentuk dari beberapa simple statement lain. Fungsi setup() dan loop() adalah salah satu contoh compound statement. Statement if juga termasuk dalam kategori compound statement.

Baik blok void setup(), void loop(), maupun blok fungsi harus diberi tanda kurung kurawal buka “{“ sebagai tanda batas awal program di blok tersebut dan kurung kurawal tutup “}” sebagai tanda batas akhir dari program.

c. Kontrol Aliran Program

Kontrol aliran program meliputi instruksi-instruksi yang digunakan untuk membuat percabangan dan perulangan.

Instruksi percabangan if dan if-else akan menguji apakah kondisi tertentu dipenuhi atau tidak. Jika tidak dipenuhi, maka instruksi berikutnya akan dilompati, tetapi jika dipenuhi, maka instruksi berikutnya akan dijalankan. Format penulisannya adalah sebagai berikut:

If (x==100)

(12)

else

{ digitalWrite(13,LOW); }

Instruksi switch case selalu diikuti dengan break. Format penulisannya: Switch(x) { case 100: analogWrite(9,100); break; case 200: analogWrite(9,200); break; default: analogWrite(9,0); }

Instruksi perulangan for-loop akan membuat perulangan pada bloknya dalam jumlah tertentu, yaitu sebanyak nilai counternya. Format penulisannya adalah sebagai berikut:

for (int i=0;i<100;i++)

{ analogWrite(9,i); delay(50); }

Instruksi perulangan while-loop akan membuat perulangan pada bloknya selama persyaratannya dipenuhi, dan berhenti bila persyaratannya tidak dipenuhi. Format penulisan while-loop:

(13)

int x=0; while(x<100)

{ //lakukan sesuatu X++;

}

Instruksi perulangan do-while-loop sama seperti while-loop, yaitu mengulangi bloknya selama persyaratannya dipenuhi. Perbedaannya persyaratan diletakkan pada akhir blok, maka perulangan do-while-loop ini akan menjalankan bloknya setidaknya sekali, sekalipun persyaratan tidak dipenuhi. Formatnya: do { delay(200); x=analogRead(0); } while (x<500); d. Operator

Program Arduino memiliki berbagai jenis operator yang digunakan dalam pemrograman Arduino antara lain:

 Operator Aritmetika  Penjumlahan (+).  Pengurangan (-).  Perkalian (*).  Pembagian (/).

(14)

 Modulo (%). Modulo adalah perhitungan untuk mendapatkan sisa hasil pembagian.

 Operator Perbandingan  Sama dengan (==).  Tidak sama dengan (!=).  Lebih kecil dari (<).  Lebih besar dari (>).

 Lebih kecil sama dengan (<=).  Lebih besar sama dengan (>=).  Operator Boolean

 AND (&&).  OR (||).  NOT (!).

 Operator Bitwise digunakan untuk melakukan operasi aritmetika pada level bit (biner) dari sebuah variabel. Operator-operator bitwise ini antara lain:

 Bitwise and (&).  Bitwise or (|).  Bitwise xor (^).  Bitwise not (~).  Bitshift left (<<).  Bitshift right (>>).  Operator Compound  x++  x=x+1  x--  x=x-1

(15)

 x += y  x=x+y  x -= y  x=x-y  x *= y  X=X*y  x /= y  x=x/y  x &= y  x=x&y  x |= y  x=x|y 2. Variabel

Program didefinisikan sebagai suatu kumpulan instruksi yang di eksekusi secara berurut, mengelola data sedimikian rupa sehingga akan dihasilkan sebuah informasi. Data-data yang dikelola ini ditempatkan dalam sebuah wadah yang bernama variabel.

Sebelum digunakan, variabel terlebih dahulu harus dideklarasikan. Mendeklarasikan variabel berarti menentukan tipe data variabel dan juga memberi nilai awal (bersifat opsional) pada variabel.

Menurut lokasi pendeklarasiannya, variabel bisa bersifat global atau local. Jika variabel dideklarasikan di luar fungsi, baik fungsi setup() atau loop() dan fungsi lainnya disebut variabel global. Variabel global dapat digunakan oleh kode program disemua bagian.

Variabel yang dideklarasikan dalam sebuah blok fungsi, maka ia hanya dapat diakses oleh bagian fungsi itu saja. Dengan demikian variabel itu hanya bersifat lokal bagi fungsi yang bersangkutan.

(16)

Dalam bahasa pemrograman C, yang merupakan acuan bahasa pemrograman Arduino, kode-kode program dipecah menjadi blok-blok kecil yang disebut fungsi. Seperti namanya, setiap blok fungsi biasanya mewakili fungsi tertentu, seperti: fungsi Serial() untuk melakukan komunikasi serial, print() untuk melakukan pencetakan, dan berbagagai fungsi lainnya.

Dalam struktur pemrograman Arduino harus ada minimal dua blok fungsi dasar, yakni: setup() dan loop(). Dengan menuliskan kedua fungsi tersebut, meski tanpa statement ditiap blok, sketch sudah dianggap benar dan mikrokontroller sudah dapat beroperasi. Sketch berikut ini dianggap sudah lengkap dan bekerja:

void setup() { }

void loop() { }

2.4 OpenWRT-Yun

OpenWrt merupakan system operasi embedded berbasis kernel Linux yang banyak digunakan pada piranti embedded untuk router. Komponen utama OpenWrt terdiri dari kernel Linux, util-linux, uClibc, dan BusyBox. Semua komponen-komponen tersebut telah dioptimasi dalam hal ukurannya, sehingga menjadi cukup kecil untuk dimuat dalam router rumahan dengan memori dan kapasitas terbatas.

(17)

Proyek OpenWrt bermula dari firmware yang dibuat oleh Linksys untuk router nirkabel seri WRT54G miliknya. Firmware ini dibuat dengan source code yang berlisensi GPL. Dengan lisensi ini, maka source code yang telah dimodifikasi tersebut, juga diharuskan tersedia dalam lisensi yang sama, GPL. Hal ini memungkinkan para pengembang-pengembang perangkat lunak independen untuk membuat tambahan versi-versi turunan yang lain. Awalnya, dukungan chipset hanya untuk WRT54G, tetapi kemudian meluas ke chipset-chipset, pabrikan dan piranti-piranti lainnya, seperti Plug Computers dan telepon seluler Openmoko.

Dengan menggunakan kode ini sebagai referensi, para pengembang kemudian membuat distribusi Linux yang menawarkan fitur-fitur yang yang tidak ditemui pada router-router level consumer sebelumnya, dimana beberapa fitur-fitur yang lama menghendaki proprietary software. Misalnya router-router yang berbasis chipset buatan Broadcom hanya tersedia melalui modul proprietary wl.o.

2.5 Sensor Suhu DHT-11

DHT-11 adalah sensor suhu dan kelembapan yang sinyal outputnya sudah dalam bentuk sinyal digital yang telah dikalibrasi. Sensor didesain dengan mengimplementasikan teknologi pengoleksian data secara digital dan teknologi sensing suhu dan kelembapan untuk memastikan tingkat reliabilitas dan stabilitasnya yang tinggi.

(18)

Konstruksi sensor ini terdiri dari komponen resistive yang mendeteksi tingkat basah udara dan komponen negative temperature coefficient, dan dihubungkan dengan sebuah mikrokontroller 8-bit.

Gambar 5 Sensor suhu dan kelembapan dht-11 2.5.1 Karakteristik DHT-11

DHT-11 memiliki berbagai karakter yang unggul seperti kestabilan yang tinggi dalam hal pengukuran temperature dan kelembapan, kualitas yang bagus, responnya yang cepat, kemampuan anti-interferensi, sinyal transmisi yang cukup panjang, outputnya yang sudah dalam bentuk digital, dan kalibrasi yang presisi.

Dari lembar data yang dilampirkan oleh pembuatnya, berikut ini adalah beberapa spesifikasi yang dicantumkan:

 Resolusi pengukuran temperature dan kelembapan (RH) : 16bit.  Akurasi pengukuran kelembapan pada suhu 25°C ± 5% RH.  Akurasi pengukuran temperature pada suhu 25°C ±2°C.  Sampling rate 1 Hz (1 kali per detik).

(19)

 Range tegangan 3.5 – 5.5V.

2.5.2 Prinsip kerja DHT-11

Untuk melakukan komunikasi dengan mikrokontroller, DHT-11 menggunakan protocol komunikasi single-bus yang telah disederhanakan. Pertukaran data antar device dalam sistem dilakukan melalui sebuah jalur data tunggal. Dengan menggunakan konfigurasi open-drain, device (master atau slave) yang terhubung ke jalur data tidak akan aktif ketika ada device lain yang sedang aktif; biasanya sebuah resistor pull-up eksternal dengan nilai 5.1kΩ dihubungkan antara jalur data dan vcc, dengan demikian saat jalur sedang tak aktif, ia akan berada pada status high.

Gambar 6 Rangkaian DHT-11

Format komunikasi yang terjadi antara mikrokontroller dan DHT-11 dapat dikategorikan menjadi 3 tahapan:

(20)

1. Request 2. Response 3. Data Reading

1. Request: Untuk meminta DHT-11 mengirimkan data pembacaan sensor, mikrokontroller harus mengirim sinyal request. Sinyal request ini dikirimkan dengan cara melakukan operasi pull down selama lebih dari 18ms dan kemudian melakukan pull up setidaknya selama lebih dari 40uS.

Gambar 7 Sinyal Request oleh mikrokontroller

2. Response: Setelah permintaan request dikirim oleh mikrokontroller, DHT-11 akan memberikan respon dengan melakukan pull down selama 54uS dan pull up selama 80uS.

(21)

3. Data Reading: Setelah sinyal respon dikirim, selanjutnya DHT-11 akan mengirimkan data pembacaan sensor.

Gambar 9 Sinyal Data oleh DHT-11

2.5.3 Format Data DHT-11

Data-data pembacaan sensor dikemas kedalam paket yang terdiri dari 5 segmen yang masing-masing berisi 8bits data dengan format sebagai berikut :

Humidity

(integer) Humidity (decimal) Temperature (Integer) Temperature (Fractional) Parity Bit

Contoh pembacaan data : 40 data diterima sebagai berikut:

0011 0101 0000 0000 0001 1000 0000 0000 0100 1101

Perhitungan:

0011 0101 + 0000 0000 + 0001 1000 + 0000 0000 + 0100 1101 = 0100 1101

Hasil penjumlahan 4 segmen data = Bit paritas. Dengan demikian data di atas dianggap valid.

(22)

Temperatur : 0001 1000 = 18H = 24°C

2.6 Relay

Relay adalah saklar yang berfungsi memutuskan dan menyambungkan rangkaian suatu rangkaian primer dengan sekunder yang dioperasikan secara listrik. Relay bekerja dengan menggunakan prinsip elektromagnetik yang dapat mengubah kontak-kontak saklar normally open (NO) menjadi normally close (NC) dan sebaliknya, pada saat koil menerima arus listrik.

Pada dasarnya, relay terdiri dari 2 bagian utama yakni lilitan kawat (koil) yang terlilit pada suatu inti dari besi lunak dan komponen mekanikal yang berupa jangkar dan kontak. Bila kumparan ini di aliri arus maka inti menjadi magnet sehingga inti ini akan menarik jangkar dan kontak A dan B terputus (membuka), sedangkan kontak antara B dengan C akan tertutup. Jenis relay ini di kenal dengan nama jenis kontak luar.

Berdasarkan kontak poinnya relay biasanya digolongkan menjadi 2 jenis, yaitu:

a. Normally open (NO), kontak saklar akan terbuka jika bagian koil di aliri arus. Pada kondisi awal sebelum diaktifkan akan selalu berada di posisi tertutup (CLOSE).

b. Normally close (NC), kontak saklar akan tertutup jika bagian koil dialiri arus. Pada kondisi awal sebelum diaktifkan akan selalu berada di posisi terbuka (OPEN).

(23)

c. Cange over (CO), relay ini mempunyai saklar tunggal dimana pada saat kondisi normal akan tertutup lama, bila koil satu dialiri arus maka saklar akan terhubung ke terminal A, sebaliknya bila koil dua dialiri arus maka saklar akan terhubung ke terminal B.

2.6.1 Pole dan Throw

Karena relay merupakan salah satu jenis dari saklar, maka istilah Pole dan Throw yang dipakai dalam saklar juga berlaku pada relay.

 Pole : Jumlah kontak masukan yang dimiliki oleh sebuah relay.  Throw : Jumlah kontak yang memiliki kondisi.

Berdasarkan penggolongan jumlah pole dan throw, sebuah relay dapat digolongkan menjadi :

 Single Pole Single Throw (SPST) : Relay golongan ini memiliki 4 terminal: 2 terminal untuk saklar; dan 2 terminal untuk koil.

 Single Pole Double Throw (SPDT) : Relay golongan ini memiliki 5 terminal: 3 terminal untuk saklar(dengan satu terminal bersama); dan 2 terminal untuk koil.

 Double Pole Single Throw (DPST) : Relay golongan ini memiliki 6 terminal: 4 terminal yang terdiri 2 pasang terminal saklar; dan 2 terminal lainnya untuk koil. Relay DPST dapat difungsikan sebagai 2 saklar yang dikontrol oleh 1 koil.

 Double Pole Double Throw (DPDT) : Relay golongan ini memiliki terminal sebanyak 8 terminal, diantaranya 6 terminal merupakan 2 pasang relay SPDT yang dikontrol oleh 1 koil; dan 2 terminal lainnya digunakan untuk koil.

(24)

Gambar 10 Simbol relay berdasarkan penggolongan pole dan throw

Analogi rangkaian relay yang digunakan pada tugas akhir ini adalah saat basis transistor dialiri arus, maka transistor dalam kondisi saturasi. Arus mengalir dari kolektor ke emitter yang mengakibatkan relay bekerja. Koil relay merupakan komponen induktif, jika suatu saat transistor berganti kondisi menjadi off, terjadi tegangan balik dari koil yang dapat merusakkan transistor. Untuk meredam tegangan balik yang terjadi, maka dipasanglah diode dalam posisi terbalik (reverse).

(25)

Gambar 11 Relay dan rangkaian driver-nya

2.7 PIR Sensor

Passive Infrared Sensor merupakan sensor yang digunakan untuk mendeteksi adanya gerakan dari sebuah objek yang memancarkan radiasi inframerah. Disebut pasif karena sensor ini tidak memancarkan sinar inframerah. Secara internal, komponen sensor PIR terdiri dari dua slot yang masing-masing dibuat dengan material khusus yang sensitif terhadap radiasi inframerah.

Saat sensor dalam kondisi idle, kedua slot mendeteksi radiasi inframerah dengan kekuatan yang sama. Ketika ada gerakan yang disebabkan dari tubuh yang hangat, bisa dari manusia atau hewan, salah satu slot dari sensor PIR akan mendeteksinya dan mengirimkan sebuah sinyal differensial positif. Saat tubuh

(26)

meninggalkan area sensing, sensor akan membangkitkan sinyal differensial negative.

Gambar 12 Alur kerja sensor PIR

Sensor PIR dibangun dari dua buah sensor inframerah dan transistor JFET yang dikemas dalam sebuah wadah yang terisolasi secara hermetic. Hal ini untuk mencegah gangguan yang mungkin disebabkan oleh uap udara atau gas lainnya. Ada jendela yang terbuat dari kaca yang memungkinkan sinar inframerah bisa masuk.

(27)

Gambar 13 Konstruksi sensor PIR

Jika hanya mengandalkan sensor PIR yang kecil, bisa dipastikan area yang terdeteksi hanyalah sebagian kecil. Untuk membuat area jangkauan menjadi lebih luas, digunakanlah sebuah lensa yang disebut lensa fresnel.

(28)

Gambar 14 Lensa Fresnel

2.8 Arduino Base Shield

Modul pengembangan Arduino menggunakan teknik stacking (penumpukan) untuk menambahkan modul-modul tambahan yang belum disertakan pada modul dasarnya. Modul tambahan ini diberi istilah shield. Setiap shield biasanya memiliki fungsi khusus, seperti : GPS shield untuk menerima data posisi dari satelit GPS, Bluetooth shield untuk komunikasi nirkabel menggunakan Bluetooth, dan juga berbagai macam shield lainnya.

Dalam tugas akhir ini, Base Shield v2 dari Seeedstudio akan digunakan sebagai modul tambahan untuk mempermudah koneksi antarmuka dengan berbagai macam modul, baik modul sensor maupun aktuator.

(29)

Gambar 15 Base Shield v2 IO Expansion modul

Seeedstudio memberi nama untuk setiap modul yang didesainnya dengan nama Grove. Setiap konektor Grove terdiri dari 4 kabel; 1 Vcc, 1 Gnd, dan lainnya data. Base Shield V2 memiliki 16 konektor Grove yang terdiri dari :

Tabel 1 Daftar port Base Shield v2

Spesifikasi Nama Jumlah

Port Analog A0,A1,A2,A3 4

Port Digital D2,D3,D4,D5,D6,D7,D8 7

Port UART UART 1

(30)

2.9 Blynk

Smart home berbasis internet of things memiliki potensi untuk memperbaiki pola manajemen dalam penggunaan energi pada rumah tinggal. Hal ini dapat dicapai melalui sebuah sistem yang bisa mencatat pola penggunaan piranti dan manajemen penjadwalan operasi. Sistem yang memungkinkan ini bekerja mesti berbasis cloud (Padmanabhan & Waissi, 2016). Blynk menyediakan platform cloud yang diperlukan.

Bermula dari sebuah kampanye pendanaan proyek di platform crowdsourcing kickstarter.com yang diinisiasi oleh Pasha Baiborodin, Blynk telah menjelma menjadi sebuah platform pembuat aplikasi IoT pada iOS dan Android untuk mengontrol Arduino, Raspberry Pi, ESP8266, dan mikrokontroller sejenisnya melalui internet.

Blynk merupakan dashboard digital di mana antarmuka grafis untuk proyek internet of things dapat dibuat hanya dengan melakukan dragging dan dropping beberapa widget yang telah tersedia.

Platform Blynk terdiri dari tiga bagian utama yakni: Blynk app, Blynk Server, dan Blynk Library. Blynk app merupakan aplikasi untuk platform mobile yang bisa didapatkan di Google Play untuk mobile phone berbasis Android maupun App Store untuk mobile phone berbasis iOS dari Apple. Blynk Server adalah cloud server yang disediakan oleh Blynk untuk memediasi antara Blynk app dan Blynk Library. Dan Blynk Library merupakan library yang ditanam di sisi mikrokontroller.

(31)

Gambar 16 Arsitektur Blynk 2.9.1 Blynk App

Blynk App merupakan aplikasi yang tersedia untuk smartphone baik yang menggunakan platform iOS maupun android. Aplikasi ini tersedia secara gratis baik di AppStore maupun di GooglePlay dan bisa diunduh oleh siapapun. Pengembang Blynk menggunakan metode In-App purchasing untuk setiap aplikasi yang diunduh. Pengguna akan dibekali sejumlah energy yang akan berkurang setiap kali sebuah widget terpakai dalam sebuah proyek. Untuk membuat sebuah proyek yang sederhana, energy yang disediakan sudah lebih dari cukup untuk digunakan dalam proyek tugas akhir ini.

(32)

Blynk App menyediakan berbagai macam widget yang bisa digunakan untuk mendesain tampilan dashboard program IoT yang dibuat. Widget adalah modul antarmuka yang masing-masing melakukan tugas-tugas tertentu sesuai dengan desain input atau output saat berkomunikasi dengan perangkat keras.

Tersedia 4 macam jenis Widget:

 Kontroller : berfungsi untuk mengirimkan perintah ke perangkat keras.  Button : Bekerja dalam mode push atau switch. Mengirimkan nilai

0/1 (LOW/HIGH). Button mengirim nilai 1 (HIGH) pada saat ditekan dan mengirim nilai 0 (LOW) pada saat dilepas.

 Slider : Memiliki cara kerja yang mirip dengan potensiometer. Mengirimkan nilai-nilai diantara MIN dan MAX.

 Timer : Memicu aksi pada waktu tertentu. Bahkan saat smartphone dalam kondisi offline. Waktu Start akan mengirimkan nilai 1 (HIGH). Waktu Stop akan mengirimkan nilai 0 (LOW).

 Joystick : Mengontrol pergerakan servo dalam 4 arah.

 Display : digunakan untuk visualisasi berbagai macam data yang dikirim dari perangkat keras ke smartphone.

 Value Display : Menampilkan data yang dating dari sensor atau Virtual Pin.

 Labeled Value : Seperti widget Value Display, menampilkan data yang dari sensor atau Virtual Pin. Perbedaannya adalah dilengkapi dengan kemampuan format. Jadi nilai yang datang bisa diformat berdasarkan kebutuhan.

(33)

 LED : Widget LED yang sederhana sebagai indicator. Program pada sisi mikrokontroller mengirimkan nilai 0 untuk membuat widget LED mati. Dan mengirimkan nilai 255 untuk membuat widget LED hidup.

 Gauge : Widget visual berbentuk lingkaran untuk menampilkan nilai numerik.

 LCD : Display LCD 16x2.

 Graph : Digunakan untuk menampilkan data dalam bentuk grafik.  History Graph : Menampilkan sejumlah data histori yang dikirim

dari perangkat keras ke server dalam bentuk grafik.

 Notifikasi : berbagai macam widget untuk mengirim pesan dan notifikasi.  Twitter : menghubungkan akun twitter dan Blynk sehingga

memungkin perangkat keras yang kita miliki mengirim cuitan.  Email : memampukan perangkat keras mengirim email ke alamat

email manapun.

 Interface : widget-widget yang dibuat untuk membuat tampilan UI terlihat lebih baik.

 Tabs : Widget Tabs bisa digunakan untuk menambah space proyek yang dibuat.

 Menu : Dengan Widget Menu, perintah bisa dikirim ke perangkat keras berdasarkan pilihan yang dibuat pada UI

Selain 4 jenis Widget di atas, ada juga widget lain seperti Bridge yang berfungsi untuk mengaktifkan komunikasi antar perangkat tanpa campur tangan aplikasi yang ada di smartphone.

(34)

2.9.2 Blynk Server/Cloud

Blynk Server merupakan program server yang dibangun menggunakan java berbasis Open Source Netty. Blynk Server bertanggungjawab untuk meneruskan pesan-pesan antara aplikasi mobile Blynk dengan berbagai jenis mikrokontroller yang telah dipasangi library khusus yang dirancang untuk berkomunikasi dengan protocol yang digunakan oleh Blynk Server.

Selain menyediakan Blynk Server Cloud, Tim pengembang Blynk juga menyediakan secara cuma-cuma aplikasi Blynk Server jika ingin diinstall secara lokal. Ada banyak manfaat jika Server Blynk diinstal secara lokal seperti factor, stabilitas, privacy, dan latency yang lebih baik.

2.9.3 Blynk Library

Blynk Library merupakan librari yang berisi fungsi-fungsi khusus untuk berkomunikasi dengan Blynk Server sesuai dengan mikrokontroller yang digunakan. Untuk mengkonfigurasi mikrokontroller, setidaknya ada dua fungsi yang dipanggil dalam program yang akan ditanam. Dua fungsi tersebut antara lain Blynk.begin() yang ditempatkan pada blok setup() dan Blynk.run() yang ditempatkan pada blok loop().

Library pada Blynk menyediakan beberapa fungsi yang berhubungan dengan operasi yang akan dilakukan terhadap mikrokontroller. Fungsi-fungsi yang tersedia antara lain:

(35)

Fungsi-fungsi dasar pin input output bisa dilakukan tanpa modifikasi khusus seperti biasanya antara lain: digitalRead, digitalWrite, analogRead, analogWrite.

 Kontrol pin Virtual

Virtual Pin didesain untuk mengirimkan data apapun dari mikrokontroller ke Blynk App dan sebaliknya. Jika dianalogikan, Virtual Pin mirip dengan sebuah kanal yang digunakan untuk mengirim data. Virtual Pin tidak merepresentasikan pin fisik pada mikrokontroller.

Beberapa fungsi yang berhubungan dengan Virtual Pin antara lain:

 Blynk.virtualWrite(vPin, value)

Semua tipe data apapun bisa dikirim melalui Virtual Pin.

Blynk.virtualWrite(pin, “abc”); // Send string Blynk.virtualWrite(pin, 123); // Send integer Blynk.virtualWrite(pin, 12.34); // Send float

Blynk.virtualWrite(pin, “hello”, 123, 12.34); // Send array

Blynk.virtualWriteBinary(pin, buffer, length); //Send RAW data

 BLYNK_WRITE(vPIN)

Mendefinisikan sebuah fungsi yang dipanggil ketika piranti menerima update nilai Virtual Pin dari server.

BLYNK_WRITE(V0) {

(36)

int x = param[0].asInt(): }

 BLYNK_READ(vPIN)

Mendefinisikan sebuah fungsi yang dipanggil ketika piranti diminta untuk mengirimkan nilai Virtual Pin ke server. Normalnya, fungsi ini berisi beberapa fungsi Blynk.virtualWrite.

BLYNK_READ(V0) {

Blynk.virtualWrite(V0, newValue); }

Gambar

Gambar 1 Arduino YUN
Gambar 2 Diagram komunikasi AR9331 dengan ATmega32u4
Gambar 3 Blok Diagram ATmega32u4
Gambar 4 Blok Diagram internal AR9331
+7

Referensi

Dokumen terkait

Parameter- parameter tersebut digunakan untuk mengukur peningkatan proporsi kerugian kumulatif pada setiap tahun penundaan dan perkiraan kerugian utama yang harus

Perbedaan Kemampuan Klien Mengontrol Perilaku Kekerasan sebelum dan Sesudah Intervensi Berdasarkan hasil penelitian terlihat masing-masing responden mengalami peningkatan

Indikator Kinerja Kegiatan 001 Jumlah Penyelesaian Administrasi Perkara di tingkat Pertama dan banding di Lingkungan Peradilan Umum yang tepat waktu. 002 Jumlah Penyelesaian

Uraian di atas merupakan dasar dari penelitian ini, namun dari seluruh penelitian mengenai analgesia preemptif dan preventif yang dipublikasikan dengan pendekatan

Dalam permainan lompat penggaris biji ini, metode yang digunakan adalah metode demonstrasi ( dilakukan dengan cara mempertunjukan/memperagakan suatu cara/suatu

Lewat taman baca ini diharapkan anak-anak jalanan yang tidak mendapat kesempatan bersekolah secara formal, mendapatkan wawasan dengan membaca di Taman Baca Rumah

2 Informasi tentang penggunaan internet banking dapat dipercaya 3 Informasi yang diberikan mudah dipahami untuk proses transaksi menggunakan Internet Banking 4 Informasi