PROTOTIPE ROBOT BERODA UNTUK SIMULASI ALAT BANTU DIFABEL BERBASIS GESTUR WAJAH

 

PROTOTIPE ROBOT BERODA UNTUK SIMULASI ALAT BANTU DIFABEL BERBASIS GESTUR WAJAH

KELAS RE3-D KELOMPOK 2 LABORATORIUM SISTEM TERBENAM

Elsa Sukma Hapsari¹, Rif'at Sungkar², Alandra Surya Seta Santosa³, Muhammad Iqbal Ramdhani

Program Studi Teknologi Rekayasa Elektronika

Jurusan Teknik Elektro Politeknik Negeri Semarang 2025/2026

Jl. Prof. Soedarto, Tembalang, Kec. Tembalang, Kota Semarang, Jawa Tengah, 50275

ABSTRAK - Penderita kelumpuhan dari leher ke bawah (tetraplegia) mengalami kesulitan mengoperasikan alat bantu mobilitas konvensional karena hilangnya fungsi anggota gerak. Proyek ini merancang prototipe robot beroda yang dikendalikan melalui gestur wajah sebagai simulasi awal alat bantu mobilitas difabel, mengadaptasi konsep antarmuka non-manual yang pernah diterapkan pada kursi roda Stephen Hawking. Sistem terdiri atas dua bagian: laptop yang melakukan pendeteksian landmark wajah menggunakan MediaPipe Face Mesh dan OpenCV, serta Raspberry Pi yang menerima perintah melalui protokol UDP untuk menggerakkan dua motor DC lewat driver L298N Mini. Gestur mulut terbuka, senyum melebar, dan gerakan menoleh kepala diterjemahkan menjadi perintah maju, mundur, belok kanan, dan belok kiri. Sensor ultrasonik HC-SR04 ditambahkan sebagai pengaman mandiri yang menghentikan robot secara otomatis apabila mendeteksi halangan pada jarak kritis 20 cm. Pengujian menunjukkan robot mampu merespons gestur wajah pengguna secara real-time dengan latensi rendah melalui jaringan Wi-Fi lokal.

Kata Kunci: Robot Beroda, Gestur Wajah, Raspberry Pi, MediaPipe Face Mesh, UDP, Alat Bantu Difabel.

I. PENDAHULUAN

A. LATAR BELAKANG

Penderita kelumpuhan dari leher ke bawah tidak mampu mengoperasikan alat bantu mobilitas konvensional karena kehilangan fungsi anggota gerak. Sebagai solusi, proyek ini memanfaatkan otot wajah dan gerakan kepala yang masih berfungsi normal sebagai kendali alternatif tanpa tangan. Mengadaptasi konsep kursi roda Stephen Hawking, pengolahan citra dilakukan pada laptop di depan pengguna untuk efisiensi beban komputasi robot. Untuk mengantisipasi risiko bertabrakan dengan objek, sistem dilengkapi sensor ultrasonik sebagai pengaman mandiri yang otomatis menghentikan robot jika terdapat halangan pada jarak kritis 20 cm.

Pendekatan ini dipilih karena sebagian besar antarmuka kendali robot yang sudah ada, seperti joystick atau gestur tangan, tetap mensyaratkan fungsi motorik anggota gerak yang masih baik. Padahal, pada kasus kelumpuhan total anggota gerak, otot wajah dan leher sering kali menjadi bagian tubuh yang masih dapat digerakkan secara sadar. Oleh karena itu, prototipe ini disusun sebagai simulasi awal untuk menguji kelayakan gestur wajah sebagai media kendali alat bantu mobilitas sebelum diterapkan pada perangkat yang sesungguhnya.

B. RUMUSAN MASALAH

1.     Bagaimana merancang robot beroda berbasis Raspberry Pi yang dapat dikendalikan melalui jaringan tanpa menggunakan tangan?

