ESP32 마이크로파이썬 펌프 제어

이 가이드에서는 ESP32와 MicroPython을 사용하여 12V 펌프를 제어하는 방법을 배웁니다. 구체적으로는 다음 내용을 학습합니다:

이 튜토리얼은 식물, 수족관 또는 물 보충 스테이션에 물을 주는 시스템을 만드는 데 도움이 될 것입니다.

펌프는 릴레이 또는 MOSFET 모듈로 켜고 끌 수 있습니다. 릴레이는 펌프를 시작하고 멈추기만 합니다. MOSFET 모듈도 시작하고 멈출 수 있지만, PWM으로 펌프를 더 느리게 또는 더 빠르게 돌릴 수도 있어 물이 흐르는 양을 제어할 수 있습니다. 게다가 딸깍 소리도 나지 않습니다. 두 가지 버전을 모두 만들어 봅니다.

ESP32 마이크로파이썬 펌프

준비물

1×38-pin ESP32 ESP-WROOM-32 Dev Module - Narrow 쿠팡 | 아마존
1×(또는) 38-pin ESP32 ESP-WROOM-32 Dev Module - Wide 쿠팡 | 아마존
1×(또는) 30-pin ESP32 ESP-WROOM-32 Dev Module - Wide 아마존
1×(또는) ESP32 Uno-form board 아마존
1×(또는) ESP32 S3 Uno-form board 아마존
1×USB 케이블 타입-A to 타입-C (USB-A PC용) 쿠팡 | 아마존
1×USB 케이블 타입-C to 타입-C (USB-C PC용) 아마존
1×릴레이 아마존
1×(또는) MOSFET Module (AOD4184, LR7843 or FR120N) 아마존
1×12V 펌프 쿠팡 | 아마존
1×Vinyl Tube 아마존
1×12V 전원 어댑터 아마존
1×DC 커넥터 전원 연결 잭 플러그 소켓 쿠팡 | 아마존
1×점퍼케이블 쿠팡 | 아마존
1×(추천) ESP32용 스크루 터미널 확장 보드 쿠팡 | 아마존
1×(추천) Breakout Expansion Board for ESP32 쿠팡 | 아마존
1×(추천) ESP32용 전원 분배기 쿠팡 | 아마존
공개: 이 포스팅 에 제공된 일부 링크는 아마존 제휴 링크입니다. 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

12V 펌프에 대하여

핀 배치

ESP32 마이크로파이썬 펌프 핀 배치
image source: diyables.io

12V 펌프는 보통 두 개의 핀이 있습니다.

  • 음극(-) 핀(검정색)을 DC 전원 공급 장치의 GND에 연결합니다.
  • 양극(+) 핀(빨간색)을 DC 전원 공급 장치의 12V에 연결합니다.

펌프 제어 방법

12V 전원 공급 장치는 12V 펌프에 완벽하게 작동합니다. ESP32로 펌프를 제어하려면 두 장치 사이에 릴레이를 연결하십시오. ESP32는 릴레이를 사용하여 펌프의 전원을 켜고 끕니다. ESP32용 릴레이 또는 MicroPython 프로그래밍이 처음이라면, 아래 튜토리얼을 확인해 보시기 바랍니다.

MOSFET 모듈을 한 번도 사용해 본 적이 없나요? 먼저 ESP32 마이크로파이썬 - MOSFET 모듈을 읽어 보세요. 핀, 나사 단자, PWM 코드를 설명합니다.

펌프용 릴레이와 MOSFET 모듈 비교

릴레이 MOSFET 모듈
펌프 제어 작동 또는 정지 작동 또는 정지, 그리고 펌프 속도와 유량 (PWM)
가장 적합한 용도 AC 펌프, 단순한 켜기/끄기 12V DC 펌프, 유량 제어, 잦은 시작과 정지
부하 종류 AC 또는 DC DC만 가능
펌프용 전원 릴레이 정격 안의 모든 전압 6V 이상 (게이트가 이 전원에서 전력을 받음)
스위칭 소리 딸깍 소리가 들림 없음
스위칭 시간 느림, 밀리초 단위 매우 짧음
마모 접점이 시간이 지나면 마모됨 움직이는 부분 없음
절연 예, 코일과 접점 예, PC817 포토커플러

