Sistem Deteksi Gempa — Kebakaran Menggunakan Arduino

Malik Akbar Hashemi Rafsanjani
6 min readApr 10, 2023

--

Introduction

Gempa Turki-Suriah memakan lebih dari 50 ribu korban. Banyak dari mereka yang masih tidur pulas, terlelap di tengah malam. Padahal, jumlah korban sebenarnya dapat ditekan dengan adanya alarm/sirene yang berbunyi di seluruh penjuru tempat ketika gempa diketahui.

Kejadian itu menjadi motivasi kami untuk membuat pendeteksi gempa sederhana dengan menggunakan platform Arduino. Pendeteksi gempa dapat disimulasikan dengan menggunakan sensor kemiringan dan sensor getaran. Pendeteksi gempa ini dapat dipasang di outdoor maupun indoor. Khusus untuk indoor, kami memiliki ide untuk menggabungkan pendeteksi gempa dengan pendeteksi kebakaran pada satu platform yang sama. Pendeteksi kebakaran dapat disimulasikan dengan menggunakan sensor api dan sensor asap.

Secara umum, sistem dapat mendeteksi gempa dalam bentuk kemiringan dan getaran maupun kebakaran dalam bentuk nyala api dan asap. Ketika gempa ataupun kebakaran terdeteksi, maka alarm (buzzer) akan berdering hingga tombol reset (switch) ditekan.

Berikut adalah alat dan bahan yang digunakan dalam membuat sistem pendeteksi gempa-kebakaran.

  • Arduino UNO
  • Software Arduino IDE
  • Vibration sensor (digital — 3 pins)
  • Tilt sensor (digital — 3 pins)
  • Flame sensor (digital — 3 pins)
  • Smoke sensor (digital — 3 pins)
  • Buzzer
  • Switch
  • Jumper wires
  • USB cable
  • Breadboard

Circuit

Berikut adalah langkah-langkah untuk membuat sistem pendeteksi gempa-kebakaran.

  1. Lakukan koneksi antara komputer atau komputer jinjing dengan papan Arduino.
  2. Pasang dua sensor pada papan Arduino, yaitu sensor vibrasi (vibration sensor) dan sensor kemiringan (tilt sensor).
  3. Pasang alarm dan tombol pada papan Arduino.
  4. Pasangkan kabel antara GND dan jalur negatif yang terletak pada sisi kanan papan Arduino.
  5. Pasangkan kabel antara pin 5V dan jalur positif yang terletak pada sisi kanan papan Arduino. Sekarang, jalur positif dan jalur negatif sudah dapat digunakan.
  6. Mula-mula, kita akan memasang kabel yang dibutuhkan pada alarm. Pasangkan sisi panjang pada alarm ke pin ~11 dan sisi pendek pada jalur negatif. Sekarang, alarm sudah terpasang dengan baik dan dapat dilakukan tes.
  7. Berikutnya, untuk membuat pendeteksi gempa, kita akan memasang kabel yang dibutuhkan pada tilt sensor. Terdapat tiga kaki pada tilt sensor. Kaki yang tengah dihubungkan dengan jalur negatif menggunakan kabel. Pada kaki yang kiri, hubungkan kaki kiri dengan pin ~6. Pada kaki yang kanan, hubungkan kaki kanan dengan jalur positif.
  8. Setelah selesai memasang sensor kemiringan, akan dipasang kabel-kabel yang dibutuhkan pada sensor vibrasi. Hubungkan kaki kanan dengan jalur positif, dan kaki kiri dengan pin 7.
  9. Untuk membuat pendeteksi kebakaran, kita akan menghubungkan flame sensor ke Arduino. Pada kaki yang kiri (DO), hubungan kaki kiri dengan pin 13. Kaki tengah (GND) dihubungkan ke negatif dan kaki kanan (VCC) dihubungkan ke positif.
  10. Selanjutnya, kita juga menggunakan smoke sensor untuk mendeteksi asap. Kaki pertama (AO) dihubungkan ke pin analog input A0. Kaki ketiga (GND) dihubungkan ke negatif, dan kaki keempat (VCC) dihubungkan ke positif.
  11. Terakhir, kita akan memasang tombol. Tombol dipasangkan secara horizontal menggunakan tiga kabel dan satu resistor. Pada salah satu sisi, pasangkan kabel pada bagian bawah dengan pin 1. Pada bagian atasnya tidak perlu dipasangkan apapun. Pada sisi lain, pasangankan resistor / hambatan pada bagian bawah. Resistor kemudian dihubungkan dengan suatu kabel menuju jalur negatif. Pada bagian atas, hubungkan dengan jalur positif menggunakan kabel.

Programming the System

Sistem deteksi gempa dan api ini dibangun menggunakan Arduino membutuhkan programming untuk dapat beroperasi. Bahasa pemrograman yang digunakan adalah Arduino Programming Language (APL), yaitu bahasa berbasis C++ yang dirancang khusus untuk digunakan dengan mikrokontroler Arduino. Pasa sistem ini, kode bertanggung jawab untuk membaca input dari berbagai sensor dan mengontrol output dari buzzer.

Kode untuk sistem dipecah menjadi beberapa bagian, masing-masing bertanggung jawab untuk tugas-tugas tertentu. Bagian pertama merupakan bagian yang mendeklarasikan pin yang digunakan untuk berbagai sensor dan komponen output seperti buzzer. Bagian kedua, ‘Setup’, menginisialisasi komunikasi serial dan menetapkan pinMode untuk setiap sensor dan komponen keluaran. Bagian ketiga, ‘Loop’, adalah tempat logika utama program dijalankan.