2.     Bagaimana mengimplementasikan pendeteksian gestur wajah menggunakan MediaPipe Face Mesh?

3.     Bagaimana menerjemahkan rasio jarak antar-landmark wajah menjadi perintah gerak robot secara real-time?

4.     Bagaimana menambahkan mekanisme pengaman mandiri berbasis sensor jarak agar robot berhent otomatis saat mendekati halangan?

C. TUJUAN

1.    Merancang prototipe robot beroda berbasis Raspberry Pi sebagai simulasi alat bantu mobilitas difabel.

2.    Mengimplementasikan pendeteksian gestur wajah menggunakan MediaPipe Face Mesh dan OpenCV.

3.    Mengendalikan robot menggunakan komunikasi UDP antara laptop dan Raspberry Pi.

4.    Mengimplementasikan fitur pengaman mandiri menggunakan sensor ultrasonik HC-SR04.

II. METODOLOGI

Pembuatan prototipe ini dilakukan melalui beberapa tahapan sebagai berikut:

A. Studi Literatur

  1. Mempelajari Raspberry Pi sebagai pengendali robot
  2. Mempelajari komunikasi UDP menggunakan pustaka socket
  3. Mempelajari OpenCV untuk pengolahan citra digital
  4. Mempelajari MediaPipe Face Mesh sebagai pendeteksi landmark wajah
  5. Mempelajari kelas robot, distancesensor, dan buzzer pada pustaka gpiozero

B. Perancangan Sistem

Desain Hardware

  1. Merancang rangkaian 
  2. Raspberry Pi
  3. Driver Motor L298N Mini
  4. 2x Motor DC
  5. Sensor Ultrasonik HCSR-04
  6. Buzzer Aktif
  7. Baterai Robot
  8. Kamera Laptop

Desain Software

Program dibagi menjadi dua.

Program Laptop (Pengirim)

Bertugas mengambil citra dari kamera laptop, mendeteksi landmark wajah dengan MediaPipe Face Mesh, menghitung rasio jarak antar-titik wajah, menentukan perintah gerak, lalu mengirimkannya ke Raspberry Pi melalui protokol UDP.

Program Raspberry Pi (Penerima)

Bertugas menerima perintah UDP dari laptop dan menerjemahkannya menjadi perintah gerak pada dua motor DC melalui driver L298N Mini menggunakan kelas Robot pada pustaka gpiozero.

C. Pengujian

  1. Respon gerakan robot terhadap gestur wajah
  2. Akurasi pendeteksian landmark wajah pada berbagai kondisi pencahayaan
  3. Latensi pengiriman perintah melalui jaringan UDP
  4. Fungsi pengaman mandiri sensor ultrasonik

D. Penyusunan Laporan

Menyusun laporan berdasarkan hasil perancangan, implementasi, dan pengujian sistem.

III. TINJAUAN PUSTAKA

A. Raspberry Pi 4

Gambar 3.1. Raspberry Pi 4

Raspberry Pi 4 Model B bertindak sebagai otak utama pada robot yang berfungsi menerima instruksi pergerakan secara nirkabel dari laptop melalui protokol UDP. Dengan dukungan prosesor Quad-core Cortex-A72 dan RAM yang mumpuni, papan mikrokontroler ini mampu memproses data komputasi dari laptop secara real-time dan responsif. Papan ini memanfaatkan pin GPIO untuk mengirimkan sinyal kendali menuju driver motor L298N Mini guna mengatur arah roda robot. Selain mengendalikan aktuator penggerak, Raspberry Pi 4 juga mengontrol komponen indikator berupa buzzer pasif untuk aktif berkedip secara otomatis saat robot mendeteksi instruksi bergerak mundur. Kombinasi performa komputasi dan fleksibilitas GPIO ini menjadikan Raspberry Pi 4 ideal untuk menjembatani kecerdasan buatan berbasis computer vision dengan sistem mekanik robot.

