TITLE: ESP32 C3 Super Mini - MQ3 알코올 센서

이 튜토리얼은 ESP32 C3 Super Mini를 MQ3 알코올 센서와 함께 사용하여 공기 중의 에탄올 및 알코올 증기를 감지하는 방법을 보여줍니다. DIY 호흡 분석기 프로젝트 및 알코올 감지 시스템 구축에 완벽합니다!

이 튜토리얼에서 배우게 될 내용:

  • MQ3 알코올 센서가 무엇이고 알코올 증기를 감지하는 방법
  • MQ3 센서 모듈을 ESP32 C3 Super Mini에 배선하는 방법
  • ESP32 C3 Super Mini를 프로그래밍하여 알코올 농도 데이터를 읽는 방법
  • 정확한 호흡 측정 판독값을 위해 센서를 보정하는 방법
  • 임계값 기반 알코올 감지 시스템을 구축하는 방법
mq3 알코올 가스 센서 모듈이 있는 ESP32 C3 Super Mini

필요한 하드웨어

1×ESP32 C3 Super Mini 아마존
1×USB 타입-C 케이블 쿠팡 | 아마존
1×MQ3 알코올 센서 아마존
1×브레드보드 쿠팡 | 아마존
1×점퍼 와이어 쿠팡 | 아마존
공개: 이 포스팅 에 제공된 일부 링크는 아마존 제휴 링크입니다. 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

MQ3 알코올 센서 정보

MQ3는 감지 소자의 저항 변화를 측정하여 알코올 증기 및 에탄올을 감지하는 가스 센서입니다.

  • 작동 전압: 5V DC
  • 감지 범위: 25-500 ppm (백만분율)
  • 부하 저항: 200 KΩ
  • 히터 저항: 33Ω ± 5%
  • 가열 소비: < 800mW
  • 감지 저항: 1 MΩ – 8 MΩ
  • 예열 시간: 첫 사용 시 24-48시간, 이후 사용 시 5-10분
  • 출력 타입: 디지털(DO) 및 아날로그(AO) 출력 모두
  • 센서 타입: 금속 산화물 반도체(MOS) 화학 저항기
  • 감지 물질: 세라믹 기판의 이산화 주석(SnO2)
  • 완벽한 용도: DIY 호흡 측정기, 알코올 증기 알람, 공기 질 모니터, 음주운전 감지기

MQ3 알코올 센서 모듈은 가열된 금속 산화물 반도체를 사용하여 공기 중의 알코올 분자를 감지합니다. 알코올 증기가 센서 표면에 접촉하면 전기 저항이 변하며, ESP32 C3 Super Mini가 이를 측정할 수 있습니다.

핀아웃

MQ3 알코올 센서 모듈은 ESP32 C3 Super Mini에 쉽게 연결할 수 있는 4개의 핀을 가지고 있습니다:

  • VCC 핀: 전력 공급 핀 - 5V에 연결
  • GND 핀: 접지 핀 - GND(0V)에 연결
  • DO 핀: 디지털 출력 핀 - 임계값 설정을 기반으로 HIGH 또는 LOW 출력
  • AO 핀: 아날로그 출력 핀 - 알코올 농도에 비례하는 전압 출력
mq3 알코올 센서 모듈 핀아웃 다이어그램

모듈에는 두 개의 LED 표시기가 포함되어 있습니다:

  • PWR-LED: 전원 표시기 - 모듈이 전원이 켜질 때 켜짐
  • DO-LED: 감지 표시기 - 알코올이 임계값 이상으로 감지되면 켜짐

작동 방식

MQ3 센서는 이산화 주석(SnO2) 반도체 물질의 저항 변화를 통해 알코올을 감지합니다:

깨끗한 공기 작동:

  • 산소 분자는 가열 시 SnO2 표면에 붙음
  • 갇힌 전자는 높은 전기 저항을 생성
  • 센서는 아날로그 핀에서 낮은 전압 출력

알코올 증기 감지:

  • 알코올 분자는 표면 산소와 반응
  • 갇힌 전자를 물질로 다시 방출
  • 전기 저항이 크게 감소
  • 센서는 아날로그 핀에서 높은 전압 출력
  • 더 많은 알코올 = 더 낮은 저항 = 더 높은 전압 출력

디지털 출력(DO 핀):

  • 온보드 포텐셜미터를 사용하여 감지 임계값을 설정
  • 알코올이 임계값을 초과할 때 DO 핀이 LOW(LED 켜짐)
  • 알코올이 임계값 이하일 때 DO 핀이 HIGH(LED 꺼짐)
  • 간단한 예/아니오 알코올 감지에 완벽

