KY-009 RGB full
color LED SMD module

ultimo aggiornamento 23 gennaio 2019


JLCPCB - 2$ per prototipi di PCB, di qualsiasi colore. Produzione in 24 ore!
L'Azienda di prototipi PCB più popolare, con oltre 700.000 clienti in tutto il mondo!
Recati presso la JLCPCB, riceverai regali e coupon gratuiti
presso Maker Faire Rome il 18-20 ottobre


Indice

Descrizione

Il modulo KY-009 RGB full color LED Module , si presenta come una piccolo circuito che misura 18,5 millimetri x 15mm, su di esso è montato un LED RGB tipo 5050 SMD e un connettore a 4 pin. Il LED può emette una ampia gamma di colori mescolando rosso, verde e blu. La quantità di ciascun colore primario può venire regolata tramite un pilotaggio di tipo PWM.
Il modulo compatibile con le piattaforme di elettronica più popolari come Arduino, Raspberry Pi e ESP8266, può operare ad una temperatura di esercizio da -25 ° C a 85 ° C.

OurPCB, your most reliable PCB and PCBA supplier.

Focusing on PCB Prototype and PCB Assembly Turnkey Services.

One-Stop Wire Harness & Cable Assemblies Solution

5050 - Led RGB SMD
Piedinatura Datasheet Foto del led

 

Foto del modulo

ATTENZIONE: Per il collegamento del modulo occorre fare attenzione, in quanto in commercio esistono due versioni che differiscono per la disposizione dei PIN, in una sono: -GRB come presenti all'interno del componente, mentre in altri moduli i pin sono nell'ordine -RGB.

Autocostruzione di un modulo RGB

È anche possibile auto costruirsi un modulo RGB, in questa sezione le informazioni necessarie

modulo_led-RGB-componenti.jpg

 

Calcolo delle resistenze limitatrici

Per alimentare i tre led che compongono il modulo KY-009, é necessario limitare la corrente di alimentazione, pena la distruzione immediata della giunzione del led stesso, si useranno per questo delle semplici resistenze il cui valore potrà essere calcolato con la legge degli ohm , conoscendo le caratteristiche del led che si và ad alimentare, e la tensione di alimentazione.

Tensione di alimentazione considerataVin 5V
Tensione di soglia per i led Rosso Vf 1.8V ~ 2.4V
Tensione di soglia per i led Verde Vf 2.8V ~ 3.6V
Tensione di soglia per i led Blu Vf 2.8V ~ 3.6V
Corrente If 20 ~ 30mA

Per cui applicando la formula R = (Vpin – Vf)/If
Si potrà anche calcolare la potenza che dovrà dissipare con la formula
W = (Vpin - Vf) x If

da cui si ottiene

Resistenza per il Led Rosso (5-2)/0,02 = 150Ώ con una potenza di (5-2)x0,02= 60 mW per cui si potrà usarne una da 1/4W (0,25W)
Resistenza per il Led Verde-Blu (5-3)/0,02 = 100Ώ con una potenza di (5-3)x0,02= 40 mW per cui si potrà usarne una da 1/4W (0,25W)

Test del modulo
Materiale necessario

 

Schema di collegamento del modulo ad Arduino

 