B. Driver Motor L298N Mini

Gambar 3.2. Driver Motor L298N Mini
Driver motor L298N Mini merupakan modul penggerak berbasis H-Bridge dual-channel yang berfungsi untuk mengatur arah putaran dan kecepatan dua buah motor DC secara independen. Modul ini bertindak sebagai jembatan daya yang mengalirkan arus listrik besar dari baterai menuju motor, guna melindungi pin GPIO Raspberry Pi 4 dari risiko kerusakan akibat arus balik. Melalui kombinasi sinyal logika digital dari Raspberry Pi, driver ini mampu mengubah polaritas tegangan pada motor sehingga robot dapat bergerak maju, mundur, belok melengkung, maupun berhenti. Ukurannya yang kompak dan efisiensi dayanya yang tinggi membuat L298N Mini sangat ideal untuk diaplikasikan pada proyek robotika mobile skala kecil. Komponen ini memastikan setiap perintah berbasis ekspresi wajah yang diterjemahkan oleh Raspberry Pi dapat dieksekusi menjadi gerakan mekanik roda secara responsif.

C. Motor DC

Gambar 3.3. Motor DC

Motor DC merupakan komponen aktuator mekanik yang berfungsi mengubah energi listrik arus searah menjadi energi kinetik berupa putaran roda untuk menggerakkan robot. Pada proyek ini, sepasang motor DC digunakan sebagai penggerak utama pada sisi kiri dan kanan robot agar dapat melakukan manuver navigasi dasar. Pergerakan motor ini sepenuhnya dikontrol melalui pengaturan polaritas tegangan dari driver L298N Mini yang menerima sinyal dari Raspberry Pi 4. Dengan mengatur kombinasi arah putaran kedua motor, robot dapat mengeksekusi perintah bergerak maju, mundur, serta berbelok melengkung ke kanan atau ke kiri secara dinamis. Respons putaran motor DC yang cepat terhadap perubahan tegangan memastikan robot dapat langsung bereaksi ketika pengguna mengubah ekspresi wajahnya di depan kamera.

D. Sensor Ultrasonik HC-SR04

Gambar 3.4. Sensor Ultrasonik HC-SR04

Sensor HC-SR04 merupakan modul sensor ultrasonik yang berfungsi untuk mengukur jarak antara robot dengan objek atau rintangan di depannya menggunakan pantulan gelombang suara. Prinsip kerjanya didasarkan pada pengiriman gelombang ultrasonik melalui pin Trigger dan penerimaan kembali pantulannya melalui pin Echo setelah mengenai permukaan objek. Durasi waktu perjalanan gelombang tersebut kemudian dihitung oleh Raspberry Pi 4 dan dikonversi menjadi satuan jarak (cm) menggunakan kecepatan rambat bunyi di udara. Integrasi sensor ini pada robot bertujuan sebagai sistem pemandu keselamatan otomatis guna mendeteksi hambatan di jalur navigasi. Kehadiran HC-SR04 memastikan robot dapat merespons lingkungan sekitar dengan cepat, seperti berhenti secara otomatis demi mencegah benturan meskipun ada perintah bergerak maju dari ekspresi wajah pengguna.

E. Buzzer Aktif

Gambar 3.5. Buzzer Aktif

Buzzer aktif merupakan komponen elektronika audio yang berfungsi mengubah sinyal listrik arus searah menjadi getaran suara atau bunyi peringatan secara otomatis. Berbeda dengan buzzer pasif, tipe aktif ini sudah dilengkapi dengan sirkuit osilator internal di dalamnya, sehingga dapat langsung berbunyi nyaring begitu mendapatkan tegangan tanpa memerlukan sinyal frekuensi tambahan. Pada proyek ini, buzzer aktif dipasang pada pin GPIO Raspberry Pi 4 untuk berfungsi sebagai indikator keselamatan atau alarm audio nirkabel ketika robot bermanuver. Komponen ini diprogram untuk berkedip secara asynchronous khusus saat robot menerima instruksi bergerak mundur demi memberikan peringatan dini terhadap lingkungan sekitar. Melalui umpan balik suara ini, sistem robot tidak hanya merespons perintah ekspresi wajah secara mekanik melalui roda, tetapi juga secara auditif demi aspek keamanan berkendara.

