ESP32 마이크로파이썬 가스 센서

자세한 설명, 코드 샘플, 배선도, 비디오 튜토리얼, 그리고 각 코드 줄에 대한 명확한 설명을 제공하여 ESP32를 원활하게 사용할 수 있도록 도와드립니다.

이 튜토리얼은 MicroPython 프로그래밍을 활용하여 ESP32와 MQ2 가스 센서를 이용해 공기질을 모니터링하는 방법을 안내합니다. 이를 통해 LPG, 연기, 알코올, 프로판, 수소, 메탄, 일산화탄소 등 다양한 인화성 가스의 농도를 측정할 수 있습니다. 자세히 살펴보면, 다음 내용을 배우게 될 것입니다:

ESP32 마이크로파이썬 가스 센서

준비물

1×ESP32 ESP-WROOM-32 개발 모듈 쿠팡 | 아마존
1×USB 케이블 타입-A to 타입-C (USB-A PC용) 쿠팡 | 아마존
1×USB 케이블 타입-C to 타입-C (USB-C PC용) 아마존
1×MQ2 가스 센서 아마존
1×점퍼케이블 쿠팡 | 아마존
1×(추천) ESP32용 스크루 터미널 확장 보드 쿠팡 | 아마존
1×(추천) ESP32용 전원 분배기 쿠팡 | 아마존
공개: 이 섹션에서 제공된 링크 중 일부는 제휴 링크입니다. 이 링크를 통해 구매한 경우 추가 비용없이 수수료를 받을 수 있습니다. 지원해 주셔서 감사합니다.

MQ2 가스 센서에 대하여

MQ2 가스 센서는 LPG, 연기, 알코올, 프로판, 수소, 메탄, 탄소 등 다양한 가스를 감지할 수 있습니다. 신호 전송을 위해 디지털 출력 핀과 아날로그 출력 핀 모두를 갖추고 있습니다.

MQ2 센서는 개별 가스에 대한 구체적인 정보를 제공하지 않고, 대신 혼합 가스나 여러 가스가 동시에 존재함을 나타냅니다.

MQ2 센서를 사용하여 가스 누출을 감지하거나 열악한 공기 질을 모니터링할 수 있으며, 이를 통해 경보를 작동하거나 공조 시스템을 활성화하는 등 적절한 조치를 취할 수 있습니다.

핀아웃

다음은 수정된 버전입니다:

MQ2 가스 센서에는 네 개의 핀이 있습니다:

  • VCC 핀: 이 핀을 VCC (5V)에 연결합니다.
  • GND 핀: 이 핀을 GND (0V)에 연결합니다.
  • DO 핀: 이것은 디지털 출력 핀입니다. 가연성 가스가 감지되면 LOW(저전압)로, 가스가 없으면 HIGH(고전압)로 변합니다. 작은 조정 가능한 부품을 사용하여 감지 임계값을 조절할 수 있습니다.
  • AO 핀: 이것은 아날로그 출력 핀으로, 가스 농도에 따라 변하는 전압을 출력합니다. 가스 농도가 높으면 전압이 상승하고, 낮으면 전압이 하락합니다.
mq2 가스 센서 핀아웃

센서에는 두 개의 LED 표시기가 있습니다:

  • PWR-LED: 센서에 전원이 공급되고 있음을 나타냅니다.
  • DO-LED: DO 핀 값에 따라 가스가 감지되면 점등되며, 감지되지 않으면 꺼집니다.

작동 방식

DO 핀에 관하여:

  • 모듈에는 가스 농도에 대한 민감도를 조절할 수 있는 노브가 있습니다.
  • 가스 농도가 설정된 임계값을 초과하면 센서의 출력 핀이 LOW 상태가 되며, DO-LED 라이트가 켜집니다.
  • 가스 농도가 설정된 임계값 미만이면 센서의 출력 핀이 HIGH 상태가 되며, DO-LED 라이트가 꺼집니다.

