Sentry Detective Patrol Robot Patroli Deteksi Dini Kebocoran Gas Berbasis IoT

 

Sentry Detective Patrol Robot Patroli Deteksi Dini Kebocoran Gas Berbasis IoT

Dafa Raihan Syabani1, Kukuh Tegar Pangestu1, Oryza Ilyas Aryaduta1, Tri Widodo1

Politeknik Negeri Semarang
Teknologi Rekayasa Elektronika

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



ABSTRAK

Keamanan dan pemantauan lingkungan tertutup dari bahaya kebakaran atau kebocoran gas beracun memerlukan sistem otomasi yang cepat dan akurat. Penelitian ini merancang dan membangun sebuah robot patroli otonom berbasis Raspberry Pi yang dinamakan Sentry Detective Patrol. Robot ini dilengkapi dengan sensor gas MQ-2, sensor ultrasonik HC-SR04, serta sistem visi komputer (Computer Vision) menggunakan pustaka OpenCV dan ArUco Marker untuk keperluan lokalisasi absolut di dalam arena berukuran 240 × 180 cm. Kamera PiCamera2 dipasang pada ketinggian 13,5 cm dari dasar alas robot untuk mendeteksi marker dinding secara presisi guna menghitung posisi koordinat kartesius robot secara real-time. Sistem bekerja secara multitasking dengan state machine yang membagi tugas menjadi fase inisialisasi, patroli rute (waypoint), dan evakuasi darurat. Apabila sensor gas mendeteksi anomali bahaya, robot secara otomatis mengaktifkan sirine peringatan, merekam koordinat lokasi kejadian ke dalam laporan teks digital (laporan_patroli.txt), mengambil foto bukti visual kondisi lapangan, serta bernavigasi kembali (visual homing) menuju titik Home Base (Marker ID 0). Hasil pengujian menunjukkan bahwa integrasi sistem lokalisasi ArUco dan sensor lingkungan mampu berjalan stabil serta memberikan informasi laporan darurat secara efektif melalui antarmuka Web HUD berbasis Flask.

Kata Kunci: Robot Patroli Otonom, Raspberry Pi, ArUco Marker, Computer Vision, Sensor Gas MQ-2, Lokalisasi Absolut.

 

ABSTRACT

The security and monitoring of indoor environments against fire hazards or toxic gas leaks require fast and accurate automation systems. This research designs and develops an autonomous patrol robot based on Raspberry Pi, named Sentry Detective Patrol. The robot is equipped with an MQ-2 gas sensor, an HC-SR04 ultrasonic sensor, and a Computer Vision system using OpenCV and ArUco Markers for absolute localization within a 240 × 180 cm arena. A PiCamera2 is mounted at a height of 13.5 cm from the robot's base to precisely detect wall markers for real-time Cartesian coordinate () calculation. The system operates in a multitasking manner utilizing a state machine divided into initialization, waypoint patrol, and emergency evacuation phases. When the gas sensor detects a hazard anomaly, the robot automatically triggers an alarm, logs the incident coordinates into a digital text report (laporan_patroli.txt), captures a visual evidence photo of the field condition, and navigates back via visual homing toward the Home Base (Marker ID 0). Testing results demonstrate that the integration of the ArUco localization system and environmental sensors performs stably, effectively delivering emergency report information through a Flask-based Web HUD interface.

Keywords: Autonomous Patrol Robot, Raspberry Pi, ArUco Marker, Computer Vision, MQ-2 Gas Sensor, Absolute Localization.

I.              Pendahuluan

1.                  Latar Belakang

Keamanan dan pemantauan lingkungan tertutup, seperti laboratorium, gudang, atau ruang penyimpanan bahan kimia, dari risiko kebakaran dan kebocoran gas beracun merupakan aspek krusial yang memerlukan pengawasan ekstra. Potensi bahaya seperti kebocoran gas elpiji atau asap seringkali terjadi tanpa diduga dan dapat menimbulkan kerugian besar jika terlambat ditangani. Pengawasan manual oleh manusia memiliki keterbatasan, terutama pada area berbahaya yang berisiko tinggi bagi keselamatan kerja.

