

이 프로젝트에서는 다음을 사용하여 작은 RGB LED 램프를 만드는 방법을 보여드리겠습니다. ESP32-C3, 8×8 WS2812 LED 매트릭스, 그리고 Blynk.
이 램프는 맞춤형 Blynk 인터페이스를 통해 스마트폰으로 제어할 수 있습니다. 램프를 켜고 끌 수 있으며, 미리 설정된 여러 색상 중에서 선택할 수 있습니다. 또한 Blynk 인터페이스에는 램프의 현재 상태와 색상을 나타내는 이미지가 표시됩니다.
이 프로젝트에서는 맞춤형 LED 컨트롤러 PCB를 사용하지만, 동일한 원리를 브레드보드나 다른 ESP32 기반 구성에 적용할 수도 있습니다.
이 컨트롤러는 74AHCT125N 레벨 시프터 를 사용하여 ESP32-C3의 3.3V 논리 신호를 WS2812 LED에서 사용하는 5V 논리 레벨로 변환합니다.
아래 링크를 통해 이 프로젝트에 대한 전체 동영상 튜토리얼을 확인하실 수 있습니다
완성된 램프에는 다음과 같은 구성 요소가 포함됩니다:
이 램프에는 선택할 수 있는 다섯 가지 색상이 있습니다:



다음 구성 요소가 필요합니다:
컨트롤러 PCB는 WS2812 매트릭스용 전용 커넥터를 제공하며, ESP32-C3와 LED를 연결하는 데 필요한 레벨 변환 회로를 포함하고 있습니다.
ESP32-C3는 3.3V 로직으로 작동하는 반면, WS2812 LED는 5V 전원으로 구동됩니다.
74AHCT125N은 74AHCT125N 논리 레벨 버퍼로 사용됩니다. 이 장치는 ESP32-C3에서 나오는 3.3V 신호를 WS2812 데이터 입력에 적합한 5V 신호로 변환합니다.
기본 신호 경로는 다음과 같습니다:
ESP32-C3 → 74AHCT125N → WS2812 LED 매트릭스
LED 매트릭스는 5V 전원으로 구동됩니다.
이 프로젝트에서는 컨트롤러를 WS2812 LED를 제어하는 용도로만 사용합니다. 컨트롤러에서 제공하는 다른 기능은 필요하지 않습니다.

이번 프로젝트에서는 제가 직접 제작한 맞춤형 LED 컨트롤러 PCB를 사용했습니다. 이 PCB는 여러 LED 프로젝트에 사용할 수 있도록 설계한 것으로, 몇 가지 추가 구성 요소와 기능이 포함되어 있지만 이는 이 램프에는 필요하지 않습니다.
동일한 PCB를 제작할 필요는 없습니다. 이 프로젝트에 필요한 부품만 사용해 직접 PCB를 만들거나 브레드보드에 회로를 구성할 수 있습니다. 아래 배선은 관련 연결을 보여 줍니다.
74AHCT125N은 ESP32-C3의 3.3V 데이터 신호를 WS2812 LED에 적합한 5V 로직 신호로 변환합니다.
1000 µF 전해 콘덴서를 LED 스트립 근처의 5V와 GND 레일 사이에 연결하면 LED 밝기가 변할 때 발생하는 전류 변동을 완화하는 데 도움이 됩니다.
데이터 신호가 WS2812 스트립의 DIN/입력 단자 에 연결되어 있는지 확인하십시오.
신호 경로:
ESP32-C3 GPIO3 → 74AHCT125N → 저항 → WS2812 DIN
회로를 단순화하려면 74AHCT125N 레벨 시프터를 생략하고 WS2812 데이터 입력을 ESP32-C3의 3.3V GPIO 핀에 직접 연결할 수 있습니다. 예를 들어 GPIO3입니다.
이 경우 ESP32-C3와 LED 스트립 모두에 5V 전원 공급 장치로 전원을 공급하고, 두 장치의 접지를 서로 연결한 다음 GPIO3를 LED 스트립의 DIN 핀에 직접 연결하면 됩니다.
이렇게 하면 대부분의 경우 작동할 가능성이 높으며, 실제로 많은 WS2812 설치가 이 방식으로 작동합니다. 그러나 WS2812는 5V로 전원을 공급할 때 5V 로직 레벨 데이터 신호 를 사용하도록 규정되어 있습니다. 저는 3.3V 신호가 실제로 종종 작동한다는 점에 의존하기보다 권장 방식을 따르고 싶어 레벨 시프터를 사용하기로 했습니다.
따라서 이 프로젝트에 레벨 시프터가 반드시 필요한 것은 아니지만, ESP32-C3와 WS2812 LED 사이에 더 안정적이고 기술적으로 올바른 인터페이스를 제공합니다.
이 프로젝트는 Arduino IDE를 사용하여 프로그래밍됩니다.
Arduino 라이브러리 관리자를 통해 다음 라이브러리를 설치하십시오:
이 프로젝트는 Adafruit NeoPixel 라이브러리를 사용하여 WS2812 LED를 제어합니다.
처음에는 FastLED를 사용할까 생각했지만, 제 ESP32 환경에서는 타이밍 호환성 문제가 발생했습니다. Adafruit NeoPixel을 사용하니 LED와 안정적으로 통신할 수 있었습니다.
링크: https://github.com/adafruit/adafruit_neopixel
ESP32-C3가 Blynk Cloud와 통신할 수 있도록 Blynk 라이브러리를 설치하십시오.
링크: https://github.com/Blynk-Technologies/blynk-library
또한 Arduino IDE에 적절한 ESP32 보드 지원 기능이 설치되어 있어야 합니다.