Kode dimulai dengan membaca nilai input dari sensor getaran, sensor kemiringan, sensor api, sensor asap, dan tombol. Jika sensor getaran dan sensor kemiringan mendeteksi nilai tinggi secara bersamaan, mengindikasikan gempa bumi, buzzer dihidupkan dengan menyetel variabel ‘buzzer_on’ ke HIGH dan menuliskan nilai tersebut ke pin output buzzer. Demikian pula, jika sensor api mendeteksi nilai HIGH atau sensor asap mendeteksi nilai tinggi, menandakan adanya kebakaran, buzzer dihidupkan.

Bel dapat dimatikan menggunakan tombol, karena program memeriksa apakah tombol ditekan dan menyetel variabel ‘buzzer_on’ ke LOW, mematikan bel.

Fungsi delay digunakan di akhir bagian ‘loop’ untuk memastikan penundaan 50 milidetik sebelum program berulang lagi.

Berikut merupakan kode lengkap dari sistem ini:

int tilt_inp = 7;
int vib_inp = 8;
int buzzer_out = 12;
int btn_inp = 2;
int buzzer_on = LOW;
int flame_inp = 13;
int smoke_inp = A0;

void setup()
{
Serial.begin(9600);
pinMode(tilt_inp, INPUT);
pinMode(vib_inp, INPUT);
pinMode(buzzer_out, OUTPUT);
pinMode(btn_inp, INPUT);
pinMode(flame_inp, INPUT);
pinMode(smoke_inp, INPUT);
}

int threshold_smoke = 330;

void loop()
{
int vib_val = digitalRead(vib_inp);
int tilt_val = digitalRead(tilt_inp);
int btn_val = digitalRead(btn_inp);
int flame_val = digitalRead(flame_inp);
int smoke_val = analogRead(smoke_inp);

if (vib_val == HIGH && tilt_val == HIGH) {
buzzer_on = HIGH;
digitalWrite(buzzer_out, buzzer_on);
}

if (flame_val == HIGH) {
buzzer_on = HIGH;
digitalWrite(buzzer_out, buzzer_on);
}

if (smoke_val > threshold_smoke) {
buzzer_on = HIGH;
digitalWrite(buzzer_out, buzzer_on);
}

if (btn_val == HIGH) {
buzzer_on = LOW;
digitalWrite(buzzer_out, buzzer_on);
}

delay(50);
}

Sebagai tambahan, nilai delay dapat disesuaikan untuk mengendalikan frekuensi looping dari program.

Testing the System

Setelah selesai melakukan pemasangan sistem deteksi gempa bumi dan kebakaran serta melakukan pemrograman kode, dilakukan pengujian secara menyeluruh untuk memastikan bahwa sistem berjalan dengan baik. Berikut adalah langkah-langkah untuk melakukan tes:

  1. Untuk melakukan tes deteksi gempa, papan Arduino digoyang-goyangkan beberapa saat. Alarm akan berbunyi nyaring walaupun goncangan telah berhenti. Alarm baru akan berhenti ketika pengguna menekan tombol.
  2. Jika pengguna menekan tombol walaupun tidak ada goncangan, alarm tidak akan berbunyi.
  3. Jika terdapat asap, alarm akan berbunyi walaupun asap telah berhenti. Alarm baru akan berhenti ketika pengguna menekan tombol.
  4. Selain itu, jika sensor mendeteksi sesuatu, baik goncangan maupun asap, pada serial monitor akan keluarkan tulisan berupa teks mengenai kondisi terkini.

Dari hasil pengujian, sensor gempa bumi berjalan dengan baik. Ketika digoncangkan, alarm berbunyi dengan nyaring dan baru berhenti ketika pengguna menekan tombol. Selain itu, sensor asap juga berjalan dengan baik di mana sistem akan membunyikan alarm jika nilai deteksi asap di atas nilai tertentu. Akan tetapi, pengujian gagal ketika pengujian kebakaran. Hal ini disebabkan sensor kebakaran yang kami miliki tidak berjalan dengan semestinya di mana sensor selalu memberikan nilai 0 meskipun di dekat api.

Dokumentasi

Foto-foto Board

Video Testing Gempa

Video Testing Smoke dan Flame Sensor

Conclusion

Dari percobaan yang telah kami lakukan, kami menyimpulkan bahwa kami telah berhasil membuat sistem deteksi gempa bumi dan asap untuk kebakaran. Akan tetapi, kami tidak berhasil membuat sistem deteksi api dikarenakan faktor eksternal, yaitu kerusakan sensor.

Kami percaya jika sensor gempa bumi dan kebakaran buatan kami diujikan pada kasus nyata, sensor dapat berjalan dengan baik dan dapat memberikan peringatan dini kepada masyarakat sekitar. Orang yang mendengar sensor ini dapat dengan segera bergegas menyelamatkan diri menuju tempat yang aman.

Kami berharap bahwa untuk pengembangan ke depan, sensor ini dapat diperbaiki secara tampilan sehingga memiliki tampilan yang sederhana dan mudah dibawa-bawa serta mudah digunakan tanpa harus terkoneksi dengan komputer atau komputer jinjing. Selain itu, diharapkan pula bahwa kedepan, dapat digunakan sensor kebakaran yang mumpuni sehingga sensor kebakaran dapat digunakan untuk khalayak umum dengan baik.

--

--

Malik Akbar Hashemi Rafsanjani

a determined software engineering student with a strong desire to learn