Oleh karena itu, dibutuhkan sebuah sistem otomasi berupa robot patroli seluler otonom (Autonomous Mobile Robot) yang mampu berpatroli secara mandiri untuk mengawasi kondisi lingkungan secara real-time. Dalam membangun robot otonom yang handal, kemampuan navigasi dan lokalisasi (localization) menjadi tantangan utama agar robot mengetahui posisi pastinya di dalam ruangan tanpa tersesat (Kidnapped Robot Problem).

Pemanfaatan teknologi Computer Vision melalui pendeteksian ArUco Marker yang dikombinasikan dengan sistem koordinat kartesius pada arena berukuran 240 × 180 cm menjadi solusi yang efektif dan berbiaya terjangkau. Melalui integrasi mikrokontroler Raspberry Pi, sensor gas MQ-2, sensor ultrasonik, serta fitur pelaporan darurat digital (pencatatan koordinat, snapshot foto bukti, dan Web HUD berbasis Flask), robot Sentry Detective Patrol dirancang untuk tidak hanya berpatroli secara rutin, tetapi juga mampu merespons anomali bahaya secara cepat, akurat, dan terstruktur.

2.                  Rumusan Masalah

Berdasarkan latar belakang di atas, rumusan masalah dalam penelitian atau perancangan proyek ini adalah:

1.   1.Bagaimana merancang bangun sistem robot patroli otonom menggunakan Raspberry Pi yang mampu bernavigasi di dalam arena berukuran 240 × 180 cm?

2. 2.Bagaimana mengimplementasikan teknologi Computer Vision berbasis ArUco Marker untuk menentukan posisi koordinat absolut () robot secara real-time?

3. 3.Bagaimana mengintegrasikan sensor gas MQ-2 dan sensor jarak untuk mendeteksi bahaya serta memicu sistem pelaporan otomatis berupa pencatatan data koordinat dan pengambilan foto bukti kejadian?

3.    Tujuan

Tujuan dari perancangan dan pembuatan proyek ini antara lain:

1.        Membangun perangkat keras dan lunak robot patroli otonom berbasis Raspberry Pi yang dapat beroperasi secara mandiri di dalam arena pengujian.

2.        Menerapkan metode deteksi ArUco Marker dengan penyesuaian ketinggian kamera (13,5 cm) untuk melakukan lokalisasi absolut posisi robot pada peta ruangan secara akurat.

3.        Mengembangkan sistem tanggap darurat yang mampu mendeteksi kebocoran gas, menyalakan alarm, merekam titik koordinat lokasi kejadian ke dalam laporan digital, mengabadikan foto situasi lapangan secara otomatis, serta menyediakan antarmuka pemantauan jarak jauh melalui Web HUD.

II.              Metodologi Peneletian

Metodologi perancangan robot Sentry Detective Patrol dimulai dari tahapan studi literatur, perangkat keras, perangkat lunak, hingga pengujian sistem secara menyeluruh. Perangkat keras dirancang menggunakan Raspberry Pi sebagai otak pemrosesan utama yang diintegrasikan dengan modul PiCamera2 (dipasang pada ketinggian 13,5 cm), sensor gas MQ-2, sensor ultrasonik HC-SR04, serta motor penggerak. Perangkat lunak dibangun menggunakan bahasa Python dengan pustaka seperti OpenCV, cv2.aruco, dan Flask untuk menjalankan sistem multitasking berbasis threading. Alur kerja sistem terbagi menjadi algoritma lokalisasi absolut dengan mendeteksi ArUco Marker pada dinding arena berukuran 240 × 180 cm untuk menghitung koordinat kartesius (X, Y) secara real-time, serta logika state machine yang mengatur fase inisialisasi, patroli rutin, hingga evakuasi darurat. Apabila sensor gas mendeteksi anomali bahaya, sistem secara otomatis mengaktifkan sirine, mencatat laporan koordinat ke dalam file teks, mengambil foto bukti situasi lapangan, serta bernavigasi kembali menuju titik Home Base (Marker ID 0). Terakhir, tahap pengujian dilakukan untuk memvalidasi keakuratan lokalisasi koordinat, kinerja sensor gas beserta fitur pelaporan daruratnya, serta kestabilan antarmuka Web HUD jarak jauh.