F. Robot Modul Pembelajaran RTKA

Gambar 3.6. Modul RTKA

Modul robot RTKA merupakan kesatuan sistem mekanik dan elektronik mobile yang dirancang untuk mengintegrasikan hardware dengan algoritma cerdas berbasis visi komputer. Modul ini menjadi platform fisik tempat tertanamnya komponen utama seperti Raspberry Pi 4, driver motor L298N Mini, sepasang motor DC, serta sensor pendukung lainnya. Dalam proyek ini, modul robot RTKA berfungsi sebagai eksekutor akhir yang merealisasikan perintah nirkabel dari laptop menjadi aksi gerakan nyata di dunia fisik. Melalui platform ini, prinsip kendali tertutup atau terbuka dapat diuji coba untuk melihat responsivitas antara perubahan ekspresi wajah pengguna dengan akurasi manuver roda robot. Kehadiran modul RTKA ini menjembatani teori kecerdasan buatan tingkat lanjut dengan aplikasi robotika terapan secara langsung dan interaktif.

G. Laptop

Gambar 3.7. Laptop

Laptop bertindak sebagai unit pemroses utama yang memproses seluruh algoritma kecerdasan buatan dalam proyek ini. Perangkat ini memanfaatkan kamera bawaan untuk menangkap data visual wajah pengguna secara real-time. Menggunakan pustaka MediaPipe dan OpenCV yang terinstal di dalamnya, laptop mengekstrak koordinat titik wajah dan menghitung matematis rasio perubahan fitur wajah untuk mendeteksi ekspresi pengguna. Setelah ekspresi wajah berhasil diklasifikasikan menjadi sebuah instruksi gerakan, laptop mengirimkan string perintah tersebut ke Raspberry Pi 4 secara nirkabel melalui protokol jaringan UDP. Pembagian beban kerja ini membuat laptop menjadi pusat komputasi berat, sehingga robot dapat bergerak responsif tanpa membebani prosesor mikro kontroler.

H. Jaringan Wifi

Gambar 3.8. Jaringan Wifi

Jaringan Wi-Fi bertindak sebagai media transmisi nirkabel berkecepatan tinggi yang menghubungkan laptop dengan Raspberry Pi 4 secara real-time. Pada proyek ini, teknologi Wi-Fi memfasilitasi komunikasi antarperangkat tanpa kabel sehingga robot dapat bergerak bebas tanpa batasan fisik area kerja. Melalui gelombang radio pada frekuensi lokal yang sama, laptop dapat mengirimkan paket data perintah hasil konversi ekspresi wajah menuju alamat IP tujuan pada Raspberry Pi. Protokol ini dikombinasikan dengan arsitektur soket UDP untuk menjamin pengiriman instruksi navigasi berjalan dengan latensi yang sangat rendah. Keandalan koneksi Wi-Fi ini menjadi kunci utama yang memastikan setiap perubahan mimik wajah pengguna dieksekusi oleh robot secara instan dan responsif.

I. Kabel Jumper

Gambar 3.9. Kabel Jumper

