En este post, aprenderemos a usar dos Arduinos para controlar el color de un LED RGB a través de comunicación Bluetooth. Haremos esto utilizando tres potenciómetros, uno para cada color (rojo, verde y azul).
Conectaremos el LED RGB al «Arduino Esclavo», que recibirá los valores R, G y B necesarios para componer el color y aplicarlos al LED RGB. Conectaremos los tres potenciómetros al «Arduino Maestro», que leerá sus valores analógicos y los enviará al «Arduino Esclavo» a través de bluetooth.
Esto es similar a lo que se explicó en un post anterior, pero en lugar de conectar todos los componentes al mismo Arduino, usaremos dos Arduinos conectados por Bluetooth.
Para poder realizar la comunicación Bluetooth entre los dos Arduinos, necesitaremos conectar un módulo Bluetooth HC-06 al “Arduino Esclavo” para que pueda recibir los valores R, G y B de la composición del color y además necesitaremos conectar un módulo bluetooth HC-05 al “Arduino Maestro” configurándolo como maestro para que pueda enviar los valores R, G y B a través de bluetooth.
Debemos tener en cuenta que para que ambos Arduinos se sincronicen vía Bluetooth deben de tener configurado mediante “comandos AT” el mismo pin de conexión, que en mi caso es “1234” para ambos Arduinos. También hace falta establecer la misma velocidad de transmisión (yo recomiendo 38400 Baudios para no tener que modificar los programas que cargamos en los Arduinos).
Como referencia sobre este tema tenemos el post anterior, donde se explica con detenimiento cómo configurar estos módulos bluetooth con éxito.
Cabe aclarar que tanto la masa (GND) como la alimentación (VCC) de los módulos bluetooth HC-05 y HC-06 van conectadas respectivamente a los pines «GND» y «+5V» de Arduino. Los potenciómetros lineales de 10KΩ tienen un mando de control y tres terminales de conexión que denominaremos P1, P2 y P3, donde P2 es el terminal central del potenciómetro.
Como necesitamos tres potenciómetros en este proyecto, vamos a utilizar la matriz de enteros “const int Pot[3] = {0, 1, 2}” para definir a que pines analógicos de Arduino van a ir conectados los terminales centrales de los potenciómetros. De esta manera podremos realizar la lectura de sus valores.
Los números en la matriz Pot especifican la terminal central del potenciómetro que regula el color rojo del LED RGB (P2_Pot[0]) va conectado a la entrada analógica “A0” de Arduino, el que regula el color verde (P2_Pot[1]) le conectaremos a la entrada analógica “A1” y el que regula el color azul (P2_Pot[2]) le conectaremos a la entrada analógica “A2”.
Los otros dos terminales, P1 y P3, de cada uno de los tres potenciómetros van conectados respectivamente a los pines +5V y GND de Arduino. Por último, tengo que explicar, que el módulo RGB consta de cuatro pines de conexión, tres de ellos para los valores de entrada R, G y B que van conectados a los pines digitales 9, 10 y 11 respectivamente, y el restante que va conectado al pin “GND” de Arduino.
Para finalizar debo añadir que para que todo esto funcione correctamente simplemente debemos de realizar correctamente la conexión de todos los componentes, a la vez que cargar el código correspondiente en cada uno de los Arduinos para que se comporten de manera adecuada.
Una vez realizado esto, debemos de tener alimentados los dos Arduinos y esperar a que sincronicen los módulos bluetooth entre sí para comenzar a operar. Esto es un proceso automático y no es necesario realizar ninguna tarea adicional para que ocurra. Sabremos que los dispositivos están sincronizados cuando el LED de conexión de los módulos Bluetooth HC-06 y HC-05 deje de parpadear para permanecer en un estado fijo.
A partir de aquí podremos ir moviendo el mando de control de los 3 potenciómetros (R, G y B) para ir componiendo los colores en el LED RGB. Si abrimos el monitor serie del “Arduino Maestro” cuando lo tenemos conectado al PC a través del cable USB, podremos ver el valor de R, G y B (de 0 a 255) que estamos enviando a través de Bluetooth en cada momento cuando movemos los mandos de los tres potenciómetros.
Lista de Materiales
-
- Arduino UNO Rev.3
- Cable USB tipo A-B
- Módulo Bluetooth HC-05 (Maestro)
- Módulo Bluetooth HC-06 (Esclavo)
- LED RGB de 5mm (cátodo común)
- 3 Resistencias de 220Ω
- 3 Potenciómetros lineales de 10KΩ
- Protoboard
- Cables de conexión
NOTA: Si utilizamos un módulo RGB, no nos hace falta utilizar ni el LED RGB ni las resistencias, puesto que ya viene todo integrado en una pequeña placa.
Código del programa
Arduino Esclavo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
/* TITULO: Composición de colores RGB con potenciómetros a través de Bluetooth - Arduino_Esclavo - AUTOR: MARIANO DEL CAMPO GARCÍA (@2017) --> INGENIERO TÉCNICO INDUSTRIAL ESPECIALIDAD ELECTRÓNICA - FACEBOOK: https://www.facebook.com/mariano.delcampogarcia - TWITTER: https://twitter.com/MarianoCampoGa - CORREO: [email protected] DESCRIPCIÓN DEL PROGRAMA Con este programa controlamos el color de un LED RGB, a través de Bluetooth, a medida que movamos el mando de los tres potenciómetros. Este es el programa del Arduino Esclavo, donde se incluye la adquisición de los 3 valores RGB a través de Bluetooth y su aplicación al LED RGB. ESQUEMA DE CONEXION +-----+ +----[PWR]-------------------| USB |--+ | +-----+ | | GND/RST2 [ ][ ] | | MOSI2/SCK2 [ ][ ] A5/SCL[ ] | | 5V/MISO2 [ ][ ] A4/SDA[ ] | | AREF[ ] | | GND[ ] | | [ ]N/C SCK/13[ ] | | [ ]IOREF MISO/12[ ] | | [ ]RST MOSI/11[ ]~| Pin "B" del módulo LED RGB | [ ]3V3 +---+ 10[ ]~| Pin "G" del módulo LED RGB | [ ]5v -| A |- 9[ ]~| Pin "R" del módulo LED RGB | [ ]GND -| R |- 8[ ] | | [ ]GND -| D |- | | [ ]Vin -| U |- 7[ ] | Pin RX del módulo Bluetooth HC-06 | -| I |- 6[ ]~| Pin TX del módulo Bluetooth HC-06 | [ ]A0 -| N |- 5[ ]~| | [ ]A1 -| O |- 4[ ] | | [ ]A2 +---+ INT1/3[ ]~| | [ ]A3 INT0/2[ ] | | [ ]A4/SDA RST SCK MISO TX>1[ ] | | [ ]A5/SCL [ ] [ ] [ ] RX<0[ ] | | [ ] [ ] [ ] | | UNO_R3 GND MOSI 5V ____________/ \_______________________/ NOTAS: - Pin "GND" del módulo LED RGB a "GND" de Arduino - Alimentación del módulo Bluetooth HC-06: - Pin +5V del módulo Bluetooth HC-06 --> +5V de Arduino. - Pin GND del módulo Bluetooth HC-06 --> GND de Arduino. */ #include <SoftwareSerial.h> // Definimos el objeto para la comunicación serie (Bluetooth) SoftwareSerial BT(6,7); // 6 RX, 7 TX. int RGB[3] = {9, 10, 11}; // Pines digitales para el módulo LED RGB unsigned int Valor; // Variable que almacena el valor RGB recibido vía Bluetooth int i=0; // Variable para recorrer las posiciones de la matriz RGB[3] void setup() { // Comienzo de la comunicación con el módulo Bluetooth HC-06 (configurable mediante comandos AT) BT.begin(38400); // Velocidad de comunicación por defecto del módulo Bluetooth HC-06 for(int j=0; j<3; j++) { pinMode(RGB[j], OUTPUT); // Pines digitales como SALIDAS } } void loop() { if(BT.available()) // Si hay datos procedentes de la comunicación Bluetooth dentro del buffer... { // Lee un entero y lo almacena en la variable valor (nunca superior a 255) Valor = BT.read(); // Si no se ha recibido el valor final de la serie, que es 200. if(Valor!=200) { analogWrite(RGB[i], Valor*2); // Manda el valor del Brillo (PWM) al LED correspondiente // Aumentamos una posición en la matriz i++; } // Si se ha recibido el valor final de la serie else { // Se inicializa la posición en la matriz i=0; } } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 |
/* TITULO: Composición de colores RGB con potenciómetros a través de Bluetooth - Arduino_Maestro - AUTOR: MARIANO DEL CAMPO GARCÍA (@2017) --> INGENIERO TÉCNICO INDUSTRIAL ESPECIALIDAD ELECTRÓNICA - FACEBOOK: https://www.facebook.com/mariano.delcampogarcia - TWITTER: https://twitter.com/MarianoCampoGa - CORREO: [email protected] DESCRIPCIÓN DEL PROGRAMA Con este programa controlamos el color de un LED RGB, a través de Bluetooth, a medida que movamos el mando de los tres potenciómetros (uno para cada color). Este es el programa del Arduino Maestro, donde se incluye la adquisición de los valores analógicos de los potenciómetros, su adecuada transformación y por último el envío de estos valores transformados al Arduino Esclavo a través de Bluetooth. ESQUEMA DE CONEXION +-----+ +----[PWR]-------------------| USB |--+ | +-----+ | | GND/RST2 [ ][ ] | | MOSI2/SCK2 [ ][ ] A5/SCL[ ] | | 5V/MISO2 [ ][ ] A4/SDA[ ] | | AREF[ ] | | GND[ ] | | [ ]N/C SCK/13[ ] | | [ ]IOREF MISO/12[ ] | | [ ]RST MOSI/11[ ]~| | [ ]3V3 +---+ 10[ ]~| | [ ]5v -| A |- 9[ ]~| | [ ]GND -| R |- 8[ ] | | [ ]GND -| D |- | | [ ]Vin -| U |- 7[ ] | Pin RX del módulo Bluetooth HC-05 | -| I |- 6[ ]~| Pin TX del módulo Bluetooth HC-05 P2_Pot[0] | [ ]A0 -| N |- 5[ ]~| P2_Pot[1] | [ ]A1 -| O |- 4[ ] | P2_Pot[2] | [ ]A2 +---+ INT1/3[ ]~| | [ ]A3 INT0/2[ ] | | [ ]A4/SDA RST SCK MISO TX>1[ ] | | [ ]A5/SCL [ ] [ ] [ ] RX<0[ ] | | [ ] [ ] [ ] | | UNO_R3 GND MOSI 5V ____________/ \_______________________/ NOTAS: - Utilizamos un potenciómetro lineal de 10K ohms. - Denomínamos a los terminales del potenciómetro como P1, P2 y P3 (donde P2 es el terminal central). - P1_Pot[0], P1_Pot[1] y P1_Pot[2] conectados a VCC. - P3_Pot[0], P3_Pot[1] y P3_Pot[2] conectados a GND. - Alimentación del módulo Bluetooth HC-05: - Pin +5V del módulo Bluetooth HC-05 --> +5V de Arduino. - Pin GND del módulo Bluetooth HC-05 --> GND de Arduino. */ #include <SoftwareSerial.h> // Definimos el objeto para la comunicación serie (Bluetooth) SoftwareSerial BT(6,7); // 6 RX, 7 TX. const int Pot[3] = {0, 1, 2}; // Pines analógicos para los 3 potenciómetros (colores R,G y B respectivamente) unsigned int RGB[3]; // Matriz para almacenar el valor del color del LED RGB (De 0 a 255) int i=0; // Variable para recorrer las posiciones de las matrices RGB[3] y Pot[3] unsigned int final = 200; // Variable final void setup() { Serial.begin(9600); // Comienzo de la comunicación con el módulo Bluetooth HC-05 (configurable mediante comandos AT) BT.begin(38400); // Velocidad de comunicación por defecto del módulo Bluetooth HC-05 } void loop() { // Si el índice i es menor de 3 if(i<3) { // Leemos el valor analógico de los 3 potenciómetros y lo dividimos entre 8 (valores entre 0 - 127) RGB[i] = analogRead(Pot[i])/8; // Enviamos a través de Bluetooth el valor del color RGB correspondiente // Para su correcta recepción nunca debemos de enviar valores superiores a 255. BT.write(RGB[i]); delay(50); // Retardo para mejorar la comunicación Bluetooth // Presentamos el valor RGB del LED a través del monitor serie switch (i) { case 0: Serial.print("R: "); break; case 1: Serial.print("G: "); break; case 2: Serial.print("B: "); break; } Serial.println(RGB[i]*2); // Presentamos valores reales (entre 0 y 255) // Aumentamos una posición en las matrices i++; } // Si el índice i no es menor de 3 else { BT.write(final); // Enviamos a través de Bluetooth la variable que finaliza la secuencia delay(50); // Retardo para mejorar la comunicación Bluetooth i=0; Serial.println("---------------------------"); } } |
Video
En este post se explica cómo utilizar dos Arduinos para controlar el color de un LED RGB a través de la comunicación Bluetooth. Se utilizan tres potenciómetros para controlar los colores rojo, verde y azul del LED RGB, que están conectados al «Arduino Maestro».
El «Arduino Esclavo» recibe los valores R, G y B necesarios para componer el color del LED RGB a través de un módulo Bluetooth HC-06. El «Arduino Maestro» envía los valores R, G y B a través de un módulo Bluetooth HC-05 configurado como maestro.
Es importante tener en cuenta que para que ambos Arduinos se sincronicen vía Bluetooth deben tener el mismo pin de conexión y velocidad de transmisión. Además, se proporciona una tabla de conexiones detallando cómo conectar los componentes y se incluyen los códigos de programación para ambos Arduinos.
Gracias por leer este post. Espero que haya sido útil para aprender a controlar el color de un LED RGB a través de la comunicación Bluetooth entre dos Arduinos. Si tienes alguna duda o sugerencia, por favor no dudes en dejar un comentario. ¡Estaremos encantados de ayudarte o de escuchar tu opinión!