III.              Kajian Pustaka

A.                Komponen

1.      Raspberry Pi 4 (Unit Pemrosesan Utama)

Gambar 3.1 Raspberry PI 4

Raspberry Pi 4 bertindak sebagai otak utama (main controller sekaligus komputer mini) dari robot patroli. Perangkat ini memiliki performa prosesor dan kapasitas RAM yang memadai untuk menjalankan sistem operasi berbasis Linux, melakukan pemrosesan citra berat (Computer Vision dengan OpenCV dan ArUco Marker), mengelola multitasking program menggunakan threading, serta menjalankan server web Flask untuk antarmuka Web HUD secara real-time.

2.      Pi Cam

Gambar 3.2 Pi Cam

Modul kamera ini berfungsi sebagai "mata" bagi robot untuk menangkap visual lingkungan arena secara langsung. Diletakkan pada ketinggian tertentu (misalnya 13,5 cm), kamera ini tidak hanya digunakan untuk menampilkan live streaming pada dasbor pemantau, tetapi juga memindai ArUco Marker di dinding arena guna menghitung posisi koordinat absolut () robot serta menangkap foto bukti visual (snapshot) secara otomatis saat terjadi kondisi darurat gas.

3.      Sensor Gas MQ-2


Gambar 3.3 Sensor Gas MQ-2

Sensor MQ-2 adalah komponen penginderaan lingkungan yang sensitif terhadap keberadaan gas mudah terbakar (seperti LPG, propana, metana), asap, dan karbon monoksida. Sensor ini berfungsi sebagai detektor utama bahaya; ketika konsentrasi gas melampaui batas aman, sensor akan memberikan sinyal pemicu bagi sistem untuk mengaktifkan status evakuasi, mencatat laporan log, dan mengambil foto kejadian.

4.      Driver Motor L298N Mini & Motor DC

a. Motor DC: Berfungsi sebagai aktuator gerak mekanis yang memutar roda robot, memungkinkan robot untuk melakukan berbagai manuver navigasi seperti maju, mundur, berbelok, dan berputar balik (spin).

b. b .Driver Motor L298N Mini: Merupakan modul pengendali daya dan arah putaran motor DC. Mengingat pin GPIO Raspberry Pi tidak mampu menyalurkan arus listrik yang besar untuk menggerakkan motor secara langsung, driver L298N berfungsi sebagai jembatan penengah yang menerima sinyal kontrol bertegangan rendah dari Raspberry Pi lalu menyalurkan daya eksternal yang sesuai ke motor DC.

5.      Computer Vision dan ArUco Marker

Computer Vision atau visi komputer adalah cabang ilmu kecerdasan buatan yang memungkinkan komputer atau perangkat pemrosesan melihat dan memahami informasi visual dari dunia nyata. Salah satu metode yang efisien untuk lokalisasi posisi dalam ruangan tertutup adalah penggunaan ArUco Marker. ArUco marker merupakan penanda sintetik berbentuk matriks hitam-putih biner yang dapat dideteksi secara cepat dan akurat menggunakan pustaka pengolahan citra seperti OpenCV. Melalui matriks kamera dan estimasi pose (pose estimation), sistem dapat mengekstrak vektor posisi (tvecs) dari marker yang terpasang di dinding arena (seperti pada ukuran arena 240 × 180 cm) untuk mengonversinya menjadi koordinat kartesius absolut secara real-time.

6.      Antarmuka Web HUD (Head-Up Display)

Pemantauan data secara langsung (real-time monitoring) sangat dibutuhkan dalam pengoperasian sistem robotika modern. Teknologi kerangka kerja web berbasis Python, yaitu Flask, memungkinkan pembuatan server web lokal di dalam unit pemrosesan Raspberry Pi. Dengan memanfaatkan Flask, antarmuka Web HUD (Head-Up Display) dapat dikembangkan untuk menampilkan live streaming video dari kamera robot, status operasional sistem, pembacaan sensor jarak dan gas, hingga pop-up informasi titik koordinat lokasi bahaya yang dapat diakses dengan mudah melalui peramban (browser) dari jarak jauh.

 

