아두이노 나노 ESP32 MQ3 알코올 센서
이 튜토리얼은 MQ3 알코올 센서를 사용하여 에탄올 및 알코올 증기 농도를 감지하고 측정하도록 Arduino Nano ESP32를 사용하는 방법을 안내합니다. MQ3 센서는 호흡 분석 시스템, 알코올 증기 알람, 공기 품질 평가 도구를 구축하는 데 이상적입니다.
이 튜토리얼에서 다음을 배울 것입니다:
- MQ3 알코올 센서 모듈을 Arduino Nano ESP32에 연결하기
- 알코올 농도 데이터를 읽고 처리하도록 Arduino Nano ESP32 프로그래밍하기

필요한 하드웨어
| 1 | × | 아두이노 나노 ESP32 | 쿠팡 | 아마존 | |
| 1 | × | USB 케이블 타입-A to 타입-C (USB-A PC용) | 쿠팡 | 아마존 | |
| 1 | × | USB 케이블 타입-C to 타입-C (USB-C PC용) | 아마존 | |
| 1 | × | MQ3 Alcohol Sensor | 아마존 | |
| 1 | × | 브레드보드 | 쿠팡 | 아마존 | |
| 1 | × | 점퍼케이블 | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 나노용 스크루 터미널 확장 보드 | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 나노용 브레이크아웃 확장 보드 | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 나노 ESP32용 전원 분배기 | 쿠팡 | 아마존 |
MQ3 알코올 센서 소개
MQ3는 감지 요소 내의 저항 변화를 모니터링하여 알코올 존재를 감지하는 금속 산화물 반도체(MOS) 화학저항 센서입니다. 이 센서는 에탄올 증기 감지에 특화되어 있으며 넓은 농도 범위에서 일관된 성능을 제공합니다.
센서의 활성 구성 요소는 알루미나 세라믹 기판에 이산화주석(SnO2) 층이 도포된 구조입니다. 열 활성화를 통해 SnO2 물질이 주변 알코올 분자에 반응하게 됩니다. 스테인리스 스틸 보호 메시가 센서를 감싸 내부 구성 요소를 보호하면서 가스 분자가 감지 챔버에 접근할 수 있게 합니다.
일반적인 응용 분야에는 직접 제작하는 음주 측정기 시스템, 음주 운전 감지 기기, 알코올 증기 경보 시스템, 환경 알코올 모니터링 장치가 있습니다.
기술 사양
- 작동 전압: 5V DC
- 부하 저항: 200 KΩ
- 히터 저항: 33Ω ± 5%
- 가열 소비 전력: < 800mW
- 감지 저항: 1 MΩ – 8 MΩ
- 감지 범위: 25 – 500 ppm (백만분율)
- 예열 시간: 최초 사용 시 24-48시간
ppm이란? ppm(백만분율)이라는 용어는 전체 분자 대비 대상 가스 분자의 농도 비율을 나타냅니다. 예를 들어 500ppm은 1,000,000개의 가스 분자 중 500개의 알코올 분자가 존재하며 나머지 999,500개는 다른 대기 성분임을 의미합니다.
핀아웃
MQ3 센서 모듈은 4개의 연결 단자를 제공합니다:
- 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분의 짧은 예열로 충분합니다. 초기 값이 높게 나타날 수 있지만 곧 정상화됩니다.
센서를 예열하려면 VCC와 GND를 5V와 접지에 연결하세요 — 전용 전원 공급 장치나 Arduino Nano ESP32의 전원 핀에 직접 연결할 수 있습니다.
임계값 찾기
MQ3와 같이 가열 요소가 있는 가스 센서는 보관 후 보정 편차가 발생할 수 있습니다. 음주 측정기 프로젝트의 경우 다음 보정 순서로 적절한 임계값을 설정하세요:
- 깨끗한 공기 기준값 측정: 알코올이 없는 신선한 공기에서 센서를 실행하세요. 아날로그 값(일반적으로 100-150)을 기록하세요.
- 알코올 증기로 테스트: 이소프로필 알코올이나 손 세정제를 센서 근처(접촉하지 않게)에 위치시켜 증기가 감지기에 도달하게 하세요. 증가된 읽기값(증기 농도에 따라 일반적으로 400-900)을 기록하세요.
- 감지 임계값 정의: 기록된 데이터를 사용하여 감지 구역을 설정하세요:
- 음성 범위: 기준값 + 20 미만의 값 (예: < 120)
- 중간 범위: 중간 범위 값 (예: 120-400)
- 높은 범위: 중간 한계를 초과하는 값 (예: > 400)
중요: 개별 센서 유닛과 환경 조건에 따라 값이 다를 수 있습니다. 배포 전에 반드시 특정 하드웨어로 보정하세요.
디지털 임계값 설정
모듈의 가변저항을 사용하여 DO 핀의 활성화 지점을 설정하세요:
- 센서를 알코올 증기에 노출시키세요.
- LED가 켜질 때까지 가변저항을 시계 방향으로 돌리세요.
- LED가 방금 꺼질 때까지 반시계 방향으로 천천히 돌리세요.
- 이제 디지털 임계값이 보정되었습니다.
배선 다이어그램
MQ3 모듈은 디지털 및 아날로그 출력을 모두 제공합니다. 애플리케이션 요구 사항에 따라 하나의 출력을 선택하거나 두 출력을 동시에 사용하세요.
- USB 포트로 전원을 공급할 때 Arduino Nano ESP32와 MQ3 알코올 센서 간의 배선 다이어그램입니다.

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
| MQ3 Alcohol Sensor | Arduino Nano ESP32 |
|---|---|
| VCC | 5V |
| GND | GND |
| DO | D2 |
| AO | A5 |
- Vin 핀으로 전원을 공급할 때 Arduino Nano ESP32와 MQ3 알코올 센서 간의 배선 다이어그램입니다.

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
Arduino Nano ESP32 코드 - 디지털 출력 읽기
빠른 시작
- Arduino Nano ESP32가 처음이신가요? 아두이노 나노 ESP32 - 소프트웨어 설치을 참조하세요.
- 위의 코드를 Arduino IDE에 복사하세요
- 업로드 버튼을 클릭하여 Arduino Nano ESP32를 프로그래밍하세요
- MQ3 센서 근처에 알코올 증기 소스를 가져다 대세요 (손 세정제나 면봉에 묻은 소독용 알코올이 잘 작동합니다)
- 시리얼 모니터에서 감지 결과를 확인하세요
LED 상태가 계속 켜져 있거나 꺼져 있으면 가변저항을 조정하여 정확한 감지를 위해 센서의 감도를 미세 조정하세요.
Arduino Nano ESP32 코드 - 아날로그 출력 읽기
빠른 시작
- 위의 코드를 Arduino IDE에 복사하세요
- 업로드 버튼을 클릭하여 Arduino Nano ESP32를 프로그래밍하세요
- 센서에 알코올 증기를 가져다 대세요 (손 세정제나 이소프로필 알코올 증기)
- 시리얼 모니터에서 값을 모니터링하세요
디지털 또는 아날로그 출력을 사용하여 임계값 기반 로직을 만들어 알람을 트리거하거나 경고 표시기를 제어하거나 음주 측정기 애플리케이션을 위한 데이터를 캡처할 수 있습니다.
Arduino Nano ESP32 코드 - 임계값 감지가 있는 음주 측정기
이 코드는 보정된 임계값을 통해 아날로그 출력을 해석하여 알코올 소비 수준을 평가하는 방법을 보여줍니다.
빠른 시작
- 필수: 먼저 아날로그 읽기 예제를 사용하여 특정 센서를 보정하여 적절한 임계값을 찾으세요.
- 코드의 SOBER_THRESHOLD 및 DRUNK_THRESHOLD 상수를 보정된 값으로 교체하세요.
- 수정된 코드를 Arduino Nano ESP32에 업로드하세요
- 알코올 증기(이소프로필 알코올 또는 손 세정제 증기)에 노출시켜 테스트하세요
- 시리얼 모니터에서 상태 메시지를 관찰하세요
면책 조항: 이것은 순전히 교육용 프로젝트입니다. 이 기기를 법적 음주 측정기 또는 운전 안전성 평가에 절대 사용하지 마세요.
※ 주의:
이 튜토리얼은 센서나 구성 요소에 연결된 ADC(아날로그-디지털 변환기)에서 값을 읽기 위해 analogRead() 함수를 사용합니다. Arduino Nano ESP32의 ADC는 높은 정확도가 필요하지 않은 프로젝트에 적합합니다. 그러나 정밀한 측정이 필요한 프로젝트의 경우 다음 사항을 고려하세요:
- Arduino Nano ESP32의 ADC는 완벽하게 정확하지 않으며 올바른 결과를 위해 보정이 필요할 수 있습니다. 각 Arduino Nano ESP32 보드는 약간 다를 수 있으므로 각 개별 보드에 대한 보정이 필요합니다.
- 보정은 특히 초보자에게 어려울 수 있으며 항상 원하는 결과를 얻지 못할 수도 있습니다.
높은 정밀도가 필요한 프로젝트의 경우 Arduino Nano ESP32와 함께 외부 ADC(예: ADS1115)를 사용하거나 더 신뢰할 수 있는 ADC를 갖춘 Arduino Uno R4 WiFi와 같은 다른 아두이노를 사용하는 것을 고려하세요. Arduino Nano ESP32의 ADC를 보정하려면 ESP32 ADC 보정 드라이버를 참조하세요.
동영상
비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.