아날로그 출력(AO 핀):

  • 0-4095 범위(ESP32 ADC 범위)의 연속 전압 판독값 제공
  • 더 높은 전압 = 더 많은 알코올 증기 감지
  • 더 낮은 전압 = 더 적은 알코올 증기
  • 실제 농도 수준을 측정하는 데 이상적
  • 포텐셜미터 설정의 영향을 받지 않음

예열 및 보정

예열 요구사항

MQ3 알코올 센서는 정확한 측정을 수행하기 전에 적절한 가열이 필요합니다:

  • 첫 사용 또는 30일 이상 보관 후: 센서 판독값을 안정화하기 위해 24-48시간 동안 연속 가열
  • 정기적인 사용: 측정을 수행하기 전에 5-10분 예열
  • 예열 중: 초기 판독값은 정상보다 높을 수 있지만 빠르게 안정화됨
  • 예열 방법: VCC를 5V에, GND를 USB 전원 또는 외부 공급을 통해 접지에 연결하기만 하면 됨

임계값 찾기

모든 MQ3 센서는 약간씩 다르므로 호흡 측정기 프로젝트에는 보정이 필수입니다:

  • 깨끗한 공기 기준선 테스트:
    • 알코올이 없는 신선한 공기에서 센서 실행
    • 아날로그 값 기록(일반적으로 100-150)
    • 이것이 "깨끗한" 기준선 판독값
  • 알코올 증기 테스트:
    • 이소프로필 알코올 또는 손 소독제를 센서 근처(접촉하지 않음)에 들고 있음
    • 증기가 센서 소자에 도달하도록 함
    • 더 높은 판독값 기록(일반적으로 400-900, 증기 농도에 따라 다름)
    • 이것은 "감지" 범위를 설정
  • 감지 영역 설정:
    • 깨끗한 범위: 기준선 + 20 미만(예: 판독값 < 120)
    • 중간 범위: 중간 수준 판독값(예: 120-400)
    • 높은 범위: 중간 임계값 이상(예: > 400)
  • 중요 사항: 개별 센서는 다름, 환경 조건이 판독값에 영향, 실제 사용 전에 항상 특정 센서를 보정

디지털 임계값 설정

온보드 포텐셜미터를 조정하여 DO 핀이 트리거될 때를 설정합니다:

  • 알코올 증기에 센서 노출(손 소독제 또는 문지르는 알코올 사용)
  • DO-LED가 켜질 때까지 포텐셜미터를 시계 방향으로 회전
  • LED가 꺼질 때까지 천천히 반시계 방향으로 회전
  • 디지털 임계값은 이제 원하는 민감도 수준에 맞게 보정됨
  • 알코올 증기에 다시 노출하여 테스트 - LED가 안정적으로 켜져야 함

배선도

MQ3 센서 모듈은 디지털 및 아날로그 출력을 모두 사용하여 ESP32 C3 Super Mini에 쉽게 연결됩니다.

  • 참고: MQ3 센서는 적절한 가열을 위해 5V 전력이 필요합니다. VCC를 3.3V가 아닌 5V 핀에 연결하세요.
ESP32 C3 Super Mini mq3 알코올 센서 배선도

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.

MQ3 알코올 센서ESP32 C3 Super Mini
VCC5V
GNDGND
DOD7
AOA5

ESP32 C3 Super Mini 코드 - 디지털 출력 읽기

이 코드는 MQ3 센서에서 디지털 출력을 읽어 알코올 존재 여부를 감지합니다:

  • 매초 DO 핀 상태 확인
  • Serial Monitor에 감지 상태 인쇄
  • 온보드 포텐셜미터에 의해 설정된 임계값 사용
  • 간단한 예/아니오 알코올 감지
/* * 이 ESP32 C3 Super Mini 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP32 C3 Super Mini 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp32-c3/esp32-c3-super-mini-mq3-alcohol-sensor */ #define PIN_DO 7 // The Arduino Nano ESP32's pin connected to the DO pin of the MQ3 sensor void setup() { // Initialize serial communication Serial.begin(115200); // Initialize the Arduino Nano ESP32's pin as an input pinMode(PIN_DO, INPUT); // Warm-up message Serial.println("Warming up the MQ3 sensor"); delay(20000); // 20 seconds warm-up time for recently used sensor } void loop() { int gasState = digitalRead(PIN_DO); if (gasState == HIGH) { Serial.println("Alcohol is NOT detected"); } else { Serial.println("Alcohol is detected"); } delay(1000); }

