아두이노 우노 R4 MQ3 알코올 센서
이 가이드는 Arduino UNO R4와 MQ3 알코올 센서를 사용하여 공기 중의 알코올 증기와 에탄올을 감지하는 방법을 알려줍니다. 이 센서는 음주 측정기 프로젝트 및 알코올 감지 시스템에 일반적으로 사용됩니다.
- MQ3 알코올 센서를 Arduino UNO R4에 연결하는 방법
- Arduino UNO R4에서 센서의 알코올 농도를 읽는 코드를 작성하는 방법

필요한 하드웨어
| 1 | × | Arduino UNO R4 WiFi or Arduino UNO R4 Minima | ||
| 1 | × | (또는) DIYables STEM V4 IoT, Compatible with Arduino Uno R4 WiFi | 쿠팡 | 아마존 | |
| 1 | × | USB 케이블 타입-A to 타입-C (USB-A PC용) | 쿠팡 | 아마존 | |
| 1 | × | USB 케이블 타입-C to 타입-C (USB-C PC용) | 아마존 | |
| 1 | × | MQ3 Alcohol Sensor | 아마존 | |
| 1 | × | 점퍼케이블 | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 우노 R4용 스크루 터미널 블록 쉴드 | 쿠팡 | 아마존 | |
| 1 | × | (추천) Sensors/Servo Expansion Shield for Arduino UNO R4 | 아마존 | |
| 1 | × | (추천) 아두이노 우노 R4용 브레드보드 쉴드 | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 우노 R4용 케이스 | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 우노 R4용 전원 분배기 | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 우노용 프로토타이핑 베이스 플레이트 & 브레드보드 키트 | 아마존 |
MQ3 알코올 센서에 대하여
MQ3 알코올 센서는 MOS(금속 산화물 반도체) 센서로, 화학저항기(Chemiresistor)라고도 합니다. 알코올 증기에 노출될 때 감지 재료의 저항 변화를 기반으로 알코올을 감지하기 때문입니다. 공기 중의 알코올 증기(에탄올)를 감지하도록 특별히 설계되었으며 알코올 농도에 매우 민감합니다.
이 센서는 산화알루미늄 세라믹 기판 위에 이산화주석(SnO2) 코팅을 감지 요소로 사용합니다. 가열되면 SnO2가 알코올에 민감해집니다. 센서는 내부 가열 요소를 보호하고 부유 입자를 걸러내면서 기체 요소가 감지 챔버에 도달할 수 있도록 스테인리스강 망(방폭 네트워크)으로 덮여 있습니다.
일반적인 응용 분야에는 호흡 분석기, 음주 운전 감지 시스템, 알코올 존재 경보, 환경의 알코올 농도 모니터링이 필요한 프로젝트 등이 있습니다.
기술 사양
- 동작 전압: 5V DC
- 부하 저항: 200KΩ
- 히터 저항: 33Ω ± 5%
- 가열 소비량: < 800mW
- 감지 저항: 1MΩ – 8MΩ
- 감지 범위: 25–500 ppm(백만분의 일)
- 예열 시간: 처음 사용 시 24~48시간
ppm이란 무엇인가요? 백만분의 일(ppm)은 가스 농도를 측정하는 단위입니다. 예를 들어, 500 ppm의 알코올은 백만 개의 가스 분자 중 500개가 알코올이고 999,500개가 다른 가스임을 의미합니다.
핀아웃
MQ3 알코올 센서에는 4개의 핀이 있습니다:
- VCC 핀: 이 핀을 VCC(5V)에 연결합니다.
- GND 핀: 이 핀을 GND(0V)에 연결합니다.
- DO 핀: 디지털 출력 핀입니다. 알코올이 감지되면 LOW를, 감지되지 않으면 HIGH를 표시합니다. 온보드 가변저항을 사용하여 알코올 감지 임계값을 조절할 수 있습니다.
- AO 핀: 아날로그 출력 핀입니다. 알코올 농도에 따라 변하는 전압을 생성합니다. 알코올 농도가 높을수록 전압이 높아집니다.

