Kebutuhan akan sistem keamanan yang andal pada lingkungan agen maupun
gudang penyimpanan gas LPG menjadi semakin krusial seiring dengan meningkatnya
penggunaan gas tersebut sebagai sumber energi utama di berbagai sektor
masyarakat. Agen dan pangkalan LPG, yang seringkali berlokasi di tengah
pemukiman padat atau area komersial, memiliki risiko kerentanan yang sangat
tinggi terhadap insiden kebocoran gas. Apabila kebocoran ini tidak terdeteksi
secara dini, akumulasi gas di udara berpotensi besar memicu terjadinya
kebakaran berskala besar hingga ledakan fatal. Permasalahan utama yang sering
dijumpai di lapangan, khususnya pada skala Usaha Mikro, Kecil, dan Menengah
(UMKM) agen LPG, adalah minimnya ketersediaan sistem pemantauan otomatis yang
terintegrasi. Proses deteksi kebocoran gas maupun kemunculan titik api masih
sangat bergantung pada pengamatan visual dan penciuman manusia. Keterbatasan
indera manusia dan ketiadaan pengawasan selama 24 jam penuh menyebabkan
keterlambatan respons dalam penanganan awal, yang secara otomatis meningkatkan
potensi kerugian masif, baik dari segi kerusakan material aset usaha maupun
ancaman nyata terhadap keselamatan jiwa pekerja dan masyarakat sekitar.
Berangkat dari permasalahan nyata di lapangan tersebut, kegiatan pengabdian
kepada masyarakat ini merancang dan mengimplementasikan sebuah sistem Early
Warning System (EWS) atau peringatan dini berbasis mikrokontroler STM32
(Bluepill) yang akan diaplikasikan langsung pada mitra agen LPG. Sistem ini
dirancang sebagai solusi aplikatif dan tepat guna untuk melakukan deteksi dini
terhadap kebocoran gas dan potensi kebakaran menggunakan pendekatan multi-sensor.
Melalui integrasi sensor gas MQ-6, sensor asap MQ-135, flame sensor, dan
sensor suhu DHT22, data lingkungan gudang dapat dipantau secara real-time
dan akurat. Data dari seluruh sensor akan diproses seketika oleh mikrokontroler
STM32F103C8T6 untuk menghasilkan respons otomatis berjenjang. Respons tersebut
tidak hanya berupa peringatan suara via buzzer dan indikator visual
melalui LED serta LCD, tetapi juga mengaktifkan tindakan mitigasi fisik secara
langsung berupa menyalanya kipas (exhaust fan) untuk segera membuang dan
mengurangi konsentrasi gas berbahaya di udara. Penerapan teknologi tepat guna
melalui program pengabdian ini diharapkan dapat meningkatkan standar
keselamatan kerja (K3) pada mitra, memberikan rasa aman bagi pekerja dan masyarakat
sekitar, serta menjadi model percontohan sistem keamanan proaktif bagi agen LPG
lainnya.
·
Merancang Sistem Deteksi Dini yang Terintegrasi:
Membangun sebuah Early Warning System (EWS) menggunakan mikrokontroler
STM32F103C8T6 yang mampu membaca dan memproses data dari berbagai sensor secara
bersamaan (MQ-6, MQ-135, DHT22, dan Flame Sensor) untuk memantau kondisi
lingkungan gudang LPG secara komprehensif.
·
Mendeteksi Kebocoran Gas Secara Akurat: Memanfaatkan
sensor MQ-6 untuk secara spesifik mendeteksi keberadaan dan tingkat konsentrasi
gas LPG (butane dan propane) di udara, guna memberikan peringatan
awal sebelum mencapai batas kritis ledakan.
·
Melakukan Validasi Potensi Kebakaran: Menggunakan sensor
asap MQ-135 dan sensor suhu DHT22 untuk mengidentifikasi anomali panas dan
asap, serta menggunakan Flame Sensor untuk mengonfirmasi keberadaan
titik api secara langsung, sehingga meminimalkan risiko alarm palsu (false
alarm).
·
Membangun Sistem Peringatan Multi-Level:
Mengklasifikasikan kondisi lingkungan ke dalam tiga status (Aman, Waspada,
Bahaya) dan memberikan respons yang sesuai melalui antarmuka visual (LED
Merah/Kuning/Hijau dan layar LCD 16x2) serta auditori (buzzer), agar
operator dapat mengambil tindakan yang tepat dan cepat.
·
Menerapkan Tindakan Mitigasi Fisik Otomatis:
Mengendalikan aktuator berupa exhaust fan (kipas) menggunakan rangkaian driver
transistor yang akan menyala secara otomatis saat terdeteksi kebocoran gas,
dengan tujuan mengurangi konsentrasi gas berbahaya di udara dan mencegah
akumulasi fatal.
- STM32F103C8T6 (Bluepill): 1 buah. Berfungsi sebagai unit pemroses utama yang menerima data dari seluruh sensor dan mengendalikan respon aktuator berdasarkan logika program.
- Sensor Gas MQ-6: Berfungsi untuk mendeteksi
keberadaan dan konsentrasi gas LPG di lingkungan.
- Sensor Asap MQ-135: Berfungsi untuk mendeteksi
keberadaan asap dan gas sisa hasil pembakaran.
- Flame Sensor (Sensor Api): Berfungsi untuk
mendeteksi radiasi inframerah dari nyala api secara langsung.
- Sensor Suhu dan Kelembapan DHT22: Berfungsi untuk
memantau suhu ruangan sebagai indikator awal adanya potensi kebakaran
(suhu ekstrem).
- LCD 16x2: Berfungsi sebagai layar penampil (HMI)
untuk menunjukkan status sistem (Aman/Waspada/Bahaya) dan data pembacaan
sensor secara real-time.
- Exhaust Fan (Kipas): Berfungsi sebagai aktuator
mitigasi untuk membuang akumulasi gas LPG yang bocor ke luar ruangan.
- Buzzer: Berfungsi sebagai alarm peringatan bahaya
dalam bentuk suara yang nyaring.
- LED
5mm: 3 buah (Merah, Kuning, Hijau). Berfungsi sebagai indikator
visual untuk merepresentasikan status keadaan gudang.
- Transistor: Digunakan sebagai sakelar elektronik (driver) untuk menghubungkan mikrokontroler dengan arus kerja exhaust fan.
- Resistor
220 Ohm: Digunakan sebagai pembatas arus listrik (current limiter)
untuk ketiga LED agar tidak putus/rusak.
- Resistor 1000 Ohm (1k Ohm): Digunakan sebagai
tahanan pada kaki base transistor pelindung arus dari pin
mikrokontroler.
- Resistor
4700 Ohm (4.7k Ohm): Digunakan sebagai resistor pull-up pada jalur
data (pin data) sensor DHT22.
- Potensiometer 10k Ohm: Digunakan untuk mengatur
tingkat kontras kecerahan layar LCD 16x2 dan keperluan kalibrasi/simulasi
sensor.
- Potensiometer 1k Ohm: Digunakan untuk keperluan
pembagi tegangan tambahan atau pengaturan kalibrasi pada rangkaian.
- Adaptor 5V: Berfungsi sebagai sumber catu daya
(power supply) utama untuk menyuplai tegangan listrik ke mikrokontroler
dan seluruh sensor.
- Kabel Jumper: Digunakan sebagai kabel penghubung
antar komponen, sensor, dan mikrokontroler.
- Breadboard: Berfungsi sebagai papan sirkuit
prototipe untuk merakit semua jalur kelistrikan komponen tanpa harus
melakukan proses penyolderan.
4.1
General Input Output
Input
adalah semua data dan perintah yang dimasukkan ke dalam memori untuk diproses
lebih lanjut oleh mikroprosesor. Sebuah perangkat input adalah komponen piranti
keras yang memungkinkan user atau pengguna memasukkan data ke dalam
mikroprosesor. Output adalah data hasil yang telah diproses. Perangkat output
adalah semua komponen piranti keras yang menyampaikan informasi kepada
orang-orang yang menggunakannya.
Pada STM32F103C8T6 dan STM32 NUCLEO G474RE pin
input/output terdiri dari digital dan analog yang jumlah pin-nya tergantung
jenis mikrokontroller yang digunakan. Input digital digunakan untuk mendeteksi
perubahan logika biner pada pin tertentu. Adanya input digital memungkinkan
mikrokontroler untuk dapat menerjemahkan 0V menjadi logika LOW dan 5V menjadi
logika HIGH. Membaca sinyal digital pada mikrokontroller dapat menggunakan
sintaks digitalRead(pin);
Output
digital terdiri dari dua buah logika, yaitu kondisi logika HIGH dan kondisi
logika LOW. Untuk menghasilkan output kita dapat menggunakan sintaks
digitalWrite(pin,nilai); yang sebelumnya pin sudah diset ke mode OUTPUT, lalu
parameter kedua adalah set nilai HIGH atau LOW. Apabila pin diset dengan nilai HIGH,
maka voltase pin tersebut akan diset ke 5V atau 3.3V dan bila pin diset ke LOW,
maka voltase pin tersebut akan diset ke 0V.
4.2
STM32F103C8
STM32F103C8
adalah mikrokontroler berbasis ARM Cortex-M3 yang dikembangkan oleh
STMicroelectronics. Mikrokontroler ini sering digunakan dalam pengembangan
sistem tertanam karena kinerjanya yang baik, konsumsi daya yang rendah, dan
kompatibilitas dengan berbagai protokol komunikasi. Pada praktikum ini, kita
menggunakan STM32F103C8 yang dapat diprogram menggunakan berbagai metode,
termasuk komunikasi serial (USART), SWD (Serial Wire Debug), atau JTAG untuk
berhubungan dengan komputer maupun perangkat lain. Adapun spesifikasi dari
STM32F4 yang digunakan dalam praktikum ini adalah sebagai berikut:
Gambar 1 STM32F103C8
Gambar 2 Pinout Stm32 F103C8T6
|
Microcontroller |
ARM
Cortex-M3 |
|
Operating
Voltage |
3.3 V |
|
Input
Voltage (recommended) |
5 V |
|
Input
Voltage (limit) |
2 – 3.6 V |
|
Digital I/O
Pins |
32 |
|
PWM Digital
I/O Pins |
15 |
|
Analog Input
Pins |
10 (dengan
resolusi 12-bit ADC) |
|
DC Current
per I/O Pin |
25 mA |
|
DC Current
for 3.3V Pin |
150 mA |
|
Flash Memory |
64 KB |
|
SRAM |
20 KB |
|
EEPROM |
Emulasi
dalam Flash |
|
Clock Speed |
72 MHz |
BAGIAN-BAGIAN
PENDUKUNG :
1. RAM
(Random Access Memory)
STM32F103C8
dilengkapi dengan 20KB SRAM on-chip. Kapasitas RAM ini memungkinkan
mikrokontroler menjalankan berbagai aplikasi serta menyimpan data sementara
selama eksekusi program.
2. Memori
Flash Internal
STM32F103C8
memiliki memori flash internal sebesar 64KB atau 128KB, yang digunakan untuk
menyimpan firmware dan program pengguna. Memori ini memungkinkan penyimpanan
kode program secara permanen tanpa memerlukan media penyimpanan eksternal.
3. Crystal
Oscillator
STM32F103C8
menggunakan crystal oscillator eksternal (biasanya 8MHz) yang bekerja dengan
PLL untuk meningkatkan frekuensi clock hingga 72MHz. Sinyal clock yang stabil
ini penting untuk mengatur kecepatan operasi mikrokontroler dan komponen
lainnya.
4.
Regulator Tegangan
STM32F103C8
memiliki sistem pengaturan tegangan internal yang memastikan pasokan daya
stabil ke mikrokontroler. Tegangan operasi yang didukung berkisar antara 2.0V
hingga 3.6V.
5. Pin
GPIO (General Purpose Input/Output)
STM32F103C8
memiliki hingga 37 pin GPIO yang dapat digunakan untuk menghubungkan berbagai
perangkat eksternal seperti sensor, motor, LED, serta komunikasi dengan
antarmuka seperti UART, SPI, dan I²C.
4.3 ADC
ADC
atau Analog to Digital Converter merupakan salah satu perangkat elektronika
yang digunakan sebagai penghubung dalam pemrosesan sinyal analog oleh sistem
digital. Fungsi utama dari fitur ini adalah mengubah sinyal masukan yang masih
dalam bentuk sinyal analog menjadi sinyal digital dengan bentuk kode-kode
digital.
Pada
mikrokontroler STM32, terdapat dua ADC (Analog-to-Digital Converter) 12-bit
yang masing-masing memiliki hingga 16 kanal eksternal. ADC ini dapat beroperasi
dalam mode single-shot atau scan mode. Pada scan mode, konversi dilakukan
secara otomatis pada sekelompok input analog yang dipilih. Selain itu, ADC ini
memiliki fitur tambahan seperti simultaneous sample and hold, interleaved
sample and hold, serta single shunt. ADC juga dapat dihubungkan dengan DMA
untuk meningkatkan efisiensi transfer data. Mikrokontroler ini dilengkapi
dengan fitur analog watchdog yang memungkinkan pemantauan tegangan hasil
konversi dengan akurasi tinggi, serta dapat menghasilkan interupsi jika
tegangan berada di luar ambang batas yang telah diprogram. Selain itu, ADC
dapat disinkronkan dengan timer internal (TIMx dan TIM1) untuk memulai
konversi, pemicu injeksi, serta pemicu DMA, sehingga memungkinkan aplikasi
untuk melakukan konversi ADC secara terkoordinasi dengan timer.
Pada
STM32 Nucleo G474RE, terdapat blok ADC (Analog-to-Digital Converter) yang
digunakan untuk mengubah sinyal analog menjadi data digital. STM32 G474RE
memiliki beberapa unit ADC (seperti ADC1, ADC2, ADC3, dan ADC4) yang
memungkinkan proses konversi dilakukan secara paralel untuk meningkatkan
kecepatan akuisisi data. Setiap ADC mendukung resolusi hingga 12-bit, dengan
fitur tambahan seperti oversampling untuk meningkatkan akurasi dan mengurangi
noise pada sinyal.
Setiap
unit ADC dapat mengakses banyak channel input yang terhubung ke berbagai pin
GPIO, sehingga memungkinkan pembacaan berbagai sensor secara fleksibel. ADC
pada STM32 G474RE juga dilengkapi dengan fitur scan mode untuk membaca beberapa
channel secara berurutan, serta mode continuous conversion yang memungkinkan
pembacaan data secara terus-menerus tanpa intervensi CPU. Selain itu, terdapat
injected channel yang berfungsi sebagai channel prioritas untuk kebutuhan
real-time.
ADC ini
juga mendukung berbagai sumber trigger, seperti timer (TIM) atau sinyal
eksternal, sehingga dapat disinkronkan dengan modul lain seperti PWM untuk
aplikasi kontrol tertutup (closed-loop). Proses konversi dilakukan melalui
tahap sampling dan quantization, dengan hasil akhir disimpan pada register data
ADC. Dengan fitur-fitur tersebut, ADC pada STM32 G474RE sangat cocok digunakan
dalam aplikasi seperti pembacaan sensor, monitoring tegangan, serta sistem
kendali berbasis sinyal analog yang membutuhkan kecepatan dan presisi tinggi.
4.4 I2C
(Inter-Intergrated Circuit)
Inter
Integrated Circuit atau sering disebut I2C adalah standar komunikasi serial dua
arah menggunakan dua saluran yang didisain khusus untuk mengirim maupun
menerima data. Sistem I2C terdiri dari saluran SCL (Serial Clock) dan SDA
(Serial Data) yang membawa informasi data antara I2C dengan pengontrolnya.
Cara Kerja
Komunikasi I2C
Gambar 3 Cara Kerja Komunikasi I2C
Pada
I2C, data ditransfer dalam bentuk message yang terdiri dari kondisi start,
Address Frame, R/W bit, ACK/NACK bit, Data Frame 1, Data Frame 2, dan kondisi
Stop. Kondisi start dimana saat pada SDA beralih dari logika high ke low
sebelum SCL. Kondisi stop dimana saat pada SDA beralih dari logika low ke high
sebelum SCL.
R/W
bit berfungsi untuk menentukan apakah master mengirim data ke slave atau
meminta data dari slave. (logika 0 = mengirim data ke slave, logika 1 = meminta
data dari slave) ACK/NACK bit berfungsi sebagai pemberi kabar jika data frame
ataupun address frame telah diterima receiver.
4.5
Flame Sensor
Flame Sensor merupakan sensor pendeteksi nyala api yang bekerja berdasarkan
deteksi radiasi ultraviolet (UV) yang dipancarkan oleh api. Sensor ini
menggunakan prinsip efek fotolistrik serta fenomena pelepasan muatan listrik
(gas discharge) untuk menghasilkan sinyal keluaran. Sensor memiliki
sensitivitas spektral yang sangat sempit pada rentang panjang gelombang 185–260
nm sehingga hanya merespons sinar ultraviolet dan tidak sensitif terhadap
cahaya tampak maupun inframerah (solar blind characteristic). Kondisi ini
memungkinkan sensor mendeteksi nyala api dengan tingkat akurasi tinggi tanpa
terganggu oleh cahaya lampu atau sinar matahari.
Gambar 4 Flame Sensor
Gambar 5 Pinout Flame Sensor
|
Rentang sensitivitas UV |
185–260 nm |
|
Sensitivitas minimum |
1 pW |
|
Waktu respons tipikal |
1 ms |
|
Tegangan operasi |
575 VDC |
|
Arus pelepasan rata-rata |
0,3 mA |
|
Umur operasi |
10.000 jam |
Prinsip kerja flame sensor dimulai ketika radiasi ultraviolet dari nyala api
mengenai elektroda di dalam tabung sensor. Energi UV tersebut menyebabkan
terjadinya emisi elektron melalui efek fotolistrik. Elektron yang terbentuk
kemudian dipercepat oleh tegangan tinggi yang diberikan pada sensor sehingga
memicu ionisasi gas di dalam tabung dan menghasilkan pelepasan muatan listrik
(discharge). Setiap kejadian pelepasan muatan akan menghasilkan pulsa listrik
pada keluaran sensor yang dapat dihitung oleh rangkaian mikrokontroler atau
sistem pengolah data. Semakin kuat intensitas ultraviolet yang diterima,
semakin tinggi frekuensi pulsa yang dihasilkan.
Flame Sensor memiliki kemampuan mendeteksi radiasi ultraviolet yang sangat
lemah hingga sekitar 1 pW. Sensor ini juga memiliki waktu respons yang sangat
cepat, yaitu sekitar 1 ms, sehingga cocok digunakan untuk sistem deteksi
kebakaran dan pemantauan proses pembakaran secara real-time. Selain itu, sensor
memiliki umur operasi yang panjang hingga 10.000 jam pada kondisi kerja yang
direkomendasikan.
Flame Sensor bekerja dengan tegangan suplai sekitar 575 VDC, tegangan mulai
pelepasan (discharge starting voltage) sebesar 500 ± 50 V, dan tegangan
pelepasan berkelanjutan (discharge sustaining voltage) sekitar 330 V. Sensor
menghasilkan keluaran berupa pulsa digital yang diperoleh melalui rangkaian
driver eksternal yang berfungsi sebagai pembatas arus dan rangkaian pemadam
pelepasan (quenching circuit). Berikut merupakan grafik respon sistem Flame
Sensor
Gambar 6 Grafik Respon Sistem
Flame Sensor
Karena karakteristiknya yang hanya peka terhadap sinar ultraviolet dari api,
Flame Sensor banyak digunakan pada sistem pemantauan pembakaran burner gas dan
minyak, sistem alarm kebakaran, pemantauan kebakaran akibat pembakaran liar
(arson watch), pendeteksi kebocoran sinar ultraviolet, serta deteksi fenomena
pelepasan listrik seperti korona pada saluran tegangan tinggi. Sensitivitas
tinggi, respons cepat, serta ketahanan terhadap gangguan cahaya lingkungan
menjadikan sensor ini sangat andal untuk aplikasi keselamatan dan monitoring
industri.
4.6 Mq-135 Sensor
Sensor gas MQ-6 adalah sensor semikonduktor yang digunakan untuk mendeteksi
keberadaan gas LPG (Liquefied Petroleum Gas), isobutana, propana, dan LNG
(Liquefied Natural Gas). Sensor ini memiliki sensitivitas tinggi terhadap
gas-gas tersebut serta sensitivitas yang rendah terhadap alkohol, asap, dan uap
hasil memasak, sehingga sangat cocok digunakan pada sistem pendeteksi kebocoran
gas rumah tangga maupun industri. Sensor MQ-6 memiliki respons yang cepat,
stabil, umur pakai yang panjang, serta hanya memerlukan rangkaian penggerak
yang sederhana.
Gambar 7 Mq-6 Sensor
Gambar 8 Pinout Mq-6 Sensor
|
Rentang
deteksi gas |
200–10.000
ppm |
|
Tegangan
kerja |
5 V |
|
Tegangan
pemanas |
5 V |
|
Resistansi
pemanas |
33 Ω ± 5% |
|
Konsumsi
daya pemanas |
< 750 mW |
|
Waktu pemanasan
awal |
> 24 jam |
Prinsip kerja sensor MQ-6 didasarkan pada perubahan resistansi lapisan
semikonduktor timah dioksida (SnO₂) ketika terkena gas yang mudah terbakar.
Pada kondisi udara bersih, resistansi sensor relatif tinggi. Ketika gas LPG
atau gas target lainnya terdeteksi, molekul gas akan bereaksi dengan permukaan
lapisan SnO₂ sehingga konduktivitas material meningkat dan resistansi sensor
menurun. Perubahan resistansi ini kemudian diubah menjadi perubahan tegangan
keluaran melalui rangkaian pembagi tegangan sehingga dapat dibaca oleh
mikrokontroler atau sistem monitoring.
Struktur sensor MQ-6 terdiri dari tabung keramik aluminium oksida (Al₂O₃)
yang dilapisi material sensitif berupa timah dioksida (SnO₂), elektroda emas
(Au), kawat elektroda platina (Pt), serta elemen pemanas berbahan paduan
nikel-kromium (Ni-Cr). Elemen pemanas berfungsi menjaga suhu kerja sensor agar
reaksi kimia pada permukaan SnO₂ dapat berlangsung secara optimal. Sensor
dilindungi oleh jaring baja tahan karat yang berfungsi sebagai pelindung
sekaligus pengaman terhadap ledakan.
MQ-6 bekerja dengan tegangan operasi sebesar 5 V untuk rangkaian sensor maupun elemen pemanas. Resistansi pemanasnya sekitar 33 Ω dengan konsumsi daya pemanas kurang dari 750 mW. Sebelum digunakan, sensor memerlukan waktu pemanasan awal (preheat) lebih dari 24 jam agar karakteristik sensitivitasnya stabil. Rentang konsentrasi gas yang dapat dideteksi berada pada kisaran 200–10.000 ppm untuk LPG, isobutana, propana, dan LNG.
Gambar 9 Grafik Respon Sistem Mq-6
Sensor
Karakteristik sensitivitas sensor dinyatakan melalui perbandingan Rs/Ro, di
mana Rs adalah resistansi sensor pada konsentrasi gas tertentu dan Ro adalah
resistansi sensor pada kondisi referensi, yaitu 1000 ppm LPG di udara bersih.
Nilai Rs akan semakin kecil seiring meningkatnya konsentrasi gas, sehingga
nilai Rs/Ro juga menurun. Oleh karena itu, konsentrasi gas dapat diperkirakan
berdasarkan perubahan rasio tersebut menggunakan kurva karakteristik yang
disediakan pada datasheet.
Kinerja sensor MQ-6 dipengaruhi oleh suhu dan kelembapan lingkungan.
Perubahan suhu dan kelembapan dapat menyebabkan perubahan nilai resistansi
sensor sehingga memengaruhi hasil pengukuran. Oleh karena itu, pada aplikasi
yang membutuhkan tingkat akurasi tinggi, diperlukan proses kalibrasi dan
kompensasi terhadap pengaruh lingkungan. Datasheet merekomendasikan penggunaan
resistor beban (RL) sekitar 20 kΩ dan kalibrasi pada konsentrasi 1000 ppm LPG
untuk memperoleh hasil pengukuran yang optimal.
4.7 Mq-135 Sensor
Sensor gas MQ-135 merupakan sensor semikonduktor yang digunakan untuk
memantau kualitas udara dengan mendeteksi berbagai gas berbahaya seperti amonia
(NH₃), hidrogen sulfida (H₂S), uap senyawa benzena (benzene series vapor),
asap, serta beberapa gas beracun lainnya. Sensor ini banyak digunakan pada
sistem alarm gas rumah tangga, alarm gas industri, dan alat pendeteksi gas
portabel karena memiliki sensitivitas yang baik, harga yang relatif murah, umur
pakai yang panjang, serta rangkaian antarmuka yang sederhana.
Gambar 10 Mq-135 Sensor
Gambar 11 Pinout Mq-135 Sensor
|
Rentang
deteksi gas |
10–1000 ppm |
|
Tegangan
pemanas |
5 V ± 0,1 V |
|
Resistansi
pemanas |
29 Ω ± 3 Ω |
|
Konsumsi
daya pemanas |
≤ 950 mW |
|
Waktu
pemanasan awal |
> 48 jam |
Prinsip kerja MQ-135 didasarkan pada perubahan konduktivitas lapisan
semikonduktor timah dioksida (SnO₂) akibat keberadaan gas target. Pada kondisi
udara bersih, material SnO₂ memiliki konduktivitas yang rendah atau resistansi
yang tinggi. Ketika gas pencemar terdeteksi, molekul gas berinteraksi dengan
permukaan sensor sehingga meningkatkan konduktivitas material dan menurunkan
nilai resistansinya. Perubahan resistansi tersebut kemudian diubah menjadi
perubahan tegangan keluaran menggunakan rangkaian pembagi tegangan sehingga konsentrasi
gas dapat diukur oleh mikrokontroler atau sistem pemantauan.
Secara konstruksi, MQ-135 terdiri dari lapisan sensitif SnO₂, elektroda
pengukur, elemen pemanas, tabung keramik, dan pelindung logam. Elemen pemanas
berfungsi menjaga suhu kerja sensor agar reaksi kimia pada permukaan SnO₂
berlangsung secara optimal. Sensor dikemas dalam rumah berbahan bakelit dan
tutup logam sehingga cukup kuat untuk digunakan pada berbagai aplikasi
pemantauan kualitas udara.
Sensor MQ-135 bekerja dengan tegangan pemanas sebesar 5 V dan memiliki
resistansi pemanas sekitar 29 Ω ± 3 Ω. Konsumsi daya pemanas maksimum mencapai
950 mW. Sebelum digunakan, sensor memerlukan waktu pemanasan awal (preheat)
lebih dari 48 jam untuk mencapai kondisi kerja yang stabil. Rentang deteksi
sensor berada pada kisaran 10–1000 ppm untuk gas amonia, toluena, hidrogen, dan
asap.
Gambar 12 Grafik Respon Sistem Mq-6
Sensor
Karakteristik sensor dinyatakan melalui rasio resistansi Rs/R₀, di mana Rs
adalah resistansi sensor pada konsentrasi gas tertentu dan R₀ adalah resistansi
sensor pada udara bersih. Nilai Rs akan berubah sesuai dengan jenis dan
konsentrasi gas yang terdeteksi. Semakin tinggi konsentrasi gas pencemar,
semakin besar konduktivitas sensor sehingga nilai resistansi menurun. Hubungan
antara konsentrasi gas dan rasio Rs/R₀ ditunjukkan melalui kurva sensitivitas
yang tersedia pada datasheet dan digunakan sebagai dasar dalam proses kalibrasi
sensor.
Kinerja MQ-135 dipengaruhi oleh suhu dan kelembapan lingkungan. Perubahan
kedua parameter tersebut dapat menyebabkan perubahan karakteristik resistansi
sensor sehingga memengaruhi hasil pengukuran. Oleh karena itu, pada aplikasi
yang membutuhkan tingkat akurasi tinggi diperlukan proses kalibrasi dan
kompensasi suhu maupun kelembapan agar hasil pengukuran kualitas udara lebih
akurat.
4.8 DHT22 Sensor
Sensor DHT22 (juga dikenal sebagai AM2302) merupakan sensor digital yang
digunakan untuk mengukur suhu dan kelembapan relatif udara (relative
humidity/RH) dalam satu perangkat. Sensor ini menggunakan elemen pengindera
kelembapan bertipe kapasitor polimer serta sensor suhu yang telah dikalibrasi
secara digital. DHT22 dirancang untuk memberikan hasil pengukuran yang akurat,
stabil, dan memiliki ketahanan jangka panjang, sehingga banyak digunakan pada
sistem pemantauan lingkungan, stasiun cuaca, sistem kendali suhu dan
kelembapan, serta aplikasi Internet of Things (IoT).
Gambar 13 DHT22 Sensor
Gambar 14 Pinout DHT22 Sensor
|
Tegangan kerja |
3,3–6 V DC |
|
entang pengukuran kelembapan |
0–100% RH |
|
Rentang pengukuran suhu |
-40°C hingga 80°C |
|
Akurasi kelembapan |
±2% RH (maksimum ±5% RH) |
|
Akurasi suhu |
±0,5°C |
|
Resolusi pengukuran |
0,1% RH dan 0,1°C |
|
Periode pembacaan data |
2 detik |
Prinsip kerja DHT22 didasarkan pada pengukuran perubahan kapasitansi pada
sensor kelembapan polimer dan perubahan karakteristik sensor suhu internal.
Data hasil pengukuran kemudian diproses oleh mikrokontroler 8-bit yang
terintegrasi di dalam sensor. Setiap sensor telah dikalibrasi di pabrik
menggunakan ruang kalibrasi khusus, dan koefisien kalibrasi tersebut disimpan
pada memori OTP (One-Time Programmable). Saat sensor bekerja, data pengukuran
akan dikoreksi menggunakan koefisien tersebut sehingga menghasilkan keluaran
digital yang lebih akurat dan stabil.
DHT22 menggunakan komunikasi digital single-bus sehingga hanya memerlukan
satu jalur data untuk berkomunikasi dengan mikrokontroler. Sensor mengirimkan
data dalam format 40-bit yang terdiri dari data kelembapan, data suhu, dan
checksum untuk verifikasi kesalahan transmisi. Sistem komunikasi digital ini
membuat DHT22 lebih tahan terhadap gangguan dibandingkan sensor analog serta
tidak memerlukan rangkaian pengolah sinyal tambahan.
Sensor DHT22 dapat bekerja pada tegangan suplai 3,3–6 V DC dengan konsumsi
arus sekitar 1–1,5 mA saat pengukuran dan sekitar 40–50 µA pada mode siaga.
Sensor mampu mengukur kelembapan pada rentang 0–100% RH dan suhu pada rentang
-40°C hingga 80°C. Akurasi pengukuran kelembapan mencapai ±2% RH (maksimum ±5%
RH), sedangkan akurasi suhu mencapai ±0,5°C. Resolusi pengukuran untuk suhu dan
kelembapan masing-masing sebesar 0,1°C dan 0,1% RH.
Gambar 15 Grafik Respon Sistem DHT22
Sensor
DHT22 memiliki periode pengambilan data rata-rata setiap 2 detik. Oleh
karena itu, pembacaan sensor tidak disarankan dilakukan lebih cepat dari
interval tersebut agar data yang diperoleh tetap valid dan akurat. Selain itu,
sensor memiliki fitur kompensasi suhu otomatis (temperature compensation) yang
membantu meningkatkan akurasi pengukuran kelembapan karena nilai kelembapan
relatif sangat dipengaruhi oleh suhu lingkungan.
Karena memiliki ukuran yang kecil, konsumsi daya rendah, serta kemampuan
transmisi data hingga sekitar 20 meter, DHT22 banyak digunakan pada sistem
monitoring lingkungan, rumah pintar (smart home), pertanian cerdas, inkubator,
sistem HVAC (Heating, Ventilation, and Air Conditioning), serta berbagai
aplikasi berbasis mikrokontroler seperti Arduino, ESP32, dan STM32.
5. Flowchart dan Listing Program[Kembali]
Main.h
:
/* USER
CODE BEGIN Header */
/**
******************************************************************************
* @file : main.h
* @brief : Header for main.c file.
* This file contains the
common defines of the application.
******************************************************************************
* @attention
*
* Copyright (c) 2026 STMicroelectronics.
* All rights reserved.
*
* This software is licensed under terms that
can be found in the LICENSE file
* in the root directory of this software
component.
* If no LICENSE file comes with this
software, it is provided AS-IS.
*
******************************************************************************
*/
/* USER
CODE END Header */
/* Define
to prevent recursive inclusion -------------------------------------*/
#ifndef __MAIN_H
#define __MAIN_H
#ifdef __cplusplus
extern "C" {
#endif
/*
Includes ------------------------------------------------------------------*/
#include "stm32f1xx_hal.h"
/* Private
includes ----------------------------------------------------------*/
/* USER
CODE BEGIN Includes */
/* USER
CODE END Includes */
/*
Exported types ------------------------------------------------------------*/
/* USER
CODE BEGIN ET */
/* USER
CODE END ET */
/*
Exported constants --------------------------------------------------------*/
/* USER
CODE BEGIN EC */
/* USER
CODE END EC */
/* Exported
macro ------------------------------------------------------------*/
/* USER
CODE BEGIN EM */
/* USER
CODE END EM */
void HAL_TIM_MspPostInit(TIM_HandleTypeDef
*htim);
/*
Exported functions prototypes ---------------------------------------------*/
void Error_Handler(void);
/* USER
CODE BEGIN EFP */
/* USER
CODE END EFP */
/* Private
defines -----------------------------------------------------------*/
#define Mq_6_Pin GPIO_PIN_0
#define Mq_6_GPIO_Port GPIOA
#define Mq_135_Pin GPIO_PIN_1
#define Mq_135_GPIO_Port GPIOA
#define Flame_Sensor_Pin GPIO_PIN_2
#define Flame_Sensor_GPIO_Port GPIOA
#define LED_Green_Pin GPIO_PIN_0
#define LED_Green_GPIO_Port GPIOB
#define LED_Red_Pin GPIO_PIN_1
#define LED_Red_GPIO_Port GPIOB
#define LED_Yellow_Pin GPIO_PIN_2
#define LED_Yellow_GPIO_Port GPIOB
#define D5_LCD_Pin GPIO_PIN_12
#define D5_LCD_GPIO_Port GPIOB
#define D4_LCD_Pin GPIO_PIN_13
#define D4_LCD_GPIO_Port GPIOB
#define E_LCD_Pin GPIO_PIN_14
#define E_LCD_GPIO_Port GPIOB
#define RS_LCD_Pin GPIO_PIN_15
#define RS_LCD_GPIO_Port GPIOB
#define Exhaust_Fan_Pin GPIO_PIN_4
#define Exhaust_Fan_GPIO_Port GPIOB
#define DHT22_Pin GPIO_PIN_6
#define DHT22_GPIO_Port GPIOB
#define D7_LCD_Pin GPIO_PIN_8
#define D7_LCD_GPIO_Port GPIOB
#define D6_LCD_Pin GPIO_PIN_9
#define D6_LCD_GPIO_Port GPIOB
#define Buzzer_Pin GPIO_PIN_3
#define Buzzer_GPIO_Port GPIOB
/* USER
CODE BEGIN Private defines */
/* USER
CODE END Private defines */
#ifdef __cplusplus
}
#endif
#endif /* __MAIN_H */
Main.c
:
/* USER
CODE BEGIN Header */
/**
******************************************************************************
* @file : main.c
* @brief : Main program body (Buzzer Sound
Level & Speed Control)
******************************************************************************
* @attention
* Copyright (c) 2026 STMicroelectronics. All
rights reserved.
******************************************************************************
*/
/* USER CODE
END Header */
/*
Includes ------------------------------------------------------------------*/
#include "main.h"
/* USER
CODE BEGIN Includes */
#include "lcd.h"
#include "dht22.h"
#include <stdio.h>
/* USER
CODE END Includes */
/* Private
typedef -----------------------------------------------------------*/
/* USER
CODE BEGIN PTD */
/* USER
CODE END PTD */
/* Private
define ------------------------------------------------------------*/
/* USER
CODE BEGIN PD */
#define THRESHOLD_MQ6_WASPADA 2000
#define THRESHOLD_MQ6_BAHAYA 3000
#define THRESHOLD_MQ135_WASPADA 2000
#define THRESHOLD_MQ135_BAHAYA 3000
#define THRESHOLD_SUHU_BAHAYA 35.0
/* USER
CODE END PD */
/* Private
macro -------------------------------------------------------------*/
/* USER
CODE BEGIN PM */
/* USER
CODE END PM */
/* Private
variables ---------------------------------------------------------*/
ADC_HandleTypeDef
hadc1;
/* USER
CODE BEGIN PV */
uint32_t
adc_mq6 = 0;
uint32_t
adc_mq135 = 0;
uint8_t flame
= 0; // 1 = Api, 0 = Aman (Sesuai hardware Anda)
float
suhu = 0.0;
float
kelembaban = 0.0;
// Variabel
penanda status sebelumnya untuk mencegah LCD berkedip
(Flicker)
uint8_t
status_sebelumnya = 0;
/* USER
CODE END PV */
/* Private
function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_ADC1_Init(void);
/* USER
CODE BEGIN PFP */
void Baca_Semua_Sensor(void);
void Proses_Logika_Sistem(void);
/* USER
CODE END PFP */
/* Private
user code ---------------------------------------------------------*/
/* USER
CODE BEGIN 0 */
/* USER
CODE END 0 */
/**
* @brief
The application entry point.
* @retval int
*/
int main(void)
{
/* MCU
Configuration--------------------------------------------------------*/
HAL_Init();
/* Configure the system clock */
SystemClock_Config();
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_ADC1_Init();
/* USER CODE BEGIN 2 */
// Inisialisasi Awal Layar
LCD
LCD_Init();
LCD_Clear();
LCD_SetCursor(0, 0);
LCD_WriteString("SISTEM STARTING");
HAL_Delay(1000);
LCD_Clear();
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
Baca_Semua_Sensor(); // Mengambil data terupdate
dari seluruh sensor
Proses_Logika_Sistem(); // Mengontrol aktuator berdasarkan
kondisi sensor
// Catatan: Jeda delay utama
dihilangkan/diperkecil agar Soft-PWM di Waspada berjalan
mulus
HAL_Delay(10);
}
/* USER CODE END 3 */
}
/**
* @brief System Clock Configuration
* @retval None
*/
void SystemClock_Config(void)
{
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};
RCC_OscInitStruct.OscillatorType =
RCC_OSCILLATORTYPE_HSI;
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
RCC_OscInitStruct.HSICalibrationValue =
RCC_HSICALIBRATION_DEFAULT;
RCC_OscInitStruct.PLL.PLLState =
RCC_PLL_NONE;
if
(HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
{
Error_Handler();
}
RCC_ClkInitStruct.ClockType =
RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
RCC_ClkInitStruct.SYSCLKSource =
RCC_SYSCLKSOURCE_HSI;
RCC_ClkInitStruct.AHBCLKDivider =
RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider =
RCC_HCLK_DIV1;
RCC_ClkInitStruct.APB2CLKDivider =
RCC_HCLK_DIV1;
if
(HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
{
Error_Handler();
}
PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC;
PeriphClkInit.AdcClockSelection =
RCC_ADCPCLK2_DIV2;
if
(HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
{
Error_Handler();
}
}
/**
* @brief ADC1 Initialization Function
* @param None
* @retval None
*/
static void MX_ADC1_Init(void)
{
hadc1.Instance = ADC1;
hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE;
hadc1.Init.ContinuousConvMode = DISABLE;
hadc1.Init.DiscontinuousConvMode = DISABLE;
hadc1.Init.ExternalTrigConv =
ADC_SOFTWARE_START;
hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
hadc1.Init.NbrOfConversion = 1;
if (HAL_ADC_Init(&hadc1) != HAL_OK)
{
Error_Handler();
}
}
/**
* @brief GPIO Initialization Function
* @param None
* @retval None
*/
static void MX_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
/* GPIO Ports Clock Enable */
__HAL_RCC_GPIOD_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
__HAL_RCC_AFIO_CLK_ENABLE();
/* USER CODE BEGIN MX_GPIO_Init_1 */
// Membebaskan pin PB3 dari fungsi
internal debugger JTAG bawaan pabrik
__HAL_AFIO_REMAP_SWJ_NOJTAG();
/* USER CODE END MX_GPIO_Init_1 */
// Matikan semua pin output di
awal demi keamanan hardware
HAL_GPIO_WritePin(GPIOB,
LED_Green_Pin|LED_Red_Pin|LED_Yellow_Pin|D5_LCD_Pin
|D4_LCD_Pin|E_LCD_Pin|RS_LCD_Pin|Buzzer_Pin
|Exhaust_Fan_Pin|DHT22_Pin|D7_LCD_Pin|D6_LCD_Pin, GPIO_PIN_RESET);
// Konfigurasi Flame Sensor INPUT pada
PORT A
GPIO_InitStruct.Pin = Flame_Sensor_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(Flame_Sensor_GPIO_Port,
&GPIO_InitStruct);
// Konfigurasi Seluruh Output pada
PORT B
GPIO_InitStruct.Pin =
LED_Green_Pin|LED_Red_Pin|LED_Yellow_Pin|D5_LCD_Pin
|D4_LCD_Pin|E_LCD_Pin|RS_LCD_Pin|Buzzer_Pin
|Exhaust_Fan_Pin|DHT22_Pin|D7_LCD_Pin|D6_LCD_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
}
/* USER
CODE BEGIN 4 */
/**
* @brief
Fungsi penanganan pembacaan multi-channel ADC dan
GPIO sensor secara sekuensial
* @retval None
*/
void Baca_Semua_Sensor(void)
{
ADC_ChannelConfTypeDef sConfig = {0};
// 1. Ambil Nilai ADC MQ-6
(Channel 0 -> PA0)
sConfig.Channel = ADC_CHANNEL_0;
sConfig.Rank = ADC_REGULAR_RANK_1;
sConfig.SamplingTime =
ADC_SAMPLETIME_7CYCLES_5;
HAL_ADC_ConfigChannel(&hadc1,
&sConfig);
HAL_ADC_Start(&hadc1);
if(HAL_ADC_PollForConversion(&hadc1,
10) == HAL_OK)
{
adc_mq6 = HAL_ADC_GetValue(&hadc1);
}
HAL_ADC_Stop(&hadc1);
// 2. Ambil Nilai ADC MQ-135
(Channel 1 -> PA1)
sConfig.Channel = ADC_CHANNEL_1;
sConfig.Rank = ADC_REGULAR_RANK_1;
sConfig.SamplingTime =
ADC_SAMPLETIME_7CYCLES_5;
HAL_ADC_ConfigChannel(&hadc1,
&sConfig);
HAL_ADC_Start(&hadc1);
if(HAL_ADC_PollForConversion(&hadc1,
10) == HAL_OK)
{
adc_mq135 = HAL_ADC_GetValue(&hadc1);
}
HAL_ADC_Stop(&hadc1);
// 3. Baca Status Flame Sensor (1 = Terdeteksi
Api)
flame = HAL_GPIO_ReadPin(Flame_Sensor_GPIO_Port,
Flame_Sensor_Pin);
// 4. Baca Data Suhu dan
Kelembaban DHT22
DHT22_GetData(&suhu, &kelembaban);
}
/**
* @brief
Fungsi pemrosesan keputusan logis sistem
untuk mengontrol aktuator
* @retval None
*/
void Proses_Logika_Sistem(void)
{
char baris_lcd[16];
//
=========================================================================
// KONDISI 3: STATUS BAHAYA (Bunyi Kencang
& Konstan)
//
=========================================================================
if ((flame == 1) ||
((adc_mq6 >= THRESHOLD_MQ6_BAHAYA)
&&
(adc_mq135 >= THRESHOLD_MQ135_BAHAYA)
&&
(suhu >= THRESHOLD_SUHU_BAHAYA)))
{
HAL_GPIO_WritePin(GPIOB,
LED_Red_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOB, LED_Yellow_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB,
LED_Green_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB, Exhaust_Fan_Pin,
GPIO_PIN_SET);
// DI SINI: Buzzer diset HIGH murni
terus menerus agar berbunyi MAKSIMAL/KENCANG
HAL_GPIO_WritePin(GPIOB, Buzzer_Pin, GPIO_PIN_SET);
if (status_sebelumnya != 1)
{
LCD_Clear();
LCD_SetCursor(0, 0);
LCD_WriteString("STATUS:
BAHAYA");
status_sebelumnya = 1;
}
sprintf(baris_lcd,
"Suhu: %.1f C", suhu);
LCD_SetCursor(0, 1);
LCD_WriteString(baris_lcd);
}
//
=========================================================================
// KONDISI 2: STATUS WASPADA (Bunyi Pelan
& Ritme Lambat)
//
=========================================================================
else if ((adc_mq6 >=
THRESHOLD_MQ6_WASPADA) || (adc_mq135 >= THRESHOLD_MQ135_WASPADA))
{
HAL_GPIO_WritePin(GPIOB,
LED_Yellow_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOB,
LED_Red_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB,
LED_Green_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB, Exhaust_Fan_Pin,
GPIO_PIN_SET);
if (status_sebelumnya != 2)
{
LCD_Clear();
LCD_SetCursor(0, 0);
LCD_WriteString("STATUS:
WASPADA");
status_sebelumnya = 2;
}
sprintf(baris_lcd,
"Suhu: %.1f C", suhu);
LCD_SetCursor(0, 1);
LCD_WriteString(baris_lcd);
// DI SINI TRICKNYA: Membuat loop
Soft-PWM dengan siklus tugas kecil (Duty Cycle
~15%)
// dan durasi total yang
membuat ritme bip-nya berjarak lambat.
for(int i = 0; i < 30;
i++)
{
HAL_GPIO_WritePin(GPIOB, Buzzer_Pin, GPIO_PIN_SET);
HAL_Delay(2); // Menyala sangat sebentar
(membuat suara PELAN)
HAL_GPIO_WritePin(GPIOB, Buzzer_Pin, GPIO_PIN_RESET);
HAL_Delay(13); // Mati lebih lama (membuat
ritme LAMBAT)
}
}
//
=========================================================================
// KONDISI 1: STATUS AMAN (Mati Total)
//
=========================================================================
else
{
HAL_GPIO_WritePin(GPIOB, LED_Green_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOB,
LED_Yellow_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB,
LED_Red_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB, Buzzer_Pin, GPIO_PIN_RESET); // Buzzer Mati
HAL_GPIO_WritePin(GPIOB, Exhaust_Fan_Pin,
GPIO_PIN_RESET);
if (status_sebelumnya != 3)
{
LCD_Clear();
LCD_SetCursor(0, 0);
LCD_WriteString("STATUS:
AMAN");
status_sebelumnya = 3;
}
sprintf(baris_lcd,
"Suhu: %.1f C", suhu);
LCD_SetCursor(0, 1);
LCD_WriteString(baris_lcd);
}
}
/* USER
CODE END 4 */
/**
* @brief
This function is executed in case of error occurrence.
* @retval None
*/
void Error_Handler(void)
{
__disable_irq();
while (1)
{
}
}
6. Rangkaian Simulasi dan Prinsip Kerja[Kembali]
- Rangkaian Proteus
Setelah inisialisasi selesai, sistem akan masuk ke dalam tahap pemindaian kondisi ruangan secara bertahap menggunakan logika percabangan conditional:
Kondisi Aman: Mikrokontroler pertama-tama memeriksa pembacaan dari sensor MQ-6. Jika sensor MQ-6 tidak mendeteksi adanya kebocoran gas (Kondisi 'Tidak'), maka sistem langsung dikategorikan dalam Kondisi Aman. Pada kondisi ini, mikrokontroler akan menyalakan LED Hijau, memastikan Buzzer Mati, dan Fan (Kipas) Mati. Status "Kondisi Aman" ini kemudian akan dikirim ke LCD untuk ditampilkan.
Kondisi Waspada: Jika sensor MQ-6 mendeteksi adanya gas (Kondisi 'Ya'), sistem tidak langsung menyimpulkan bahaya besar, melainkan memeriksa Flame Sensor. Jika Flame Sensor tidak mendeteksi adanya api, atau jika api terdeteksi namun sensor kualitas udara MQ-135 tidak mendeteksi gas/asap berbahaya lainnya, sistem akan dikategorikan ke dalam Kondisi Waspada. Pada situasi ini, mikrokontroler mengaktifkan LED Kuning, membunyikan Buzzer secara pelan sebagai peringatan dini, serta menyalakan Fan (Kipas) melalui driver transistor Q1 untuk membuang udara di dalam ruangan.
Kondisi Bahaya: Apabila ketiga sensor utama menunjukkan pembacaan yang kritis—di mana sensor MQ-6 mendeteksi gas, Flame Sensor mendeteksi api, dan sensor MQ-135 juga mendeteksi asap pekat secara bersamaan (seluruh percabangan bernilai 'Ya')—maka sistem langsung beralih ke Kondisi Bahaya. Mikrokontroler akan segera menyalakan LED Merah, membunyikan Buzzer secara keras sebagai alarm evakuasi, dan memutar Fan (Kipas) dengan performa penuh untuk mengurai akumulasi gas berbahaya di dalam ruangan.
8. Kesimpulan dan Saran[Kembali]
8.1
Kesimpulan
Berdasarkan perancangan proyek
Sistem Peringatan Dini dan Mitigasi Kebakaran Akibat Kebocoran Gas LPG pada
Gudang Penyimpanan Menggunakan STM32, dapat disimpulkan bahwa sistem yang
dirancang mampu memberikan solusi keamanan yang lebih efektif dan proaktif
dalam mendeteksi potensi bahaya kebocoran gas LPG dan kebakaran. Integrasi mikrokontroler
STM32F103C8T6 dengan sensor MQ-6, MQ-135, DHT22, dan Flame Sensor memungkinkan
pemantauan kondisi lingkungan gudang secara real-time melalui pendekatan
multi-sensor sehingga meningkatkan akurasi deteksi dan mengurangi kemungkinan
terjadinya alarm palsu. Sistem ini juga dilengkapi mekanisme peringatan
berjenjang melalui LED indikator, buzzer, dan LCD 16×2 yang memudahkan operator
dalam mengetahui tingkat kondisi bahaya. Selain itu, penerapan exhaust fan yang
aktif secara otomatis saat terdeteksi kebocoran gas menjadi bentuk mitigasi
awal yang mampu mengurangi konsentrasi gas berbahaya di udara. Dengan demikian,
sistem yang dirancang tidak hanya berfungsi sebagai alat pendeteksi, tetapi
juga sebagai sistem respons awal yang dapat meningkatkan keselamatan kerja,
melindungi aset usaha, serta meminimalkan risiko kerugian akibat kebakaran
maupun ledakan pada gudang penyimpanan LPG.
8.2
Saran
Untuk pengembangan lebih lanjut, sistem ini dapat ditingkatkan dengan menambahkan modul komunikasi berbasis Internet of Things (IoT) seperti Wi-Fi atau GSM agar informasi kondisi bahaya dapat dikirim secara otomatis kepada pemilik atau petugas keamanan melalui aplikasi maupun pesan singkat. Selain itu, diperlukan proses kalibrasi sensor secara berkala untuk menjaga akurasi pembacaan dan keandalan sistem dalam jangka panjang. Penggunaan sensor dengan tingkat sensitivitas yang lebih tinggi serta penambahan sistem pemadam otomatis (automatic fire suppression system) juga dapat menjadi pengembangan berikutnya guna meningkatkan efektivitas mitigasi kebakaran. Implementasi sistem pada lingkungan nyata perlu disertai pengujian yang lebih komprehensif terhadap berbagai kondisi operasional agar diperoleh tingkat keandalan dan keamanan yang optimal sebelum diterapkan secara luas pada agen maupun gudang penyimpanan LPG.
File Zip
Rangkaian Project [Klik Disini]
File Zip
Library Komponen [Klik Disini]
Datasheet STM32F103C8
[Klik Disini]
Datasheet
Flame Sensor [Klik Disini]
Datasheet
mq-6 [Klik Disini]
Datasheet mq-135 [Klik Disini]
Datasheet
dht22 [Klik Disini]












Tidak ada komentar:
Posting Komentar