빠른 단계

  • ESP32 C3 Super Mini를 처음 사용하시나요? 개발 환경을 설정하려면 먼저 ESP32 C3 슈퍼 미니 - 시작하기 튜토리얼을 완료하세요.
  • Arduino IDE 열기: 컴퓨터에서 Arduino IDE를 실행합니다
  • 코드 복사: 위의 코드를 복사하여 Arduino IDE에 붙여넣으세요
  • 보드 선택: Tools > Board 메뉴에서 ESP32 C3 Super Mini 선택
  • 포트 선택: Tools > Port 메뉴에서 올바른 COM 포트 선택
  • 코드 업로드: Upload 버튼을 클릭하여 ESP32 C3 Super Mini를 프로그래밍
  • Serial Monitor 열기: Serial Monitor 아이콘(오른쪽 상단)을 클릭하거나 Ctrl+Shift+M 누르기
  • 보드 레이트 설정: Serial Monitor 드롭다운에서 115200 보드 선택
  • 알코올로 테스트: 손 소독제 또는 문지르는 알코올을 MQ3 센서 근처에 가져가기
  • 결과 확인: Serial Monitor에서 감지 상태 변경 확인
  • 민감도 조정: LED가 항상 켜져 있거나 꺼져 있으면 포텐셜미터를 조정하여 임계값 조정
  • 전문가 팁: 센서를 만지지 않고 일관된 테스트를 위해 이소프로필 알코올에 적신 솜을 사용합니다.
Newbiely | Arduino IDE 2.3.8
──
File
Edit
Sketch
Tools
Help
ESP32C3 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32C3 Dev Module' on 'COM15')
New Line
9600 baud
Alcohol is NOT detected Alcohol is NOT detected Alcohol is NOT detected Alcohol is detected Alcohol is detected Alcohol is detected Alcohol is detected Alcohol is NOT detected Alcohol is NOT detected
Ln 11, Col 1
ESP32C3 Dev Module on COM15
2

ESP32 C3 Super Mini 코드 - 아날로그 출력 읽기

이 코드는 MQ3 센서에서 아날로그 전압 값을 읽어 알코올 농도를 측정합니다:

  • 매초 AO 핀에서 아날로그 값을 읽음
  • Raw ADC 값 표시(0-4095 범위)
  • 더 높은 값은 더 많은 알코올 증기를 나타냄
  • Serial Monitor에 판독값 표시
/* * 이 ESP32 C3 Super Mini 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP32 C3 Super Mini 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp32-c3/esp32-c3-super-mini-mq3-alcohol-sensor */ #define PIN_AO A5 // The Arduino Nano ESP32's pin connected to the AO pin of the MQ3 sensor void setup() { // Initialize serial communication Serial.begin(115200); // Set the ADC attenuation to 11 dB (up to ~3.3V input) analogSetAttenuation(ADC_11db); // Warm-up message Serial.println("Warming up the MQ3 sensor"); delay(20000); // 20 seconds warm-up time for recently used sensor } void loop() { int gasValue = analogRead(PIN_AO); Serial.print("MQ3 sensor AO value: "); Serial.println(gasValue); delay(1000); }

빠른 단계

  • ESP32 C3 Super Mini를 처음 사용하시나요? 개발 환경을 설정하려면 먼저 ESP32 C3 슈퍼 미니 - 시작하기 튜토리얼을 완료하세요.
  • 코드 복사: 위의 코드를 Arduino IDE에 붙여넣으세요
  • 보드에 업로드: Upload 버튼을 클릭하여 ESP32 C3 Super Mini를 프로그래밍
  • Serial Monitor 열기: 보드 레이트를 115200으로 설정
  • 기준선 값 주목: 깨끗한 공기에서 판독값 관찰(일반적으로 100-150)
  • 알코올로 테스트: 손 소독제 또는 문지르는 알코올 증기를 센서 근처에 도입
  • 값 증가 확인: 알코올이 감지될 때 판독값이 크게 증가
  • 값 기록: 보정을 위해 범위 기록
  • 전문가 팁: 호흡 측정기 프로젝트에 대한 정확한 임계값을 계산하기 위해 깨끗한 공기 기준선 및 알코올 증기 판독값을 적어놓습니다.
