ROBOT KONTROL NIRKABEL PENDETEKSI GAS BERBASIS RASPBERRY PI 5
ROBOT KONTROL NIRKABEL PENDETEKSI GAS BERBASIS RASPBERRY PI 5
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
Komentar
Posting Komentar