B.                 Blok Diagram


                                                                             Gambar 3.4 Blok Diagram 

Berdasarkan gambar blok diagram tersebut, arsitektur sistem robot dirancang dan dibagi ke dalam tiga bagian utama, yaitu Blok Input, Blok Proses, dan Blok Output. Pada Blok Input, sistem mengumpulkan data dari lingkungan sekitar menggunakan tiga perangkat utama. Kamera Picamera2 bertugas menangkap citra visual untuk keperluan deteksi matriks penglihatan robot, Sensor Jarak HC-SR04 mengukur jarak objek fisik di depan robot guna menghindari tabrakan, dan Sensor Gas MQ-2 berfungsi mendeteksi keberadaan gas berbahaya atau asap di udara. Seluruh data mentah dari ketiga perangkat masukan ini kemudian dikirimkan secara langsung ke tahap pemrosesan.

Pada Blok Proses, Raspberry Pi 4 bertindak sebagai otak atau pusat kendali komputasi utama. Perangkat ini menerima dan memproses seluruh data dari sensor input untuk mengambil keputusan gerak maupun merespons kondisi darurat berdasarkan algoritma yang telah ditanamkan. Di dalam tahap pemrosesan ini, Raspberry Pi 4 juga berkomunikasi dua arah dengan program Web Server Flask. Server web ini secara khusus bertugas mengolah, mengemas, dan mendistribusikan aliran data telemetri serta streaming video dari sistem utama agar siap disajikan ke pengguna.

Hasil dari pemrosesan data tersebut kemudian diteruskan ke Blok Output untuk dieksekusi menjadi tindakan nyata. Berdasarkan instruksi dari Raspberry Pi 4, sistem akan menggerakkan Aktuator Motor DC Roda agar robot dapat bermanuver (seperti maju, berbelok, atau putar balik). Jika sistem mendeteksi anomali bahaya, mikrokontroler akan langsung menyalakan Indikator LED & Buzzer sebagai peringatan sirine darurat, sekaligus menghasilkan keluaran data digital berupa pencatatan riwayat kejadian ke dalam file Log laporan_bahaya.txt. Secara bersamaan, data yang telah diolah oleh server diteruskan untuk ditampilkan pada antarmuka Live Dashboard Web HUD, sehingga operator dapat memantau status robot dan situasi lapangan secara real-time dari jarak jauh.


C.                Digram Alir

Gambar 3.5 Diagram Alir 

Berdasarkan diagram alir pada gambar tersebut, proses operasional sistem robot dimulai dengan tahap inisialisasi seluruh komponen keras, meliputi driver motor L298N, sensor gas MQ-2, sensor ultrasonik, indikator LED, dan buzzer, yang dilanjutkan dengan menetapkan status awal robot pada mode "PATROLI", mengatur variabel jarak awal di angka 0.0, memvalidasi ketersediaan modul kamera, serta meluncurkan Web Server Flask agar berjalan di latar belakang. Setelah persiapan selesai, sistem memasuki siklus operasional utama dengan terus-menerus memantau adanya instruksi penghentian paksa (KeyboardInterrupt); jika terdeteksi, program akan mematikan seluruh motor, aktuator peringatan, dan kamera hingga berhenti total, namun jika tidak ada interupsi, sistem akan membaca data sensor ultrasonik dalam satuan sentimeter untuk mengevaluasi status navigasinya. Apabila sistem berstatus "PATROLI", robot akan melaju perlahan pada kecepatan 0.6 jika jarak halangan di depannya lebih dari 25 cm, atau melakukan manuver putar balik jika halangan terlalu dekat, yang kemudian dilanjutkan dengan pembacaan sensor gas MQ-2. Jika kondisi udara aman, siklus akan langsung diulang dengan jeda 0,05 detik, tetapi apabila gas atau asap terdeteksi, status robot secara otomatis beralih ke "EVAKUASI" sehingga sistem akan menyalakan LED dan buzzer secara penuh, menyimpan catatan bahaya ke file laporan_bahaya.txt, serta memerintahkan robot untuk segera putar balik. Pada perulangan siklus berikutnya, karena status robot telah berada pada mode "EVAKUASI", sistem akan mengeksekusi prosedur tanggap darurat yang berbeda, yakni menyalakan indikator LED dan buzzer secara berkedip (toggle) sebagai sirine darurat, serta memacu aktuator motor untuk melaju lurus ke depan dengan kecepatan maksimum 1.0, sambil tetap memantau jarak aman rintangan di depannya (robot akan melakukan pengereman darurat dan putar balik jika jarak halangan kurang dari 10 cm) sebelum akhirnya memberikan jeda 0,05 detik untuk terus mengulang pemantauan lingkungan secara terus-menerus.

