HALAMAN PERSETUJUAN
Pembimbing I Pembimbing II
Mengetahui:
Ketua Program Studi
HALAMAN INSPIRASI
Bismillahirrahmanirrahim
ini merupakan hal yang ditempuh oleh mahasiswa Teknik Elektro, Fakultas
Dalam penyusunan skripsi ini, tidak sedikit kesulitan dan hambatan yang
penulis alami, namun berkat dukungan, dorongan dan semangat dari orang
dalamnya kepada:
1. Kepada kedua orang tua saya Bujang dan Mardiati, saya menyampaikan
3. Bapak Ir. Andi Muhammad Syafar, ST., MT., IPM. selaku pembimbing 2
5. Bapak Asrul, ST., MT. Selaku Ketua Program Studi Teknik Elektro, Bapak
Bapak Ashadi Amir, ST., MT. Selaku Kepala Laboratorium Program Studi
ABSTRAK
Robot forklift merupakan suatu robot pemindah barang dari satu tempat ketempat
lainnya. Dalam suatu industri produksi yang lebih cepat dan efesian merupakan
suatu penunjang meningkatnya ranting perusahaan tersebut, akan tetapi untuk
mencapai suatu target maka sangatlah dibutuhkan suatu teknologi yang dapat
bekerja dengan sendirinya, terutama dalam pemindahan barang sebagai penentu
letak benda pada posisi masing-masing dan menyimpan secara otomatis sangatlah
berguna untuk mengatasi masaslah tersebut. Tujuan penelitian ini yaitu
merancang prototype robot forklift pemindah barang menggunakan QR code
scanner. Penelitian ini merupakan penelitian pengembangan yang menggunakan
metode R&D (Research and Development). Pengumpulan data yang dilakukan
pada penelitian ini terdiri dari beberapa tahapan. Tahap pertama yaitu studi
literature yang dilakukan untuk mempelajari terkait pergerakan robot forklift dan
mempelajari mengenai koneksi SPI antara arduino dengan kamera QR scanner.
Tahap kedua yaitu melakukan pengujian keefektifitasan dari QR Code Scanner.
Berdasarkan hasil penelitian prototype robot forklift ini menggunakan QRscanner
sebagai pemindai posisi dan motor stepper nema 23 sebagai pembawa objek lalu
motor stepper nema 14 sebagai pendorong objek. Berdasarkan hasil penelitian
maka dapat ditarik kesimpulan alat yang dirancang dapat memindai QRcode dan
melakukan penyimpanan secara otomatis dengan baik tanpa kesalahan dalam
penempatan.
ABSTRACT
ADITIYA DWIKA BAYU Forklift Robot Prototype for Goods Arrangers Based
on QRcode (supervised by Asrul and Andi Muhammad Syafar)
A forklift robot is a robot that moves goods from one place to another. In an
industry, faster and more efficient production is a support for these companies, but
to achieve a target, a technology that can work by itself is needed, especially in
moving goods as a maker of placing goods in their respective positions. and
saving automatically is very useful to solve the problem. The purpose of this study
is to design a forklift robot prototype for moving goods using a QR code scanner.
This research is a development research that uses the R&D (Research and
Development) method. The data collection carried out in this study consisted of
several stages. The first stage is a literature study conducted to study the
movement of the forklift robot and learn about the SPI connection between
Arduino and the QR scanner camera. The second stage is to test the effectiveness
of the QR Code Scanner. Based on the research results of this forklift robot
prototype using a QRscanner as a position scan and a nema 23 stepper motor as an
object carrier and then a nema 14 stepper motor as an object pusher. Based on the
results of the study, it can be concluded that the designed tool can scan QRcodes
and store automatically properly without errors in placement.
Halaman
HALAMAN JUDUL i
HALAMAN PERSETUJUAN ii
PRAKATA iv
ABSTRAK vi
ABSTRACT vii
DAFTAR GAMBAR xi
BAB I PENDAHULUAN 1
A. Latar Belakang 1
B. Rumusan Masalah 2
C. Tujuan Penelitian 2
D. Batasan Masalah 3
E. Manfaat Penelitian 3
A. Kajian Teori 4
1. Sistem Kendali 4
2. Robot Forklift 4
5. Motor Stepper 7
6. Relay Single Channel 8
A. Jenis Penelitian 17
1. Lokasi 17
2. Waktu 17
E. Rancangan Hardware 19
F. Diagram Alir 20
A. Perancangan Hardware 21
B. Perancangan Software 23
C. Pengujian 36
1. Pengujian QRcode Scanner 36
2. Pengujian Sistem 39
A. Kesimpulan 41
B. Saran 41
DAFTAR PUSTAKA 42
LAMPIRAN 45
DAFTAR TABEL
Halaman
DAFTAR GAMBAR
Halaman
Gambar2.6. QR Code 11
PENDAHULUAN
A. Latar Belakang
Di era modern pada saat ini banyak teknologi yang telah berkembang
mengikuti arus waktu. Teknologi saat ini sangatlah berkembang pesat khususnya
robotika atau system yang dapat bekerja dengan sendirinya sangatlah bermanfaat
dan dapat mengurangi terjadinya kecelakaan kerja (Anisa & Firdaus, 2021)
Robot forklift merupakan suatu robot pemindah barang dari satu tempat
menyimpan produk yang telah dikemas dan siap untuk diantarkan ke rak atau
berdasarkan jenis atau barang yang sama, produk yang telah dikemas akan
ditumpuk atau disimpan dalam box, box biasaya ditandai dengan warna atau kode
yang berbeda-beda untuk pemilihan produk tersebut masih dilakukan dengan cara
manual atau memisahkan benda yang sama terlebih dahulu kemudian akan
diangkat menggunakan mobil forklift (Maulana dkk, 2019). Dalam suatu industry
produksi yang lebih cepat dan efesian merupakan suatu penunjang meningkatnya
ranting perusahaan tersebut, akan tetapi untuk mencapai suatu target maka
2
Robot juga memiliki ketelitian yang cukup tinggi jika dibandingkan dengan
barang tersebut (Hamid, 2017).Penelitian ini sejalan dengan penelitan yang telah
dilakukan oleh (Budi Herdiana dan Zainal Mutaqin, 2017). Yang mana merancang
sebuah prototype robot forklift pemindah barang 3 lantai, akan tetapi dalam
Adapun solusi yang akan ditawarkan oleh peneliti dari permasalahn diatas
scanner sebagai penentu letak benda pada posisi masing-masing dan menyimpan
secara otomatis.
B. Rumusan Masalah
masalah pada penelitian ini adalah bagaimana merancang mekanik dan elektronik
C. Tujuan Penelitian
D. Batasan Masalah
E. Manfaat Penelitian
Adapun manfaat dari penelitian ini terkait prototype robot forklift pemindah
TINJAUAN PUSTAKA
A. Kajian Teori
1. Sistem Kendali
Sistem kendali merupakan proses mengatur satu atau lebih parameter yang
akan dikontrol. System kendali adalah sekumpulan piranti yang bekerja sama
yang lainya atau sensor yang digunakan (Sibiti & Rosman, 2021).
2. Robot Forklift
Mobile robot merupakan robot yang ciri khasnya mempunyai actuator sebagai
dkk, 2018). Mobile robot biasanya memiliki 4 roda sebagai penggerak robot juga
Forklift adalah suatu alat yang terdiri dari body (badan) dan work equipment
(perangkat kerja) yang dipakai untuk memuat barang. Fungsi dari alat ini yaitu
untuk meindahkan barang dari satu tempat ke tempat lain atau menyusun barang
dari yang terendah ketertinggi, biasanya alat ini digunakan pada industri-industri
(Wibowo dkk, 2018). Robot forklift merupakan mobile robot yang menggunakan
4 roda dan sebuah gripper untuk memindahkan barang dari satu tempat ketempat
I/O berjumlah 54 slot (terdiri dari 14 pin PWM), 16 pin analog input, 4 pin UART
bentuk yang berbeda-beda namun tujuan dan kegunnanya tetap sama sebagai otak
atau pengendali dari suatu system (Natsir dkk, 2019). Untuk spesifikasi arduino
Arduino adalah perangkat keras yang sifatnya open source atau dapat
yaitu arduino IDE dimana menggunakan bahasa C++ sebagai perintah untuk
digunakan untuk mendeteksi cahaya inframerah. Sensor ini ada dua bagian
merah jika diblokir oleh objek reflektif sinar inframerah kemudian akan
dipantulkan dan dideteksi oleh penerima. Sensor ini kemudian dapat digunakan
sebagai pendeteksi objek antara hitam dan putih. Kemampuan deteksi sensor
terletak pada spektrum warna merah. Sinar inframerah mencakup lebar jangkauan
gelombang sinar antara 0.75-1000 μ dan sekitar 80% cahaya matahari terdiri dari
tegangan menggunakan sinyal inframerah dan terdiri dari dua bagian yaitu
pemancar (transmitter) dan penerima (receiver), seperti yang sudah kita ketahui.
Motor stepper merupakan suatu motor listrik yang mengubah dapat sinyal
listrik menyadi gerakan motor discret (terputus) atau disebut step (langkah).
Setiap putaran motor memerlukan 3600 dari jumlah langkah yang tertentu per
derajatnya. Motor stepper biasanya diukur dari jumlah langkah putaran per detik,
motor yang membagikan pulsa periodic (Latifa & Saputro, 2018). Spesifikasi
mesin CNC, robot pemindah barang, lengan robot dan masih banyak digunakan
pada bidang yang lainya, mengapa stepper lebih banyak digunakan karena
kemampuanya dalam dikontror bersifat open loop (umpan balik). Motor stepper
kumparan pada bagian stator dan bagian kumparan merupakan sebuah magnet
yang terpasang permanen. Ukurun step berada pada range 0,90 sampai dengan 900,
posisi putaranya yang sangat relative stabil dibandingkan dengan putaran motor
Relay memiliki fungsi yang sama dengan saklar yaitu untuk menghidupkan /
1. Electromagnet (Coil)
Merupakan lilitan yang terbentuk dari kawat tembaga dengan lapisan email
2. Armature
kontak yang bergerak merubah posisi kontak tergantung dari sifat magnet dari
Merupakan bagian dari relay yang berfungsi sebagai kontak output relay.
normally close maksudnya adalah bahwa kontak relay secara normal saat
4. Spring
switch contact poin relay saat lilitan koil A1dan A2 tidak bertegangan (Abadi
dkk, 2021).
10
motor stepper bipolar dalam mode langkah penuh, setengah, seperempat, delapan,
dan enam belas. Terdapat potensio untuk mengatur arus keluaran dengan
tegangan nominal 3 hingga 5.5 V DC. Untuk arus maksimum 2 amper diperlukan
heat sink (pendingin) dan tanpa heat sink untuk arus 1 ampere (Fathoni, 2022).
(step) dan arah putaran (direction) untuk mengendalikan motor stepper. Driver ini
menerima sinyal langkah dan arah dari mikrokontroler atau sistem kontrol
1. Pin dan Koneksi: Driver A4988 memiliki beberapa pin yang umum
pengembangan dari kode batang (barcode). Barcode adalah symbol atau penanda
dari suatu objek atau benda yang terbuat dari pola-pola vatang berwarna hitam
dan putih agar mudah dikenali oleh computer (Rois, 2018). QR code mampu
menyimpan jenis data seperti data angka/ numeric, alphnumerik, biner, kanji/kana.
QR code juga mampu menampung data secara horizontal dan vertical, maka
secara otomatis ukuran tampilan gambar QR code hanya bisa sepuluh dari ukuran
Gambar2.6. QR Code
12
Motor Stepper Driver TB6600 ini dipilih karena mempunyai daya tinggi
dengan arus maksimum 4,5A dan arus starting hingga 5A. Tegangan untuk driver
ini mampu menampung hingga 45V. Spesifikasi driver ini mampu menggerakan
(Suryati, 2019)
Driver motor stepper TB6600 bekerja dengan menerima sinyal kendali dari
yang tepat untuk menggerakkan motor stepper. Driver ini menggunakan prinsip
kontrol arus konstan (constant current control) untuk memastikan motor stepper
antara lain:
A+, A-, B+, B-: Pin output untuk koneksi ke motor stepper.
13
minimum input dan output yaitu 1,5 VDC. Namun selisih dari tegangan tersebut
tidak akan mempengaruhi kinerja dari piranti yang akan di control selama
selisinya tidak beda jauh. Arus maksimal pada modul ini yaitu 3A dengan range
menghasilkan tegangan output yang stabil dan terkontrol secara elektronik. Ini
elektronik portabel.
Efisiensi Tinggi: Modul step down biasanya memiliki efisiensi yang tinggi,
yang berarti daya yang diserap dari sumber input hampir sepenuhnya digunakan
untuk memasok beban atau perangkat yang membutuhkan tegangan output. Hal
ini mengurangi pemborosan energi dan menghasilkan panas yang lebih sedikit.
14
menjaga modul dan perangkat terhubung tetap aman dari kerusakan akibat kondisi
atau potensiometer yang ada pada modul. Hal ini memungkinkan pengguna untuk
yang terhubung.
LCD (Liquid Crystal Display) adalah display elektronik yang dibuat dengan
teknologi CMOS logic yang beroperasi dengan tidak menghasilkan cahaya tetapi
bersifat open source, penggunaan arduino harus disertai dengan sebuah bahasa
dalam mikrokontroller Atmega 328 yang dinamakan dalam modul Arduino sketch
(Prio, 2017).
Perancangan alat prototype robot forklift telah dilakukan oleh, Budi Herdiana
infrared sebagai penggerak dan sensor cahaya LDR sebagai penentu penyimpanan
melalui aplikasi dan dalam kendali gripper masih dilakukan secara manual yang
berbasis ESP8266.
BAB III
METODE PENELITIAN
A. Jenis Penelitian
yang harus diikuti dalam menghasilkan sebuah produk tertentu dan menguji
1. Lokasi
2. Waktu
Penelitian dilakukan pada bulan Oktober 2022 sampai pada bulan Desember
2022. Untuk waktu penelitian dapat dilihat pada table dibawah ini:
Alat dan bahan yang digunakan untuk perancangan prototype robot forklift
Rancangan alat yang akan diteliti nantinya dapat dilihat pada gambar blok
diagram 3.1.
Blok diagram pada Gambar 3.3 adalah gambaran system prototype robot
forklift pemindah barang berdasarkan QR code, untuk perancangan alat pada input
robot yaitu QR code scanner untuk memilih dan memindahkan barang sesuai
ini adalah arduino mega2560. Output dari perancangan robot ini yaitu robot akan
secara otomatis mendeteksi dan menyimpan benda yang telah di scan melalui
E. Rancangan Hardware
Saat objek diletakkan pada lift, Sensor Infrared akan mendeteksi ada
perintah ke Motor Stepper untuk naik ke posisi yang sesuai dengan data
posisi stanby.
20
F. Diagram Alir
Pengumpulan data yang dilakukan pada penelitian ini terdiri dari beberapa
tahapan. Tahap pertama yaitu studi literature yang dilakukan untuk mempelajari
terkait pergerakan robot forklift dan mempelajari mengenai koneksi SPI antara
pada rak atau tempat yang sesuai dengan code masing-masing benda.
BAB IV
A. Perancangan Hardware
Penyusun Barang Berdasarkan QRcode secara umum dapat dilihat pada Gambar
4.1 .
VDD
VSS
VEE
RW
RS
D0
D1
D2
D3
D4
D5
D6
D7
+5V
E
LCD?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
LM016L
PCF8574
14 4
SCL P0
15 5
SDA P1
6
+5 V
P2
13 7
INT P3
9
P4
1 10
A0 P5
2 11
A1 P6
3 12
A2 P7
+5 V
Vcc
OUT GND
www.TheEngineeringProjects.com
www.TheEngineeringProjects.com
Arduino Mega 2560
Sensor IR QR Scanner
ON
ENABLE
Stepper Kecil 1 9
ON
ON
MS1 VMOT
2 10
Driver Stepper
MS2 GND
3 11
MS3 2B
4 12
RESET 2A
5 13
SLEEP 1A
6 14
+88.8 STEP 1B RESET
7 15 +5 V AREF
DIR VDD
8 16
GND
1
2
3
4
5
6
13 VCC
ATMEGA2560
PB7/OC0A/OC1C/PCINT7
12 GND
16AU 1126
PB6/OC1B/PCINT6
VCC
RX2
GND
PB
PB
TXD
11
PB5/OC1A/PCINT5 A0
10 PF0/ADC0
PB4/OC2A/PCINT4 A1
9 PF1/ADC1
PH6/OC2B A2
+5 V
8 PF2/ADC2
1 PH5/OC4C A3
PWM
ENA- PF3/ADC3
2 A7
PF7/ADC7/TDI
TB6600 Stepper Motor Driver
ENA+ 7
3 PH4/OC4B A6
ANALOG IN
DIR- 6 PF6/ADC6/TDO
4 PH3/OC4A A5
DIR+ 5 PF5/ADC5/TMS
5 PE3/OC3A/AIN1 A4
Stepper Besar PUL- 4 PF4/ADC4/TCK
6 PG5/OC0B
PUL+ 3
PE5/OC3C/INT5 A8
2 PK0/ADC8/PCINT16
7 PE4/OC3B/INT4 A9
B- 1 PK1/ADC9/PCINT17
8 PE1/TXD0/PDO TX0 A10
B+ 0 PK2/ADC10/PCINT18
PE0/RXD0/PCINT8RX0 A11
9 PK3/ADC11/PCINT19 RELAY
COMUNICATION
A- A12
10 14 PK4/ADC12/PCINT20
A+ PJ1/TXD3/PCINT10 TX3 A13
+88.8 11 15 PK5/ADC13/PCINT21
GND PJ0/RXD3/PCINT9 RX3 A14
12
Reset BTN
VCC 16 PK6/ADC14/PCINT22
PH1/TXD2 TX2 A15
17 PK7/ADC15/PCINT23
PH0/RXD2 RX2
18
PD3/TXD1/INT3 TX1
19
PD2/RXD1/INT2 RX1
+5 V
Limit Swicht 20
PD1/SDA/INT1 SDA
21
PD0/SCL/INT0 SCL
DIGITAL
PB3/MISO/PCINT3
PB2/MOSI/PCINT2
PB1/SCK/PCINT1
Vin
PB0/SS/PCINT0
+12 V 1 5
Feedback L1
+5 V
4
OUT 330uH
PL5/OC5C
PL4/OC5B
PL3/OC5A
C1
PL1/ICP5
PL0/ICP4
2
PG2/ALE
PA0/AD0
PA1/AD1
PA2/AD2
PA3/AD3
PA4/AD4
PA5/AD5
PA6/AD6
PA7/AD7
PC7/A15
PC6/A14
PC5/A13
PC4/A12
PC2/A10
PC3/A11
PG0/WR
PG1/RD
PC1/A9
PC0/A8
PD7/T0
PL2/T5
680u C2
D1
GND
ON/OFF
PL7
PL6
220u
1N5284
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
-12 V
ada pada barang, yang terhubung NO dengan relay agar tidak menyala
3. Limit Switch yang berfungsi sebagai alat yang membatasi posisi paling
bawah motor stepper Nema 23, terhubung ke pin A6 pada arduino dan
Ground.
pin Vcc dan Ground terhubung ke step down, SDA ke pin 20 pada arduino
6. Motor Stepper Driver TB6600 yang berfungsi sebagai driver NEMA 23,
7. Motor Stepper Driver A4988 yang berfungsi sebagai driver NEMA 14,
TB6600.
penyimpanan, terhubung ke pin 1A, 2A, 2B dan Ground pada motor driver
A4988.
10. Modul relay yang berfungsi sebagai saklar on/off QRCode Scanner, VCC
B. Perancangan Software
mengatur kinerja pada input dan output dari perangkat keras dengan adanya
Pada Gambar 4.2 merupakan diagram alir prototype robot forklift penyusun
diatas sensor infrared, lalu QRscanner membaca QRcode. Ketika QRcode terbaca
maka motor stepper naik membawa objek dan meletakkan barang ke rak
penyimpanan 1 ketika tidak terbaca maka objek tidak akan dibawa oleh motor
stepepr ke rak penyimpanan yang telah ditentukan, begitupun objek ke-2 dan
objek ke-3.
25
berikut:
menuStandby:
if(digitalRead(ok)==0){delay(150);goto
menuDaftar;}
inString=""; //mengosongkan data dari serial
lcd.setCursor(0,0); lcd.print("MULAI....");
//tampilan LCD dengan tulisan mulai
lcd.setCursor(0,1); lcd.print("SCAN BARCODE !");
//tampilan LCD
if (digitalRead(pinIR)==0 && statusIR==0)
{bacaEEPROM();delay(1000);QRklik();statusIR==1;lcd.c
lear();goto menuScan;}
goto menuStandby;
1. Jika tombol “OK” ditekan, maka akan menunggu selama 150ms, dan
inString="";
lcd.setCursor(0,0); lcd.print("MULAI....");
lcd.setCursor(0,1); lcd.print("SCAN BARCODE !");
if (digitalRead(pinIR)==0 && statusIR==0)
{bacaEEPROM();delay(1000);QRklik();statusIR==1;lcd.
clear();goto menuScan;}
goto menuStandby;
menerus. Layar LCD akan dihapus dan program akan melompat ke label
‘menuScan’.
menuScan:
while (Serial1.available()>0)
{inString=Serial1.readString();
dataInt=inString.toInt();
1. Ini adalah loop yang berjalan selama ada data yang tersedia di objek
percabangan ‘if’
if (dataInt == dataQR1)
{Serial.println("posisi1");inString="";lcdCode1();posisi1();l
cd.clear();goto menuStandby;}
if (dataInt == dataQR3)
{Serial.println("posisi1");inString="";lcdCode1();posisi1();l
cd.clear();goto menuStandby;}
27
if (dataInt == dataQR5)
{Serial.println("posisi1");inString="";lcdCode1();posisi1();l
cd.clear();goto menuStandby;}
if (dataInt == dataQR7)
{Serial.println("posisi2");inString="";lcdCode2();posisi2();l
cd.clear();goto menuStandby;}
if (dataInt == dataQR9)
{Serial.println("posisi2");inString="";lcdCode2();posisi2();l
cd.clear();goto menuStandby;}
if (dataInt == dataQR11)
{Serial.println("posisi2");inString="";lcdCode2();posisi2();l
cd.clear();goto menuStandby;}
if (dataInt == dataQR13)
{Serial.println("posisi3");inString="";lcdCode3();posisi3();l
cd.clear();goto menuStandby;}
if (dataInt == dataQR15)
{Serial.println("posisi3");inString="";lcdCode3();posisi3();l
cd.clear();goto menuStandby;}
if (dataInt == dataQR17)
{Serial.println("posisi3");inString="";lcdCode3();posisi3();l
cd.clear();goto menuStandby;}
}
lcdCodeError();delay(3000); ///jika kode tidak dikenali
maka tampilan LCD error lalu ke menu scan untuk membaca kode
kembali
goto menuStandby;
void bacaEEPROM(){
EEPRO
M.get(1,dataQR1);delay(100);Serial.println(dataQR1)
;
EEPRO
M.get(3,dataQR3);delay(100);Serial.println(dataQR3)
;
EEPRO
M.get(5,dataQR5);delay(100);Serial.println(dataQR5)
;
EEPRO
M.get(7,dataQR7);delay(100);Serial.println(dataQR7)
;
EEPRO
M.get(9,dataQR9);delay(100);Serial.println(dataQR9)
;
EEPRO
M.get(11,dataQR11);delay(100);Serial.println(dataQR
11);
EEPRO
M.get(13,dataQR13);delay(100);Serial.println(dataQR
13);
EEPRO
M.get(15,dataQR15);delay(100);Serial.println(dataQR
15);
EEPRO
M.get(17,dataQR17);delay(100);Serial.println(dataQR
17);
}
void lcdCode1(){
lcd.setCursor(0,0); lcd.print("QRCODE DIKENALI");
lcd.setCursor(0,1); lcd.print("POSISI 1........");
}
void posisi1(){
digitalWrite(dirStep1,LOW);
for(int x=0;x<6000;x++) {
digitalWrite(stepStep1,HIGH);
delayMicroseconds(50);
digitalWrite(stepStep1,LOW);
delayMicroseconds(50);}
delay(500);
simpan();
resetPos();
}
1. Fungsi `lcdCode1()`:
30
LCD.
2. Fungsi `posisi1()`:
demi langkah.
output.
delayMicroseconds(50).
menggunakan delay(500).
31
posisi.
akan dijalankan.
void lcdCode2(){
lcd.setCursor(0,0); lcd.print("QRCODE DIKENALI");
lcd.setCursor(0,1); lcd.print("POSISI 2........");
}
void posisi2(){
digitalWrite(dirStep1,LOW);
for(int x=0;x<24000;x++) {
digitalWrite(stepStep1,HIGH);
delayMicroseconds(50);
digitalWrite(stepStep1,LOW);
delayMicroseconds(50);}
delay(500);
simpan();
resetPos();
1. `void lcdCode2(){`:
LCD.
4. `void posisi2(){`:
demi langkah.
LOW)`.
`digitalWrite(stepStep1, HIGH)`.
33
fungsi `delayMicroseconds()`.
`digitalWrite(stepStep1, LOW)`.
motor stepper.
fungsi `delayMicroseconds()`.
fungsi `delay()`.
posisi.
void lcdCode3(){
34
void posisi3(){
digitalWrite(dirStep1,LOW);
for(long x=0;x<41000;x++) {
digitalWrite(stepStep1,HIGH);
delayMicroseconds(50);
digitalWrite(stepStep1,LOW);
delayMicroseconds(50);}
delay(500);
simpan();
resetPos();
}
1. Fungsi `lcdCode3()`:
"POSISI 3........".
2. Fungsi `posisi3()`:
menggunakan `delay(500)`.
untuk mengatur posisi motor stepper ke posisi awal atau posisi yang
ditentukan.
void lcdCodeError(){
lcd.setCursor(0,0); lcd.print("MAAF! QRCODE ");
lcd.setCursor(0,1); lcd.print("TIDAK DIKENALI");
}
1. Fungsi `lcdCodeError()`:
36
Dengan tambahan ini, program akan menampilkan pesan error pada LCD dan
program.
C. Pengujian
Pengujian data yang dilakukan pada penilitian ini adalah menyusun barang
mengeluarkan suara “tit” dan hasil pemindaian dapat dilihat pada serial monitor.
{"qr_id":"c11c0e26-f861-4832-8de6-a269f9060552"}
checkin:61e7809833dfdafa025df500
38
checkin:61517369656641008d2212c0
https://me-qr.com/UVVIU7r
Pengujian pada tabel 4.1 Pengujian QRcode Scanner berjalan dengan baik,
menandakan data berhasil terbaca selanjutnya pada QRcode ke 3 (tiga) data ditampilkan
terbaca selanjutnya pada percobaan ke 4 (empat) data ditampilkan pada Serial Monitor
terbaca selanjutnya pada percobaan ke 5 (lima) data ditampilkan pada Serial Monitor
2. Pengujian Sistem
yang diperlukan untuk proses penyimpanan objek mulai dari pemindaian QRcode
sebagai berikut:
30,51
Objek 1 = =6.102s
5
40,34
Objek 2 = =8.068s
5
49,61
Objek 3 = =9.922s
5
Hasil perhitungan mendapatkan rata-rata waktu 6.102 detik untuk objek
pertama, 8.068 detik untuk objek kedua, 9.922 utnuk objek ketiga.
BAB V
A. Kesimpulan
Barang Berdasarkan QRcode dapat disimpulkan bahwa alat yang dirancang telah
6.102 detik untuk objek pertama, 8.068 detik untuk objek kedua, 9.922
B. Saran
2. Membuat rak yang lebih banyak untuk penyimpanan yang lebih banyak
kedepannya.
3.
42
DAFTAR PUSTAKA
Anisa, D., & Firdaus, A. (2021). Robot Scissor Lift Untuk Memindahkan dan
Menyusun Barang Pada Rak Menggunkan Lego Mindstroms
51515. Jurnal Laporan Akhir Teknik Komputer, 1(2), 10-19.
Sibiti, H., & Rosman, A. (2021). Prototype Pemberi Pakan Ternak Otomatis
dengan Sistem Kendali Short Message Service Berbasis
Mikrokontroler. Jurnal Ilmiah Teknologi Informasi, 11(1), 12-21.
Natsir, M., Rendra, D. B., & Anggara, A. D. Y. (2019). Implementasi IOT Untuk
Sistem Kendali AC Otomatis Pada Ruang Kelas di Universitas Serang
Raya. PROSISKO: Jurnal Pengembangan Riset dan Observasi Sistem
Komputer, 6(1).
Amin, M., & Novelan, M. S. (2020). Sistem Cerdas Kontrol Kran Air
Menggunakan Mikrokontroler Arduino dan Sensor Ultrasonic. Jurnal
Nasional Teknologi dan Jaringan, 4(2).
Wiguna, A. R. (2020). Analisis Cara Kerja Sensor Ultrasonic Dan Motor Servo
Menggunakan Mikrokontroler Arduino Uno Untuk Pengusir Hama
Disawah. OSF Preprints. December, 29.
Latifa, U., & Saputro, J. S. (2018). Perancangan Robot Arm Gripper Berbasis
Arduino Uno Menggunakan Antarmuka Labview. Barometer, 3(2),
138141.
43
Cahyono, E., & Harianto, B. M. (2017). Rancang Bangun Mesin Meja Plasma
Cutting Dengan Gerak 3 Axis X, Y, Z Menggunakan Motor Stepper
Berbasis Arduino (Doctoral dissertation, Institut Teknologi Sepuluh
Nopember).
Amin, M., Ananda, R., & Eska, J. (2019). Analisis Penggunaan Driver Mini
Victor L298N Terhadap Mobil Robot Dengan Dua Perintah Android Dan
Arduino Nano. JURTEKSI (Jurnal Teknologi dan Sistem Informasi), 6(1),
51-58.
Hendri, A., Puspitasari, A., & Kuncoro, E. (2017). Uji Tekanan Angin
Menggunakan Metode Roll Tester Pada Nose Cone Roket. Prosiding
SNATIF, 253-258.
Rois, A. Smart Sajadah Portable Penghitung Rakaat Salat Dan Penentu Arah
Kiblat Yang Terintergrasi Dengan Smartphone Menggunakan Sensor
Force Sensitive Resistor (Fsr) Berbasis Arduino (Bachelor's thesis,
Fakultas Sains dan Teknologi UIN Syarif Hidayatullah Jakarta).
Dedy Irawan, J., & Adriantantri, E. (2018). Pemanfaatan QR-Code Segabai Media
Promosi Toko. Jurnal Mnemonic, 1(2).
Abadi, Akbar, Riza Widya, and Julsam Julsam. "Rancang Bangun Pemutus
Tegangan Pada KWH Meter Pelanggan PLN." Jurnal Andalas: Rekayasa
dan Penerapan Teknologi 1.1 (2021): 37-46.
LAMPIRAN
void setup() {
// EEPROM.put(1,dataInt);
delay(1000);EEPROM.get(1,dataQR1);delay(1000);Ser
ial.println(dataQR1);delay(1000); //program
untuk mereset alamat memory/mengosongkan data
alamat memory
// EEPROM.put(3,dataInt);
delay(1000);EEPROM.get(3,dataQR3);delay(1000);Ser
ial.println(dataQR3);delay(1000);
// EEPROM.put(5,dataInt);
delay(1000);EEPROM.get(5,dataQR5);delay(1000);Ser
ial.println(dataQR5);delay(1000);
// EEPROM.put(7,dataInt);
delay(1000);EEPROM.get(7,dataQR7);delay(1000);Ser
ial.println(dataQR7);delay(1000);
// EEPROM.put(9,dataInt);
delay(1000);EEPROM.get(9,dataQR9);delay(1000);Ser
ial.println(dataQR9);delay(1000);
// EEPROM.put(11,dataInt);
delay(1000);EEPROM.get(11,dataQR11);delay(1000);S
erial.println(dataQR11);delay(1000);
// EEPROM.put(13,dataInt);
delay(1000);EEPROM.get(13,dataQR13);delay(1000);S
erial.println(dataQR13);delay(1000);
47
// EEPROM.put(15,dataInt);
delay(1000);EEPROM.get(15,dataQR15);delay(1000);S
erial.println(dataQR15);delay(1000);
// EEPROM.put(17,dataInt);
delay(1000);EEPROM.get(17,dataQR17);delay(1000);S
erial.println(dataQR17);delay(1000);
}
void loop() {
menuStandby:
if(digitalRead(ok)==0){delay(150);goto
menuDaftar;}
inString=""; //mengosongkan data dari
serial
lcd.setCursor(0,0); lcd.print("MULAI....");
//tampilan LCD dengan tulisan mulai
lcd.setCursor(0,1); lcd.print("SCAN
BARCODE !"); //tampilan LCD
if (digitalRead(pinIR)==0 && statusIR==0)
{bacaEEPROM();delay(1000);QRklik();statusIR==1;lc
d.clear();goto menuScan;}
goto menuStandby;
menuScan:
while (Serial1.available()>0)
{inString=Serial1.readString();
dataInt=inString.toInt();///memeriksa data dari
serial 1, jika ada data maka data disimpan pada
variabel data lalu ditambahkan ke instring
Serial.println (inString); Serial.println
(dataInt);
if (dataInt == dataQR1)
{Serial.println("posisi1");inString="";lcdCode1()
;posisi1();lcd.clear();goto menuStandby;}
if (dataInt == dataQR3)
{Serial.println("posisi1");inString="";lcdCode1()
;posisi1();lcd.clear();goto menuStandby;}
if (dataInt == dataQR5)
{Serial.println("posisi1");inString="";lcdCode1()
;posisi1();lcd.clear();goto menuStandby;}
if (dataInt == dataQR7)
{Serial.println("posisi2");inString="";lcdCode2()
;posisi2();lcd.clear();goto menuStandby;}
if (dataInt == dataQR9)
{Serial.println("posisi2");inString="";lcdCode2()
;posisi2();lcd.clear();goto menuStandby;}
48
if (dataInt == dataQR11)
{Serial.println("posisi2");inString="";lcdCode2()
;posisi2();lcd.clear();goto menuStandby;}
if (dataInt == dataQR13)
{Serial.println("posisi3");inString="";lcdCode3()
;posisi3();lcd.clear();goto menuStandby;}
if (dataInt == dataQR15)
{Serial.println("posisi3");inString="";lcdCode3()
;posisi3();lcd.clear();goto menuStandby;}
if (dataInt == dataQR17)
{Serial.println("posisi3");inString="";lcdCode3()
;posisi3();lcd.clear();goto menuStandby;}
}
lcdCodeError();delay(3000); ///jika kode tidak
dikenali maka tampilan LCD error lalu ke menu
scan untuk membaca kode kembali
goto menuStandby;
goto menuScan;
menuDaftar:
lcd.setCursor(0,0); lcd.print("SCAN BARCODE !");
lcd.setCursor(0,1); lcd.print("ALAMAT
MEMORY=");lcd.setCursor(14,1);
lcd.print(alamatEEP);
while (Serial1.available()>0){inString =
Serial1.readString();///memeriksa data dari
serial 1, jika ada data maka data disimpan pada
variabel data lalu ditambahkan ke instring
Serial.println (inString); dataInt =
inString.toInt(); Serial.println(dataInt);
}
if(digitalRead(ok)==0)
{delay(200);EEPROM.put(alamatEEP,dataInt);
delay(1000);
lc
d.clear();lcd.setCursor(0,0); lcd.print("BARCODE
DISIMPAN!");
lcd.setCursor(0,1);
lcd.print("PADA MEMORY ");
lcd.setCursor(12,1);
lcd.print(alamatEEP); bacaEEPROM();delay(2000);
lcd.clear();goto menuStandby;}
if(digitalRead(up)==0){delay(200);alamatEEP+=2;}
if(digitalRead(down)==0){delay(200);alamatEEP-
=2;}
goto menuDaftar;
49
void bacaEEPROM(){
EEPRO
M.get(1,dataQR1);delay(100);Serial.println(dataQR
1);
EEPRO
M.get(3,dataQR3);delay(100);Serial.println(dataQR
3);
EEPRO
M.get(5,dataQR5);delay(100);Serial.println(dataQR
5);
EEPRO
M.get(7,dataQR7);delay(100);Serial.println(dataQR
7);
EEPRO
M.get(9,dataQR9);delay(100);Serial.println(dataQR
9);
EEPRO
M.get(11,dataQR11);delay(100);Serial.println(data
QR11);
EEPRO
M.get(13,dataQR13);delay(100);Serial.println(data
QR13);
EEPRO
M.get(15,dataQR15);delay(100);Serial.println(data
QR15);
EEPRO
M.get(17,dataQR17);delay(100);Serial.println(data
QR17);
}
void lcdCode1(){
lcd.setCursor(0,0); lcd.print("QR CODE
DIKENALI");
lcd.setCursor(0,1); lcd.print("POSISI
1........"); //tampilan LCD jika kode1 terbaca
}
void lcdCode2(){
lcd.setCursor(0,0); lcd.print("QR CODE
DIKENALI");
lcd.setCursor(0,1); lcd.print("POSISI
2........"); //tampilan LCD jika kode2 terbaca
}
50
void lcdCode3(){
lcd.setCursor(0,0); lcd.print("QR CODE
DIKENALI");
lcd.setCursor(0,1); lcd.print("POSISI
3........"); //tampilan LCD jika kode3 terbaca
}
void lcdCodeError(){
lcd.setCursor(0,0); lcd.print("MAAF! QR CODE
");
lcd.setCursor(0,1); lcd.print("TIDAK
DIKENALI"); //tampilan LCD jika kode error
terbaca
}
void QRklik(){digitalWrite
(relayQR,HIGH);delay(2000);digitalWrite
(relayQR,LOW);} //menyalakan relay untuk
mengaktifkan sensor QR
void resetPos(){while (digitalRead(limit)!=0)
{Stepper1Down();}} //selama limit tidak
tertekan maka stepper akan menurunkan tempat
objek
void simpan(){
digitalWrite(dirStep2,LOW); //arah putaran
stepper besar
for(int x=0;x<1000;x++) { ///jumlah
putaran stepper besar
digitalWrite(stepStep2,HIGH);
delayMicroseconds(1500); //kecepatan
putaran
digitalWrite(stepStep2,LOW);
delayMicroseconds(1500);}
delay(1000);
digitalWrite(dirStep2,HIGH); //arah putaran
stepper kecil
for(int x=0;x<1000;x++) { //jumlah
putaran stepper kecil
digitalWrite(stepStep2,HIGH);
delayMicroseconds(1500); //kecepatan
putaran
digitalWrite(stepStep2,LOW);
delayMicroseconds(1500);}
}
void posisi1(){
51
void posisi2(){
digitalWrite(dirStep1,LOW); //arah putaran
stepper besar
for(int x=0;x<24000;x++) { //jumlah putaran
digitalWrite(stepStep1,HIGH);
delayMicroseconds(300); //kecepatan
putaran
digitalWrite(stepStep1,LOW);
delayMicroseconds(300);}
delay(1000);
simpan();
resetPos();
}
void posisi3(){
digitalWrite(dirStep1,LOW); //arah putaran
stepper besar
for(long x=0;x<41000;x++) { //jumlah putaran
untuk menuju ke rak 3
digitalWrite(stepStep1,HIGH);
delayMicroseconds(300); //kecepatan
putaran
digitalWrite(stepStep1,LOW);
delayMicroseconds(300);}
delay(1000);
simpan();
resetPos();
}
void Stepper1Down(){
digitalWrite(dirStep1,HIGH); //arah putaran
stepper besar untuk turun ke bawah
for(int x=0;x<50;x++) { //jumlah putaran
digitalWrite(stepStep1,HIGH);
52
delayMicroseconds(300); //kecepatan
putaran
digitalWrite(stepStep1,LOW);
delayMicroseconds(300);}
}
Lampiran. 2
QR Code 1
QR Code 2
53
QR Code 3
QR Code 4
54
QR Code 5