Anda di halaman 1dari 10

SISTEM KONTROL DAN MONITORING PROSES PENGOMPOSAN PADA

KOMPOSTER HOMESCALE

TUGAS BESAR SISTEM KENDALI EMBEDDED


Laporan tugas besar sebagai salah satu syarat kelulusan pada mata kuliah EL5214
Institut Teknologi Bandung

Oleh:
PHILIPPIANS MANURUNG
NIM: 23220338
(Program Studi Magister Teknik Elektro)

Institut Teknologi Bandung


Desember 2021
BAB I PENDAHULUAN

I.1 Latar Belakang


Pada umumnya, belum semua masyarakat mengetahui metode yang tepat untuk menghasilkan
kompos dengan kualitas yang baik. Kualitas kompos yang baik sangat dipengaruhi oleh
kondisi lingkungan dan teknik pengomposan yang dilakukan. Sistem komposter yang dibangun
menggunakan drum air dengan kapasitas volume 200 L. Pada drum akan ditanamkan sensor
suhu, sensor kelembaban tanah, dan sensor pH tanah. Alat ini juga dilengkapi beberapa
aktuator yaitu: motor DC yang ditempatkan diatas drum komposter bertujuan untuk membuka
dan menutup penutup drum komposter, pompa air aquarium yang bertujuan untuk memompa
cairan EM4 yang berisikan bakteri fermentasi sebagai bakteri activator untuk membantu proses
pengomposan dan penguraian bahan organik, motor AC yang bertujuan untuk mengaduk bahan
organic yang berada didalam drum komposter dan juga bertujuan untuk menjaga aerasi atau
oksigen untuk bakteri aktivator.

Gambar 1 - Bentuk komposter dan aktuator yang digunakan

I.2 Embedded Processor


Pada subbab ini akan dijabarkan tentang spesifikasi dari mikrokomputer dan mikrokontroler
yang ditanamkan pada alat ini:
2. Mikrokontroller Arduino Uno
1. Mikrokomputer Raspberry Pi 3 Model B

Gambar 3 - Mikrokontroler Arduino Uno


