ESP8266 MQ3 알코올 센서
이 튜토리얼은 MQ3 알코올 센서를 ESP8266과 연결하여 환경의 에탄올 및 알코올 증기를 측정하는 방법을 설명합니다. MQ3 센서는 호흡 테스트 장치, 알코올 감지 경보, 공기 품질 모니터링 애플리케이션에 유용합니다.
이 가이드에서 다루는 내용:
- MQ3 알코올 센서 모듈을 ESP8266에 배선하기
- 알코올 농도 데이터를 읽도록 ESP8266 프로그래밍하기

필요한 하드웨어
| 1 | × | ESP8266 NodeMCU | 쿠팡 | 아마존 | |
| 1 | × | USB 케이블 타입-A to 타입-C (USB-A PC용) | 쿠팡 | 아마존 | |
| 1 | × | USB 케이블 타입-C to 타입-C (USB-C PC용) | 아마존 | |
| 1 | × | MQ3 Alcohol Sensor | 아마존 | |
| 1 | × | 점퍼케이블 | 쿠팡 | 아마존 | |
| 1 | × | (추천) ESP8266용 스크루 터미널 확장 보드 | 쿠팡 | 아마존 | |
| 1 | × | (추천) ESP8266 Type-C용 전원 분배기 | 쿠팡 | 아마존 |
MQ3 알코올 센서에 대하여
금속 산화물 반도체(MOS) 화학 저항기로 설계된 MQ3는 활성 재료 내의 저항 변화를 통해 알코올을 감지합니다. 이 센서는 측정 범위 전반에 걸쳐 신뢰할 수 있는 감도로 에탄올 증기 감지에 특화되어 있습니다.
감지 소자는 알루미늄 산화물 세라믹 기반 위에 이산화주석(SnO2) 층으로 구성됩니다. 가열을 통해 SnO2가 공기 중 알코올 분자에 반응하도록 활성화됩니다. 보호용 스테인리스 스틸 메쉬가 소자를 감싸 가스가 감지 구역에 접근할 수 있도록 하면서 보호합니다.
일반적인 응용 분야에는 DIY 음주 측정기, 손상 감지 시스템, 알코올 증기 경보 장치, 대기 알코올 측정이 포함됩니다.
기술 사양
- 동작 전압: 5V DC
- 부하 저항: 200 KΩ
- 히터 저항: 33Ω ± 5%
- 가열 소비: < 800mW
- 감지 저항: 1 MΩ – 8 MΩ
- 감지 범위: 25 – 500 ppm(백만분율)
- 예열 시간: 처음 사용 시 24-48시간
ppm이란? ppm(parts-per-million) 측정값은 농도 비율을 나타냅니다. 500ppm의 경우 100만 개의 총 가스 분자 중 500개의 알코올 분자가 있으며, 나머지 999,500개는 대기 가스입니다.
핀아웃
MQ3 센서 모듈에는 네 개의 핀이 있습니다:
- VCC 핀: 여기에 +5V 전원을 공급합니다.
- GND 핀: 접지(0V)에 연결합니다.
- DO 핀: 디지털 출력은 알코올이 임계값을 초과하면 LOW, 미만이면 HIGH가 됩니다. 온보드 가변 저항으로 임계값을 조절합니다.
- AO 핀: 아날로그 출력 전압이 알코올 농도에 따라 달라집니다. 알코올이 높을수록 전압이 높아집니다.

