본문 바로가기
ESP32

온도 및 PIR 센서가 포함된 올인원 RGB LED 컨트롤러 DIY

by 모빌리티키즈 2025. 3. 10.
728x90
반응형

RGBW LED 스트립과 스마트 컨트롤러로 방에 멋진 조명을 설치하고 싶으신가요? 이 가이드는 PIR 모션 센서, 온도 및 광 센서를 사용해 WiFi 기능까지 갖춘 저렴한 올인원 RGB LED 컨트롤러를 만드는 방법을 알려드립니다. 이 모든 것을 약 10유로의 비용으로 가능합니다!

 

프로젝트 개요

이 컨트롤러는 PIR 모션 센서를 통해 움직임을 감지하여 LED 스트립을 자동으로 켜고, 온도 센서로 방의 온도를 감지하며, 광 센서를 통해 조도를 측정하여 최적의 조명을 설정합니다. 홈 어시스턴트와도 연동 가능해 시간대별 조도 설정 등 무궁무진한 자동화가 가능합니다.

 

 

필요한 재료

다음은 이 프로젝트에 필요한 구성 요소들입니다:

  • ESP32 Wemos D1 미니 보드
  • 12V RGBW LED 스트립 (전용 백색 LED 포함)
  • 12V 50W 전원 공급 장치
  • 4 AOD4184 MOSFET 모듈
  • 2 HC-SR602 PIR 모션 센서
  • SHT31 온도 및 습도 센서
  • BH1750 조도 센서
  • Mini560 5V 강압 전압 레귤레이터
  • PCB 커넥터 및 와이어

그리고 납땜, 핫글루, JST 커넥터 공구 및 3D 프린터 등 몇 가지 도구도 필요합니다.

제작 단계

1단계: LED 스트립 구성 12V RGBW LED 스트립을 준비합니다. 전용 백색 LED 덕분에 따뜻한 백색 조명을 만들 수 있습니다. 스트립은 공통 양극(12V)에 연결되며, 각 채널(빨간색, 녹색, 파란색, 백색)을 MOSFET 모듈을 통해 제어합니다.

2단계: 컨트롤러 설계 MOSFET 모듈은 ESP32 보드 핀에 연결됩니다. MOSFET은 LED의 각 채널을 PWM으로 제어하여 다양한 조명 효과를 생성할 수 있게 합니다. ESP32 보드는 WiFi 기능이 탑재되어 스마트폰이나 홈 어시스턴트를 통해 원격으로 LED를 제어할 수 있습니다.

3단계: 센서 추가

  • PIR 모션 센서는 방에 사람이 들어왔을 때 LED를 자동으로 켭니다.
  • SHT31 온도 및 습도 센서는 환경 데이터를 수집하여 홈 어시스턴트와 연동됩니다.
  • BH1750 광 센서는 조명을 환경에 맞게 자동 조정할 수 있도록 돕습니다.

4단계: 코드 작성 및 테스트 ESP32와 센서들을 연동하는 코드를 작성합니다. 인터넷에 제공된 오픈소스 코드를 활용할 수 있으며, 홈 어시스턴트와도 쉽게 통합할 수 있습니다.

활용 및 확장 아이디어

  • 방 자동화: 시간대, 조도, 온도에 따라 조명을 조절하세요.
  • 에너지 절약: 모션 센서를 통해 불필요한 에너지를 절약할 수 있습니다.
  • 추가 센서 연결: CO2 센서나 소음 센서를 추가하여 더 스마트한 방을 만들 수도 있습니다.

2단계: MOSFET 연결

MOSFET가 있는 PCB는 한쪽에 전원 공급 장치의 양극 및 음극 및 부하에 대한 3개의 단자가 있으며, 다른 쪽에는 마이크로 컨트롤러의 핀에 연결할 수 있는 GND와 PWM 입력이 있습니다. 4개의 MOSFET 모듈은 12V 전원 공급 장치의 양극 및 음극과 PWM 입력의 GND에 공통으로 연결됩니다. 보드를 서로 평평하게 놓으면 이러한 연결 자체로 인해 전선이 크게 엉망이 되었을 것입니다.

그래서 MOSFET 간의 연결을 위해 PCB를 수직으로 유지하기 위해 홀더를 3D 프린팅했습니다. 피복을 제거한 24AWG 와이어로 모든 보드의 양극, 음극 및 GND를 연결했습니다. 전선은 한 PCB의 구멍에서 다음 PCB의 구멍으로 곧장 이동하여 패드에 납땜됩니다. 이런 식으로 보드를 장착함으로써 와이어를 훨씬 깔끔하게 유지할 수 있었고, 보드 양쪽에 공기가 있는 MOSFET의 냉각도 향상시킬 수 있었습니다.