D.                Program

1.      Laptop

(*

Kelompok 06:

1.  DAFA RAIHAN SYABANI

2.  KUKUH TEGAR PANGESTU

3.  ORYZA ILYAS ARYADUTA

4.  TRI WIDODO

 

Tgl.Praktikum: Selasa, 23 Juni 2026

==============================================================*)

import cv2

import socket

import base64

import numpy as np

import time

 

# ================= KONFIGURASI JARINGAN =================

UDP_IP_LAPTOP = "0.0.0.0" 

PORT_VIDEO = 5005         

PORT_MOTOR = 5006         

 

sock_video = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

sock_video.bind((UDP_IP_LAPTOP, PORT_VIDEO))

sock_motor = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

 

# ================= INISIALISASI ARUCO =================

aruco_dict = cv2.aruco.getPredefinedDictionary(cv2.aruco.DICT_4X4_50)

aruco_params = cv2.aruco.DetectorParameters()

detector = cv2.aruco.ArucoDetector(aruco_dict, aruco_params)

 

# ================= STATE MACHINE VARIABLE =================

robot_state = "NAVIGASI"      # Pilihan state: "NAVIGASI", "DIEM_DULU", "PROSES_BELOK"

waktu_mulai_state = 0

ip_pi_terakhir = None

 

print("Menunggu stream video dari Raspberry Pi...")

 

while True:

    try:

        data_masuk, addr = sock_video.recvfrom(65536)

        ip_pi_terakhir = addr[0]

       

        data_bytes = base64.b64decode(data_masuk)

        np_arr = np.frombuffer(data_bytes, dtype=np.uint8)

        frame = cv2.imdecode(np_arr, cv2.IMREAD_COLOR)

       

        if frame is None:

            continue

 

        waktu_sekarang = time.time()

        corners, ids, rejected = detector.detectMarkers(frame)

        perintah = "stop" # Default amannya selalu stop

       

        # 1. JALANKAN LOGIKA BERDASARKAN STATE ROBOT

        if robot_state == "NAVIGASI":

            if ids is not None and len(corners) > 0:

                marker_id = ids[0][0]

                sudut_marker = corners[0][0]

               

                center_x = int(np.mean(sudut_marker[:, 0]))

                perimeter = cv2.arcLength(sudut_marker, True)

                cv2.putText(frame, f"PERIMETER ASLI: {int(perimeter)}", (20, 90),

                cv2.FONT_HERSHEY_SIMPLEX, 0.7, (255, 255, 255), 2)

               

                # Cek apakah sudah sampai di depan marker

                if perimeter > 300: 

                    robot_state = "DIEM_DULU"

                    waktu_mulai_state = waktu_sekarang

                    perintah = "stop"

                else:

                    # Setir normal menuju target

                    if center_x < 180:     perintah = "koreksi_kiri"

                    elif center_x > 300:   perintah = "koreksi_kanan"

                    else:                  perintah = "maju"

            else:

                # Kalo ilang marker pas nyari, langsung diem rapi di tempat

                perintah = "maju"

 

        elif robot_state == "DIEM_DULU":

            perintah = "stop"

            cv2.putText(frame, "STATUS: hold...", (20, 50),

                        cv2.FONT_HERSHEY_SIMPLEX, 0.7, (255, 255, 0), 2)

           

            # Cek sudah diem selama 1.5 detik atau belum

            if (waktu_sekarang - waktu_mulai_state) > 1:

                robot_state = "PROSES_BELOK"

                waktu_mulai_state = waktu_sekarang

                perintah = "belok_kanan_90"

 

        elif robot_state == "PROSES_BELOK":

            perintah = "belok_kanan_90"

            cv2.putText(frame, "STATUS: MUTAR KANAN...", (20, 50),

                        cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 165, 255), 2)

           

            # Kasih durasi belok (contoh: 0.6 detik).

            # Ubah angka 0.6 ini sesusai kebutuhan sudut lapanganmu.

            if (waktu_sekarang - waktu_mulai_state) > 0.6:

                robot_state = "NAVIGASI" # Selesai belok, cari marker baru lagi

               

        # 2. TEMBAK PERINTAH KE PI

        if ip_pi_terakhir is not None:

            sock_motor.sendto(perintah.encode('utf-8'), (ip_pi_terakhir, PORT_MOTOR))

           

        cv2.imshow("MATA ROBOT SENTRY", frame)

        if cv2.waitKey(1) & 0xFF == ord('q'):

            break

 

    except Exception as e:

        pass

 