AO 핀의 경우:

  • 가스 농도가 증가하면, 전압이 상승합니다.
  • 가스 농도가 감소하면, 전압이 하락합니다.

포텐셔미터는 AO 핀의 값에 영향을 미치지 않습니다.

MQ2 센서 예열

MQ2 가스 센서는 사용 전에 예열 기간이 필요합니다. 센서를 한 달 이상 사용하지 않았다면, 정확한 판독 결과를 위해 24-48시간 예열시켜야 합니다. 최근에 사용했다면, 5-10분의 예열로 충분합니다. 초기에는 판독값이 높을 수 있으나 시간이 지나면서 안정됩니다.

MQ2 센서를 예열하려면, VCCGND 핀을 전원 공급 장치 또는 ESP32의 VCCGND 핀에 연결하고, 필요한 시간 동안 그대로 유지합니다.

선연결

MQ2 가스 센서 모듈은 두 가지 출력을 제공합니다. 요구 사항에 따라 하나 또는 둘 다 사용할 수 있습니다.

  • 브레드보드를 사용하여 ESP32와 가스 센서를 연결하는 방법 (USB 케이블로 전원 공급)
ESP32 마이크로파이썬 mq2 가스 센서 배선도

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

  • Vin 핀을 통해 전원을 공급받는 breadboard을 사용하여 ESP32와 가스 센서를 연결하는 방법
ESP32 마이크로파이썬 mq2 가스 센서 배선 지침

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

ESP32와 가스 센서를 연결하는 방법
ESP32와 가스 센서 연결 방법

ESP32 MicroPython 코드 - DO 핀에서 값 읽기

/* * 이 ESP32 마이크로파이썬 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP32 마이크로파이썬 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp32-micropython/esp32-micropython-gas-sensor */ from machine import Pin import utime # For timing functions DO_PIN = Pin(16, Pin.IN) # The ESP32 pin GPIO16 as an digital input pin of the MQ2 gas sensor module while True: gas_state = DO_PIN.value() # Read the digital value from the pin if gas_state == 1: print("The gas is NOT present") else: print("The gas is present") utime.sleep(1) # Add a small delay to avoid spamming the output

자세한 사용 방법

ESP32에서 Thonny IDE를 사용하여 MicroPython 코드를 설정하고 실행하는 방법에 대한 지침은 다음과 같습니다:

  • 컴퓨터에 Thonny IDE가 설치되어 있는지 확인하십시오.
  • ESP32 보드에 MicroPython 펌웨어가 로드되어 있는지 확인하십시오.
  • MicroPython을 사용하는 ESP32가 처음인 경우, 단계별 지침은 ESP32 마이크로파이썬 - 시작하기를 참고하십시오.
  • 제공된 다이어그램에 따라 ESP32 보드를 MQ2 가스 센서에 연결하십시오.
  • ESP32 보드를 USB 케이블로 컴퓨터에 연결하십시오.
  • 컴퓨터에서 Thonny IDE를 실행하십시오.
  • Thonny IDE에서, Tools Options 메뉴로 이동하십시오.
  • Interpreter 탭에서 드롭다운 메뉴에서 MicroPython (ESP32)를 선택하십시오.
  • 올바른 포트가 선택되었는지 확인하십시오. Thonny IDE는 보통 자동으로 감지하지만, Windows의 경우 COM12 또는 Linux의 경우 /dev/ttyACM0와 같이 수동으로 선택해야 할 수도 있습니다.
  • 제공된 MicroPython 코드를 복사하여 Thonny 에디터에 붙여넣으십시오.
  • 코드를 ESP32에 저장하려면:
    • Save 버튼을 클릭하거나 Ctrl+S를 누르십시오.
    • 저장 대화 상자에서 MicroPython device를 선택하십시오.
    • 파일 이름을 main.py로 지정하십시오.
  • 녹색 Run 버튼을 클릭하거나 F5를 눌러 스크립트를 실행하십시오.
  • MQ2 가스 센서를 감지가 필요한 연기나 가스 근처에 두십시오.
  • Thonny 하단의 Shell에서 메시지를 확인하십시오.