여기에서 사용하는 12V DC 펌프에서 물의 유량을 정하고 싶다면, 예를 들어 식물에 부드러운 흐름을 주고 싶다면 MOSFET 모듈을 선택하세요. 펌프가 교류 전원(AC)으로 작동한다면, 두 가지 중 릴레이만 사용할 수 있습니다.

선연결

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

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

이 회로는 브레드보드 없이도 만들 수 있습니다. 같은 배선은 다음과 같습니다:

ESP32 마이크로파이썬 펌프 배선도 (브레드보드 없음)

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

  • ESP32와 브레드보드(Vin 핀을 통한 전원 공급)를 사용하여 펌프를 연결하고 제어하는 방법
ESP32 마이크로파이썬 펌프 배선도

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

ESP32와 펌프를 연결하고 펌프를 제어하는 방법
ESP32와 펌프 연결 및 제어 방법

ESP32 마이크로파이썬 코드

아래 코드는 펌프를 5초간 켠 후 5회의 사이클 동안 끕니다.

/* * 이 ESP32 마이크로파이썬 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP32 마이크로파이썬 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp32-micropython/esp32-micropython-controls-pump */ from machine import Pin import time RELAY_PIN = 16 # The ESP32 pin GPIO16 connected to the pump via relay pin # Initialize the relay pin as an output relay = Pin(RELAY_PIN, Pin.OUT) # Infinite loop while True: relay.value(1) # Turn on pump for 5 seconds time.sleep(5) relay.value(0) # Turn off pump for 5 seconds time.sleep(5)

자세한 사용 방법

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

  • 컴퓨터에 Thonny IDE가 설치되어 있는지 확인하십시오.
  • ESP32 보드에 MicroPython 펌웨어가 로드되어 있는지 확인하십시오.
  • MicroPython과 함께 ESP32를 처음 사용한다면 단계별 지침을 위해 ESP32 마이크로파이썬 - 시작하기 가이드를 확인하십시오.
  • 제공된 다이어그램에 따라 ESP32 보드를 12V 펌프에 연결하십시오.
  • USB 케이블을 사용하여 ESP32 보드를 컴퓨터에 연결하십시오.
  • 컴퓨터에서 Thonny IDE를 열십시오.
  • Thonny IDE에서 도구 옵션으로 이동하십시오.
  • 인터프리터 탭에서 드롭다운 메뉴에서 MicroPython (ESP32)를 선택하십시오.
  • 올바른 포트가 선택되어 있는지 확인하십시오. Thonny IDE가 보통 자동으로 감지하지만, 때로는 수동으로 선택해야 할 수도 있습니다 (예: Windows에서는 COM12, Linux에서는 /dev/ttyACM0).
  • 제공된 MicroPython 코드를 복사하여 Thonny 편집기에 붙여넣으십시오.
  • ESP32에 코드를 저장하려면:
  •   ..* 저장 버튼을 클릭하거나 Ctrl+S를 누르십시오.
  •   ..* 저장 대화 상자에서 MicroPython 장치를 선택하십시오.
  •   ..* 파일 이름을 main.py로 지정하십시오.
  • 스크립트를 실행하려면 녹색 실행 버튼을 클릭하거나 F5를 누르십시오.
  • 펌프가 올바르게 작동하는지 확인하십시오.

코드 설명

위의 ESP32 MicroPython 코드에 있는 주석들이 모든 것을 설명합니다.

MOSFET 모듈로 펌프 유량 제어하기

이 부분에서는 릴레이 대신 MOSFET 모듈을 사용합니다. PWM 듀티 사이클을 바꾸면 ESP32가 펌프 속도를 정하고, 그에 따라 펌프가 옮기는 물의 양도 정해집니다.

