21
BAB III PERANCANGAN PROGRAM Pada bab ini akan dilakukan pembahasan mengenai pembuatan bot aplikasi Telegram yang dapat melakukan perintah untuk memonitoring serta kontrol jarak jauh. Pembahasan mencakup deskripsi program aplikasi, diagram alir program aplikasi, dan cara kerja program aplikasi. 3.1 Gambaran Umum Program yang dibuat pada tugas akhir ini adalah “Perancangan Aplikasi Telegram untuk Monitoring dan Kendali Penyiraman Tanaman” dengan pembahasan yang mencakup pemrograman dengan Python dan Raspberry. Bentuk dari perancangan akan di jabarkan sebagai berikut. a. Nama Sistem : Perancangan Aplikasi Telegram untuk Monitoring dan Kendali Penyiraman Tanaman b. Fungsi Sistem : Secara garis besar aplikasi ini berfungsi sebagai pengontrol jarak jauh sekaligus memonitoring kelembaban tanah pada tanaman. c. Diagram blok sistem aplikasi
Server Telegram
Sensor Kelembaban Tanah
Aplikasi Telegram pada Smartphone
Raspberry
Arduino Solenoid Valve
Gambr 3.1 Diagram Blok Sistem Aplikasi
21 http://digilib.mercubuana.ac.id/
22
Dari gambar diagram blok di atas dijelaskan tentang sistem monitoring dan kendali penyiraman tanaman jarak jauh dengan menggunakan aplikasi telegram yang terhubung dengan internet. Dengan aplikasi Telegram pengguna dapat melakukan perintah kepada arduino melalu raspberry sebagai penghubung dengan jaringan untuk melakukan monitoring atau pengambilan data kelembaban tanah melalui sensor. Kemudian sensor akan mengirimkan data kelembaban tanah ke telegram melalui arduino. Jika data kelembaban tanah menunjukkan bahwa tanah kering dan butuh pengairan, maka pengguna dapat melakukan perintah kepada arduino melalui telegram untuk melakukan penyiraman tanaman.
3.2 Perancangan Perangkat Lunak Perancangan perangkat lunak pada sistem monitoring dan kendali jarak jauh ini menggunakan bahasa pemograman python sebagai jembatan untuk mengirim dan menerima pesan ke telegram messenger yang sudah diintegrasi ke mikrokontroler. Untuk mengetahui proses cara kerja aplikasi diperlukan diagram alir sebagai garis besar ruang lingkup aplikasi. Adapun gambar diagram alir pada alat sebagai berikut :
http://digilib.mercubuana.ac.id/
23
Mulai
Telegram Messenger
Sensor Kelembaban Tanah
Ya
Masukan Inputan
T
Input dari telegram masuk ke python pada raspberry
Data “c” Ya
Arduino membaca output dari telegram melalui python
Arduino mengirim nilai kelembababan tanah
Tanah lembab/basah
Arduino tidak mengirim nilai kelembaban tanah
Tanah Kering
Arduino membuka selenoid valve
Data “a” T
Arduino tidak melakukan perintah membuka selenoid valve
Ya Data “b”
Arduino menutup selenoid valve
T
Arduino tidak melakukan perintah menutup selenoid valve
Gambar 3.2 Diagram Alir Program Aplikasi Dari diagram alir di atas dapat dilihat terdapat 3 bagian dari program aplikasi yang dibuat, terdiri dari : 1. Program input pesan “Kontrol Device” pada aplikasi telegram messenger yang telah diintegrasi ke alat dengan tujuan agar pesan tersebut dapat mengontrol perangkat. 2. Program input pesan “Petunjuk” pada aplikasi telegram messenger yang telah diintegrasi ke alat dengan tujuan hanya menampilkan pesan pada bot telegram keterangan masing-masing button.
http://digilib.mercubuana.ac.id/
24
3. Program input pesan “Pemantauan” pada aplikasi telegram messenger yang telah diintegrasi ke alat yang bertujuan untuk memantau sensor kelembaban tanah. Telegram tidak dapat menerima input dari sensor secara otomatis. Pengguna harus melakukan perintah dengan keyboard yang telah dibuat di dalam bot. Perintah yang dimaksudkan adalah input dari telegram yang masuk ke python pada raspberry. Kemudian arduino membaca output dari telegram melalui python. Dari diagram alir di atas dapat dilihat bahwa terdapat tiga inputan dari telegram yang terintegrasi dengan arduino. Ketiga data tersebut adalah:
Data “a” yang pada keyboard aplikasi telegram adalah button “Siram Tanah” yang berfungsi agar arduino membuka solenoid valve sehingga dapat dilakukan penyiraman pada tanaman.
Data “b” yang pada keyboard aplikasi telegram adalah button “Berhenti” yang berfungsi agar arduino menutup solenoid valve sehingga pen
Data “c” yang pada keyboard aplikasi telegram adalah button “Monitoring” yang berfungsi agar arduino mengirimkan data berupa nilai kelembaban tanah yang diterima dari sensor kelembaban tanah.
Pada saat arduino mengirimkan nilai kelembaban tanah yang menunjukkan tanah dalam keadaan kering, maka pengguna aplikasi dapat melakukan perintah penyiraman tanaman dengan menekan button “Siram Tanah”. Dengan aplikasi telegram, monitoring kelembaban tanah dan kontrol penyiraman tanaman dapat dilakukan dengan jarak jauh, karena terhubung dengan internet. Untuk dapat melakukan monitoring dan kontrol jarak jauh, pengguna perlu mengunduh aplikasi telegram di smartphone kemudian membuat bot baru. Yang dapat melakukan perintah di dalam bot tersebut hanya akun yang membuat bot dengan ID yang telah diberikan oleh telegram. Berikut ini adalah gambar dari proses pembuatan bot aplikasi di dalam telegram:
http://digilib.mercubuana.ac.id/
25
Gambar 3.3 Pembuatan Bot Aplikasi Peyiram Tanaman 3.2.1 Komunikasi Serial Python pada Raspberry Komunikasi digunakan sebagai penghubung antara arduino dan telegram. Pada mikrokontroler yang digunakan yaitu Arduino Uno menggunakan
bahasa
pemograman
menjalankan
fungsi
arduino.
C
Cara
sebagai
perintah
menghubungkan
untuk antara
mikrokontroler dan telegram messenger yaitu menggunakan bahasa pemograman python yang terintegrasi pada raspberry dengan arduino melalui kabel serial-USB. Adapun skrip proses komunikasi serial melalui pemograman python sebagai berikut : import telepot, time, serial from twx.botapi import TelegramBot, ReplyKeyboardMarkup ser = serial.Serial('COM8', 9600, timeout = 1, write_timeout = 1)
http://digilib.mercubuana.ac.id/
26
Skrip diatas berfungsi sebagai tanda pengenal pemasangan komunikasi serial berada di „COM 8‟ dengan bitrate 9600 disamakan dengan pemograman pada arduino uno. Pada skrip pemograman pada arduino uno agar dapat berkomunikasi dengan pemograman python maka dibuat skrip sebagai berikut : void setup(){ pinMode(relay,OUTPUT); //output triger relay Serial.begin(9600); } void perintah(){ while (Serial.available() != 0) { int inByte = Serial.read();
switch(inByte){ case 'a': digitalWrite(relay, LOW); break;
case 'b': digitalWrite(relay, HIGH); break;
case 'c': monitoring(); break; } } }
http://digilib.mercubuana.ac.id/
27
3.2.2 Program
Monitoring
dan
Pengendalian
Perangkat
Melalui
Telegram Saat arduino terhubung pada raspberry melalui kabel serialUSB,. skrip program pada arduino akan inisialisasi secara otomatis sesuai dengan perintah. Apabila kita mengirim pesan melalui bot telegram maka akan memanggil fungsi bahasa pemograman python dan bahasa pemograman bahasa C pada arduino akan merespon dan menjalankan fungsi sesuai perintah. Berikut skrip perintah bahasa pemograman python yang terintegrasi pada raspberry sebagai kontrol perangkat : #!/usr/bin/env python3 import telepot, time, serial from twx.botapi import TelegramBot, ReplyKeyboardMarkup
ser = serial.Serial('COM8', 9600, timeout = 1, write_timeout = 1)
def handle(msg):
content_type, chat_type, chat_id = telepot.glance(msg)
userName = msg['from']['first_name']+" "+msg['from']['last_name']
if (chat_id == 312033690) :
if (content_type == 'text'): perintah = msg['text'] print ('Perintah : %s' % perintah)
if '/start' in perintah:
http://digilib.mercubuana.ac.id/
28
bot.sendMessage(chat_id, "Hello "+userName+", Saya Bot Penyiram Tanaman")
elif '/mulai' in perintah: keyboard = [ ['Kontrol', 'Monitoring',], ['EXIT'] ] reply_markup = ReplyKeyboardMarkup.create(keyboard) bot.sendMessage(chat_id, 'Menu Utama :', reply_markup=reply_markup)
elif 'Kembali' in perintah: keyboard = [ ['Kontrol', 'Monitoring',], ['EXIT'] ] reply_markup = ReplyKeyboardMarkup.create(keyboard) bot.sendMessage(chat_id, 'Menu Utama :', reply_markup=reply_markup)
elif 'Kontrol' in perintah: keyboard = [ ['Siram Tanah', 'Berhenti',], ['Kembali'] ] reply_markup = ReplyKeyboardMarkup.create(keyboard) bot.sendMessage(chat_id, 'Kendali Penyiraman :', reply_markup=reply_markup)
elif 'EXIT' in perintah: hide_keyboard = {'hide_keyboard': True}
http://digilib.mercubuana.ac.id/
29
bot.sendMessage(chat_id, 'Keyboard ditutup!', reply_markup=hide_keyboard)
elif 'Siram Tanah' in perintah: ser.write(b'a') bot.sendMessage(chat_id, "Menyiram Tanah")
elif 'Stop' in perintah: ser.write(b'b') bot.sendMessage(chat_id, "Berhenti")
elif 'Monitoring' in perintah: ser.write(b'c') message = ser.read(300) print (message) bot.sendMessage(chat_id, message)
else : bot.sendMessage(chat_id, "Keyword tersebut tidak disetting!")
else : bot.sendMessage(chat_id, "Maaf, sistem tidak mengenali ID anda ")
bot = telepot.Bot('290610931:AAEmTKW4iCaln1S5uoh1g8YuGPfHIbOxBJ0')
bot.message_loop(handle)
print ('Listening ...')
while 1: time.sleep(10);
http://digilib.mercubuana.ac.id/
30
Pemograman diatas menggunakan skrip penulisan komunikasi serial a-c sebagai kode unik kontrol perangkat ke arduino. Maka untuk dapat menjalankan fungsi dari sisi arduino menggunakan skrip sebagai berikut : int relay = 3;
void setup(){ pinMode(relay,OUTPUT); //output triger relay Serial.begin(9600); }
void loop(){ perintah();
}
void perintah(){ while (Serial.available() != 0) { int inByte = Serial.read();
switch(inByte){ case 'a': digitalWrite(relay, LOW); break;
case 'b': digitalWrite(relay, HIGH); break;
case 'c': monitoring();
http://digilib.mercubuana.ac.id/
31
break; } } }
void monitoring() { float sensorValue = analogRead(A0);
if(sensorValue <= 300){ Serial.print("\nNilai Pada Sensor Air : "); Serial.print(sensorValue); Serial.print("\nTanah Kering"); } else if(sensorValue > 300 && sensorValue <= 700 ){ Serial.print("\nNilai Pada Sensor Air : "); Serial.print(sensorValue); Serial.print("\nTanah Lembap"); } else{ Serial.print("\nNilai Pada Sensor Air : "); Serial.print(sensorValue); Serial.print("\nTanah Jenuh"); } }
Pada program dijelaskan bahwa masing-masing case pada pemograman arduino akan menjalankan masing-masing fungsi untuk memutus dan menghidupkan arus perangkat melalui relay. Relay menggunakan active-LOW, yaitu bermakna kebalikan terhadap activeHIGH. Pada program Arduino dijelaskan bahwa terdapat tiga kategori keadaan tanah, yaitu saat sensor membaca nilai:
0 sampai dengan 300 maka tanah dalam keadaan kering
http://digilib.mercubuana.ac.id/
32
301 sampai dengan 700 maka tanah dalam keadaan lembab
701 sampai dengan 950 maka tanah dalam keadaan jenuh
http://digilib.mercubuana.ac.id/