ESP32 팬 제어

이 튜토리얼은 ESP32를 사용하여 팬을 제어하는 방법을 안내합니다.

팬을 구동하는 방법은 두 가지입니다. 릴레이 또는 MOSFET 모듈입니다. 릴레이는 팬을 켜거나 끌 수만 있습니다. MOSFET 모듈은 켜고 끄는 것은 물론, 팬이 도는 속도도 바꿀 수 있습니다. 이 페이지에서는 두 가지 방법을 단계별로 보여 줍니다.

준비물

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 DC 선풍기 아마존
1×(또는) 5V DC 선풍기 쿠팡 | 아마존
1×12V 전원 어댑터 아마존
1×브레드보드 쿠팡 | 아마존
1×점퍼케이블 쿠팡 | 아마존
1×(옵션) DC 커넥터 전원 연결 잭 플러그 소켓 쿠팡 | 아마존
1×(추천) ESP32용 스크루 터미널 확장 보드 쿠팡 | 아마존
1×(추천) Breakout Expansion Board for ESP32 쿠팡 | 아마존
1×(추천) ESP32용 전원 분배기 쿠팡 | 아마존
공개: 이 포스팅 에 제공된 일부 링크는 아마존 제휴 링크입니다. 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

DC 팬에 관하여

핀 배치

fan 사용법 핀아웃
image source: diyables.io

DC 팬은 보통 두 개의 핀이 있습니다:

  • 음극(-) 핀(검정색): DC 전원 공급 장치의 음극선에 연결해야 합니다
  • 양극(+) 핀(빨간색): DC 전원 공급 장치의 양극선에 연결해야 합니다

DC 전원 공급 장치의 전압은 팬이 지정한 전압과 같아야 합니다. 이 튜토리얼에서는 12VDC와 5VDC 팬을 사용할 것입니다.

팬 제어 방법

  • DC 팬이 12V/5V 전원 공급 장치로 작동되면 전속력으로 작동합니다.
  • DC 팬이 12V/5V PWM 신호로 구동되면 팬의 속도를 제어할 수 있습니다.

이 튜토리얼은 ESP32를 사용하여 릴레이로 팬을 켜고 끄는 방법을 안내합니다. MOSFET 모듈로 팬의 속도를 제어하는 방법은 이 튜토리얼의 끝부분에서 보여 줍니다.

팬은 높은 전압을 사용하기 때문에 ESP32에 직접 연결할 수 없습니다. 릴레이를 거쳐 간접적으로 ESP32에 팬을 연결해야 합니다. 릴레이에 대한 구체적인 튜토리얼(핀아웃, 작동 방식, 프로그래밍 방법 등)이 있으며, ESP32 - 릴레이에서 릴레이에 대해 배울 수 있습니다.

MOSFET 모듈은 또 다른 선택지입니다. 핀, 배선, 작동 원리는 ESP32 - MOSFET 모듈 튜토리얼에서 설명합니다.

팬용 릴레이와 MOSFET 모듈 비교

릴레이 MOSFET 모듈
제어할 수 있는 것 켜기와 끄기만 가능 켜기, 끄기, 팬 속도(PWM)
소음 전환할 때마다 딸깍 소리가 남 소리 없음
전환 속도 느림, 몇 밀리초 매우 빠름
수명 접점이 서서히 마모됨 내부에 움직이는 부품이 없음
팬 종류 AC 또는 DC 팬 DC 팬만 가능
팬 공급 전압 릴레이 정격 범위 내에서 자유 약 6V 이상
ESP32와의 절연 예, 코일과 접점이 분리됨 예, PC817 포토커플러
이런 경우에 적합 팬이 AC로 작동하거나 켜고 끄기만으로 충분할 때 DC 팬에 속도 제어가 필요할 때

12V DC 팬에는 MOSFET 모듈이 더 좋은 선택입니다. 전속력이 필요하지 않을 때 팬을 느리고 조용하게 돌릴 수 있기 때문입니다. 5V 팬은 MOSFET 모듈에 맞지 않습니다. 모듈에 약 6V 이상의 전원이 필요하기 때문입니다. 5V 팬이나 AC 팬에는 릴레이를 사용하세요.

배선도

  • 브레드보드를 사용하여 ESP32와 팬을 연결하는 방법 (USB 케이블로 전원 공급)
ESP32 fan 연결 배선도

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

ESP32 및 다른 구성 요소에 전원을 공급하는 방법에 대해 잘 알지 못하는 경우, 다음 튜토리얼에서 안내를 찾을 수 있습니다: ESP32 전원 공급 방법.

  • 브레드보드를 사용하여 ESP32와 팬을 연결하는 방법 (Vin 핀으로 전원 공급)
ESP32 fan 연결 배선도

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

how to connect ESP32 and controls fan
how to wire ESP32 and controls fan

ESP32 코드

아래 코드는 10초마다 팬을 주기적으로 켜고 끕니다.