Kabel jumper merupakan komponen penghubung sirkuit listrik yang berfungsi untuk menyalurkan sinyal logika data dan daya listrik antar-komponen elektronika tanpa memerlukan proses penyolderan. Pada proyek ini, kabel jumper digunakan untuk menginterkoneksikan pin GPIO Raspberry Pi 4 dengan driver motor L298N Mini, sensor ultrasonik HC-SR04, dan buzzer aktif. Fleksibilitasnya yang tinggi dengan berbagai variasi konektor seperti Male-to-Male, Male-to-Female, atau Female-to-Female memudahkan proses bongkar-pasang komponen selama tahap perakitan dan pengujian robot. Penggunaan kabel ini memastikan setiap aliran arus daya dari baterai dan perintah digital dari mikrokontroler dapat didistribusikan dengan aman dan stabil ke seluruh aktuator. Efisiensi dan kepraktisan kabel jumper menjadikannya komponen vital dalam menjaga integritas struktural sirkuit elektronik pada modul robot RTKA.

J. BLOK DIAGRAM

Gambar 3.10. Blok Diagram Sistem

K. GAMBAR RANGKAIAN

Gambar 3.11. Gambar Rangkaian

L. DIAGRAM PENGAWATAN

Gambar 3.12. Gambar Pengawatan


M. DIAGRAM ALIR

1. Diagram Alir Program Pada Laptop

Gambar 3.13. Diagram Alir Program Pengirim

2. Diagram Alir Program Pada Raspberry Pi

Gambar 3.14. Diagram Alir Program Penerima


N. KODE PROGRAM

1. Program pada Laptop (RaspberryPi-Sender.py)

"""============================================================================
 Pemrogram      : Kelompok RE-3D/2
  1. 02-Alandra Surya Seta Santosa      NIM: 4.34.23.3.02
  2. 08-Elsa Sukma Hapsari              NIM: 4.34.23.3.08
  3. 14-Muhammad Iqbal Ramdhani         NIM: 4.34.23.3.14
  4. 20-Rif'at Sungkar                  NIM: 4.34.23.3.20
Tgl. Praktikum : Rabu, 10 Juni 2026
===============================================================================
Proyek07-Robot UDP
RaspberryPi-Sender.py
  Program untuk mengendalikan robot via perintah UDP dari laptop
  dengan sensor jarak HC-SR04 dan buzzer otomatis
-------------------------------------------------------------------------------
Materi baru:
- Komunikasi jaringan UDP (socket)
- Kelas Robot pada pustaka gpiozero
- Kelas DistanceSensor pada pustaka gpiozero
- Kelas Buzzer pada pustaka gpiozero
- Kendali motor DC via driver L298N Mini
-------------------------------------------------------------------------------
Komponen:
- 1x Raspberry Pi
- 1x L298N Mini
- 2x Motor DC
- 1x Sensor HC-SR04
- 1x Buzzer
==========================================================================="""

import cv2
import mediapipe as mp
import math
import socket

# === Konfigurasi Jaringan UDP ===
RASPI_IP = "192.168.137.68"
PORT = 5005
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# === Inisialisasi MediaPipe ===
mp_face_mesh = mp.solutions.face_mesh
mp_drawing = mp.solutions.drawing_utils
mp_drawing_styles = mp.solutions.drawing_styles

face_mesh = mp_face_mesh.FaceMesh(max_num_faces=1, refine_landmarks=True)
cap = cv2.VideoCapture(0)

print("=========================================================")
print("  Program Pengirim Kendali Wajah - Standar IP Aktif      ")
print("  Tekan tombol 'Q' pada jendela kamera untuk keluar.     ")
print("=========================================================")