Pin Arduino Pin Modulo KY-019 Valore resistenza
GND -  
4 R 150Ω (marrone, verde, marrone
3 G 100Ω (marrone , nero, marrone)
2 B 100Ω (marrone , nero, marrone)

 

Listato del programma

Esempio di codice per il modulo KY-009 , lo sketch mostra prima i tre colori base poi l'unione dei tre che è luce bianca, quindi varia i colori cambiando il valore PWM su ciascuno dei tre colori primari.

/*
  Programma:code_KY-009.ino
  Programma test per RGB full color LED SMD module

  Su Arduino sono utilizzati i seguenti pin:
  Pin GND -> Pin - modulo
    Pin 4   -> Pin R modulo 160 ohm
    Pin 3   -> Pin G modulo 110 ohm
    Pin 2   -> Pin B modulo 110 ohm

  Ultima modifica il 4/9/2016

  Applicazione realizzata da Adriano Gandolfo
  Sito https://www.adrirobot.it
  Blog http://it.emcelettronica.com/author/adrirobot
  Pagina Facebook https://www.facebook.com/Adrirobot-318949048122955
  Istagram https://www.instagram.com/adrirobot/
  This example code is in the public domain.
*/

int bluepin = 2; //seleziona il pin per il LED blu
int greenpin = 3;// seleziona il pin per il LED verde
int redpin = 4; //seleziona il pin per il LED rosso
int val;

void setup() {
  pinMode(bluepin, OUTPUT);
  pinMode(greenpin, OUTPUT);
  pinMode(redpin, OUTPUT);
  Serial.begin(9600);
}
void loop()
{
  digitalWrite(redpin, HIGH);  //Accende il led rosso
  delay (1000);
  digitalWrite(redpin, LOW);  //Spegne il led rosso
  digitalWrite(bluepin, HIGH);  //Accende led blu
  delay (1000);
  digitalWrite(bluepin, LOW);  //Spegne led blu
  digitalWrite(greenpin, HIGH);  //Accende led verde
  delay (1000);
  digitalWrite(redpin, HIGH);  //Accende il led rosso
  digitalWrite(bluepin, HIGH);  //Accende il led blu
  // Essendoi accesi i tre led il colore emesso è il bianco
  delay (1000);
  // Spegna tutti i tre led
  digitalWrite(redpin, LOW);
  digitalWrite(greenpin, LOW);
  digitalWrite(bluepin, LOW);
  delay (1000);

  for (val = 255; val > 0; val--)
  {
    analogWrite(redpin, val);         //imposta il valore PWM per il rosso
    analogWrite(bluepin, 255 - val);  //imposta il valore PWM per il blu
    analogWrite(greenpin, 128 - val); //imposta il valore PWM per il verde
    Serial.println(val, DEC);              //scrive il valore corrente
    delay(1);
  }
  for (val = 0; val < 255; val++)
  {
    analogWrite(redpin, val);         //imposta il valore PWM per il rosso
    analogWrite(bluepin, 255 - val);  //imposta il valore PWM per il blu
    analogWrite(greenpin, 128 - val); //imposta il valore PWM per il verde
    Serial.println(val, DEC);              //scrive il valore corrente
    delay(1);
  }
  // Spegna tutti i tre led
  digitalWrite(redpin, LOW);
  digitalWrite(greenpin, LOW);
  digitalWrite(bluepin, LOW);
  delay (1000);
}

 

Filmato che mostra il funzionamento del programma

 

 

Esempio di utilizzo nel test del sensore TCS3200

Tramite il sensore TCS3200, viene riconosciuto uno dei colori fondamentali dell'oggetto posto di fronte al sensore. A questo punto viene acceso il relativo led presente nel modulo KY-009 e tramite il modulo audio JQ6500 Arduino pronuncia a voce il relativo colore.

Test con Multi Test Shield

Componenti utilizzati

 

 

 

 

Multi test Shield

Il Multi Test Shield è uno shield auto costruito realizzato per testare la serie di sensori contenuti nella confezione "37 in 1 Sensor Module Board Set" compatibile con la scheda Arduino UNO R3 originale e relativi cloni.
Sulla scheda sono disponibili molti connettori che risultano già opportunamente collegati con le porte digitali o analogiche di Arduino.
In realtà, la scheda, oltre ai sensori presenti nel kit "37 in 1 Sensor Module Board Set" permette di testare altri sensori, servo, ecc per un totale di oltre 50 tipi, la presenza di un connettore  bus I2C espande ulteriormente la tipologia di dispositivi che lo shield permette.
Sulla scheda è anche presente un connettore per il collegamento di un piccolo Display OLED da 0.95"risoluzione 96x64 pixel, 65536 Colori, su di esso potranno essere mostrati dei messaggio o i valori misurati dai sensori.

Posizionamento del modulo sullo Shield

Per l'utilizzo occorrerà semplicemente posizionare il sensore sul connettore JP5, facendo riferimento a quanto riportato sul PCB. In questo modo i pin del modulo risulteranno automaticamente collegati ai relativi pin: S al pin D2, il centrale a +5V e - a GND.

 

Programma di test del sensore

Il programma  accenderà in sequenza i tre led interni rosso, blu, verde in sequenza e poi simultaneamente per l'emissione della luce bianca.
Mostrerà sul display OLED le varie fasi di esecuzione del programma

Programma

shield_test_code_KY-009.ino

/*####################################################################
  FILE: shield_test_code_KY-009.ino
  VERSION: 1.0
  Descrizione: Programma per test modulo
  KY-009 RGB full color LED SMD modules

  Creato il 16/8/2018 da Adriano Gandolfo
  Sito web http://www.adrirobot.it
  Blog http://it.emcelettronica.com/author/adrirobot
  Pagina Facebook https://www.facebook.com/Adrirobot-318949048122955
  Istagram https://www.instagram.com/adrirobot/
  This example code is in the public domain.
  #################################################################### */

// Definizione dei pin di collegamento
#define sclk 13
#define mosi 11
#define cs   10
#define rst  9
#define dc   8

// Il modulo va montato si JP5
#define greenpin 7 // seleziona il pin per il LED verde G
#define redpin 6 // seleziona il pin per il LED rosso R
#define bluepin 5 // seleziona il pin per il LED blu B

// Definizione dei colori
#define BLACK           0x0000
#define BLUE            0x001F
#define RED             0xF800
#define GREEN           0x07E0
#define CYAN            0x07FF
#define MAGENTA         0xF81F
#define YELLOW          0xFFE0
#define WHITE           0xFFFF

#include <Adafruit_GFX.h>
#include <Adafruit_SSD1331.h>
#include <SPI.h>

Adafruit_SSD1331 display = Adafruit_SSD1331(cs, dc, rst);

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

  // Messaggio iniziale
  display.fillScreen(BLACK);
  display.setTextSize(1);
  display.setTextColor(BLUE);
  display.setRotation(2); //Ruota display
  display.setCursor(0, 0);
  display.println(" ADRIROBOT");
  display.setTextColor(GREEN);
  display.println("  SHIELD  ");
  display.println(" TEST FOR ");
  display.println("  37 IN 1 ");
  display.println("  SENSOR  ");
  delay(2000);
  display.fillScreen(BLACK);
  display.setTextColor(YELLOW);
  display.setCursor(0, 0);
  display.println("   TEST   ");
  display.println("  MODULO  ");
  display.println("  KY-009  ");
}