이 시점에서 각 보드의 PWM 입력에 짧은 케이블을 연결하고 공통 GND에 하나의 케이블을 연결했습니다. 이 케이블은 ESP32의 핀에 연결되어 LED를 어둡게 하는 PWM 신호를 생성합니다.

그런 다음 전원 부분으로 이동하여 LED 스트립에 포함된 커넥터를 사용하여 LED 스트립의 4개 채널을 4개의 MOSFET 출력에 연결했습니다. 전원 공급 장치를 연결하기 위해 2핀 케이블을 잘라 한쪽 전원 공급 장치의 양극 및 음극 나사 단자와 다른 쪽 MOSFET(+ 및 -)의 양극 및 음극 입력에 연결했습니다. 전원 공급 장치의 양극에 나는 또한 LED 스트립의 공통 양극을 연결했는데, 이는 직관적으로 커넥터의 검은색 와이어와 대조됩니다.

3단계: PIR 모션 센서

앞서 말했듯이 제가 만들고 있는 RGBW 컨트롤러에는 몇 가지 센서도 연결되어 있습니다. 제가 작업한 첫 번째 센서는 모션 센서입니다. 먼저 장착할 케이스를 설계하고 3D 프린팅했습니다. 케이스는 베이스, 센서용 구멍이 있는 뚜껑, 볼 조인트로 베이스에 고정되는 스탠드로 구성됩니다. 스탠드는 두 가지 버전으로 제공되는데, 하나는 센서를 테이블 위에 놓는 것이고 다른 하나는 옷장이나 다른 가구에 고정하는 것입니다. 볼 조인트를 사용하면 센서가 이미 최종 지점에 장착된 경우 센서의 완벽한 방향을 찾을 수 있습니다.

센서를 ESP32에 연결하기 위해 4핀 26AWG 케이블을 사용하기로 결정하고 메인 컨트롤러에서 센서를 넣으려는 지점까지 이동하는 데 필요한 길이로 자릅니다. 센서에는 실제로 3개의 전선이 필요하지만, 다음에 만들 센서에는 4개의 핀이 필요하기 때문에 4코어 케이블을 선택했습니다. 가지고 있다면 물론 3심 케이블을 사용할 수 있습니다. 베이스의 구멍을 통해 케이블을 배선했습니다. 그런 다음 세 개의 케이블 와이어를 모션 센서의 음극, 양극 및 출력에 납땜했습니다. 베이스 중앙에 있는 센서를 뜨거운 접착제로 붙이고 베이스 위에 뚜껑을 덮었습니다. 뚜껑은 디자인에 추가한 몇 가지 스냅 기능으로 베이스에 고정됩니다. 앞서 말했듯이 마운트는 볼 조인트로 센서에 고정되어 제자리에 고정됩니다.

마지막으로 JST 압착 도구를 사용하여 3핀 JST 커넥터를 케이블 끝에 압착했습니다.

드디어 센서가 준비되었습니다. 내 방 전체를 덮기 위해 두 개의 모션 센서를 만들었는데, 두 개의 다른 지점에 배치될 것입니다.

4단계: 온도 및 광 센서

이제 모션 센서가 준비되었으므로 온도 센서로 넘어갔습니다. 이를 위해 SHT31 온도 센서를 선택했는데, 이는 매우 정확하고 온도 외에도 습도를 측정할 수 있으며 i2c 프로토콜을 사용하여 마이크로 컨트롤러와 통신합니다. 이 센서는 또한 매우 컴팩트하며 실제 센서는 너비가 2.5mm에 불과한 작은 검은색 사각형이라는 점을 고려하십시오.

PIR 센서와 마찬가지로 온도 센서에서도 4심 케이블을 절단했습니다. PIR 센서의 경우 원하는 케이블 길이를 사용할 수 있는 경우 i2c 신호가 더 긴 케이블에서는 작동하지 않기 때문에 온도 센서의 경우 약 1.5미터의 케이블로 제한됩니다. 케이블의 4 개의 와이어를 센서의 양극, 음극, SCL 및 SDA 핀에 납땜했습니다. 아까와 마찬가지로 JST 커넥터를 케이블 끝에 연결했는데, 이번에는 4핀 커넥터를 사용했습니다.