또한 두 개의 LED 표시등이 있습니다:
- 전원 표시등: 전원이 켜져 있음을 표시합니다.
- DO-LED 표시등: DO 핀 값에 따른 알코올 감지 상태를 표시합니다. 알코올이 감지되면 켜지고, 없으면 꺼집니다.
작동 원리
MQ3 센서는 이산화주석(SnO2) 감지 요소의 전기 저항 변화를 기반으로 작동합니다:
깨끗한 공기에서: SnO2 반도체가 가열되면 산소 분자가 표면에 흡착되어 전자 고갈층을 형성합니다. 이는 재료를 고저항으로 만들어 전류 흐름을 방지하는 전위 장벽을 형성합니다.
알코올 존재 시: 알코올 증기가 흡착된 산소와 반응하여 표면 산소 밀도를 낮추고 전위 장벽을 낮춥니다. 이로 인해 이산화주석으로 전자가 방출되어 전류가 자유롭게 흐를 수 있게 됩니다. 알코올이 많을수록 저항이 낮아집니다.
센서는 두 가지 출력을 제공합니다:
DO 핀(디지털 출력):
- 모듈에는 알코올 감지를 위한 민감도 임계값을 조절하는 가변저항이 포함되어 있습니다.
- 알코올 농도가 설정된 임계값을 초과하면 센서 출력 핀이 LOW로 전환되고 DO-LED 표시등이 켜집니다.
- 알코올 농도가 임계값 미만이면 센서 출력 핀이 HIGH로 전환되고 DO-LED 표시등이 꺼집니다.
AO 핀(아날로그 출력):
- 출력 전압은 알코올 농도에 비례합니다.
- 알코올 증기 농도가 높을수록 전압이 높아집니다.
- 알코올 증기 농도가 낮을수록 전압이 낮아집니다.
- 가변저항은 AO 핀 값에 영향을 주지 않습니다.
MQ3 센서 예열 및 보정
예열 시간
MQ3 알코올 센서는 정확한 판독값을 얻기 위해 사용 전에 가열해야 합니다:
- 처음 사용 또는 장기 보관(1개월 이상) 후: 안정적이고 정확한 결과를 얻으려면 24~48시간 동안 예열합니다.
- 최근 사용: 예열에 5~10분만 필요합니다. 처음에는 판독값이 높을 수 있지만 잠시 후 안정됩니다.
MQ3 센서를 예열하려면 VCC와 GND 핀을 전원 또는 Arduino UNO R4의 VCC와 GND에 연결하고 예열 기간 동안 연결 상태를 유지합니다.
임계값을 위한 보정
MQ3는 히터 구동 센서이므로 장기간 보관 시 보정이 변동할 수 있습니다. 음주 측정기 프로젝트를 위해 센서를 보정하고 임계값을 찾으려면:
- 기준값 기록: 깨끗한 공기에서 센서를 실행하고 아날로그 판독값을 기록합니다(일반적으로 약 100~150).
- 알코올로 테스트: 이소프로필 알코올이나 손 세정제를 사용합니다(액체가 센서에 닿지 않도록 주의 - 증기만 사용). 센서 근처에서 병을 짜서 증기를 방출하고 판독값을 기록합니다(농도에 따라 일반적으로 400~900).
- 임계값 설정: 판독값을 기반으로 임계값 수준을 정의할 수 있습니다:
- 비음주: 기준값 + 20 미만(예: < 120)
- 법적 한도 내: 기준값과 중간 수준 사이(예: 120~400)
- 법적 한도 초과: 중간 수준 이상(예: > 400)
참고: 이 값은 특정 센서 및 환경에 따라 다릅니다. 사용 전에 항상 자신의 센서로 보정하세요.
디지털 출력 임계값 조정
온보드 가변저항을 사용하여 DO 핀의 임계값을 설정하려면:
- 센서를 알코올 증기에 노출합니다.
- 상태 LED가 켜질 때까지 가변저항을 시계 방향으로 돌립니다.
- LED가 꺼질 때까지 가변저항을 반시계 방향으로 돌립니다.
- 이제 임계값이 설정되었습니다.
배선도
MQ3 알코올 센서 모듈에는 두 가지 출력이 있습니다. 필요에 따라 하나 또는 둘 다 사용할 수 있습니다.
| MQ3 알코올 센서 | Arduino UNO R4 |
|---|---|
| VCC | 5V |
| GND | GND |
| DO | 핀 2 |
| AO | A0 |

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
Arduino Uno R4와 기타 부품에 전원을 공급하는 가장 효과적인 방법을 확인하시려면, 아래 링크를 참조하세요: 아두이노 우노 R4 전원 공급 방법.
Arduino UNO R4 코드 - DO 핀에서 값 읽기
빠른 단계
다음 단계를 순서대로 따라하세요:
- Arduino Uno R4 WiFi/Minima를 처음 사용하는 경우 아두이노 우노 R4 - 소프트웨어 설치을 참조하세요.
- 제공된 다이어그램에 따라 Arduino Uno R4 보드를 MQ3 알코올 센서에 연결합니다.
- USB 케이블을 사용하여 Arduino Uno R4 보드를 컴퓨터에 연결합니다.
- 컴퓨터에서 Arduino IDE를 실행합니다.
- 적절한 Arduino Uno R4 보드(예: Arduino Uno R4 WiFi)와 COM 포트를 선택합니다.
- 위의 코드를 복사하여 Arduino IDE에서 엽니다.
- Arduino IDE의 Upload 버튼을 클릭하여 코드를 Arduino UNO R4에 업로드합니다.
- MQ3 센서를 알코올 증기에 노출합니다(손 세정제나 이소프로필 알코올을 적신 솜을 센서 근처에 사용하면 됩니다).
- 시리얼 모니터에서 결과를 확인합니다.
참고: 센서 출력이 실제 알코올 존재를 반영하지 않는 경우(예: 알코올이 없는데 감지하거나, 알코올이 있는데 감지하지 못하는 경우), 센서 모듈의 가변저항을 돌려 트리거 임계값을 조정해야 합니다. 시계 방향으로 돌리면 민감도가 높아지고, 반시계 방향으로 돌리면 낮아집니다.
Arduino UNO R4 코드 - AO 핀에서 값 읽기
빠른 단계
- 위의 코드를 복사하여 Arduino IDE에서 엽니다.
- Arduino IDE의 Upload 버튼을 클릭하여 코드를 Arduino UNO R4에 업로드합니다.
- MQ3 센서를 알코올 증기에 노출합니다(손 세정제나 이소프로필 알코올 사용).
- 시리얼 모니터에서 결과를 확인합니다.
DO 또는 AO의 값을 기반으로 알코올 감지를 위한 임계값을 설정하고 경보를 트리거하거나, 경고 LED를 활성화하거나, 음주 측정기 응용 프로그램을 위한 데이터를 기록할 수 있습니다.
Arduino UNO R4 코드 - 임계값이 있는 간단한 음주 측정기
이 고급 예제는 아날로그 출력을 사용하여 보정된 임계값을 기반으로 알코올 중독 수준을 추정합니다.
빠른 단계
- 중요: 이 코드를 사용하기 전에 위의 보정 스케치를 실행하여 깨끗한 공기에서와 알코올이 있을 때의 센서 임계값을 찾습니다.
- 코드의 임계값(SOBER_THRESHOLD 및 DRUNK_THRESHOLD)을 보정된 값으로 교체합니다.
- Arduino UNO R4에 코드를 업로드합니다.
- 알코올 증기(손 세정제나 이소프로필 알코올)에 센서를 노출하여 테스트합니다.
- 시리얼 모니터에서 결과를 확인합니다.
참고: 이것은 교육 목적으로만 사용합니다. 법적인 음주 측정기로 사용하거나 운전 적합성을 판단하는 데 사용하지 마세요.
동영상
비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.