배선도

ESP32 마이크로파이썬 펌프 mosfet 모듈 배선도

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

브레드보드를 사용하지 않는다면 이렇게 연결하세요:

ESP32 마이크로파이썬 펌프 mosfet 모듈 배선도 (브레드보드 없음)

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

MOSFET 모듈 핀 연결 대상
PWM ESP32 GPIO18
GND ESP32 GND
+ 12V 어댑터 + (DC 전원 잭 경유) 및 펌프 빨간색 전선 (+)
LOAD 펌프 검은색 전선 (−)
− 12V 어댑터 − (DC 전원 잭 경유)

펌프 모터는 코일이므로, 펌프의 두 전선 사이에 플라이백 다이오드(1N4007 또는 1N5819)를 추가하세요. 줄무늬가 있는 쪽(캐소드)은 펌프 + 전선에, 다른 쪽은 펌프 − 전선에 연결합니다.

ESP32 MicroPython 코드 - MOSFET 모듈로 펌프 제어

펌프는 먼저 2초 동안 최대 출력으로 작동한 다음, 2초 동안 멈춥니다. 그다음 출력이 10%에서 100%까지 단계적으로 올라가고, 물의 흐름이 강해집니다. 그 후 출력이 단계적으로 내려가고, 흐름이 약해지다가 멈춥니다.

/* * 이 ESP32 마이크로파이썬 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP32 마이크로파이썬 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp32-micropython/esp32-micropython-controls-pump */ from machine import Pin, PWM import time MOSFET_PIN = 18 # ESP32 GPIO18 connected to the PWM pin of the MOSFET module pwm = PWM(Pin(MOSFET_PIN), freq=500) # 500 Hz PWM, slow enough for the module's optocoupler pwm.duty_u16(0) # start with the load OFF def set_load(percent): pwm.duty_u16(percent * 65535 // 100) # convert 0-100% to 0-65535 print("Load power: {}%".format(percent)) while True: # turn the load fully ON, then fully OFF print("Load: ON") set_load(100) time.sleep(2) print("Load: OFF") set_load(0) time.sleep(2) # increase the power step by step (PWM) for percent in range(10, 101, 10): set_load(percent) time.sleep(0.5) # decrease the power step by step (PWM) for percent in range(90, -1, -10): set_load(percent) time.sleep(0.5) time.sleep(1)

자세한 사용 방법

  • 위의 릴레이 Quick Steps에 따라 Thonny와 ESP32를 설정하세요.
  • 펌프를 물에 넣으세요. 물 없이 절대 작동시키지 마세요.
  • 다이어그램과 같이 모든 것을 연결하되, 12V 어댑터는 아직 꽂지 마세요.
  • 코드를 ESP32에 main.py로 저장하세요.
  • 12V 어댑터를 꽂고 녹색 실행 버튼을 클릭하세요 (또는 F5 키를 누르세요).
  • 물의 흐름과 Shell의 메시지를 확인하세요.
Shell x
>>> %Run -c $EDITOR_CONTENT
MPY: soft reboot Load: ON Load power: 100% Load: OFF Load power: 0% Load power: 10% Load power: 20% Load power: 30% Load power: 40% Load power: 50% Load power: 60% Load power: 70% Load power: 80% Load power: 90% Load power: 100% Load power: 90% Load power: 80% Load power: 70% Load power: 60% Load power: 50% Load power: 40% Load power: 30% Load power: 20% Load power: 10% Load power: 0%
MicroPython (ESP32) • CP2102 USB To UART Bridge Controller @ COM12 ≡

낮은 출력에서는 펌프가 웅웅거리기만 하고 물을 옮기지 못할 수 있습니다. 이는 정상입니다. 더 높은 수준에서 펌핑을 시작합니다.

기억하세요: MOSFET 모듈은 DC 펌프 전용이며, 공급 전압은 최소 약 6V여야 합니다. AC 펌프에는 릴레이를 사용하세요.

동영상

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