Sensor gas MQ‑2 adalah sensor semikonduktor oksida logam (SnO₂) yang dirancang untuk mendeteksi berbagai jenis gas mudah terbakar maupun asap, seperti LPG, propana, metana, hidrogen, alkohol, karbon monoksida, serta asap rokok.
Berikut adalah cara memprogram sensor gas mq-2 dengan esp32 :
#include <Arduino.h>
const int port_gas_mq2 = A0;
float konversiKePPM_gas_mq2(int sensorValue) {
float RsRo = (1023.0 / sensorValue) - 1.0;
float ppm = 1.0955 * pow(10, 1.3993 * RsRo);
return ppm;
}
void setup()
{
Serial.begin(9600);
pinMode(port_gas_mq2, INPUT);
}
void loop(){
float gas_mq2 = konversiKePPM_gas_mq2(analogRead(port_gas_mq2));
Serial.println("GAS MQ2 : " + (String)gas_mq2);
}
Dibawah ini adalah penjelasan kode di atas :
Bagian 1: Import dan Inisialisasi
#include <Arduino.h>
- Ini adalah pustaka utama Arduino (biasanya otomatis di-include di IDE Arduino).
- Digunakan untuk fungsi dasar seperti
pinMode
,analogRead
,Serial
, dll.
const int port_gas_mq2 = A0;
- Mendefinisikan pin analog A0 sebagai input dari sensor MQ-2.
const
artinya nilainya tetap (tidak bisa diubah).
Bagian 2: Fungsi Konversi Analog ke PPM
float konversiKePPM_gas_mq2(int sensorValue) {
float RsRo = (1023.0 / sensorValue) - 1.0;
float ppm = 1.0955 * pow(10, 1.3993 * RsRo);
return ppm;
}
Penjelasan:
sensorValue
: Nilai ADC darianalogRead()
, rentangnya 0–1023.RsRo
: Rasio resistansi sensor gas saat ini (Rs) terhadap resistansi referensi (Ro). Formula ini biasanya dipakai dalam sensor gas untuk menghitung rasio perubahan konduktivitas. RsRo=(1023sensorValue)−1RsRo = \left( \frac{1023}{sensorValue} \right) – 1ppm
: Menggunakan model persamaan eksponensial untuk mengkonversi nilaiRs/Ro
ke nilai PPM (Parts Per Million). ppm=1.0955×10(1.3993×RsRo)ppm = 1.0955 \times 10^{(1.3993 \times RsRo)}
Catatan: Persamaan ini biasanya berdasarkan data kurva karakteristik sensor MQ-2 dari datasheet. Tetapi bisa bervariasi tergantung gas dan kalibrasi.
Bagian 3: setup()
– Inisialisasi Awal
void setup()
{
Serial.begin(9600);
pinMode(port_gas_mq2, INPUT);
}
Serial.begin(9600)
: Mengaktifkan komunikasi serial pada baudrate 9600.pinMode(..., INPUT)
: Menentukan bahwa pinA0
akan digunakan untuk input (baca dari sensor).
Bagian 4: loop()
– Fungsi Utama Berulang
void loop(){
float gas_mq2 = konversiKePPM_gas_mq2(analogRead(port_gas_mq2));
Serial.println("GAS MQ2 : " + (String)gas_mq2);
}
Penjelasan:
analogRead(port_gas_mq2)
:- Membaca sinyal analog dari sensor MQ-2 (nilai 0–1023).
konversiKePPM_gas_mq2(...)
:- Mengubah nilai analog menjadi estimasi konsentrasi gas dalam PPM.
Serial.println(...)
:- Menampilkan hasil ke monitor serial seperti:
GAS MQ2 : 351.4
- Menampilkan hasil ke monitor serial seperti:
Ringkasan Sederhana:
Kode ini:
- Membaca data dari sensor gas MQ-2.
- Mengubah data analog menjadi estimasi konsentrasi gas dalam satuan PPM.
- Menampilkan hasilnya melalui serial monitor.
Catatan Penting:
- Tidak semua sensor MQ-2 akan memberikan hasil akurat dengan rumus ini. Kalibrasi (
Ro
) biasanya perlu ditentukan berdasarkan lingkungan bersih (tanpa gas). - Nilai
1.0955
dan1.3993
bisa berbeda tergantung dari jenis gas yang diukur (LPG, CH₄, H₂, CO, dsb).
untuk diskusi bisa kontak dibawah ini :

Sosial media :