두 개의 LED 표시등이 시각적 피드백을 제공합니다:
- PWR-LED: 모듈에 전원이 공급되면 켜집니다.
- DO-LED: 디지털 출력을 반영합니다 — 감지 중에 켜지고 꺼집니다.
작동 원리
MQ3의 감지 메커니즘은 이산화주석(SnO2) 저항 변화에 의존합니다:
오염되지 않은 공기에서: 가열된 SnO2가 표면에 산소 분자를 결합시켜 공핍층에 전자를 포획합니다. 포획된 전자가 전도 장벽을 형성하여 높은 저항을 생성합니다.
알코올이 있을 때: 알코올 분자가 표면 산소와 상호 작용하여 포획된 전자를 이산화주석 기질로 방출합니다. 방출된 전자가 전도도를 높이며 — 알코올이 많을수록 저항이 낮아집니다.
두 가지 출력 모드가 제공됩니다:
디지털 출력(DO 핀):
- 온보드 가변 저항이 임계값을 설정합니다.
- 알코올이 임계값을 초과하면 DO가 LOW가 되고 LED가 활성화됩니다.
- 알코올이 임계값 미만이면 DO가 HIGH로 유지되고 LED가 꺼집니다.
아날로그 출력(AO 핀):
- 출력 전압이 알코올 농도를 추적합니다.
- 알코올 증가 = 전압 상승.
- 알코올 감소 = 전압 하강.
- 참고: 가변 저항은 디지털 임계값에만 영향을 미치며 아날로그 전압에는 영향을 주지 않습니다.
예열 및 보정
예열 요구 사항
적절한 MQ3 센서 동작을 위해 충분한 가열이 필요합니다:
- 처음 사용 또는 장기 보관(30일 이상): 정확한 측정을 위해 24-48시간 동안 지속적으로 가열합니다.
- 정기적 사용: 5-10분의 빠른 예열로 충분합니다. 초기 측정값은 높을 수 있지만 빠르게 정상화됩니다.
5V와 접지에 VCC와 GND를 연결하여 센서를 예열합니다.
임계값 찾기
가열된 센서(MQ3 등)는 보관 중 드리프트될 수 있습니다. 음주 측정기 용도의 경우 다음 보정 절차를 통해 임계값을 설정합니다:
- 깨끗한 공기에서 기준선 기록: 신선한 공기에서 센서를 동작시키고 아날로그 출력을 기록합니다(일반적으로 100-150).
- 알코올 증기 투입: 이소프로필 알코올 또는 손 소독제를 센서 근처(접촉 없이)에 놓고 증기가 닿게 합니다. 높아진 측정값을 기록합니다(증기 농도에 따라 일반적으로 400-900).
- 감지 범위 설정: 측정값을 바탕으로 임계값 구간을 정의합니다:
- 알코올 없음: 기준선 + 20 미만 (예: < 120)
- 중간 알코올: 중간 범위 값 (예: 120-400)
- 높은 알코올: 중간 범위 초과 (예: > 400)
중요: 각 센서와 환경에서 값이 다르게 나옵니다. 항상 구현 전에 특정 하드웨어를 보정하세요.
디지털 임계값 설정
모듈의 가변 저항을 사용하여 DO 핀 트리거 레벨을 조절합니다:
- 센서에 알코올 증기를 노출합니다.
- LED가 활성화될 때까지 가변 저항을 시계 방향으로 돌립니다.
- LED가 막 비활성화될 때까지 천천히 반시계 방향으로 돌립니다.
- 임계값 설정 완료.
배선도
MQ3 알코올 센서 모듈에는 두 개의 출력이 있으므로, 필요에 따라 하나 또는 둘 다 사용할 수 있습니다.

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
ESP8266 핀배열 및 ESP8266 전원을 켜는 방법에 대해 더 많이 보십시오.
ESP8266 코드 - 디지털 출력 읽기
빠른 시작
Arduino IDE에서 ESP8266을 시작하는 방법:
- ESP8266이 처음이라면 ESP8266 - 소프트웨어 설치 튜토리얼을 확인하세요.
- 배선도에 따라 부품을 연결합니다.
- USB 케이블로 ESP8266 보드를 컴퓨터에 연결합니다.
- 컴퓨터에서 Arduino IDE를 엽니다.
- 올바른 ESP8266 보드(예: NodeMCU 1.0 (ESP-12E Module))와 해당 COM 포트를 선택합니다.
- 위 코드를 복사하여 Arduino IDE에서 엽니다.
- Arduino IDE의 Upload 버튼을 클릭하여 ESP8266에 코드를 업로드합니다.
- MQ3 센서 근처에 알코올 증기 소스를 가져갑니다(손 소독제 또는 솜에 묻힌 소독용 알코올 사용).
- 시리얼 모니터에서 결과를 확인합니다.
LED 상태가 항상 켜져 있거나 꺼져 있는 경우, 가변 저항을 조절하여 센서 감도를 미세 조정할 수 있습니다.
ESP8266 코드 - 아날로그 출력 읽기
빠른 시작
- 위 코드를 복사하여 Arduino IDE에서 엽니다.
- Arduino IDE의 Upload 버튼을 클릭하여 ESP8266에 코드를 업로드합니다.
- 센서에 알코올 증기를 투입합니다(손 소독제 또는 이소프로필 알코올 증기).
- 시리얼 모니터에서 결과를 확인합니다.
DO 또는 AO에서 읽은 값을 이용하여 임계값 기반 로직으로 알람을 트리거하거나, 경고 표시등을 제어하거나, 음주 측정기 기능을 위한 데이터를 기록할 수 있습니다.
ESP8266 코드 - 임계값 감지 음주 측정기
이 예제는 보정된 임계값으로 아날로그 출력을 사용하여 음주 수준을 추정하는 방법을 보여줍니다.
빠른 시작
- 중요: 먼저 아날로그 읽기 예제로 센서를 보정하여 환경에 적합한 임계값을 결정하세요.
- 코드의 SOBER_THRESHOLD와 DRUNK_THRESHOLD 상수를 보정된 값으로 업데이트합니다.
- 위 코드를 복사하여 Arduino IDE에서 엽니다.
- Arduino IDE의 Upload 버튼을 클릭하여 ESP8266에 코드를 업로드합니다.
- 알코올 증기(이소프로필 알코올 또는 손 소독제 증기)로 테스트합니다.
- 시리얼 모니터에서 결과를 확인합니다.
동영상
비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.