/* * 이 ESP32 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP32 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp32/esp32-controls-fan */ #define RELAY_PIN 16 // ESP32 핀 GPIO16, 릴레이를 통해 팬에 연결 // 설정 함수는 보드를 리셋하거나 전원을 켤 때 한 번 실행됩니다. void setup() { // 디지털 핀 A5를 출력으로 초기화합니다. pinMode(RELAY_PIN, OUTPUT); } // 루프 함수는 계속해서 무한히 반복 실행됩니다. void loop() { digitalWrite(RELAY_PIN, HIGH); // 팬을 10초 동안 켭니다 delay(10000); digitalWrite(RELAY_PIN, LOW); // 팬을 10초 동안 끕니다 delay(10000); }

사용 방법

  • ESP32를 처음 사용하는 경우, ESP32 - 소프트웨어 설치을 참조하세요.
  • 위 이미지와 같이 배선하세요.
  • USB Type-C 케이블을 이용해 ESP32 보드를 PC에 연결하세요.
  • PC에서 Arduino IDE를 엽니다.
  • 올바른 ESP32 보드(예: ESP32 Dev Module)와 COM 포트를 선택하세요.
  • 위의 코드를 복사하여 Arduino IDE에 붙여넣으세요.
  • Arduino IDE에서 Upload 버튼을 클릭하여 ESP32 보드에 코드를 컴파일하고 업로드하세요.
  • 팬의 상태를 확인하세요.

코드 줄별 설명

위의 ESP32 코드에는 줄별 설명이 포함되어 있습니다. 코드의 주석을 읽어주세요!

MOSFET 모듈로 팬 속도를 제어하는 방법

이제 릴레이를 MOSFET 모듈로 바꿔 보겠습니다. ESP32가 모듈에 PWM 신호를 보내면, 12V 팬이 그에 따라 빨라지거나 느려집니다.

팬과 MOSFET 모듈 배선도

ESP32 cooling fan mosfet module 연결 배선도

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

출발 도착
ESP32 GPIO18 모듈 PWM 핀
ESP32 GND 모듈 GND 핀
12V 어댑터 + 모듈 + 단자
팬 + (빨간 선) 모듈 + 단자 (어댑터 +와 함께)
팬 − (검은 선) 모듈 LOAD 단자
12V 어댑터 − 모듈 − 단자

팬 안에는 코일이 있으므로, 팬의 두 선 사이에 플라이백 다이오드(1N4007 또는 1N5819)를 연결하세요. 줄무늬가 있는 쪽(캐소드)을 팬의 + 선에 연결합니다. 팬에 노란색 세 번째 선이 있으면 연결하지 않고 그대로 두세요.

팬 속도를 위한 ESP32 코드

이 코드는 먼저 팬을 2초 동안 전속력으로 돌리고, 2초 동안 멈춥니다. 그다음 출력을 10%에서 100%까지 올려 팬이 점점 빨리 돌게 하고, 다시 내려서 팬이 느려지게 합니다. 많은 팬이 아주 낮은 출력에서는 시작하지 않으므로, 10%나 20%에서는 팬이 멈춰 있을 수 있습니다.

/* * 이 ESP32 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP32 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp32/esp32-controls-fan */ const int MOSFET_PIN = 18; // ESP32 GPIO18 connected to the PWM pin of the MOSFET module void setup() { Serial.begin(9600); pinMode(MOSFET_PIN, OUTPUT); analogWrite(MOSFET_PIN, 0); // start with the load OFF } void setLoad(int percent) { int duty = map(percent, 0, 100, 0, 255); // convert 0-100% to 0-255 analogWrite(MOSFET_PIN, duty); Serial.print("Load power: "); Serial.print(percent); Serial.println("%"); } void loop() { // turn the load fully ON, then fully OFF Serial.println("Load: ON"); setLoad(100); delay(2000); Serial.println("Load: OFF"); setLoad(0); delay(2000); // increase the power step by step (PWM) for (int percent = 10; percent <= 100; percent += 10) { setLoad(percent); delay(500); } // decrease the power step by step (PWM) for (int percent = 90; percent >= 0; percent -= 10) { setLoad(percent); delay(500); } delay(1000); }

사용 방법

  • Arduino IDE와 보드는 위의 릴레이 사용 방법과 같은 방식으로 설정하세요.
  • 위 배선도와 같이 팬, MOSFET 모듈, 12V 어댑터를 배선하세요. 어댑터는 꽂지 마세요.
  • 위의 코드를 복사하여 Arduino IDE에 붙여넣고 ESP32에 업로드하세요.
  • 12V 어댑터를 꽂으세요.
  • 보드레이트 9600으로 Serial Monitor를 엽니다.
  • 팬의 속도가 바뀌는 것을 듣고 보면서 Serial Monitor를 확인하세요.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32 Dev Module' on 'COM15')
New Line
9600 baud
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%
Ln 11, Col 1
ESP32 Dev Module on COM15
2

팁: MOSFET 모듈은 DC에서만 작동하며 약 6V 이상의 팬 전원이 필요합니다. AC 팬에는 계속 릴레이를 사용하세요.

동영상

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

댓글