Newbiely | Arduino IDE 2.3.8
──
File
Edit
Sketch
Tools
Help
ESP32C3 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32C3 Dev Module' on 'COM15')
New Line
9600 baud
MQ3 sensor AO value: 120 MQ3 sensor AO value: 125 MQ3 sensor AO value: 128 MQ3 sensor AO value: 450 MQ3 sensor AO value: 620 MQ3 sensor AO value: 850 MQ3 sensor AO value: 920 MQ3 sensor AO value: 980 MQ3 sensor AO value: 950 MQ3 sensor AO value: 680 MQ3 sensor AO value: 420 MQ3 sensor AO value: 245 MQ3 sensor AO value: 135
Ln 11, Col 1
ESP32C3 Dev Module on COM15
2

ESP32 C3 Super Mini 코드 - 임계값 감지가 있는 호흡 측정기

이 코드는 보정된 임계값으로 아날로그 판독값을 해석하여 간단한 호흡 측정기를 만듭니다:

  • 아날로그 알코올 농도 값을 읽음
  • 보정된 임계값에 대해 판독값을 비교
  • 청결 수준 분류(Sober, Drinking, Drunk)
  • Serial Monitor에서 상태 및 센서 값 표시
  • 매초 판독값 업데이트
/* * 이 ESP32 C3 Super Mini 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP32 C3 Super Mini 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp32-c3/esp32-c3-super-mini-mq3-alcohol-sensor */ #define PIN_AO A5 // The Arduino Nano ESP32's pin connected to the AO pin of the MQ3 sensor // Threshold values - REPLACE THESE with your calibrated values! // Run calibration first to find these values for your sensor #define SOBER_THRESHOLD 120 // Below this = sober #define DRUNK_THRESHOLD 400 // Above this = drunk, between = drinking but within limits void setup() { // Initialize serial communication Serial.begin(115200); // Set the ADC attenuation to 11 dB (up to ~3.3V input) analogSetAttenuation(ADC_11db); // Warm-up message Serial.println("MQ3 Alcohol Sensor - Breathalyzer"); Serial.println("Warming up sensor..."); delay(20000); // 20 second warm-up for recently used sensor Serial.println("Sensor ready!"); Serial.println(); } void loop() { int gasLevel = analogRead(PIN_AO); // Read the analog value from sensor // Print sensor value Serial.print("Sensor Value: "); Serial.print(gasLevel); Serial.print(" | Status: "); // Determine status based on thresholds if (gasLevel < SOBER_THRESHOLD) { Serial.println("Stone Cold Sober"); } else if (gasLevel >= SOBER_THRESHOLD && gasLevel < DRUNK_THRESHOLD) { Serial.println("Drinking but within limits"); } else { Serial.println("DRUNK"); } delay(1000); // Wait 1 second between readings }

빠른 단계

  • ESP32 C3 Super Mini를 처음 사용하시나요? 개발 환경을 설정하려면 먼저 ESP32 C3 슈퍼 미니 - 시작하기 튜토리얼을 완료하세요.
  • 먼저 보정: 아날로그 판독 코드를 실행하여 센서의 기준선 및 알코올 감지 값 찾기
  • 임계값 업데이트: SOBER_THRESHOLDDRUNK_THRESHOLD를 보정된 값으로 바꾸기
  • 예제 보정: 깨끗한 공기가 130을 읽고 알코올 증기가 500+를 읽으면 SOBER_THRESHOLD = 150 및 DRUNK_THRESHOLD = 400 사용
  • 코드 업로드: Upload 버튼을 클릭하여 ESP32 C3 Super Mini 프로그래밍
  • Serial Monitor 열기: 보드 레이트를 115200으로 설정
  • 시스템 테스트: 먼저 센서 근처에서 정상적으로 호흡("Stone Cold Sober" 읽어야 함)
  • 알코올로 테스트: 손 소독제 또는 이소프로필 알코올 증기를 사용하여 알코올 호흡 시뮬레이션
  • 상태 변경 관찰: 시스템이 다양한 농도 수준을 분류하는 것을 봅니다
  • 전문가 팁: 더 정확한 판독값을 위해 각 테스트 후 30초를 기다려 센서가 기준선으로 돌아가도록 한 후 다시 테스트합니다.