void loop()
{
  display.setTextColor(MAGENTA);
  display.fillRect(0, 30, 64, 15, BLACK);
  display.setCursor(0, 30);
  display.print("Led ROSSO");
  delay (200);
  digitalWrite(redpin, HIGH);  //Accende il led rosso
  delay (1000);
  digitalWrite(redpin, LOW);  //Spegne il led rosso

  display.fillRect(0, 30, 64, 15, BLACK);
  display.setCursor(0, 30);
  display.print("Led BLU");
  delay (200);
  digitalWrite(bluepin, HIGH);  //Accende led blu
  delay (1000);
  digitalWrite(bluepin, LOW);  //Spegne led blu

  display.fillRect(0, 30, 64, 15, BLACK);
  display.setCursor(0, 30);
  display.print("Led VERDE");
  delay (200);
  digitalWrite(greenpin, HIGH);  //Accende led verde
  delay (1000);

  display.fillRect(0, 30, 64, 15, BLACK);
  display.setCursor(0, 30);
  display.print("Led BIANCO");
  delay (200);

  digitalWrite(redpin, HIGH);  //Accende il led rosso
  digitalWrite(bluepin, HIGH);  //Accende il led blu
  // Essendo accesi i tre led il colore emesso è il bianco
  delay (1000);

  // Spegne tutti i tre led
  display.fillRect(0, 30, 64, 15, BLACK);
  display.setCursor(0, 30);
  display.print("SPENTO");
  delay (200);
  digitalWrite(redpin, LOW);
  digitalWrite(greenpin, LOW);
  digitalWrite(bluepin, LOW);
  delay (2000);
}
 
Test con multitest Wemos shield