내 설치에서 센서는 벽과 캐비닛 가장자리 사이의 공간에 숨겨져 있으므로 가능한 한 컴팩트하게 유지하기 위해 3D 프린팅 인클로저를 만들지 않았습니다.

이제 광 센서가 남았습니다. 공정하게 말하면, 모든 센서 중에서 이것은 가장 유용한 센서이며 아직 용도를 찾지 못했습니다. 어쨌든, 저는 온도 센서와 마찬가지로 i2c 프로토콜과 함께 작동하는 BH1750 광 센서를 사용했습니다. 연결은 온도 센서와 동일하며 온도 센서와 마찬가지로 광 센서도 케이블 끝에 4핀 JST 커넥터가 있습니다.

5단계: 메인 회로 기판

이제 모든 센서와 MOSFET이 있으므로 연결할 ESP32 보드로 회로를 만들어야 합니다. 먼저 55x70mm 퍼프보드 조각을 자릅니다. 그런 다음 몇 가지 수 점퍼 커넥터를 ESP32 보드에 납땜했습니다. 암 점퍼 커넥터를 사용하여 perfboard에 ESP32 보드를 납땜했습니다. 보드에는 온도 및 조도 센서용 4핀 커넥터 2개, 모션 센서 2개용 3핀 커넥터 2개, LED를 제어하는 MOSFET을 연결하기 위한 5핀 커넥터 1개, 5V로 보드에 전원을 공급하기 위한 2핀 커넥터 1개 등 JST 커넥터도 납땜했습니다.

구성 요소 간의 연결은 매우 간단합니다. 모든 센서는 ESP32에서 접지 및 3.3V 전원 공급 장치를 수신합니다. ESP32는 보드의 전원 커넥터에서 접지 및 5V를 수신합니다. 두 개의 모션 센서에는 디지털 출력(3.3V 또는 0V만 가능)이 있으며 ESP32의 핀 16과 17에 직접 연결했습니다. 온도 및 밝기 센서는 SDA 및 SCL에 두 개의 핀이 필요한 i2c 프로토콜을 사용합니다. 각 센서의 주소가 다르기 때문에 이러한 핀은 여러 센서 간에 공유될 수 있습니다. 따라서 온도 및 광 센서의 SDA 및 SCL은 핀 21 및 22에 연결됩니다. 이 핀에 3.3V에 연결된 두 개의 2.2k Ohm 저항도 추가했습니다. MOSFET의 4 개 핀은 빨간색 채널 용 ESP32 핀 26, 녹색 채널 용 18 개, 파란색 채널 용 19 개, 흰색 채널 용 23 핀에 직접 연결됩니다. MOSFET에는 GND용 핀도 있습니다. 보시다시피 연결은 매우 간단하며 이 프로젝트를 복제하려면 아래에 첨부된 배선 다이어그램을 찾을 수 있습니다.

배선도에 따라 많은 인내심을 가지고 보드 아래에 연결했습니다. 연결을 위해 뻣뻣한 구리선을 사용하여 약간의 흔적을 만들고 교차하는 흔적을 위해 실리콘 피복이 있는 와이어를 만들었습니다.

원하는 경우 회로 기판을 직접 만드는 대신 이 프로젝트를 위한 간단한 PCB를 설계하고 제조할 수 있습니다.

첨부 파일

6단계: 최종 조립

이제 메인 보드가 준비되었으므로 모든 구성 요소를 설치하기 위해 인클로저를 설계하고 3D 프린팅했습니다. 인클로저는 매우 간단하며 상자와 뚜껑으로만 구성되어 있습니다. 상자에는 M3 나사산 인서트를 넣고 납땜 인두를 사용하여 가열하는 4개의 구멍이 있습니다. 이 나사산 인서트는 나사로 상자를 닫는 데 사용됩니다.

인클로저에 모든 것을 장착하기 전에 마지막 연결을 해야 합니다. 먼저, MOSFET에서 나오는 전선에 5핀 JST 커넥터를 설치했습니다. 이 커넥터를 사용하여 보드에 연결했습니다. 그런 다음 LED에 전원을 공급할 32V 전원 공급 장치에서 입력에 5V가 필요한 ESP12에 전원을 공급하는 방법이 필요합니다. 이를 위해 작은 5V 전압 레귤레이터를 사용했습니다. 몇 개의 전선을 사용하여 레귤레이터의 입력과 전원에서 나오는 12V 와이어를 연결하고, 레귤레이터의 출력을 메인 보드의 5V 커넥터에 2핀 JST 커넥터를 사용하여 연결했습니다.

