ROBOT KONTROL NIRKABEL PENDETEKSI GAS BERBASIS RASPBERRY PI 5

ROBOT KONTROL NIRKABEL PENDETEKSI GAS BERBASIS RASPBERRY PI 5

Juni 25, 2026

ROBOT KONTROL NIRKABEL PENDETEKSI GAS

KELAS RE-A KELOMPOK A4 SISTEM TERBENAM

Benaya Revanico Harsono1, Hafizh Ibnu Khairy2, Nasfa Tri Utama3, Syeifa Andhika Nugroho4

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 - Perkembangan teknologi robotika memungkinkan terciptanya sistem pemantauan lingkungan yang lebih aman dan efisien. Pada area yang berpotensi mengandung gas berbahaya seperti karbon monoksida (CO), diperlukan alat yang dapat dioperasikan tanpa membahayakan keselamatan manusia. Oleh karena itu, proyek ini merancang Robot Kontrol Nirkabel Pendeteksi Gas berbasis Raspberry Pi 5. Sistem ini dirancang untuk membantu proses pemantauan lingkungan secara jarak jauh. Robot ini bertujuan untuk mendeteksi keberadaan gas karbon monoksida menggunakan sensor MQ-7, menampilkan informasi kondisi lingkungan secara real-time melalui antarmuka web, serta memberikan peringatan melalui buzzer ketika terdeteksi konsentrasi gas yang berbahaya. Melalui kendali nirkabel, robot mampu bergerak untuk memantau area yang sulit dijangkau oleh manusia. Selain itu, sistem ini menerapkan mekanisme keselamatan otomatis yang akan menghentikan pergerakan robot secara instan saat kondisi berbahaya terdeteksi. Secara keseluruhan, integrasi kontrol nirkabel dan fitur penghentian otomatis ini terbukti efektif dalam meningkatkan keandalan sistem untuk melindungi unit robot selama proses pemantauan lingkungan

Kata Kunci: Robot Kontrol Nirkabel, Pendeteksi Gas, Karbon Monoksida, Sensor MQ-7, Raspberry Pi, Pemantauan Jarak Jauh.

I. PENDAHULUAN

A. LATAR BELAKANG

Perkembangan teknologi robotika memungkinkan terciptanya sistem pemantauan lingkungan yang lebih aman dan efisien. Pada area yang berpotensi mengandung gas berbahaya seperti karbon monoksida (CO), diperlukan alat yang mampu beroperasi dan melakukan pemantauan tanpa membahayakan keselamatan manusia. Oleh karena itu, dirancang Robot Kontrol Nirkabel Pendeteksi Gas berbasis Raspberry Pi 5 yang dapat dikendalikan secara nirkabel melalui antarmuka web.

Robot ini dilengkapi dengan sensor gas MQ-7 untuk mendeteksi keberadaan gas karbon monoksida serta menggunakan buzzer sebagai indikator peringatan dini. Sistem ini juga menerapkan fitur keamanan otomatis yang akan menghentikan pergerakan robot saat terdeteksi adanya gas berbahaya. Fitur keamanan tersebut diterapkan sehingga dapat meningkatkan keamanan dan keandalan dalam proses monitoring lingkungan.

 

B.  RUMUSAN MASALAH

1.   Bagaimana merancang dan membangun sistem robot yang mampu dikendalikan secara nirkabel melalui antarmuka web untuk kebutuhan pemantauan jarak jauh?

2.   Bagaimana mengintegrasikan sensor gas MQ-7 dengan Raspberry Pi 5 agar dapat mendeteksi konsentrasi gas karbon monoksida (CO) di lingkungan sekitar secara real-time?

3.   Bagaimana menerapkan sistem peringatan dini (buzzer) dan mekanisme keamanan otomatis yang mampu menghentikan pergerakan robot secara instan ketika terdeteksi kondisi gas berbahaya?

4.   Sejauh mana efektivitas penggunaan robot ini dalam melakukan pemantauan di area yang sulit atau berbahaya untuk dijangkau langsung oleh manusia?

 

C.  TUJUAN

1.   Mengimplementasikan sistem kendali nirkabel.

2.   Mendeteksi gas berbahaya secara real-time.

3.   Membangun sistem peringatan dini.

4.   Menerapkan mekanisme keselamatan otomatis.

5.   Memfasilitasi akses area terbatas.

 

II. METODOLOGI

    Pembuatan prototype ini dilakukan melalui beberapa tahapan sebagai berikut:

1.     Studi Literatur

·      Mempelajari Raspberry Pi 5 beserta GPIO yang digunakan.

·      Mempelajari prinsip kerja sensor gas MQ-7.

·      Mempelajari prinsip kerja Driver Motor MX1508.

·      Mempelajari pengendalian motor servo menggunakan PWM. 

·      Mempelajari integrasi sistem peringatan dini menggunakan buzzer dan logika pemrograman

 

2.     Perancangan Sistem

        Desain Hardware

        Merancang rangkaian yang terdiri atas:

·      Raspberry Pi 5

·      Laptop

·      Sensor MQ-7

·      Driver Motor MX1508

·      Motor DC

·      Buzzer 

·      Baterai

        Desain Software

        Membuat program menggunakan Python untuk:

·      Membaca UID kartu RFID.

·      Membandingkan UID dengan daftar kartu yang valid.

·      Menggerakkan servo apabila kartu valid.

·      Menyalakan indikator LED sesuai kondisi.

·      Membaca status sensor api secara terus-menerus

 

3.     Pengujian

·      Menguji kontrol pergerakan robot.

·      Menguji Fitur Keamanan.

·      Menguji pendeteksian gas menggunakan sensor MQ-7

        

4.     Penyusunan Laporan

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

 

III. TINJAUAN PUSTAKA

A. ALAT DAN BAHAN

    Peralatan yang digunakan antara lain:

1.       Raspberry Pi 5

2.       Laptop

3.       Sensor MQ-7

4.       Driver Motor MX1508

5.       Motor DC

6.       Buzzer 

7.       Baterai

B.  DIAGRAM BLOK

C.  GAMBAR RANGKAIAN

D. DIAGRAM ALIR

E.  KODE PROGRAM

a.                           Kode Program Raspberry Pi 5

from flask import Flask, render_template, jsonify

from gpiozero import Robot, DigitalInputDevice, Buzzer

import threading

import time

 

app = Flask(__name__)

 

# 1. Konfigurasi Motor Robot

robot = Robot(left=(16, 22), right=(4, 5))

 

# 2. Konfigurasi Sensor Gas & Buzzer

# MQ-7 DO dihubungkan ke GPIO 21, Buzzer ke GPIO 20

gas_sensor = DigitalInputDevice(21)

buzzer = Buzzer(20)

 

# Variabel global untuk menyimpan status gas yang akan dikirim ke Web

gas_data = {

    "status": "NORMAL",

    "value": "Udara Bersih"

}

 

# 3. Fungsi Background Thread untuk memantau Gas & Buzzer

def monitor_gas():

    global gas_data

    is_beeping = False # Variabel pelacak agar buzzer tidak di-restart terus-menerus

 

    while True:

        if gas_sensor.value == 0:

            gas_data["status"] = "BAHAYA"

            gas_data["value"] = "Terdeteksi Gas Karbon Monoksida!"

           

            # Jika belum bunyi, nyalakan alarm dengan ritme cepat (0.15 detik nyala, 0.15 detik mati)

            if not is_beeping:

                buzzer.beep(on_time=0.15, off_time=0.15)

                is_beeping = True

               

        else:

            gas_data["status"] = "NORMAL"

            gas_data["value"] = "Kondisi Aman"

           

            # Jika sedang bunyi alarm, matikan

            if is_beeping:

                buzzer.off()

                is_beeping = False

               

        time.sleep(0.5) # Cek setiap 0.5 detik

 

@app.route('/')

def index():

    return render_template('index.html')

 

@app.route('/move/<direction>')

def move(direction):

    # FITUR AMAN: Jika status gas BAHAYA, kunci semua gerakan KECUALI perintah 'stop'

    if gas_data["status"] == "BAHAYA" and direction != 'stop':

        # Pastikan robot benar-benar berhenti

        robot.stop()

        return "LOG: Gerakan dikunci! Terdeteksi gas berbahaya.", 403

        # Kode 403 (Forbidden) memberi tahu web bahwa akses ditolak

 

    # Jika kondisi aman (NORMAL), jalankan perintah seperti biasa

    if direction == 'forward':

        robot.forward()

    elif direction == 'backward':

        robot.backward()

    elif direction == 'left':

        robot.left()

    elif direction == 'right':

        robot.right()

    elif direction == 'forward_left':

        robot.value = (0.4, 1.0)

    elif direction == 'forward_right':

        robot.value = (1.0, 0.4)

    elif direction == 'stop':

        robot.stop()

       

    return f"Moved {direction}"

   