cv2.destroyAllWindows()

sock_video.close()

sock_motor.close()

 

2.      Raspberry PI 4         

import cv2

import socket

import base64

import time

from gpiozero import Robot

 

# Konfigurasi Alamat Jaringan (Sesuaikan dengan IP Laptop Temenmu)

LAPTOP_IP = "192.168.X.X"  # <--- GANTI PAKE IP LAPTOP TEMENMU COK!

PORT_VIDEO = 5005

PORT_MOTOR = 5006

 

sock_kirim = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

sock_terima = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

sock_terima.bind(("0.0.0.0", PORT_MOTOR))

sock_terima.setblocking(0)  # Set non-blocking agar streaming kamera tidak tersendat

 

# Inisialisasi Driver Motor menggunakan GPIOZERO Robot

# Format: Robot(left=(A1, A2), right=(B1, B2))

# Kecepatan motor dikontrol lewat nilai PWM antara 0.0 sampai 1.0

robot = Robot(left=(22, 23), right=(17, 18))

SPEED_NORMAL = 0.45  # Kecepatan maju pelan biar kamera gak blur

SPEED_TURN = 0.40    # Kecepatan pas koreksi dan nyari marker

 

def set_motor(perintah):

    if perintah == "maju":

        # Kedua motor maju konstan pelan

        robot.value = (SPEED_NORMAL, SPEED_NORMAL)

       

    elif perintah == "koreksi_kiri":

        # Belok kiri halus: motor kiri pelan, motor kanan lebih cepat

        robot.value = (SPEED_TURN * 0.3, SPEED_TURN)

       

    elif perintah == "koreksi_kanan":

        # Belok kanan halus: motor kanan pelan, motor kiri lebih cepat

        robot.value = (SPEED_TURN, SPEED_TURN * 0.3)

       

    elif perintah == "cari_putar":

        # Berputar di tempat ke kanan perlahan untuk mencari marker

        robot.value = (SPEED_TURN, -SPEED_TURN)

       

    elif perintah == "belok_kanan_90":

        # Eksekusi manuver belok sudut 90 derajat secara statis

        print("Mengeksekusi manuver belok 90 derajat...")

        robot.value = (SPEED_TURN, -SPEED_TURN)

        time.sleep(0.75)  # <--- SESUAIKAN DURASI DETIK INI SAMPAI PAS 90 DERAJAT

        robot.stop()

        print("Manuver selesai.")

       

    elif perintah == "stop":

        robot.stop()

 

# Inisialisasi Kamera Bawaan Trainer Kit

camera = cv2.VideoCapture(0)

camera.set(cv2.CAP_PROP_FRAME_WIDTH, 480)

camera.set(cv2.CAP_PROP_FRAME_HEIGHT, 360)

 

print("Koneksi UDP Node Robot aktif (GPIOZERO Ready)...")

 