이제 드디어 메인 보드, MOSFET 및 전압 레귤레이터를 3D 프린팅 상자에 장착할 수 있었습니다. MOSFET을 설치하기 위해 인클로저 바닥에 몇 개의 슬롯을 설계했습니다. 그런 다음 보드와 MOSFET을 뜨거운 접착제로 고정합니다. 이 시점에서 센서에서 나오는 전선을 메인 보드의 커넥터에 연결한 후 M3 나사로 덮개를 닫을 수 있었습니다.

7단계: ESP32를 홈어시스턴트에 연결

회로를 테스트하기 전에 Home Assistant에 연결할 수 있도록 ESP32를 프로그래밍해야 합니다. ESP32가 구성되면 Home Assistant에서 LED를 제어하고 센서에서 데이터를 읽을 수 있습니다. Home Assistant를 사용하면 센서와 LED의 데이터를 사용하여 자동화를 만들 수도 있습니다. 예를 들어, 방에 들어가자마자 LED 스트립을 켜는 것을 만들었습니다.

Home Assistant는 단일 인터페이스에서 모든 스마트 장치를 관리할 수 있는 매우 강력한 오픈 소스 플랫폼입니다. Home Assistant는 로컬 네트워크에서 작동하므로 이를 실행할 장치가 필요합니다: Raspberry Pi 또는 저처럼 가상 머신에서 실행되는 Home Assistant가 있는 구형 Windows PC를 사용할 수 있습니다. 인터페이스에 액세스하려면 컴퓨터에서 웹페이지에 로그인하거나 스마트폰에서 홈어시스턴트 앱을 다운로드할 수 있습니다. 로컬 네트워크 외부에서 홈 어시스턴트에 연결하기 위해 가장 간단하고 안전한 솔루션인 Nabu Casa Cloud를 사용하고 있지만 무료는 아닙니다. 다른 솔루션이 있지만 완전히 안전하지는 않으므로 자신이하는 일을 정말 잘 알고있는 경우에만 사용할 것입니다.

ESP32를 홈 어시스턴트에 연결하기 위해 ESPHome을 사용합니다. ESPHome은 WiFi를 통해 ESP32 및 ESP8266 보드를 Home Assistant에 연결할 수 있는 정말 잘 만들어진 애드온입니다. ESP8266 ESPHome에 연결하려면 다음 단계를 따르십시오.

  1. 홈어시스턴트에 ESPHome 플러그인 설치
  2. ESPHome의 대시보드에서 +NEW DEVICE를 클릭합니다.
  3. 장치에 이름을 지정하십시오 (제 경우에는 "RGBW all-in-one controller"였습니다).
  4. 장치에 펌웨어를 설치하라는 메시지가 표시되면 이 단계 건너뛰기를 선택합니다: 나중에 펌웨어를 설치합니다.
  5. ESP32를 선택하고 다음을 클릭합니다.
  6. 주어진 암호화 키를 복사하면 나중에 필요합니다.
  7. 다시 한 번 ESP32에 펌웨어 설치를 건너뜁니다.
  8. 장치가 ESPHome 대시보드에 나타나면 편집을 클릭하여 장치의 코드를 확인합니다
  9. Wi-Fi 아래에 Wi-Fi SSID와 비밀번호를 삽입합니다.
