ESP32 튜토리얼 12/55 - SunFounder의 ESP32 IoT 학습 키트를 사용한 WS2812 RGB 스트립 4 프로젝트
이 튜토리얼에서는 ESP32 마이크로컨트롤러를 사용하여 WS2812 LED 스트립을 제어하는 방법을 살펴보겠습니다. 이 프로젝트를 통해 다양한 색상을 만들고 각 LED를 개별적으로 제어할 수 있으며, 프로그래밍과 전자공학을 배우는 재미있고 시각적으로 매력적인 방법을 제공합니다. 이 튜토리얼이 끝나면 색상과 패턴을 동적으로 변경할 수 있는 완전히 작동하는 설정을 갖게 됩니다.
Wi-Fi와 Bluetooth 기능이 내장된 SunFounder의 ESP32 마이크로컨트롤러를 사용하면 WS2812 RGB LED 스트립을 쉽게 연결하고 제어할 수 있습니다. 이 LED 스트립의 유연성은 장식용 조명이나 교육용 프로젝트 등 창의적인 응용을 가능하게 합니다. 관련 단계를 더 잘 이해하려면 (00:00 부분의) 비디오를 참조할 수 있습니다.
하드웨어 설명
이 프로젝트의 주요 구성 요소는 ESP32 마이크로컨트롤러와 WS2812 LED 스트립입니다. ESP32는 Arduino와 유사한 작업을 수행할 수 있지만 추가 연결 옵션이 있는 강력한 마이크로컨트롤러입니다. 클라우드에 연결하여 원격 제어와 데이터 로깅을 가능하게 하는 다양한 기능을 갖추고 있습니다.
WS2812 LED 스트립은 개별 주소 지정이 가능한 RGB LED로 구성되어 있어 각 LED를 제어하여 다른 색상을 표시할 수 있습니다. 이 스트립은 단일 와이어 프로토콜로 작동하므로 신호 품질을 잃지 않고 여러 LED를 체인으로 연결할 수 있습니다. 각 LED에는 입력 신호를 받아 체인의 다음 LED로 증폭하는 내장 드라이버가 포함되어 있습니다.
데이터시트 세부 정보
| 제조업체 | Worldsemi |
|---|---|
| 부품 번호 | WS2812 |
| 로직/IO 전압 | 3.5–5.3 V |
| 공급 전압 | 5 V |
| 출력 전류 (채널당) | 최대 20 mA |
| 피크 전류 (채널당) | 최대 60 mA |
| PWM 주파수 가이드 | 400 Hz |
| 입력 로직 임계값 | 0.3 x VDD ~ 0.7 x VDD |
| 전압 강하 / RDS(on) / 포화 | 최대 0.5 V |
| 열 제한 | -25 ~ 80 °C |
| 패키지 | 5050 |
| 참고 사항 / 변형 | 더 긴 스트립을 위해 체인 연결 가능 |
- LED 손상을 방지하려면 적절한 전원 공급(5 V)을 확인하세요.
- 전원 공급 단자 양단에 커패시터(100 µF)를 사용하여 전압 스파이크를 완화하세요.
- 신호 저하를 줄이기 위해 데이터 와이어를 짧게 유지하세요.
- LED 온도에 주의하고 적절한 방열을 보장하세요.
- 전원과 접지를 연결할 때 올바른 극성을 준수하세요.
- 긴 스트립을 사용하는 경우 데이터 라인에 풀업 저항을 사용하세요.
배선 지침

