Hardware | RGB LED 5050 SMD module 사용해 보기

1. RGB LED

요즘 도시 거리를 지나다 보면, LCD 모니터가 아닌, 아주 작은 LED 들을 밀집 시켜서 화면을 만드는 방법이 유행하고 있습니다. LED 들의 집적도에 따라 LCD 와 거의 비슷한 느낌을 가지게 하는 화면들이 늘었습니다.

아래 사진은, 지하철 승강장 기둥 네 면을 모두 LED 스크린으로 도배하여 광고하는 장면을 찍어 봤습니다.

가까히 가면 이렇게 보입니다. 조밀한 LED Cell 이 빛을 내고 있네요.

대놓고 확대해 보면 아래 그림입니다. 한개의 LED 가 3원색을 내고 있고, 표현하고 싶은 dot 의 색을 결정합니다. PWM 까지 가능하면, 아마 모든 가시광선은 표현 가능할 듯 하네요.

아... PWM 의 bit 수에 따라 정해지겠네요. 워낙 잘 만들어져 있어 Analog 라고 생각하게 할 정도로 잘 되어 있습니다. 결국, LED 성능 보다 controller 의 처리 bit 에 성능이 갈릴 것 같습니다.


2. AliExpress

예상은 하고 있습니다만, 그래도 하나 구입 해서 동작 원리를 살펴 보기로 합니다. 알리익스프레스로 고고.

* 3 Colour RGB SMD LED Module 5050 full color Pwm tri-color LED For Arduino MCU
    - https://www.aliexpress.com/item/1005001571167551.html

제품 설명은 다음과 같습니다.

Product Description
---------------------------
1. using 5050 full color LED
2. RGB trichromatic limiting resistor to prevent burnout
3. through the PWM adjusting three primary colors can be mixed to obtain different colors
4. with a variety of single-chip interface
5. Size 31 * 37.5 (mm)
6. based on a simple test program

제품 소개에 올라와 있는 사진 입니다.

잊을 만 하면 도착 할 줄 알았지만, 타이밍이 좋았는지 1주일 만에 도착.


3. 제원

5050 LED 와 케이블이 동봉되어 있습니다. 케이블은 RGB 신호용과 GND 네요.

R 단자에는 471 (470 ohm), G 와 B 단자에는 271 (270 ohm) pull down 저항이 달려 있습니다.

5050 LED chip 자체의 확대 사진입니다. 아주 조그마한 R/ G/ B chip 이 삼각형 모양으로 구성되어 있네요.



4. 연결

자세한 제원에 대해서는 다음 링크에 자세하게 나와 있는 내용을 여기에 옮겨 봅니다.

* KY-009 RGB FULL COLOR LED SMD MODULE
    - https://arduinomodules.info/ky-009-rgb-full-color-led-smd-module/


+-----------------------------------------------------------+
| Operating Voltage     | 5V max                            |
|                       | Red 1.8V ~2.4V                    |
|                       | Green 2.8V ~ 3.6V                 |
|                       | Blue 2.8V ~ 3.6V                  |
+-----------------------------------------------------------+
| Forward Current       | 20mA ~ 30mA                       |
+-----------------------------------------------------------+
| Operating Temperature | -25°C to 85°C [-13°F ~ 185°F]     |
+-----------------------------------------------------------+
| Dimensions            | 18.5mm x 15mm [0.728in x 0.591in] |
+-----------------------------------------------------------+


연결은 다음과 같이 연결됩니다.

Pin 연결은 너무나 간단.


+-------------------------+
| 5050 LED | Arduino Nano |
+-------------------------+
|     R    |      D11     |
|     B    |      D10     |
|     G    |      D9      |
|    GND   |      GND     |
+-------------------------+

위 사이트에서 안내되어 있는 Arduino source 입니다. 0~256 까지 8 bit 로 컨트롤 합니다.


int redpin = 11; //select the pin for the red LED
int bluepin =10; // select the pin for the  blue LED
int greenpin = 9;// select the pin for the green LED

int val;

void setup() {
  pinMode(redpin, OUTPUT);
  pinMode(bluepin, OUTPUT);
  pinMode(greenpin, OUTPUT);
  Serial.begin(9600);
}

void loop() 
{
  for(val = 255; val > 0; val--)
  {
    analogWrite(redpin, val);  //set PWM value for red
    analogWrite(bluepin, 255 - val); //set PWM value for blue
    analogWrite(greenpin, 128 - val); //set PWM value for green
    Serial.println(val); //print current value 
    delay(1); 
  }
  for(val = 0; val < 255; val++)
  {
    analogWrite(redpin, val);
    analogWrite(bluepin, 255 - val);
    analogWrite(greenpin, 128 - val);
    Serial.println(val);
    delay(1); 
  }
}


5. 실행

이 정도는 정말 일상에서 쉬어가는 취미.

동영상으로 확인. 소스를 보면 G 의 범위가 4 bit 로 짧아서 그런지 뭔가 살짝 부족한 소스. 


6. 다른 소스

RGB 모든 값의 범위가 256 까지 커버하는 소스를 찾았습니다. 위의 소스에서 그냥 값을 바꿔도 됩니다만, 개념적으로 잘 정리되어 있는 소스라 공유 합니다.

* Wiring 3 Color RGB SMD Common Cathode LED
    - https://www.14core.com/wiring-3-color-rgb-smd-common-cathode-led/


#define BLUE_LED_DIO 10     /* Select the DIO for driving the BLUE LED */
#define RED_LED_DIO 11       /* Select the DIO for driving the RED LED */
#define GREEN_LED_DIO 9    /* Select the DIO for driving the GREEN LED */

/* Initialise serial and DIO */
void setup()
{
  /* Configure the DIO pins used by the analogWrite PWM function */
  pinMode(BLUE_LED_DIO, OUTPUT); 
  pinMode(RED_LED_DIO, OUTPUT); 
  pinMode(GREEN_LED_DIO, OUTPUT); 
}

/* Main program loop */
void loop()
{
  int k;
  
  /* Slowly reduce the red LED's intensity and at the same time 
     increase the green LED's intensity */
  for (k = 0; k <=255; k++)
  {
    analogWrite(RED_LED_DIO,255 - k);
    analogWrite(GREEN_LED_DIO, k);  
    delay(10);
  }
  
  /* Slowly reduce the green LED's intensity and at the same time 
     increase the blue LED's intensity */
  for (k = 0; k <=255; k++)
  {
    analogWrite(GREEN_LED_DIO,255 - k);  
    analogWrite(BLUE_LED_DIO, k);  
    delay(10);
  }
  
  /* Slowly reduce the blue LED's intensity and at the same time 
     increase the red LED's intensity */
  for (k = 0; k <=255; k++)
  {
    analogWrite(BLUE_LED_DIO,255 - k); 
    analogWrite(RED_LED_DIO, k);  
    delay(10);
  }
}


동영상 입니다. 뭔가 훨씬 부드럽죠?

다음은, 컨트롤 시그널을 이용하여 LED chip 하나 하나를 컨트롤 하는 WS2812 에 대해서도 테스트 해보겠습니다.

FIN


댓글