와이파이:
SSID: your_wifi_ssid
비밀번호: your_wifi_password

 

  1. 연결을 보다 안정적으로 만들려면 다음 코드를 사용하여 ESP32의 고정 IP 주소를 설정하는 것이 좋습니다(코드를 복사하려면 다음 링크 사용: https://pastebin.com/UT05D03L).
와이파이:
SSID: your_wifi_ssid
비밀번호: your_wifi_password
 
manual_ip:
# 이것을 ESP의 IP로 설정합니다.
static_ip: 192.168.1.96
# 라우터의 IP 주소로 설정합니다. .1로 끝나는 경우가 많습니다.
게이트웨이: 192.168.1.1
# 네트워크의 서브넷입니다. 255.255.255.0은 대부분의 홈 네트워크에서 작동합니다.
서브넷: 255.255.255.0

 

  1. ESPHome에서 제공한 코드 끝에 다음 링크에서 찾을 수 있는 코드를 붙여넣습니다 https://pastebin.com/eBjikDpw
출력:
- 플랫폼 : LEDC
핀: 26
아이디: red_output
 
- 플랫폼 : LEDC
핀: 18
아이디: green_output
 
- 플랫폼 : LEDC
핀: 19
아이디: blue_output
 
- 플랫폼 : LEDC
핀: 23
아이디: white_output
 
광:
- 플랫폼: RGBW
이름: "LED 스트립"
빨간색: red_output
녹색: green_output
파란색: blue_output
흰색: white_output
color_interlock: true
 
I2C:
SDA: GPIO21
SCL: GPIO22
스캔: true
 
센서:
- 플랫폼: SHT3XD
온도:
name: 온도(temperature)
습도:
name: 습도
주소: 0x44
update_interval: 5초
 
- 플랫폼: BH1750
name: 조도(Illuminance)
주소: 0x23
update_interval: 5초
 
binary_sensor:
- 플랫폼: GPIO
핀: 16
name: 모션 1
device_class: 모션
 
- 플랫폼: GPIO
핀: 17
name: 모션 2
device_class: 모션

 

  1. 결국 코드는 이 링크에서 찾을 수 있는 것과 같아야 합니다(그러나 이 코드를 ESPHome 구성에 직접 복사하지 마십시오).

 

참고: 위에 검은색 사각형에 작성된 코드를 올바른 들여쓰기가 없으므로 ESPHome 구성에 직접 붙여넣지 마십시오. 링크를 따라 올바른 형식으로 복사될 준비가 된 코드를 여십시오.

8단계: LED 스트립 설치

프로젝트를 완료하기 전 마지막 단계는 옷장 위에 LED 스트립을 설치하는 것입니다. 옷장이 너무 높기 때문에 LED 스트립은 아무도 볼 수 없고 천장에 반사되는 빛만 볼 수 있기 때문에 "깨끗한" 설치에 대해 크게 신경 쓰지 않았습니다. LED 스트립을 설치하기 위해 30x2mm 알루미늄 프로파일을 사용했습니다. 필요한 모든 측정을 한 후 옷장의 모양을 따를 수 있도록 프로필을 크기에 맞게 자릅니다. 저는 LED 스트립을 알루미늄 프로파일에 붙이고 간단한 3D 프린팅 지그를 사용하여 중심을 유지했습니다. 마지막으로 짧은 와이어 조각을 사용하여 LED의 각 세그먼트를 다음 세그먼트에 연결했습니다. LED 스트립의 패드와 알루미늄 프로파일 사이의 단락을 방지하기 위해 일부 열수축 튜브로 납땜 연결부를 보호했습니다. LED를 옷장에 직접 붙이는 대신 장착하기 위해 알루미늄 프로파일을 결정한 이유는 이렇게 하면 냉각 성능이 훨씬 뛰어나고 결과적으로 더 오래 지속되기 때문입니다.

9단계: 최종 설치

LED 스트립과 컨트롤러, 전원 공급 장치를 옷장에 놓았습니다. 전원을 위해 나는 옷장을 조립하기 전에 몇 년 전에 정확히 이 목적을 위해 설치한 콘센트를 사용했습니다. 모션 센서의 경우 하나는 옷장 위에, 다른 하나는 창문 위에 장착하여 케이블을 메인 컨트롤러에 연결했습니다. 이런 식으로 두 개의 센서를 장착하면 하나는 제가 문에 들어서자마자 저를 감지하고, 다른 하나는 제가 책상에서 일할 때 제 움직임을 감지합니다. 방 전체를 센서로 덮는 것은 Home Assistant에서 자동화를 만들 때 의미가 있습니다. 온도 센서의 경우 벽과 캐비닛 가장자리 사이의 공간에 두어 완전히 숨기지만 주변에 충분한 공기가 있도록 했습니다.

10 단계 : 작동합니다!

이제 LED와 센서가 설치되었으므로 테스트하기만 하면 됩니다. 전원을 연결했을 때 LED와 센서 모두 모든 것이 잘 작동하는 것을 보고 매우 기뻤습니다. LED는 특히 저녁에 천장에 빛을 반사하는 놀라운 효과를 냅니다. ESP32를 Home Assistant에 연결하면서 모션 센서와 LED를 사용하여 몇 가지 자동화를 수행했습니다. 예를 들어, 방에 들어가자마자 LED 스트립을 켜고 두 개의 모션 센서 중 하나가 움직임을 감지하는 한 계속 켜두는 것을 만들었습니다. LED와 함께 자동화는 제가 작년에 만든 육각형 벽걸이 조명도 켭니다. 움직임이 감지되지 않으면 LED는 5분 후에 꺼집니다.

728x90
반응형