Arduino 기반 유해 가스 누출 감지 및 자동 차단 시스템
부품 및 소모품
| 부품 |
수량 |
| Arduino UNO |
1 |
| 가스 감지 센서 (수소 감지용, 예: MQ-8 등) |
1 |
| DC 모터 12V (자동 차단 밸브/게이트 구동용) |
4 |
앱 및 온라인 서비스
- Arduino IDE
- Tinkercad (시뮬레이션용)
프로젝트 소개
목적
화학 플랜트 등에서 유해 가스(황화수소, 이산화질소, 일산화탄소 등) 누출을 실시간 감지하고, 경보음 발생과 동시에 자동으로 차단 밸브를 닫아 사고를 예방하는 시스템입니다. 수동 방식 대비 빠른 대응과 정확한 감지가 가능합니다.
동작 원리
- 가스 센서가 유해 가스 농도 감지 (아날로그 값 읽기)
- 임계값(예: 700 이상) 초과 시:
- LCD에 "Caution: Gas leak" 경고 표시
- 피에조 부저로 경보음 발생
- 4개의 DC 모터 구동 → 공기 밀폐 게이트/밸브 자동 닫힘
- 정상 시: LCD에 "The environment is Safe" 표시, 모든 출력 OFF
작동 영상: YouTube 링크
소스 코드
#include <LiquidCrystal.h>
// LCD 핀: RS=8, E=9, D4=10, D5=11, D6=12, D7=13
LiquidCrystal lcd(8, 9, 10, 11, 12, 13);
int gasSensorPin = A0;
int piezoPin = 3;
int motorPins[4] = {4, 5, 6, 7};
void setup() {
lcd.begin(16, 2);
pinMode(gasSensorPin, INPUT);
pinMode(piezoPin, OUTPUT);
for (int i = 0; i < 4; i++) {
pinMode(motorPins[i], OUTPUT);
}
}
void loop() {
lcd.clear();
int gasValue = analogRead(gasSensorPin);
if (gasValue >= 700) { // 임계값: 환경에 맞게 조정 필요
// 경보 발생
digitalWrite(piezoPin, HIGH);
for (int i = 0; i < 4; i++) digitalWrite(motorPins[i], HIGH);
lcd.print("Caution:Gas leak");
delay(1000);
} else {
// 정상 상태
digitalWrite(piezoPin, LOW);
for (int i = 0; i < 4; i++) digitalWrite(motorPins[i], LOW);
lcd.print("The environment");
lcd.setCursor(0, 1);
lcd.print("is Safe");
delay(1000);
}
}
회로도
가스 센서 VCC→5V, GND→GND, OUT→A0. LCD 16x2 표준 6핀 연결. 피에조 부저 핀 3. DC 모터 4개는 트랜지스터/모터 드라이버(예: L298N)를 통해 핀 4~7로 제어 (직접 연결 불가). 외부 12V 전원 필요.
개선 사항 제안
- 가스 종류별 전용 센서(MQ-135, MQ-7, MQ-136 등) 다중 배치
- 임계값 캘리브레이션 기능 추가 (보정 모드)
- WiFi/LoRa/Sigfox 등으로 원격 알림 전송
- 데이터 로깅(SD 카드) 및 이력 관리
- 모터 드라이버 회로 추가 (현재 코드는 로직만, 실제 구동엔 드라이버 필수)
- 비상 정지/리셋 버튼 추가