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

Postingan populer dari blog ini

SISTEM KONVEYOR OTOMATIS DENGAN SENSOR INFRARED DAN KONTROL MANUAL

Pompa Air Otomatis Berbasis ATMega8535

SISTEM PEMANTAUAN SUHU DAN KELEMBABAN PADA SUATU RUANGAN MENGGUNAKAN SENSOR DHT22 BERBASIS MIKROKONTROLLER ARDUINO UNO ATMEGA328P