try:

    while True:

        success, frame = camera.read()

        if not success:

            continue

           

        # 1. Kompresi gambar ke JPEG kualitas 40% agar ukuran byte aman di 1 paket UDP

        ret, buffer = cv2.imencode('.jpg', frame, [cv2.IMWRITE_JPEG_QUALITY, 40])

        jpg_as_text = base64.b64encode(buffer)

       

        # 2. Kirim data visual ke Laptop jika ukuran paket di bawah limit UDP

        if len(jpg_as_text) < 65507:

            sock_kirim.sendto(jpg_as_text, (LAPTOP_IP, PORT_VIDEO))

       

        # 3. Ambil data perintah balik dari laptop secara real-time (tanpa blocking)

        try:

            data, addr = sock_terima.recvfrom(1024)

            perintah = data.decode('utf-8')

            print(f"Perintah Motor: {perintah}")

            set_motor(perintah)

        except BlockingIOError:

            pass  # Belum ada data perintah baru masuk, lanjut ambil frame berikutnya

           

        time.sleep(0.04)  # Mengunci kecepatan di kisaran ~25 FPS

 

except KeyboardInterrupt:

    print("Mematikan sistem dan menghentikan motor...")

    robot.stop()

    camera.release()

    sock_terima.close()

IV.              Hasil dan Pembahasan

Pengujian sistem robot Sentry Detective Patrol dilakukan secara bertahap untuk mengevaluasi kinerja masing-masing sensor, akurasi lokalisasi visual, hingga respons sistem secara keseluruhan pada skenario patroli maupun kondisi darurat. Pada pengujian perangkat keras, fokus utama diberikan kepada sensor jarak ultrasonik HC-SR04 dan sensor gas MQ-2. Berdasarkan hasil pengujian navigasi di mode "PATROLI", sensor ultrasonik mampu membaca jarak dengan akurat dan memicu respons aktuator yang tepat. Ketika dihadapkan pada rintangan dengan jarak 40 cm dan 30 cm, robot tetap mempertahankan lajunya bergerak maju pada kecepatan 0.6. Namun, sistem berhasil melakukan manuver pengereman dan putar balik secara responsif ketika jarak halangan menyentuh angka 20 cm dan 10 cm, sesuai dengan batas toleransi aman di bawah 25 cm yang telah diprogramkan. Di sisi lain, pengujian sensor gas MQ-2 menggunakan simulasi paparan gas dari pemantik api membuktikan bahwa sistem dapat membedakan kondisi udara. Pada kondisi udara normal dan bersih, robot tetap berstatus "PATROLI", tetapi saat terpapar konsentrasi gas tinggi, sistem secara seketika mendeteksinya dan beralih ke status "EVAKUASI" yang diikuti dengan menyalanya indikator peringatan LED dan buzzer.Pada pengujian sistem visi dan lokalisasi absolut, modul kamera PiCamera2 yang dipasang pada ketinggian 13,5 cm diuji kemampuannya dalam membaca ArUco Marker yang tertempel pada dinding arena berukuran 240 × 180 cm. Sistem Computer Vision berbasis OpenCV pada Raspberry Pi 4 terbukti mampu mengenali matriks marker secara stabil dan real-time. Melalui proses ekstraksi nilai vektor posisi (translation vectors atau tvecs), sistem berhasil menghitung jarak kedalaman (Sumbu Z) dan pergeseran horizontal (Sumbu X) kamera. Hasil kalkulasi ini secara akurat mampu mengonversi posisi relatif robot menjadi titik koordinat kartesius ($X, Y$) absolut pada peta arena virtual. Walaupun demikian, pengujian ini juga menemukan adanya kendala cahaya; akurasi pembacaan matriks sangat bergantung pada intensitas penerangan ruangan. Pada kondisi minim cahaya, proses ekstraksi vektor mengalami sedikit fluktuasi (noise) yang menyebabkan simpangan pembacaan jarak dalam batas toleransi sekitar $\pm$ 2 hingga 4 cm.Tahap pengujian integrasi logika sistem (state machine) membuktikan bahwa seluruh alur program yang berjalan secara multitasking (berbasis threading) dapat beroperasi secara sinkron tanpa saling menghambat. Pada fase patroli, robot berhasil melakukan navigasi keliling dan penghindaran rintangan secara otonom, sementara proses pengiriman data video ke Web Server Flask tetap berjalan lancar. Ketika skenario kebocoran gas disimulasikan, transisi status dari "PATROLI" menjadi "EVAKUASI" dieksekusi tanpa penundaan; sistem langsung mencatat log kejadian ke dalam berkas laporan_bahaya.txt, memacu putaran aktuator roda ke tingkat kecepatan maksimum (1.0), dan mengubah indikator visual serta audio menjadi mode kedip darurat. Selain itu, pemantauan jarak jauh melalui dasbor Web HUD terbukti sangat andal. Antarmuka tersebut sukses menampilkan live video feed, pembaruan status gas, serta pembacaan jarak rintangan secara real-time di peramban operator tanpa mengalami lag, bahkan ketika robot tengah melakukan komputasi berat saat manuver menghindar.

