ROBOT PENGANTAR MAKANAN BERBASIS RASPBERRY PI
ROBOT PENGANTAR MAKANAN BERBASIS RASPBERRY PI
Hendra Putra Rusmana1, Devid Rahmat Cahyantoro2,
Muhammad Alwan Tsany3, Rain Shidqi Mumtaz4
Kelompok
RE-3C/1
Program
Studi Teknologi Rekayasa Elektronika
Mata
Kuliah: Sistem Embedded
INTISARI — Robot pengantar makanan ini
dikembangkan menggunakan Raspberry Pi sebagai pengendali utama untuk
mengotomatisasi proses pengantaran makanan di lingkungan restoran. Sistem
menggunakan sensor ultrasonik HC-SR04 untuk mendeteksi penghalang di jalur
robot dan sensor PIR HC-SR501 untuk mendeteksi saat makanan telah diambil oleh
pelanggan. Pergerakan robot digerakkan oleh motor DC gearbox yang dikendalikan
melalui driver motor MX1508, dilengkapi LED sebagai indikator status dan buzzer
sebagai notifikasi suara. Hasil pengujian menunjukkan robot mampu berjalan
menuju tujuan, berhenti ketika mendeteksi penghalang, melanjutkan perjalanan
saat jalur aman, mendeteksi pengambilan makanan, serta kembali ke posisi awal
secara otomatis sesuai dengan alur yang dirancang.
Kata Kunci: Robot Pengantar Makanan, Raspberry
Pi, Sensor Ultrasonik HC-SR04, Sensor PIR HC-SR501, Sistem Embedded.
I. PENDAHULUAN
A. Latar Belakang
Proses pengantaran
makanan di restoran pada umumnya masih dilakukan secara manual oleh pelayan.
Tingginya mobilitas pelayan dalam mengantar pesanan ke berbagai meja dapat
menurunkan efisiensi pelayanan, terutama pada saat restoran sedang ramai
pengunjung.
Untuk mengatasi
permasalahan tersebut, dirancang sebuah robot pengantar makanan berbasis
Raspberry Pi yang mampu bergerak secara otomatis menuju titik tujuan. Robot ini
memanfaatkan sensor ultrasonik HC-SR04 untuk mendeteksi keberadaan penghalang
di sepanjang jalur, sehingga robot dapat berhenti sementara demi menjaga
keamanan, dan sensor PIR HC-SR501 untuk mendeteksi saat makanan telah diambil
oleh pelanggan sebagai penanda robot untuk kembali ke posisi awal.
Dengan adanya sistem
otomatis ini, diharapkan proses pengantaran makanan dapat berlangsung lebih
efisien, aman, dan konsisten, sekaligus mengurangi beban kerja pelayan dalam
mengantar pesanan secara manual.
B. Tujuan
1. Merancang robot
pengantar makanan berbasis Raspberry Pi.
2. Mengotomatisasi proses
pengantaran makanan dari dapur menuju meja pelanggan.
3. Mendeteksi penghalang
di jalur robot menggunakan sensor ultrasonik HC-SR04.
4. Mendeteksi pengambilan
makanan oleh pelanggan menggunakan sensor PIR HC-SR501.
5. Mengembalikan robot ke
posisi awal secara otomatis setelah makanan diambil.
II. METODOLOGI DAN KOMPONEN
Sistem robot pengantar
makanan ini memadukan perangkat keras berbasis mikrokontroler dengan logika
pemrograman untuk mengatur navigasi, deteksi penghalang, dan deteksi
pengambilan makanan. Berikut adalah komponen perangkat keras dan perangkat
lunak yang digunakan dalam pembangunan sistem ini:
A. Perangkat Keras (Hardware)
|
No |
Komponen |
Jumlah |
Keterangan |
|
1 |
Raspberry Pi |
1 |
Pengendali utama sistem |
|
2 |
Driver Motor MX1508 |
1 |
Mengendalikan kecepatan dan arah
motor DC |
|
3 |
Motor DC Gearbox |
2 |
Penggerak roda kiri dan kanan robot |
|
4 |
Sensor Ultrasonik HC-SR04 |
1 |
Mendeteksi penghalang di depan
robot |
|
5 |
Sensor PIR HC-SR501 |
1 |
Mendeteksi pengambilan makanan oleh
pelanggan |
|
6 |
LED |
Beberapa |
Indikator status robot (siap,
mengantar, berhenti) |
|
7 |
Buzzer |
1 |
Notifikasi suara (peringatan
halangan & sampai tujuan) |
|
8 |
Baterai |
1 |
Sumber daya seluruh sistem |
B. Perangkat Lunak (Software)
Program pengendali robot
ditulis menggunakan bahasa pemrograman Python yang dijalankan pada Raspberry
Pi. Pustaka pemrograman GPIO digunakan untuk membaca data dari sensor
ultrasonik HC-SR04 dan sensor PIR HC-SR501, serta untuk mengendalikan driver
motor MX1508, LED indikator, dan buzzer sesuai dengan logika alur sistem yang
telah dirancang.
III. HASIL DAN PEMBAHASAN
A. Cara Kerja Sistem
Logika sistem robot
pengantar makanan ini bekerja melalui beberapa tahapan utama, mulai dari
inisialisasi sistem hingga robot kembali ke posisi awal:
1.
Sistem
diinisialisasi (LED, buzzer, sensor, dan motor) kemudian masuk ke mode siap
dengan LED hijau menyala.
2.
Sensor
PIR dikalibrasi selama 10 detik agar menyesuaikan kondisi lingkungan sekitar.
3.
Robot
memulai pengantaran dengan LED merah menyala dan membaca jarak dari sensor
ultrasonik secara terus-menerus.
4.
Apabila
terdeteksi penghalang dengan jarak kurang dari 20 cm, robot berhenti, LED
kuning menyala berkedip, dan buzzer berbunyi hingga jalur kembali aman.
5.
Setelah
20 detik perjalanan, robot berhenti di titik tujuan dan buzzer berbunyi 3 kali
sebagai notifikasi.
6.
Sensor
PIR membaca gerakan untuk mendeteksi pengambilan makanan; setelah terdeteksi,
LED hijau menyala dan robot berputar 180 derajat.
7.
Robot
melakukan perjalanan kembali dengan logika deteksi penghalang yang sama seperti
saat berangkat.
8.
Setelah 20 detik perjalanan pulang, robot
berhenti di posisi awal, buzzer berbunyi 2 kali, dan sistem kembali ke mode
siap.
B. Diagram Blok Sistem
Gambar 1. Diagram Blok Sistem Robot Pengantar Makanan
Diagram blok di atas
menunjukkan alur sistem secara keseluruhan: blok input berupa sensor ultrasonik
HC-SR04 dan sensor PIR HC-SR501, blok proses oleh Raspberry Pi sebagai
pengendali utama yang mendapat catu daya dari baterai, hingga blok output
berupa driver motor MX1508 yang menggerakkan motor DC gearbox, LED sebagai
indikator, dan buzzer sebagai notifikasi.
C. Diagram Alir (Flowchart)
Gambar 2. Flowchart Sistem Robot Pengantar Makanan
Flowchart di atas
menggambarkan alur program secara menyeluruh, mulai dari inisialisasi sistem,
kalibrasi sensor PIR, pembacaan sensor ultrasonik selama perjalanan menuju
tujuan, deteksi pengambilan makanan melalui sensor PIR, hingga proses robot
kembali ke posisi awal dan siap digunakan untuk pengantaran berikutnya.
D. Hasil Pengujian
|
No |
Skenario
Pengujian |
Kondisi
Uji |
Hasil |
|
1 |
Sensor Ultrasonik HC-SR04 |
Penghalang terdeteksi (jarak <
20 cm) |
Berhasil — robot berhenti, LED
kuning ON dan buzzer berbunyi berkedip. |
|
2 |
Sensor Ultrasonik HC-SR04 |
Jalur kembali aman (jarak ≥ 20 cm) |
Berhasil — LED kuning OFF, buzzer
OFF, robot melanjutkan perjalanan. |
|
3 |
Waktu Perjalanan Menuju Tujuan |
Durasi 20 detik tercapai |
Berhasil — robot berhenti tepat di
titik tujuan dan buzzer berbunyi 3 kali. |
|
4 |
Sensor PIR HC-SR501 |
Makanan diambil oleh pelanggan |
Berhasil — gerakan terdeteksi, LED
hijau ON, robot berputar 180°. |
|
5 |
Perjalanan Kembali |
Durasi 20 detik tercapai |
Berhasil — robot sampai di posisi
awal, buzzer berbunyi 2 kali. |
|
6 |
Mode Siap (Standby) |
Robot kembali ke posisi awal |
Berhasil — LED hijau ON, sistem
siap menerima pengantaran berikutnya. |
Seluruh skenario
pengujian berhasil dijalankan sesuai dengan hasil yang diharapkan, mulai dari
deteksi penghalang, pengantaran menuju tujuan, deteksi pengambilan makanan,
hingga robot kembali ke posisi awal secara otomatis.
E. KODE PROGRAM
"""============================================================================
Pemrogram
: Kelompok RE-3C/1
1. 01-Hendra
Putra Rusmana NIM:4.34.22.0.11
2. 07-Devid
Rahmat Cahyantoro NIM:4.34.23.2.06
3. 13-M.
Alwan Tsany NIM:4.34.23.2.13
4. 19-Rain
Shidqi Mumtaz NIM:4.34.23.2.20
Tgl.Praktikum
: Selasa, 30 Juni 2026
===============================================================================
from gpiozero
import DistanceSensor, MotionSensor, LED, Buzzer, Motor
from time import
sleep
#
==================================
# LED
#
==================================
led_hijau = LED(25)
# Siap / Tidak membawa makanan
led_kuning =
LED(16) # Penghalang
led_merah = LED(21)
# Membawa makanan
#
==================================
# BUZZER
#
==================================
buzzer = Buzzer(18)
#
==================================
# PIR
# OUT = GPIO4
#
==================================
pir =
MotionSensor(4)
#
==================================
# HC-SR04
# TRIG = GPIO23
# ECHO = GPIO24
#
==================================
ultra =
DistanceSensor(
trigger=23,
echo=24,
max_distance=2
)
#
==================================
# MOTOR MX1508
#
==================================
motor_kiri = Motor(
forward=5,
backward=6
)
motor_kanan =
Motor(
forward=13,
backward=19
)
#
==================================
# FUNGSI MOTOR
#
==================================
def maju():
motor_kiri.forward(0.7)
motor_kanan.forward(0.7)
def mundur():
motor_kiri.backward(0.7)
motor_kanan.backward(0.7)
def stop():
motor_kiri.stop()
motor_kanan.stop()
def putar_180():
print("Putar 180 derajat")
motor_kiri.forward(0.7)
motor_kanan.backward(0.7)
sleep(1.4) # Sesuaikan hasil pengujian
stop()
#
==================================
# MODE SIAP
#
==================================
stop()
led_hijau.on()
led_kuning.off()
led_merah.off()
buzzer.off()
print("Robot siap membawa
makanan")
# Kalibrasi PIR
print("Kalibrasi PIR...")
sleep(10)
#
==================================
# MULAI PENGANTARAN
#
==================================
led_hijau.off()
led_merah.on()
print("Mengantar makanan")
durasi_perjalanan =
20.0
interval = 0.1
waktu_jalan = 0.0
try:
#
==================================
#
MENUJU TUJUAN
#
==================================
while
waktu_jalan < durasi_perjalanan:
try:
jarak = ultra.distance * 100
except:
jarak = 999
print(f"Jarak : {jarak:.1f} cm")
# ==========================
# PENGHALANG
# ==========================
if 0 < jarak < 20:
print("Penghalang terdeteksi")
stop()
while True:
try:
jarak = ultra.distance
* 100
except:
jarak = 999
if jarak >= 20:
break
led_kuning.on()
buzzer.on()
sleep(0.2)
led_kuning.off()
buzzer.off()
sleep(0.2)
print("Jalur aman")
led_kuning.off()
buzzer.off()
maju()
sleep(interval)
waktu_jalan += interval
#
==================================
#
SAMPAI TUJUAN
#
==================================
stop()
print("Makanan sampai tujuan")
for i
in range(3):
buzzer.on()
sleep(0.3)
buzzer.off()
sleep(0.3)
#
==================================
#
MENUNGGU MAKANAN DIAMBIL
#
==================================
print("Menunggu makanan diambil...")
while
True:
if pir.motion_detected:
print("Makanan telah diambil")
buzzer.on()
sleep(1)
buzzer.off()
break
sleep(0.1)
#
==================================
#
TIDAK MEMBAWA MAKANAN
#
==================================
led_merah.off()
led_kuning.off()
led_hijau.on()
#
==================================
#
PUTAR BALIK
#
==================================
putar_180()
#
==================================
#
KEMBALI KE POSISI AWAL
#
==================================
print("Kembali ke posisi awal")
waktu_kembali = 0.0
while
waktu_kembali < durasi_perjalanan:
try:
jarak = ultra.distance * 100
except:
jarak = 999
if 0 < jarak < 20:
print("Penghalang saat perjalanan
pulang")
stop()
while True:
try:
jarak = ultra.distance
* 100
except:
jarak = 999
if jarak >= 20:
break
led_kuning.on()
buzzer.on()
sleep(0.2)
led_kuning.off()
buzzer.off()
sleep(0.2)
led_kuning.off()
buzzer.off()
maju()
sleep(interval)
waktu_kembali += interval
#
==================================
#
SAMPAI POSISI AWAL
#
==================================
stop()
print("Robot kembali ke posisi awal")
for i
in range(2):
buzzer.on()
sleep(0.2)
buzzer.off()
sleep(0.2)
led_hijau.on()
led_kuning.off()
led_merah.off()
print("Robot siap digunakan kembali")
except
KeyboardInterrupt:
print("Program dihentikan user")
finally:
stop()
buzzer.off()
led_hijau.on()
led_kuning.off()
led_merah.off()
print("Sistem selesai")
IV. KESIMPULAN
Robot pengantar makanan
berbasis Raspberry Pi berhasil dirancang dan diimplementasikan untuk mengotomatisasi
proses pengantaran makanan sesuai alur yang telah ditetapkan. Sensor ultrasonik
HC-SR04 mampu mendeteksi penghalang sehingga robot dapat berhenti sementara dan
melanjutkan perjalanan saat jalur telah aman. Sensor PIR HC-SR501 berhasil mendeteksi
pengambilan makanan sebagai penanda bagi robot untuk kembali. Robot juga dapat
kembali ke posisi awal secara otomatis dan siap digunakan kembali untuk proses
pengantaran berikutnya, sehingga dapat meningkatkan efisiensi, keamanan, dan
kualitas pelayanan di restoran.
Komentar
Posting Komentar