Newbiely | Arduino IDE 2.3.8
──
File
Edit
Sketch
Tools
Help
ESP32C3 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32C3 Dev Module' on 'COM15')
New Line
9600 baud
Sensor Value: 115 | Status: Stone Cold Sober Sensor Value: 118 | Status: Stone Cold Sober Sensor Value: 122 | Status: Stone Cold Sober Sensor Value: 350 | Status: Drinking but within limits Sensor Value: 420 | Status: Drinking but within limits Sensor Value: 480 | Status: DRUNK Sensor Value: 520 | Status: DRUNK Sensor Value: 495 | Status: DRUNK Sensor Value: 380 | Status: Drinking but within limits Sensor Value: 290 | Status: Drinking but within limits Sensor Value: 165 | Status: Stone Cold Sober Sensor Value: 125 | Status: Stone Cold Sober
Ln 11, Col 1
ESP32C3 Dev Module on COM15
2

교육용만: 이는 가스 센서 및 ESP32 C3 Super Mini에 대해 배우기 위한 엄격한 교육 프로젝트입니다. 법적 호흡 측정기, 운전 안전 평가 또는 공식 알코올 테스트 목적으로 이 기기를 사용하지 마십시오.

※ 주의:

이 튜토리얼은 센서 또는 구성 요소에 연결된 ADC(아날로그-디지털 변환기)에서 값을 읽기 위해 analogRead() 함수를 사용합니다. ESP32 C3 Super Mini의 ADC는 높은 정확도가 필요하지 않은 프로젝트에 적합합니다. 그러나 정확한 측정이 필요한 프로젝트의 경우 다음을 염두에 두세요:

  • ESP32 C3 Super Mini의 ADC는 완벽하게 정확하지 않으며 올바른 결과를 위해 보정이 필요할 수 있습니다. 각 ESP32 C3 Super Mini 보드는 약간씩 다를 수 있으므로 각 개별 보드에 대해 보정이 필요합니다.
  • 보정은 특히 초보자의 경우 어려울 수 있으며 항상 원하는 정확한 결과를 얻지 못할 수도 있습니다.

높은 정밀도가 필요한 프로젝트의 경우 ESP32 C3 Super Mini에서 외부 ADC(예: ADS1115)를 사용하거나 더 안정적인 ADC를 가진 Arduino Uno R4 WiFi와 같은 다른 Arduino를 사용하는 것을 고려하세요. ESP32 C3 Super Mini의 ADC를 보정하고 싶으시다면 ESP32 ADC Calibration Driver를 참조하세요.

프로젝트 아이디어 및 응용 프로그램

ESP32 C3 Super Mini와 MQ3 알코올 센서를 사용하여 구축할 수 있는 몇 가지 실질적인 프로젝트입니다:

  • DIY 호흡 측정기 시스템: 알코올 감지 원리를 시연하는 교육용 호흡 분석기 구축
  • 알코올 증기 알람: 알코올 증기가 안전 수준을 초과할 때 경고 시스템을 트리거
  • 바 또는 양조장 모니터링: 발효 또는 양조 영역의 알코올 증기 농도 모니터링
  • 가정 안전 감지기: 알코올 기반 세제가 안전하지 않은 증기 수준에 도달할 때 경고
  • 실험실 가스 모니터: 화학 연구소 또는 연구 시설의 에탄올 증기 추적
  • 차량 안전 시스템: 교육 시연을 위한 알코올 인터록 개념 프로토타입
  • 공기 질 스테이션: 멀티 센서 공기 질 모니터의 일부로 알코올 감지 포함

비디오 튜토리얼

아래 비디오를 시청하여 ESP32 C3 Super Mini 및 MQ3 알코올 센서로 이 프로젝트의 시각적 안내를 받으세요.

직접 도전하기

ESP32 C3 Super Mini 알코올 센서 프로젝트를 한 단계 더 나아가 준비가 되셨나요? 다음 도전을 시도해보세요:

  • 쉬움: 알코올이 깨끗한 임계값 이상으로 감지될 때 켜지는 LED 추가
  • 쉬움: 센서가 높은 알코올 농도를 감지할 때 울리는 부저 추가
  • 중간: 깨끗함, 중간, 취한 수준을 보여주는 신호등 시스템(Green/Yellow/Red LED) 생성
  • 중간: 타임스탬프가 있는 SD 카드에 센서 판독값 기록하여 데이터 분석
  • 고급: Blynk 또는 MQTT를 통해 스마트폰으로 알코올 감지 경고를 보내도록 WiFi 연결 추가
  • 고급: 실시간 판독값 및 상태 메시지를 표시하는 OLED 디스플레이로 완전한 호흡 측정기 구축