Gambar 2 - Raspberry Pi 3 Model B (Sumber: Arduino Uno Datasheet)
(Sumber: https://www.raspberrypi.org)
Tabel 2 – Datasheet Mikrokontroler Arduino
Tabel 1 – Datasheet Raspberry Pi 3 Model B Uno

Parameter Keterangan Parameter Keterangan


Vinput 5V Mikroprosesor ATMega 328
Arus Maksimum tiap 16 mA Tegangan masukan 5V
pin i/o
Pin digital i/o 14 pin
Mikroprosesor SoC Broadcom
Arus DC tiap pin 40mA
BCM2837
Arus DC pin 3.3V 50mA
WiFi BCM43143
Flash Memory Bootloader
Pin GPIO 40 Pin
SRAM 2 KB
USB 2.0 Port 4 buah
EEPROM 1 KB
Bluetooth Bluetooth Low
Energy Clock Speed 16MHz
CPU ARM Cortex-A53 (Sumber: Arduino Uno Datasheet)
Flash Memory 16 GB SSD memory
card
Internal RAM 1GB DDR2
Ethernet 10/100 ethernet
Batas suhu operasi -40sampai 85C
(Sumber: https://www.raspberrypi.org)
BAB II IMPLEMENTASI

II.1 Implementasi Sensor Suhu

Gambar 4 – Wiring Sensor Suhu DS18B20 dengan RPi 3 Gambar 5 - Implementasi Sensor Suhu DS18B20

Pada pengimplementasiannya, sensor ini membutuhkan komponen elektronika lain yaitu


sebuah resistor senilai 10kΩ. Resistor ini dipakai untuk menghubungkan antara pin VCC (3,3
V) dengan pin data (GPIO4).

II.2 Implementasi Sensor Kelembaban

Gambar 7 - Implementasi Sensor Kelembaban YL-69


Gambar 6 - Wiring Sensor YL-69 dengan Arduino

II.3 Implementasi Sensor pH


Sensor ini membutuhkan komponen resistor senilai 4,7 kΩ dan dipakai untuk menghubungkan
antara pin Data dengan GND.
Gambar 8 - Wiring Sensor YL-69 dengan Arduino Gambar 9 - Implementasi Sensor pH

II.4 Implementasi Aktuator

Gambar 11 - Desain Pengkabelan Motor DC + Driver


Gambar 10 - Desain Pengkabelan Relay + Motor AC dengan RPi 3 Motor dengan RPi 3

Gambar 12 - Desain Pengkabelan Pompa Air dengan RPi 3

II.5 Kode Program Monitoring dan Kontrol


import RPi.GPIO as GPIO
import os
import glob
import time
import datetime
import serial
from time import sleep

ser = serial.Serial(port='/dev/ttyACM0',baudrate=9600, parity=serial.PARITY_NONE, stopbits =


serial. STOPBITS_ONE, bytesize = serial. EIGHTBITS, timeout=5)

os.system('modprobe w1-gpio')
os.system('modprobe w1-therm')

base_dir = '/sys/bus/w1/devices/'

i1=0
i2=0
i3=0

sensor1 = '28-0115a84fdeff'
sensor2 = '28-0115a85ffdff'
sensor3 = '28-0315a81322ff'
kelembaban1 = "sensor1"
kelembaban2 = "sensor2"
kelembaban3 = "sensor3"

device_file1 = glob.glob(base_dir + sensor1)[0] + '/w1_slave'


device_file2 = glob.glob(base_dir + sensor2)[0] + '/w1_slave'
device_file3 = glob.glob(base_dir + sensor3)[0] + '/w1_slave'

#motor
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
in1= 23
in2= 24
ena= 25
GPIO.setup(in1,GPIO.OUT)
GPIO.setup(in2,GPIO.OUT)
GPIO.setup(ena,GPIO.OUT)
pwm=GPIO.PWM(ena,100)

#relay
r1=2 #pompa
r2=3 #motorac
low=0
high=1

GPIO.setup(r1, GPIO.OUT)
GPIO.setup(r2, GPIO.OUT)
ulang = 1
#Read_Sensor_Temperature1
def read_temp_raw1():
f = open(device_file1, 'r')
lines1 = f.readlines()
f.close()
return lines1
def read_temp1():
lines1 = read_temp_raw1()
while lines1[0].strip()[-3:] != 'YES':
time.sleep(0.2)
lines1 = read_temp_raw1()
equals_pos = lines1[1].find('t=')
if equals_pos != -1:
temp_string1 = lines1[1][equals_pos+2:]
temp_c1 = float(temp_string1) / 1000.0
temp_f1 = temp_c1 * 9.0 / 5.0 + 32.0
return temp_c1

#Read_Sensor_Temperature2
def read_temp_raw2():
f = open(device_file2, 'r')
lines2 = f.readlines()
f.close()
return lines2
def read_temp2():
lines2 = read_temp_raw2()
equals_pos = lines2[1].find('t=')
if equals_pos != -1:
temp_string2 = lines2[1][equals_pos+2:]
temp_c2 = float(temp_string2) / 1000.0
temp_f2 = temp_c2 * 9.0 / 5.0 + 32.0
return temp_c2

#Read_Sensor_Temperature3
def read_temp_raw3():
f = open(device_file3, 'r')
lines3 = f.readlines()
f.close()
return lines3
def read_temp3():
lines3 = read_temp_raw3()
while lines3[0].strip()[-3:] != 'YES':
time.sleep(0.2)
lines3 = read_temp_raw3()
equals_pos = lines3[1].find('t=')
if equals_pos != -1:
temp_string3 = lines3[1][equals_pos+2:]
temp_c3 = float(temp_string3) / 1000.0
temp_f3 = temp_c3 * 9.0 / 5.0 + 32.0
return temp_c3

def serial_test():
line = ser.readline()
return line

def read_moisture1():
baris1 = serial_test()
data1 = baris1.split("-")
moisture1 = data1[0]
return moisture1

def read_moisture2():
baris2 = serial_test()
data2 = baris2.split("-")
moisture2 = data2[1]
return moisture2

def read_moisture3():
baris3 = serial_test()
data3 = baris3.split("-")
moisture3 = data3[2]
return moisture3

def ph1():
baris4 = serial_test()
data4 = baris4.split("-")
ph = data4[3]
return ph

def motormaju():
GPIO.output(in2,True)
GPIO.output(in1,False)
GPIO.output(ena,True)
time.sleep(25)
GPIO.output(in2,False)
GPIO.output(in1,False)
GPIO.output(ena,False)

def motormundur():
GPIO.output(in1,True)
GPIO.output(in2,False)
GPIO.output(ena,True)

time.sleep(25)

GPIO.output(in2,False)
GPIO.output(in1,False)
GPIO.output(ena,False)

def motorstop():
GPIO.output(in2,False)
GPIO.output(in1,False)
GPIO.output(ena,False)

def relayoff():
GPIO.output(r2,0)
GPIO.output(r1,0)

def relayon():
GPIO.output(r2,1)
GPIO.output(r1,1)

while True:
GPIO.output(r2,0)
GPIO.output(r1,0)
temperature1 = read_temp1()
temperature2 = read_temp2()
temperature3 = read_temp3()

ts = time.time()
timestamp =datetime.datetime.fromtimestamp(ts).strftime('%d-%m-%Y %H:%M')

print temperature1
print temperature2
print temperature3
print moisture1
print moisture2
print moisture3
print ph
print timestamp

if temperature2 >= 60 or temperature1 >= 60 or temperature3 >=60:


motormaju()
motorstop()
GPIO.output(r2,1)

print "control mode : ON"


print timestamp

elif temperature2 < 60 or temperature3 < 60 or temperature1 < 60:


GPIO.output(r2,0)
motormundur()
motorstop()
print "control mode : OFF"
print timestamp

II.6 Sensor Placement


Penempatan sensor pada drum komposter akan di letakkan pada ketiga sisi, yaitu: sisi kiri,
sisi tengah, dan sisi kanan drum pengomposan.
BAB III ANALISIS EMBEDDED SYSTEM

III.1 Finite State Machine

Berdasarkan finite state machine diatas, dapat diperhatikan bahwa ketika mesin
pengomposan aktif maka posisi state akan berada pada state idle, kemudian ketiga sensor suhu
mulai melakukan sensing, maka apabila suhu dari ketiga sensor mencapai 60°C atau lebih maka
state akan berpindah pada state “Heat” yang mengindikasikan bahwa suhu sudah melebihi set
value (60°C) maka motor AC sebagai pengaduk bahan organik akan aktif dan system akan
mengaduk bahan organic yang berada di dalam drum dan motor DC akan bergerak maju
(membuka penutup drum pengomposan) agar suhu dapat diturunkan dan dinetralisir karena
sirkulasi udara di dalam drum dapat berganti.

Namun apabila ketika system aktif dan suhu mendeteksi < 60°C maka mengindikasikan
suhu pengomposan sudah normal, state akan bergerak ke state “normal” dan motor AC akan
“Off” dan motor DC akan “Off” karena kondisi suhu sudah dibawah dari set point yang
ditetapkan.

Skema control dilakukan agar system dapat mempertahankan suhu ideal pengomposan yaitu
52°C - 60°C.
III.2 Scheduling
Pada system ini juga ditanamkan suatu penjadwalan (scheduling). Penjadwalan ini
dioperasikan pada mikrokomputer RPi 3 yang memiliki system scheduling pada system operasi
linux yang bernama “crontab job”. Crontab job merupakan suatu utilitas pada OS linux yang
dapat menjalankan suatu script atau kode program dengan waktu tertentu. Sistem penulisan
waktu pada script memiliki format sebagai berikut:

Gambar 13 – Format Penulisan Penjadwalan Crontab-Job

Berdasarkan format penulisan diatas, maka akan dilakukan penjadwalan pada system ini
dengan 2 skema yaitu: penjadwalan penyiramana bakteri activator sekali seminggu dan
penjadwalan script monitoring dan control apabila system memulai ulang (reboot). Berikut
penjadwalan yang dilakukan:

Kode program “control.py” bertugas untuk menjalankan program control dan monitoring,
sementara kode program “sprayer.py” bertugas untuk menjalankan program penyiraman EM4
(bakteri aktivator) pada hari Senin pukul 09:00.

Anda mungkin juga menyukai