Shell x
>>> %Run -c $EDITOR_CONTENT
MPY: soft reboot The gas is NOT present The gas is NOT present The gas is NOT present The gas is NOT present The gas is NOT present The gas is present The gas is present The gas is present The gas is present The gas is present
MicroPython (ESP32) • CP2102 USB To UART Bridge Controller @ COM12 ≡

LED 불빛이 항상 켜져 있거나 켜지지 않을 경우, 작은 노브를 돌려 센서의 민감도를 조절할 수 있습니다.

ESP32 MicroPython 코드 - AO 핀에서 값 읽기

/* * 이 ESP32 마이크로파이썬 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP32 마이크로파이썬 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp32-micropython/esp32-micropython-gas-sensor */ from machine import ADC, Pin import utime # For timing functions AO_PIN = ADC(Pin(36)) # The ESP32 pin GPIO36 (ADC0) as an analog input pin of the MQ2 gas sensor module # Set the ADC width (resolution) to 12 bits AO_PIN.width(ADC.WIDTH_12BIT) # Set the attenuation to 11 dB, allowing input range up to ~3.3V AO_PIN.atten(ADC.ATTN_11DB) while True: gas_value = AO_PIN.read() # Read the analog value (0-4095) print(gas_value) # Print the analog value utime.sleep(1) # Add a small delay to avoid spamming the output

자세한 사용 방법

  • 제공된 MicroPython 코드를 복사하여 Thonny 편집기에 붙여넣습니다.
  • 코드를 ESP32 보드에 저장합니다.
  • 녹색 실행 버튼을 클릭하거나 (또는 F5 키를 눌러) 스크립트를 실행합니다.
  • 감지하려는 연기 또는 가스 근처에 MQ2 가스 센서를 배치합니다.
  • Thonny 하단의 Shell에서 메시지를 확인합니다.
Shell x
>>> %Run -c $EDITOR_CONTENT
MPY: soft reboot MQ2 sensor AO value: 935 MQ2 sensor AO value: 1136 MQ2 sensor AO value: 1136 MQ2 sensor AO value: 1573 MQ2 sensor AO value: 1674 MQ2 sensor AO value: 1938 MQ2 sensor AO value: 1954 MQ2 sensor AO value: 21000 MQ2 sensor AO value: 2002 MQ2 sensor AO value: 2014 MQ2 sensor AO value: 2017
MicroPython (ESP32) • CP2102 USB To UART Bridge Controller @ COM12 ≡

DO 또는 AO의 값을 사용하여 대기 질이 귀하의 기준에 부합하는지 확인하거나 경보를 작동시키거나 환기 시스템을 켤 수 있습니다.

※ 주의:

이 튜토리얼은 가스 센서에 연결된 ADC(아날로그-디지털 변환기)에서 값을 읽기 위해 adc.read() 함수를 사용하는 방법을 보여줍니다. ESP32의 ADC는 높은 정밀도가 필요하지 않은 프로젝트에 적합합니다. 그러나 프로젝트에 정확한 측정이 필요한 경우 다음 사항을 유념하십시오:

  • ESP32 ADC는 완벽하게 정확하지 않으며 정밀한 결과를 위해 보정이 필요할 수 있습니다. 각 ESP32 보드는 약간씩 다를 수 있으므로 보정은 각 보드마다 필요합니다.
  • 보정은 특히 초보자에게 도전적일 수 있으며 항상 원하는 정확한 결과를 얻지 못할 수도 있습니다.

높은 정밀도가 필요한 프로젝트의 경우, ESP32와 함께 외부 ADC(예: ADS1115)를 사용하거나 더 신뢰할 수 있는 ADC를 가진 Arduino를 선택하는 것을 고려하십시오. 여전히 ESP32 ADC를 보정하려는 경우, ESP32 ADC Calibration Driver를 참조하십시오: https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/peripherals/adc_calibration.html

동영상

비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.

관련 튜토리얼