bab iii perancangan alat 3.1 sistem - uksw
TRANSCRIPT
11
BAB III
PERANCANGAN ALAT
Pada bab ini akan dijelaskan tentang perancangan dari perangkat keras dan perangkat
lunak yang digunakan pada sistem.
3.1 Gambaran Sistem
Berikut adalah diagram blok gambaran sistem yang dibuat :
Gambar 3.1 Diagram blok perangkat keras
Rancangan alat ini menggunakan power supply sebagai sumber daya utama dengan
tegangan sebesar 12 V arus maksimal 5A. Arduino Mega sebagai mikrokontroler
membutuhkan akses jaringan wifi untuk dapat terhubung dengan server , oleh karena itu
Arduino Mega dihubungkan NodeMCU dengan komunikasi serial. Sebagai masukan utama
12
dari mikrokontroler adalah dari kartu RFID yang dibaca oleh RFID reader dan load cell
untuk mengetahui berat beras pada tangki. Setiap kartu RFID yang terbaca akan diolah
mikrokontroler dibandingkan dengan database dan akan ada insert pada tabel database yang
hanya dapat dibuka oleh admin. Apabila kartu RFID yang terbaca telah sesuai , motor akan
memutar tabung pengeluaran beras. Terdapat 2 buah sensor infrared proximity sensor untuk
menentukan putaran tabung pengeluaran beras.
Setiap pemberitahuan dan notifikasi ditampilkan di LCD dan akan terdapat bunyi
dari buzzer jika terdapat kesalahan pengambilan atau error pada alat. Tangki beras hanya
dapat dibuka oleh kartu admin.
3.2 Perancangan dan Realisasi Perangkat Keras
Berikut merupakan gambaran alat dalam perancangan tugas akhir.
Gambar 3.2 Gambaran Tangki Beras
Gambar 3.3 Penghubung Tangki Beras
13
Gambar 3.4 Mekanisme Pengeluaran Beras 1 Liter
Gambar 3.5 Gambaran Hasil Akhir Alat
14
Gambar 3.6 Realisasi Tangki dihubungkan dengan mekanisme pengeluaran beras
Gambar 3.7 Realisasi Alat tanpa cover
15
Gambar 3.8 Realisasi Alat Tampak Depan
Gambar 3.9 Realisasi Alat Tampak Samping
16
3.3 Perancangan Elektronika
Alat ini dibagi dalam beberapa bagian, yaitu panel indikator , panel pengendali, load
cell .
3.3.1 Panel Indikator
Gambar 3.10 Panel Indikator Alat
a. LCD
LCD pada alat ini digunakan sebagai penampil kondisi alat dan
informasi yang sudah diolah oleh mikrokontroler. Informasi yang
ditampilkan berupa waktu terkini, sisa beras pada tangki dalam kilogram,
informasi jatah beras, hari dan jam pengambilan beras .
Gambar 3.11 Wiring LCD dan Arduino Mega
17
b. RFID Reader
RFID Reader digunakan untuk membaca kartu RFID kaum duafa.
Setiap kartu RFID yang terbaca ID akan dikirm ke mikrokontroler untuk
diolah.
Gambar 3.12 Wiring RFID reader dan Arduino Mega
c. LED Indikator
LED ini dihubungkan dengan NodeMCU untuk mengetahui apakah
alat sudah terhubung dengan jaringan wifi dan server.
Gambar 3.13 Wiring LED indikator dan NodeMCU
18
3.3.2 Panel Pengendali
Gambar 3.14 Panel Pengendali
Panel Pengendali ini berukuran panjang 23 cm dan lebar 23 cm. Berisi modul
dan mikrontroler untuk pengolahan data pada alat.Untuk Keterangan dari setiap
bagian adalah seperti berikut :
A. NodeMCU dan Arduino Mega
Untuk mengatasi keterbatasan Arduino Mega yang tidak dapat
terhubung dengan jaringan wifi, Arduino Mega dihubungkan dengan
NodeMCU dengan menggunakan komunikasi serial. Arduino Mega
akan mengolah setiap masukan dari RFID reader dan load cell . Setiap
ID kartu yang terbaca oleh Arduino Mega akan dikirim ke NodeMCU
untuk dikirim ke server, dimana ID tersebut akan dibandingkan dengan
database. Hasil tersebut akan kembali dikirm ke Arduino Mega untuk
diolah , untuk menentukan keluaran selanjutnya.
19
Gambar 3.15 Wiring NodeMCU dan Arduino Mega
B. Real Time Clock
Real Time Clock digunakan untuk mengetahui waktu terkini pada
alat. Waktu ini disesuaikan dengan waktu pada server. Hasil dari RTC
akan ditampilkan pada LCD dengan menunjukan hari , jam , menit dan
detik terkini.
Gambar 3.16 Wiring RTC dan Arduino Mega
C. Relay
Relay pada alat ini digunakan sebagai saklar dari solenoid door.
Solenoid tersebut dipasang pada tutup tangki beras.Solenoid ini bekerja
pada tegangan 12v. Tutup tangki ini hanya dapat dibuka oleh admin.
20
Gambar 3.17 Wiring Relay, Solenoid door dan Arduino Mega
Gambar 3.18 Pemasangan Solenoid door pada tutup tangki
D. Driver Motor L298n
Apabila Arduino Mega memberi sinyal untuk menggerakkan Motor
DC, driver ini akan bekerja mengontrol gerakan motor DC. Motor ini
bekerja pada tegangan 12 V. Untuk mengeluarkan beras 1 liter
diperlukan 1 kali gerakan maju dan mundur. Untuk gerakan maju dan
mundur , PWM (pulse with modulation) yang diberikan kepada motor
adalah 200.
21
Gambar 3.19 Wiring driver motor, motor DC dan Arduino Mega
Untuk motor dapat berhenti, terdapat 2 buah sensor infrared
proximity untuk menentukan letak perhentian motor. Sensor ini bekerja
ketika cahaya dari infrared dipantulkan oleh tabung (tabung diberi cat
untuk memantulkan cahaya infrared). Jika Proximity 1 membaca putih
maka tabung berada dalam posisi pengisian, sedangkan jika proximity
2 membaca putih, tabung beras dalam posisi mengeluarkan beras. Pada
saat pengeluaran beras , tabung berhenti selama 2 detik, dan ketika
pengisian beras berhenti 3 detik.
Gambar 3.20 Wiring proximity sensor dan Arduino Mega
22
Gambar 3.21 Proximity sensor pada tabung beras
E. Buzzer
Buzzer pada alat digunakan sebagai indikator suara.
Gambar 3.22 Wiring buzzer dan Arduino Mega
F. Terminal kabel
Terminal kabel disini adalah untuk mempermudah pembagian
sumber daya. Dibedakan menjadi 3 yaitu terminal 12V ,5V, dan
ground. Sumber 12 V untuk Arduino Mega, NodeMCU, L298n, Relay
dan 5 V untuk RTC, LCD , Infrared proximity sensor, HX711.
G. Power Supply
Sumber daya alat ini sepenuhnya berasal dari Power Supply.
Memiliki Tegangan keluaran 12 V dan arus maksimal 5 Ampere.
23
3.3.3 Load Cell
Load Cell merupakan perangkat untuk mengetahui berat benda. Load cell ini
dihubungkan dengan modul HX711 untuk mengubah keluaran dari resistansi
menjadi tegangan yang dikuatkan agar mudah dibaca oleh Arduino Mega. Pada alat
ini load cell diletakkan pada bagian bawah alat, untuk menimbang ketersediaan
beras pada Tangki.
Gambar 3.23 Wiring load cell dan HX 711 dan Arduino Mega
Gambar 3.24 Pemasangan Load cell dan HX711 pada alas alat
3.4 Perancangan Perangkat Lunak
Pada bagian ini akan dijelaskan mengenai perancangan perangkat lunak dari
Anjungan Beras Mandiri. Berikut adalah diagram alir dari perangkat lunak alat
24
Gambar 3.25. Diagram Alir Sistem Anjungan Beras Mandiri bagi kaum duafa
25
Cara kerja dari alat ini adalah ketika alat dihidukan, NodeMCU akan mencoba
menghubungkan jaringan wifi dan pada database server yang telah dibuat .Apabila sudah
terkoneksi Led indikator akan menyala.
void setup() { Serial.begin(9600); NodeMCU.begin(115200); pinMode(LEDwifi, OUTPUT); pinMode(LEDdatabase, OUTPUT); Serial.println("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, pass); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); } void loop() { if (!client.connect(host,80)) { Serial.println("Gagal Konek"); digitalWrite(LEDdatabase,LOW); delay(1000); return; } digitalWrite(LEDdatabase,HIGH); if(NodeMCU.available()){ RFID = NodeMCU.readString(); Serial.println(RFID); koneksi_database(); } }
Source 3.1. Periksa koneksi koneksi wifi dan database
Kemudian load cell akan menghitung beban yang ada pada tangki, dan jika beban
tangki tidak memenuhi lebih dari 3Kg maka akan ada pemberitahuan yang ditampilkan
pada LCD.
Setelah dua ketentuan tadi terpenuhi, maka alat akan bisa membaca kartu yang
ditempelkan, setiap pembacaan kartu, ID kartu tersebut akan diolah pada Arduino mega
dan dikirm ke NodeMCU untuk dibandingkan dengan database pada tabel db_user yang
berisi jadwal pengambilan, nomor kartu RFID yang terdaftar,dan status untuk
26
menentukan sudah mengambil atau belum. Apabila nomor kartu terbaca pada jadwal
yang tepat, dan nomor tersebut juga sudah terdaftar maka akan ada insert database pada
tabel db_record yang berisi pencatatan nomor RFID ,nama, alamat, jatah, dan waktu
ambil. Dan juga terdapat update pada baris ID RFID bersangkutan, menjadi status = 1.
$rfid = $_GET["data1"]; $sqlCekrfid="SELECT * from tb_user where rfid='$rfid' "; $hasilCek1= mysqli_query($konek,$sqlCekrfid); if (mysqli_num_rows($hasilCek1)> 0) { echo "OK".","; $sqlCeksudahambil="SELECT * from tb_user where rfid='$rfid' AND status='0'"; $hasilCek2= mysqli_query($konek,$sqlCeksudahambil); if (mysqli_num_rows($hasilCek2)> 0) { echo "OK".","; $sqlCekjadwal=" SELECT * from tb_user where rfid='$rfid' AND hari='$day' AND '$jam' >
mulai_ambil AND '$jam' < akhir_ambil"; $hasilCek3= mysqli_query($konek,$sqlCekjadwal); if (mysqli_num_rows($hasilCek3)> 0) { echo "OK".","; $sqlinsert="insert into tb_record(rfid, nama, alamat, jatah) select
tb_user.rfid,tb_user.nama,tb_user.alamat,tb_user.jatah from tb_user where tb_user.rfid=$rfid"; $result1= mysqli_query($konek,$sqlinsert); $sqlupdate="UPDATE `tb_user` SET `status` = '1' where rfid='$rfid' "; $result2=mysqli_query($konek,$sqlupdate); while($row =mysqli_fetch_assoc($hasilCek3)) { echo $row["nama"]. "," .$row["jatah"]; } } else { echo "ERR".","; $sqlCekjadwalsalah="SELECT * from tb_user where rfid='$rfid'"; $hasilCek4= mysqli_query($konek,$sqlCekjadwalsalah); while($row =mysqli_fetch_assoc($hasilCek4)) { echo $row["hari"]. "," .$row["mulai_ambil"]. "-" .$row["akhir_ambil"]; } } } else { echo "ERR".","; } } else { echo "ERR".","; }
Source 3.2. Periksa RFID pada database
27
Setelah itu NodeMCU akan membaca echo hasil dari server. Kemudian data tersebut
dikirim ke Arduino Mega untuk diolah menjadi keluaran.
if(ArduinoMega.available()) { cekrfid = ArduinoMega.readStringUntil(','); cekstatus= ArduinoMega.readStringUntil(','); cekjadwal = ArduinoMega.readStringUntil(','); no = ArduinoMega.readStringUntil(','); jatah = ArduinoMega.readStringUntil(',');
Source 3.3. Variabel data Arduino Mega
Data tersebut diolah oleh Arduino Mega. Jika didapatkan hasil bahwa ID RFID yang
terbaca tersebut sudah mengambil, buzzer akan menyala sesaat dan terdapat
pemberitahuan lewat LCD. Jika ID RFID tersebut mengambil pada jadwal yang salah
aan ditampilkan jadwal peserta dan buzzer menyala sesaat.
void cek() { jatahberas=jatah.toInt(); if(cekrfid=="ERR"){ Serial.println("Kartu Tidak Terdaftar"); lcd.clear(); lcd.setCursor(0, 1); //baris kedua lcd.print("Tidak Terdaftar"); buzzer(); } else if(cekrfid=="OK" && cekstatus=="ERR"){ Serial.println("Anda Sudah Ambil"); lcd.clear(); lcd.setCursor(0, 1); lcd.print("Anda Sudah Ambil"); buzzer(); } else if(cekrfid=="OK" && cekstatus=="OK" && cekjadwal=="ERR"){ Serial.println(no); lcd.clear(); lcd.setCursor(2, 0); lcd.print("Mohon Ambil pada :"); lcd.setCursor(0, 1); lcd.print(no); lcd.setCursor(0, 2); lcd.print(jatah); buzzer(); delay(400); lcd.clear(); } else if(cekjadwal=="OK" && jatahberas!="null"){ Serial.println(jatahberas); lcd.clear(); lcd.setCursor(0, 0);
28
lcd.print(no); lcd.setCursor(0, 1); lcd.print("Anda mendapat :"); lcd.setCursor(0, 2); lcd.print(jatah); lcd.setCursor(3, 2); lcd.print("Liter Beras"); for(int x=0;x<jatahberas;x++) { ambil(); } } lcd.clear(); }
Source 3.4. Cek Variabel Arduino Mega
Jika ID RFID telah memenuhi persyaratan ,maka motor akan bergerak memutar maju,
dan jika sensor infrared 2 membaca warna putih maka motor tersebut akan berhenti
selama 2 detik, kemudian bergerak memutar kearah sebaliknya. Jika sensor infrared 1
membaca putih maka motor akan berhenti. Gerakan motor ini ditentukan oleh jumlah
jatah .
void ambil() { b=digitalRead(38); while(b!=0){ b=digitalRead(38); maju(); Serial.println("maju"); } berhenti(); delay(2000); Serial.println("berhenti"); a=digitalRead(34); Serial.println(a); delay(2000); while(a==1){ a=digitalRead(34); mundur(); Serial.println("mundur"); Serial.println(a); } berhenti(); delay(3500); }
Source 3.5 Pergerakan Motor
Setelah proses ini mikrokontroler akan mengecek koneksi dan nilai load cell kembali,
dan siap membaca kartu RFID.