# === Program Utama ===
while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        print("Gagal memuat kamera laptop!")
        break

    # 1. Mirror frame agar tampilan natural
    frame = cv2.flip(frame, 1)
    h, w, _ = frame.shape
    rgb_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
    results = face_mesh.process(rgb_frame)

    # Nilai default tiap frame
    rasio_mulut    = 0.0
    rasio_senyum   = 0.0
    rasio_menoleh  = 1.0
    status_perintah = "STOP"

    if results.multi_face_landmarks:
        for face_landmarks in results.multi_face_landmarks:

            # Gambar jaring titik wajah di layar
            mp_drawing.draw_landmarks(
                image=frame,
                landmark_list=face_landmarks,
                connections=mp_face_mesh.FACEMESH_TESSELATION,
                landmark_drawing_spec=None,
                connection_drawing_spec=mp_drawing_styles.get_default_face_mesh_tesselation_style()
            )

            landmarks = face_landmarks.landmark

            # Fungsi jarak 3D (untuk mulut & senyum)
            def hitung_jarak_3d(p1, p2):
                return math.sqrt(
                    (landmarks[p1].x - landmarks[p2].x) ** 2 +
                    (landmarks[p1].y - landmarks[p2].y) ** 2 +
                    (landmarks[p1].z - landmarks[p2].z) ** 2
                )

            # Fungsi jarak 2D (untuk menoleh)
            def hitung_jarak_2d(p1, p2):
                return math.sqrt(
                    (landmarks[p1].x - landmarks[p2].x) ** 2 +
                    (landmarks[p1].y - landmarks[p2].y) ** 2
                )

            # A. Lebar wajah sebagai referensi normalisasi
            lebar_wajah = hitung_jarak_3d(234, 454)

            # B. Rasio mulut terbuka -> perintah MAJU
            jarak_mulut_v = hitung_jarak_3d(13, 14)
            rasio_mulut    = jarak_mulut_v / lebar_wajah

            # C. Rasio senyum melebar -> perintah MUNDUR
            jarak_bibir_h = hitung_jarak_3d(61, 291)
            rasio_senyum   = jarak_bibir_h / lebar_wajah

            # D. Rasio menoleh -> perintah KANAN / KIRI
            jarak_hidung_ke_kanan = hitung_jarak_2d(1, 234)
            jarak_hidung_ke_kiri  = hitung_jarak_2d(1, 454)
            rasio_menoleh         = jarak_hidung_ke_kanan / jarak_hidung_ke_kiri

            # Evaluasi threshold -> tentukan perintah
            if rasio_mulut > 0.19:
                status_perintah = "MAJU"
            elif rasio_senyum > 0.4:
                status_perintah = "MUNDUR"
            elif rasio_menoleh < 0.585:
                status_perintah = "BELOK KIRI"
            elif rasio_menoleh > 2.3:
                status_perintah = "BELOK KANAN"
            else:
                status_perintah = "STOP"

    # Terjemahkan status ke teks display & teks UDP
    display_map = {
        "MAJU"      : "MAJU",
        "MUNDUR"    : "MUNDUR",
        "BELOK KANAN": "BELOK MELENGKUNG KANAN",
        "BELOK KIRI" : "BELOK MELENGKUNG KIRI",
    }
    display_text = display_map.get(status_perintah, "BERHENTI")

    # Tampilkan status di jendela kamera
    cv2.putText(frame, f"STATUS : {display_text}", (30, 60),
                cv2.FONT_HERSHEY_SIMPLEX, 0.75, (0, 0, 255), 2)

    # Kirim perintah ke Raspberry Pi via UDP
    sock.sendto(display_text.encode(), (RASPI_IP, PORT))

    # Tampilkan frame
    cv2.imshow('Kalibrasi Monitor Wajah', frame)

    # Tekan 'q' untuk keluar
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# === Shutdown ===
cap.release()
cv2.destroyAllWindows()
sock.close()
print("Program monitor dihentikan.")

2. Program pada Raspberry Pi (RaspberryPi-Projek-Akhir.py)