ESP32 보드 지원 설치 Arduino IDE에서 ESP32를 처음 사용하는 경우 먼저 ESP32 보드 패키지를 설치해야 합니다.






다음을 여세요: Blynk Cloud (https://blynk.cloud)에서 새 기기를 생성합니다.
BLYNK에 익숙하지 않다면 제가 작성한 이 인스트럭터블을 확인해 보세요.
https://www.instructables.com/IoT-Made-Easy-ESP8266-Blynk-App-to-Control-LED-Rem
이 프로젝트에서 제 기기의 이름은 Cube입니다.
기기를 생성한 후 Arduino 코드에서 사용할 Blynk 인증 정보를 확인합니다.
또한 데이터 소스 세 개를 생성해야 합니다.
다음과 같이 생성합니다:
데이터 소스 | 가상 핀 | 용도
Off Switch | V2 | 램프를 켜거나 끕니다
Fixed Color | V1 | 램프 색상을 선택합니다
Lamp Color | V3 | 앱에 표시되는 이미지를 업데이트합니다(램프 색상에 따라 다름)

Blynk 모바일 앱을 실행하고 기기에 연결하세요.
처음에는 대시보드가 비어 있습니다.
위젯을 세 개 추가하겠습니다.
[추가] 스위치 위젯을 추가하고 끄기 스위치 데이터 소스에 연결하세요.
이 데이터 소스는 가상 핀 V2을 사용합니다.
이 스위치에는 두 가지 가능한 값이 있습니다:
스위치를 켜면 램프는 처음에 백색광을 사용합니다.
[추가] 세그먼트 스위치 위젯을 추가하고 고정 색상 데이터 소스에 연결하세요.
이 데이터 소스는 가상 핀 V1을 사용합니다.
가능한 값은 다음 여섯 가지입니다:
값 기능
0 흰색
1 빨간색
2 파란색
3 녹색
4 분홍색
5 꺼짐
처음 다섯 값은 색상을 선택합니다.
값 5는 램프가 꺼진 상태를 나타내도록 예약되어 있습니다.
세그먼트 스위치는 램프가 켜져 있을 때만 표시됩니다.
마지막 위젯은 이미지 갤러리입니다.
이 위젯은 램프에 명령을 보내는 대신 램프로부터 정보를 수신합니다.
다음 상태의 램프를 보여 주는 이미지의 URL을 제공하세요:
이미지는 원하는 온라인 이미지 호스팅 서비스에 호스팅할 수 있습니다.
각 이미지에는 색상 값에 해당하는 인덱스가 있습니다.
이미지 갤러리를 램프 색상 데이터 소스의 V3에 연결하세요.
이렇게 하면 애플리케이션이 현재 램프 상태에 해당하는 이미지를 표시할 수 있습니다.
예를 들어:
제어 시스템은 꽤 간단합니다.
Blynk 앱에서 색상을 선택하면, 해당 값이 다음을 통해 ESP32-C3로 전송됩니다. V1.
아두이노 코드는 해당 값을 수신한 후, 이를 사용하여 이에 해당하는 RGB 색상을 선택합니다.
그러면 LED가 갱신됩니다.
동일한 값이 다음을 통해 Blynk로 다시 전송됩니다. V3.
이미지 갤러리는 이 값을 받아 해당 이미지를 표시합니다.
즉, 앱에 표시되는 이미지는 항상 램프의 현재 색상을 반영합니다.
전원 스위치가 꺼지면 ESP32-C3는:
램프를 다시 켜면 이전에 선택했던 색상이 다시 적용됩니다.
이 아두이노 스케치는 WS2812 매트릭스를 제어하고 Blynk와 통신합니다.
이 LED 스트립은 Adafruit NeoPixel 라이브러리를 사용하여 제작되었습니다.
중요한 매개변수는 다음과 같습니다. LED 데이터 핀 그리고 LED의 개수.
8×8 행렬의 경우, LED의 개수는 다음과 같습니다:
8 × 8 = 64개의 LED
또한 이 프로그램에는 사용 가능한 색상 목록과 다음을 저장하는 변수들이 포함되어 있습니다:
헬퍼 함수는 색상 인덱스를 받아 해당 RGB 값을 찾아낸 뒤, 그 색상을 64개의 LED 모두에 적용합니다.
그런 다음 Blynk 핸들러가 사용자 인터페이스를 처리합니다:
V2가 변경될 때:
V1이 변경될 때:
ESP32-C3는 V3를 사용하여 Blynk 앱에 어떤 이미지를 표시해야 하는지 알려줍니다.
프로젝트 리소스에서 전체 소스 코드를 다운로드할 수 있습니다.






케이스의 경우, 원래 설계를 몇 가지 변경했습니다.
램프 갓은 더 견고하게 만들기 위해 다시 출력했습니다.
또한 베이스를 다음 항목이 포함되도록 수정했습니다:
램프를 조립한 후 컨트롤러와 전자 부품을 가리기 위한 하단 커버도 출력했습니다.


이제 여러분은 완벽하게 작동하는 클라우드에 연결된 LED 제어 램프를 ESP32-C3와 Blynk를 사용해 만들었습니다.
앞으로 진행될 프로젝트에도 많은 관심 부탁드립니다. 즐거운 제작 시간 되세요!
이 프로젝트가 마음에 드셨나요? Ko-fi에서 저에게 커피 한 잔 사주시는 건 어떨까요?
원문: https://www.instructables.com/WiFi-Controlled-WS2812-LED-Lamp-With-ESP32-C3-and-/