Proviamo il modulo KY-009 RGB full color LED SMD module, tramite il che Multitest Wemos shields con cui si possono sperimentare la serie di sensori contenuti nella confezione "37 in 1 Sensor Module Board Set" che è venduta da molti siti.
La quantità di ciascun colore primario può venire regolata tramite un pilotaggio di tipo PWM, il modulo deve essere montato sul connettore JP3 come mostrato in figura.

 

 
 
 
la limitazione della corrente che scorre verso i led contenuti nel led RGB tipo 5050, viene fatto dalle resistenze già presenti sullo shield.
Se disponibile inserire il display nel connettore come mostrato in figura, il suo utilizzo non è indispensabile all'esecuzione del programma.
Ora si dovrà collegare la scheda Wemos D1 Mini al PC e compilare il programma (scaricabile da questo link) nella memoria del Wemos che lo eseguirà.
 
Programma

multi_test_wemos_code_KY-009
 
/*####################################################################
  FILE: multi_test_wemos_code_KY-009.ino
  VERSION: 1.0
  Descrizione: Programma per test modulo
  KY-009 RGB full color LED SMD modules

  Creato il 01/11/2018 da Adriano Gandolfo
  Sito web http://www.adrirobot.it
  Blog http://it.emcelettronica.com/author/adrirobot
  Pagina Facebook https://www.facebook.com/Adrirobot-318949048122955
  Istagram https://www.instagram.com/adrirobot/
  This example code is in the public domain.
  #################################################################### */

#include "SPI.h"
#include "Wire.h"
#include "Adafruit_GFX.h"
#include "Adafruit_SSD1306.h"

#define bluepin D5  // seleziona il pin per il LED blu
#define greenpin D7 // seleziona il pin per il LED verde
#define redpin D6   // seleziona il pin per il LED rosso
int val;

#define OLED_RESET 0  // GPIO0
Adafruit_SSD1306 display(OLED_RESET);

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

  // Impostazione modulo display con indirizzo I2C addr 0x3C
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.display();
  delay(2000);
  // Cancellazione schermo e buffer
  display.clearDisplay();

  // Messaggio iniziale
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(0, 0);
  display.println(" ADRIROBOT");
  display.setTextColor(BLACK, WHITE); // Inverte il colore del testo
  display.println("  SHIELD  ");
  display.println(" TEST FOR ");
  display.println("  37 IN 1 ");
  display.println("  SENSOR  ");
  display.display();
  delay(2000);
  display.clearDisplay();
  display.setTextColor(WHITE);
  display.setCursor(0, 0);
  display.println("   TEST   ");
  display.println("  MODULO  ");
  display.println("  KY-009  ");
  display.display();
}

void loop()
{
  display.fillRect(0, 30, 64, 15, BLACK);
  display.setCursor(0, 30);
  display.print("Led ROSSO");
  display.display();
  delay (200);
  digitalWrite(redpin, HIGH);  //Accende il led rosso
  delay (1000);
  digitalWrite(redpin, LOW);  //Spegne il led rosso

  display.fillRect(0, 30, 64, 15, BLACK);
  display.setCursor(0, 30);
  display.print("Led BLU");
  display.display();
  delay (200);
  digitalWrite(bluepin, HIGH);  //Accende led blu
  delay (1000);
  digitalWrite(bluepin, LOW);  //Spegne led blu

  display.fillRect(0, 30, 64, 15, BLACK);
  display.setCursor(0, 30);
  display.print("Led VERDE");
  display.display();
  delay (200);
  digitalWrite(greenpin, HIGH);  //Accende led verde
  delay (1000);

  display.fillRect(0, 30, 64, 15, BLACK);
  display.setCursor(0, 30);
  display.print("Led BIANCO");
  display.display();
  delay (200);

  digitalWrite(redpin, HIGH);  //Accende il led rosso
  digitalWrite(bluepin, HIGH);  //Accende il led blu
  // Essendo accesi i tre led il colore emesso è il bianco
  delay (1000);

  // Spegne tutti i tre led
  display.fillRect(0, 30, 64, 15, BLACK);
  display.setCursor(0, 30);
  display.print("SPENTO");
  display.display();
  delay (200);
  digitalWrite(redpin, LOW);
  digitalWrite(greenpin, LOW);
  digitalWrite(bluepin, LOW);
  delay (2000);
}
 
Breve Filmato del test
 

 

 
 
 
 
Elenco revisioni:

23/01/2019

Aggiornato pagina, inserito test con Multitest shield

04/06/2017

Inserito riferimento all'utilizzo con sensore di colore TCS3200

04/09/2016

Emissione preliminare