"""============================================================================
 Pemrogram      : Kelompok RE-3D/2
  1. 02-Alandra Surya Seta Santosa      NIM: 4.34.23.3.02
  2. 08-Elsa Sukma Hapsari              NIM: 4.34.23.3.08
  3. 14-Muhammad Iqbal Ramdhani         NIM: 4.34.23.3.14
  4. 20-Rif'at Sungkar                  NIM: 4.34.23.3.20
Tgl. Praktikum : Rabu, 12 Juni 2026
===============================================================================
Proyek07-Projek-Akhir
RaspberryPi-Raspberry.py
  Program untuk mengendalikan robot via perintah UDP dari laptop
-------------------------------------------------------------------------------
Materi baru:
- Komunikasi jaringan UDP (socket)
- Kelas Robot pada pustaka gpiozero
- Kelas Buzzer pada pustaka gpiozero
- Kendali motor DC via driver L298N Mini
-------------------------------------------------------------------------------
Komponen:
- 1x Raspberry Pi
- 1x L298N Mini
- 2x Motor DC
- 1x Buzzer
==========================================================================="""
# === Pustaka ===
import socket
from gpiozero import Robot, Buzzer

# === Inisialisasi Hardware ===
robot = Robot(left=(22, 23), right=(24, 25))
# Ganti angka 12 di bawah ini dengan pin GPIO yang kamu hubungkan ke Buzzer (+)
buzzer = Buzzer(12) 

# === Konfigurasi Jaringan ===
UDP_IP = "0.0.0.0"
UDP_PORT = 5005
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind((UDP_IP, UDP_PORT))

print("=========================================================")
print(f" Raspberry Pi + L298N Mini Siap Mengendalikan Robot!     ")
print(f" Menunggu perintah wajah di port {UDP_PORT}...           ")
print("=========================================================")

# Variabel pembantu untuk mencatat status terakhir buzzer agar tidak memicu fungsi .blink() berulang-ulang
buzzer_sedang_aktif = False

# === Program Utama ===
try:
  while True:
    data, addr = sock.recvfrom(1024)
    perintah = data.decode()
    print(f"Instruksi -> [ {perintah} ]")
      
      if perintah == "MAJU":
        if buzzer_sedang_aktif:
          buzzer.off()
          buzzer_sedang_aktif = False
        robot.forward(speed=1.0)
        
      elif perintah == "MUNDUR":
        robot.backward(speed=1.0)
        if not buzzer_sedang_aktif:
          buzzer.blink(on_time=0.4, off_time=0.15, n=None, background=True)
          buzzer_sedang_aktif = True
          
      elif perintah == "BELOK MELENGKUNG KANAN":
        if buzzer_sedang_aktif:
          buzzer.off()
          buzzer_sedang_aktif = False
        robot.forward(speed=1.0, curve_right=0.7)
        
      elif perintah == "BELOK MELENGKUNG KIRI":
        if buzzer_sedang_aktif:
          buzzer.off()
          buzzer_sedang_aktif = False
        robot.forward(speed=1.0, curve_left=0.7)
        
      elif perintah == "BERHENTI":
        if buzzer_sedang_aktif:
          buzzer.off()
          buzzer_sedang_aktif = False
        robot.stop()

except KeyboardInterrupt:
  print("\nMematikan sistem robot secara aman...")
finally:
  robot.stop()
  buzzer.off()
  sock.close()
  print("Program Raspberry Pi selesai.")

O. CARA KERJA RANGKAIAN

Saat sistem dijalankan, Raspberry Pi menjalankan program penerima yang menunggu perintah UDP pada port 5005, sementara laptop mengaktifkan kamera laptop dan menjalankan MediaPipe Face Mesh untuk mendeteksi 468 titik landmark wajah pengguna secara real-time.

Setiap frame, sistem menghitung lebar wajah sebagai referensi normalisasi menggunakan jarak antara titik pipi kiri dan kanan. Nilai ini digunakan untuk menormalkan tiga rasio jarak lain: rasio bukaan mulut (titik bibir atas-bawah), rasio lebar senyum (titik sudut bibir kiri-kanan), dan rasio menoleh (perbandingan jarak hidung terhadap kedua sisi wajah).