# ROUTE BARU: Menyediakan data sensor dalam format JSON untuk diambil oleh Web (AJAX)

@app.route('/sensor_data')

def sensor_data():

    return jsonify(gas_data)

 

if __name__ == '__main__':

    # Jalankan pemantau gas di background thread sebelum Flask dimulai

    t = threading.Thread(target=monitor_gas)

    t.daemon = True

    t.start()

   

    # Jalankan Flask tanpa reloader agar tidak bentrok dengan GPIO

    app.run(host='0.0.0.0', port=5000, debug=True, use_reloader=False)

 

b.                         Kode Program html

<!DOCTYPE html>

<html lang="id">

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Kontrol Robot Web + Sensor Gas</title>

    <style>

        body { font-family: Arial, sans-serif; text-align: center; margin-top: 20px; background-color: #222; color: white;}

        h1 { margin-bottom: 5px; }

        .team-name { color: #aaa; font-size: 18px; margin-top: 0; margin-bottom: 20px; font-style: italic; }

       

        .controls { display: grid; grid-template-columns: 110px 110px 110px; gap: 10px; justify-content: center; margin-top: 20px; }

        button { padding: 20px; font-size: 18px; cursor: pointer; border-radius: 10px; border: none; background-color: #4CAF50; color: white; user-select: none; }

        button:active { background-color: #3e8e41; }

       

        /* Style Box Sensor Gas */

        .sensor-box {

            background-color: #333;

            border: 2px solid #555;

            border-radius: 10px;

            width: 320px;

            margin: 0 auto 20px auto;

            padding: 15px;

            box-shadow: 0px 4px 10px rgba(0,0,0,0.5);

        }

        .status-normal { color: #4CAF50; font-weight: bold; font-size: 22px; }

        .status-bahaya { color: #f44336; font-weight: bold; font-size: 22px; animation: blink 1s infinite; }

        @keyframes blink { 50% { opacity: 0; } }

 

        /* Style Container Foto Robot */

        .robot-image-box {

            margin: 0 auto 20px auto;

            max-width: 250px; /* Batasi lebar foto agar pas di HP */

        }

        .robot-img {

            width: 100%;

            height: auto;

            border-radius: 12px;

            border: 3px solid #555;

            box-shadow: 0px 4px 15px rgba(0,0,0,0.6);

        }

    </style>

</head>

<body>

    <h1>Panel Kontrol Robot Pi 5</h1>

    <p class="team-name">Kelompok 4 RE3A</p>

   

    <div class="robot-image-box">

        <img src="{{ url_for('static', filename='robot.jpeg') }}" alt="Foto Robot Kelompok 4" class="robot-img">

    </div>

 

    <div class="sensor-box">

        <h3>Sistem Monitoring Gas (MQ-7)</h3>

        <p>Indikator: <span id="gas-status" class="status-normal">MENGHUBUNGKAN...</span></p>

        <p>Keterangan: <span id="gas-value">-</span></p>

    </div>

   

    <div class="controls">

        <button onmousedown="sendCommand('forward_left')" onmouseup="sendCommand('stop')" ontouchstart="sendCommand('forward_left')" ontouchend="sendCommand('stop')">Serong Kiri</button>

        <button onmousedown="sendCommand('forward')" onmouseup="sendCommand('stop')" ontouchstart="sendCommand('forward')" ontouchend="sendCommand('stop')">Maju</button>

        <button onmousedown="sendCommand('forward_right')" onmouseup="sendCommand('stop')" ontouchstart="sendCommand('forward_right')" ontouchend="sendCommand('stop')">Serong Kanan</button>

       

        <button onmousedown="sendCommand('left')" onmouseup="sendCommand('stop')" ontouchstart="sendCommand('left')" ontouchend="sendCommand('stop')">Kiri</button>

        <button onmousedown="sendCommand('backward')" onmouseup="sendCommand('stop')" ontouchstart="sendCommand('backward')" ontouchend="sendCommand('stop')">Mundur</button>

        <button onmousedown="sendCommand('right')" onmouseup="sendCommand('stop')" ontouchstart="sendCommand('right')" ontouchend="sendCommand('stop')">Kanan</button>

    </div>

 

    <script>

        function sendCommand(direction) {

            fetch('/move/' + direction)

                .then(response => console.log('Perintah terkirim: ' + direction))

                .catch(error => console.error('Error:', error));

        }

 

        function updateSensorData() {

            fetch('/sensor_data')

                .then(response => response.json())

                .then(data => {

                    const statusElem = document.getElementById('gas-status');

                    const valueElem = document.getElementById('gas-value');

                   

                    statusElem.innerText = data.status;

                    valueElem.innerText = data.value;

                   

                    if (data.status === 'BAHAYA') {

                        statusElem.className = 'status-bahaya';

                    } else {

                        statusElem.className = 'status-normal';

                    }

                })

                .catch(error => console.error('Gagal mengambil data sensor:', error));

        }

 

        setInterval(updateSensorData, 1000);

    </script>

</body>

</html>

 

IV. HASIL DAN PEMBAHASAN

A. CARA KERJA RANGKAIAN

Saat sistem dinyalakan, Raspberry Pi 5 akan menginisialisasi seluruh komponen yang terhubung, termasuk modul motor dan sensor gas MQ-7. Sistem secara otomatis menjalankan background thread untuk memulai proses pemantauan gas secara berkelanjutan. Sensor MQ-7 akan terus membaca konsentrasi gas di lingkungan sekitar dan mengirimkan data tersebut ke Raspberry Pi untuk diproses.

Jika sensor mendeteksi adanya gas karbon monoksida (CO) di atas ambang batas, sistem akan mengubah status menjadi "BAHAYA" pada dashboard web dan secara otomatis mengaktifkan buzzer untuk memberikan peringatan dini berupa bunyi alarm yang berulang. Dalam kondisi "BAHAYA" ini, sistem akan mengaktifkan fitur keselamatan otomatis di mana semua perintah pergerakan robot dari web akan ditolak (terkunci), kecuali perintah untuk "stop", guna mencegah robot bergerak lebih jauh ke area berbahaya.

Sebaliknya, jika sensor tidak mendeteksi adanya gas berbahaya, sistem akan menampilkan status "NORMAL" pada dashboard web. Dalam kondisi ini, pengguna dapat mengendalikan pergerakan robot secara bebas melalui antarmuka web, seperti maju, mundur, belok kiri, atau belok kanan, yang dikirimkan melalui protokol komunikasi nirkabel dan diterjemahkan oleh driver motor MX1508 untuk menggerakkan roda robot.

Berdasarkan hasil pengujian, sistem berhasil menjalankan fungsi kontrol nirkabel dengan responsif, memantau keberadaan gas secara real-time melalui antarmuka web, memberikan peringatan suara melalui buzzer, serta mengaktifkan mekanisme penghentian otomatis yang efektif dalam melindungi unit robot ketika terdeteksi kondisi lingkungan yang berbahaya.

B.  FOTO PROTOTYPE

V. SIMPULAN

Berdasarkan hasil perancangan dan pengujian, dapat disimpulkan bahwa Robot Kontrol Nirkabel Pendeteksi Gas berbasis Raspberry Pi 5 berhasil direalisasikan sesuai dengan tujuan proyek. Sistem kendali nirkabel melalui antarmuka web mampu berfungsi dengan baik untuk menggerakkan robot secara jarak jauh dengan respons yang presisi. Sensor gas MQ-7 terbukti mampu mendeteksi keberadaan gas karbon monoksida secara real-time dan memberikan peringatan dini melalui buzzer. Integrasi fitur keamanan otomatis juga berhasil diterapkan, di mana sistem mampu mengunci kendali pergerakan robot secara instan saat kondisi berbahaya terdeteksi untuk melindungi unit robot. Seluruh komponen bekerja secara terintegrasi sehingga sistem ini dapat meningkatkan aspek keamanan operasional sekaligus memberikan fungsi pemantauan lingkungan yang efektif dan efisien.

 

VI. REFRENSI

Arduino Srl, 2024. MFRC522 Library Documentation. [online] Available at: https://github.com/miguelbalboa/rfid [Diakses 30 Juni 2026].

Raspberry Pi Ltd., 2025. Raspberry Pi 5 Documentation. [online] Available at: https://www.raspberrypi.com/documentation/computers/raspberry-pi.html [Diakses 30 Juni 2026].

GPIO Zero Authors, 2025. GPIO Zero Documentation. [online] Available at: https://gpiozero.readthedocs.io/en/stable/ [Diakses 30 Juni 2026].

Raspberry Pi Ltd., 2025. GPIO Zero Documentation. [online] Available at: https://gpiozero.readthedocs.io/en/stable/ [Diakses 30 Juni 2026].

Raspberry Pi Ltd., 2025. Raspberry Pi Pico Documentation. [online] Available at: https://www.raspberrypi.com/documentation/microcontrollers/pico-series.html [Diakses 30 Juni 2026].

SparkFun Electronics, 2023. MQ-7 Carbon Monoxide Gas Sensor Hookup Guide. [online] Available at: https://learn.sparkfun.com/tutorials/mq-7-carbon-monoxide-sensor-hookup-guide [Diakses 30 Juni 2026].

Winsen Electronics, 2015. MQ-7 Semiconductor Sensor for Carbon Monoxide Datasheet. Zhengzhou: Zhengzhou Winsen Electronics Technology Co., Ltd.

 

VII. LAMPIRAN

A.   LINK YOUTUBE :

B.   LINK PPT : https://canva.link/xblc50icfu9r2fw

 

VIII. PROFIL PENULIS

Penulis atas nama Benaya Revanico Harsono dilahirkan di Semarang, 2 April 2004.  Penulis telah menempuh pendidikan formal di SD Negeri Pleburan 03, SMP N 5 Semarang, dan SMKN 7 Semarang. Tahun 2023 penulis menyelesaikan pendidikannya di SMK. Pada tahun 2023 penulis mengikuti seleksi mahasiswa baru Sarjana Terapan (D4) dan diterima menjadi mahasiswa baru Sarjana Terapan (D4) di kampus Politeknik Negeri Semarang (Polines) dengan Program Studi D4 Tenologi Rekayasa Elektronika, Jurusan Teknik Elektro. Penulis terdaftar dengan NIM. 4.34.23.0.04.
Apabila ada kritik, saran dan pertanyaan mengenai penelitian ini, bisa via email: revanicobenaya@gmail.com

Penulis atas nama Nasfa Tri Utama dilahirkan di Kota Semarang, 8 Mei 2005.  Penulis telah menempuh pendidikan formal di SD Negeri Sumurrejo 01, SMP N 24 Semarang, dan SMA N 12 Semarang. Tahun 2023 penulis menyelesaikan pendidikannya di SMA. Pada tahun 2023 penulis mengikuti seleksi mahasiswa baru sarjana terapan (D4) dan diterima menjadi mahasiswa baru sarjana terapan (D4) di kampus Politeknik Negeri Semarang (Polines) dengan Program Studi D4  Teknologi Reakayasa Elektronika Jurusan Teknik Elektro. Penulis terdaftar dengan NIM. 4.34.23.0.16. Apabila ada kritik, saran dan pertanyaan mengenai penelitian ini, bisa via email: nasfatriutama08@gmail.com


Penulis atas nama Hafizh Ibnu Khairy dilahirkan di Jakarta, 24 September 2005. Penulis telah menempuh Pendidikan formal di SDIT Baabut Taubah Kota Bekasi, SMPIT Gameel Akhlaq Kota Bekasi, dan MAN 2 Kota Bekasi. Pada tahun 2023 penulis mengikuti seleksi mahasiswa baru Sarjana Terapan di salah satu perguruan tinggi yaitu Politeknik Negeri Semarang pada Jurusan Teknik Elektro, Program Studi S.Tr. Teknologi Rekayasa Elektronika dengan NIM 4.34.23.0.10. Apabila memiliki kritik, saran dan pertanyaan mengenai pelenitian ini, bisa melalui via email hafizhkhairy249@gmail.com


Penulis atas nama Syeifa Andhika Nugroho dilahirkan di Demak, 27 Desember 2005.  Penulis telah menempuh pendidikan formal di SD Negeri Mandung, SMP N 2 Bonang, dan SMA N 1 Demak. Tahun 2023 penulis menyelesaikan pendidikannya di SMA. Pada tahun 2023 penulis mengikuti Seleksi Nasional Berdasarkan Tes (SNBT)  dan diterima menjadi mahasiswa baru Sarjana Terapan (D4) di kampus Politeknik Negeri Semarang (Polines) dengan Program Studi D4 Tenologi Rekayasa Elektronika, Jurusan Teknik Elektro. Penulis terdaftar dengan NIM. 4.34.23.0.23.
Apabila ada kritik, saran dan pertanyaan mengenai penelitian ini, bisa via email: syeifaandhikanugroho6@gmail.com

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