WS2812 LED 스트립을 ESP32에 배선하려면 전원 공급 장치를 연결하는 것부터 시작하세요. LED 스트립의 +5V 와이어는 ESP32의 5V 핀에 연결하고, 접지(GND) 와이어는 ESP32의 GND 핀 중 하나에 연결해야 합니다.
다음으로 LED 스트립의 데이터 입력 와이어를 ESP32의 핀 14에 연결하세요. 올바른 데이터 전송을 위해 연결이 안전한지 확인하세요. 여러 스트립을 사용하거나 더 긴 거리를 사용하는 경우 신호 무결성을 보장하기 위해 레벨 시프터 사용을 고려하세요. 이 설정을 통해 ESP32에서 LED 스트립을 직접 제어할 수 있습니다.
코드 예제 및 설명
코드는 Adafruit NeoPixel 라이브러리를 사용하여 WS2812 LED 스트립을 제어합니다. LED 스트립을 초기화하고 초기 색상을 검은색으로 설정하는 것으로 시작합니다. 코드의 주요 식별자에는 LED 스트립의 데이터 라인에 연결된 핀을 정의하는 LED_PIN과 스트립의 LED 수를 지정하는 NUM_LEDS가 포함됩니다.
#include // Adafruit NeoPixel 라이브러리 포함
#define LED_PIN 14 // NeoPixel LED 스트립
#define NUM_LEDS 8 // LED 수
설정 함수에서 스트립은 strip.begin()을 사용하여 초기화되고, 초기 색상은 strip.show()로 검은색으로 설정됩니다. 이는 프로그램이 실행될 때 색상 변경을 위해 스트립을 준비합니다.
void setup() {
strip.begin(); // NeoPixel 스트립 초기화
strip.show(); // 초기 색상을 검은색으로 설정
}
프로그램의 메인 루프는 두 개의 for 루프로 구성됩니다. 첫 번째 루프는 각 LED의 색상을 설정하고 스트립을 업데이트하여 LED를 하나씩 켭니다. 두 번째 루프는 같은 방식으로 각 LED를 끕니다. 이는 간단하지만 효과적인 조명 애니메이션을 만듭니다.
void loop() {
// LED를 하나씩 켜기
for (int i = 0; i < NUM_LEDS; i++) {
strip.setPixelColor(i, 100, 45, 0); // i번째 LED의 색상을 빨간색으로 설정
strip.show(); // 새 색상으로 LED 스트립 업데이트
delay(100); // 100밀리초 대기
}
// LED를 하나씩 끄기
for (int i = 0; i < NUM_LEDS; i++) {
strip.setPixelColor(i, 0, 0, 0); // i번째 LED의 색상을 검은색으로 설정 (끄기)
strip.show(); // 새 색상으로 LED 스트립 업데이트
delay(100); // 100밀리초 대기
}
}
다양한 색상 효과와 애니메이션을 구현하는 방법에 대한 자세한 내용은 기사 아래의 전체 코드 로딩을 시청하세요.
시연 / 기대 효과
배선을 완료하고 코드를 업로드한 후에는 스트립의 LED가 지정된 색상으로 하나씩 켜지고, 이어서 같은 순서로 꺼지는 것을 볼 수 있습니다. 이로 인해 "러닝 라이트" 효과가 만들어집니다. LED가 예상대로 켜지지 않으면 배선 연결을 다시 확인하고 전원 공급이 충분한지 확인하십시오. 또한 코드에서 올바른 핀이 정의되어 있는지 확인하십시오(비디오 12:30 참조).
비디오 타임스탬프
- 00:00 시작
- 1:40 WS2812 LED 소개
- 7:25 프로젝트 문서 페이지
- 9:16 RGB 색상 설명
- 13:16 배선 설명
- 13:48 Arduino 코드-1 설명
- 19:03 Arduino IDE에서 ESP32 보드 및 포트 선택
- 20:45 코드-1 데모
- 22:00 개별 LED 제어
- 24:16 워킹 라이트 LED
- 25:41 앞뒤로 움직이는 라이트
#include <Adafruit_NeoPixel.h> // Include the Adafruit NeoPixel library
#define LED_PIN 14 // NeoPixel LED strip
#define NUM_LEDS 8 // Number of LEDs
// Create an instance of the Adafruit_NeoPixel class
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, LED_PIN, NEO_GRB + NEO_KHZ800);
void setup() {
strip.begin(); // Initialize the NeoPixel strip
strip.show(); // Set initial color to black
}
void loop() {
// Turn on LEDs one by one
for (int i = 0; i < NUM_LEDS; i++) {
strip.setPixelColor(i, 100, 45, 0); // Set the color of the i-th LED to red
strip.show(); // Update the LED strip with the new colors
delay(100); // Wait for 100 milliseconds
}
// Turn off LEDs one by one
for (int i = 0; i < NUM_LEDS; i++) {
strip.setPixelColor(i, 0, 0, 0); // Set the color of the i-th LED to black (turn it off)
strip.show(); // Update the LED strip with the new colors
delay(100); // Wait for 100 milliseconds
}
}
Common Course Links
Common Course Files
필요할 수 있는 것들
-
아마존
-
이베이
-
알리익스프레스Purchase WS2812 LED strip from AliExpresss.click.aliexpress.com
-
알리익스프레스Purchase WS2812 LED strip from AliExpress-2s.click.aliexpress.com
-
방굿Purchase WS2812 LED strip from Banggoodbanggood.com
자원 및 참고자료
아직 자원이 없습니다.
파일📁
파일이 없습니다.