Apabila rasio bukaan mulut melebihi ambang batas tertentu, sistem mengirimkan perintah MAJU. Apabila rasio senyum melebar melebihi ambangnya, perintah yang dikirim adalah MUNDUR. Gerakan menoleh ke kiri atau ke kanan yang mengubah rasio jarak hidung terhadap sisi wajah akan menghasilkan perintah BELOK KIRI atau BELOK KANAN. Jika tidak ada gestur yang terdeteksi melewati ambang batas, sistem mengirimkan perintah BERHENTI.

Perintah tersebut dikirim melalui socket UDP ke alamat IP Raspberry Pi. Pada sisi penerima, Raspberry Pi membaca data yang masuk lalu memetakannya ke fungsi gerak pada objek Robot dari pustaka gpiozero, yang mengatur arah putaran dua motor DC melalui driver L298N Mini. Perintah belok diimplementasikan sebagai gerak melengkung dengan parameter curve_left/curve_right agar pergerakan robot lebih halus dibanding belok di tempat.

Sebagai lapisan keselamatan tambahan, sensor ultrasonik HC-SR04 memantau jarak robot terhadap objek di depannya. Apabila jarak yang terukur berada di bawah ambang kritis 20 cm, robot akan dihentikan secara otomatis tanpa bergantung pada perintah dari laptop, sehingga risiko tabrakan dapat diminimalkan meskipun pengguna masih memberikan gestur gerak maju.

Berdasarkan hasil pengujian, sistem mampu menerjemahkan gestur wajah menjadi perintah gerak robot dengan respons yang cukup cepat pada jaringan Wi-Fi lokal, meskipun akurasi deteksi gestur dipengaruhi oleh kondisi pencahayaan dan sudut kamera terhadap wajah pengguna.

P. FOTO PROTOTIPE

Gambar 3.15. Modul Robot RTKA


VI. SIMPULAN
Berdasarkan hasil perancangan dan pengujian, prototipe robot beroda berbasis Raspberry Pi berhasil dikendalikan menggunakan gestur wajah secara real-time sebagai simulasi awal alat bantu mobilitas difabel. MediaPipe Face Mesh mampu mendeteksi rasio bukaan mulut, lebar senyum, dan arah menoleh dengan cukup akurat sehingga dapat diterjemahkan menjadi perintah maju, mundur, belok kanan, dan belok kiri. Komunikasi UDP antara laptop dan Raspberry Pi berjalan dengan latensi rendah pada jaringan Wi-Fi lokal, sementara sensor ultrasonik HC-SR04 berhasil berfungsi sebagai pengaman mandiri yang menghentikan robot saat mendekati halangan pada jarak kritis 20 cm. Prototipe ini menunjukkan bahwa gestur wajah berpotensi menjadi alternatif antarmuka kendali non-manual bagi penyandang kelumpuhan anggota gerak, meskipun pengembangan lebih lanjut masih diperlukan sebelum diterapkan pada alat bantu mobilitas yang sesungguhnya.

V. REFERENSI

Google, 2025. MediaPipe Face Landmarker Documentation. Tersedia di: https://ai.google.dev/edge/mediapipe [Diakses pada 1 Juli 2026].

OpenCV, 2025. OpenCV Documentation. Tersedia di: https://docs.opencv.org [Diakses pada 1 Juli 2026].

Raspberry Pi Ltd., 2025. Raspberry Pi Documentation. Tersedia di: https://www.raspberrypi.com/documentation/ [Diakses pada 1 Juli 2026].

gpiozero, 2025. gpiozero Documentation. Tersedia di: https://gpiozero.readthedocs.io [Diakses pada 1 Juli 2026].

Bradski, G. dan Kaehler, A., 2008. Learning OpenCV: Computer Vision with the OpenCV Library. Sebastopol: O'Reilly Media.

VI. LAMPIRAN

A. LINK PPT               https://canva.link/pbu0p0nqzslp5d6

B. LINK YOUTUBE   :  https://youtu.be/M2khdbWeyjM?si=_SwmGMik4HLmigEY


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