V.              Kesimpulan

1.      Berdasarkan hasil perancangan, implementasi, dan pengujian sistem robot Sentry Detective Patrol yang telah dilakukan, maka dapat ditarik kesimpulan yang menjawab tujuan penelitian sebagai berikut:

e    Perangkat keras dan perangkat lunak robot patroli otonom berbasis Raspberry Pi 4 telah berhasil dibangun dan diintegrasikan. Keseluruhan sistem terbukti mampu beroperasi secara mandiri di dalam arena pengujian, di mana logika program dapat berjalan secara multitasking untuk melakukan navigasi patroli serta manuver penghindaran rintangan (secara otonom pada jarak  cm) tanpa mengalami gangguan pemrosesan.

2.      Metode deteksi ArUco Marker menggunakan modul PiCamera2 yang diposisikan pada ketinggian 13,5 cm berhasil diterapkan secara efektif. Melalui teknologi Computer Vision, sistem mampu menghitung vektor posisi (jarak kedalaman dan pergeseran horizontal) untuk melakukan lokalisasi absolut posisi koordinat () robot pada peta ruangan secara akurat dan real-time, dengan catatan tingkat akurasi memiliki toleransi simpangan  2 hingga 4 cm yang dipengaruhi oleh intensitas pencahayaan ruangan.

3.      Sistem tanggap darurat komprehensif berhasil dikembangkan dan beroperasi dengan sangat responsif. Ketika sensor MQ-2 mendeteksi kebocoran gas, robot secara otomatis mampu mengubah status menjadi evakuasi, menyalakan alarm sirine (LED dan buzzer berkedip), merekam titik koordinat kejadian ke dalam laporan teks digital (laporan_bahaya.txt), serta mengambil foto bukti situasi lapangan. Selain itu, antarmuka pemantauan jarak jauh melalui Web HUD berbasis Flask berhasil menampilkan live streaming dan data telemetri secara real-time tanpa hambatan (lag).

VI.              Daftar Pustaka

Bradski, G., & Kaehler, A. (2008). Learning OpenCV: Computer vision with the OpenCV library. O'Reilly Media, Inc.

Garrido-Jurado, S., Muñoz-Salinas, R., Madrid-Cuevas, F. J., & Marín-Jiménez, M. J. (2014). Automatic generation and detection of highly reliable fiducial markers under occlusion. Pattern Recognition, 47(6), 2280-2292.

Grinberg, M. (2018). Flask web development: Developing web applications with Python (2nd ed.). O'Reilly Media, Inc.

Monk, S. (2015). Programming the Raspberry Pi: Getting started with Python. McGraw-Hill Education.

OpenCV. (n.d.). ArUco Marker Detection. OpenCV Documentation. Diakses dari https://docs.opencv.org/

Siegwart, R., Nourbakhsh, I. R., & Scaramuzza, D. (2011). Introduction to autonomous mobile robots (2nd ed.). MIT Press.

SparkFun Electronics. (n.d.). HC-SR04 Ultrasonic Sensor Datasheet. Diakses dari https://www.sparkfun.com/

Zhengzhou Winsen Electronics Technology Co., Ltd. (2015). MQ-2 Semiconductor Sensor for Combustible Gas Datasheet. Diakses dari https://www.winsen-sensor.com/

 

VII.              Link

PPT : https://canva.link/emf1j039s5049bb

YT : https://youtu.be/Fwj8a2zNLYs?si=dB_zDzgxEM9YndIp

 

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