Bluetooth e Arduino: Acender un led RGB

montaxeledrgbDescrición:

Imos conectar un led RGB á tarxeta Arduíno e variaremos as súas tres cores mediante Bluetooth co noso dispositivo Android.

Podes consultar previamente as seccións de Arduíno:

Listado de material:

  • Arduino UNO
  • Placa Protoboard
  • Módulo Bluetooth HC05
  • Led RGB
  • 3 Resistencias de 560Ω, para a protección do led RGB
  • 2 Resistencias: unha de 1kΩ e outra de 560Ω, para o divisor de tensión do BT.
  • Pila 9V e conector ou alimentador (opcional)

Montaxe:

Poderíamos  conectar os pins RX e TX do bluetooth aos equivalentes de Arduíno nos pins 0 e 1 dixitais de forma cruzada (BT Tx  a Arduino Rx e BT Rx a Arduino Tx), pero desta maneira perderiamos  comunicación serie de Arduíno co PC a través do USB, xa que os pins 0 e 1 se utilizan nesta comunicación.

O que imos facer é habilitar os pins 10 e 11 de Arduíno para que funcionen como pins Rx e Tx respectivamente, e conectarémolos de forma cruzada cos pins Rx e Tx do módulo bluetooth. Deste xeito xa non sería necesario desconectar a alimentación do Bluetooth para cargar o programa no Arduíno e ademais teriamos baleiras as entradas 0 e 1 do Arduíno, para poder así realizar unha comunicación serial se o desexamos.

Para conectar o led RGB utilizamos os pins PWM 3, 5 e 6. Neste caso usamos un led RGB de cátodo común.

bluetooth-ledrgb_bb

bluetooth-ledrgb_esquema

Programas:

Código Arduino:

Con esta conexión, na programación no IDE de Arduino temos que importar a librería SoftwareSerial, que se encarga de habilitar a comunicación serie con outros pins. Esta librería vén de serie no IDE, creamos un novo obxecto serie chamado BT conectado aos pins 10 e 11:

#include <SoftwareSerial.h>   // Librería que permite establecer comunicación serie noutros pins.
                             
SoftwareSerial BT (10,11);    // Indicamos que o pin 10=RX e o 11=TX. 

int ledred = 3 ;    // Pin LED Red
int ledgreen = 5 ;  // Pin LED Green
int ledblue = 6 ;   // Pin LED Blue

void setup (){
  BT.begin ( 9600 );        // Velocidade do porto do módulo Bluetooth
  
  pinMode ( ledred , OUTPUT );
  pinMode ( ledgreen , OUTPUT );
  pinMode ( ledblue , OUTPUT );
}

void loop (){
  
  while (BT.available()>0){    // Cando haxa datos dispoñibles
    
    int red = BT.parseInt ();       // Lemos o primeiro valor enteiro (Red) e almacenámolo na variable
    int green = BT.parseInt ();     // Lemos o segundo valor enteiro (Green) e almacenámolo na variable
    int blue = BT.parseInt ();      // Lemos o último valor enteiro (Blue) e almacenámolo na variable
    
    if (BT.read()=='\n'){           // Cando lea o carácter fin de liña ('\n') quere dicir que finalizou o envío dos tres valores
      analogWrite(ledred, red);     // Enviamos os valores dos tres cores ao LED RGB através de PWM
      analogWrite(ledgreen, green);
      analogWrite(ledblue, blue);
    }
    
  }
  
}

App Inventor:

Deseño:

A aparencia da app será como mostra na seguinte figura:

disenoledrgb_bluetooth

As características son:

  • Cor de fondo da pantalla: gris escuro
  • Selector de lista que chamaremos CONECT (o podes atopar no bloque de Interfaz de usuario)
  • Etiqueta co texto LED RGB
  • Tres Contedores horizontais que teñen no seu interior unha Etiqueta co texto da cor e un Deslizador
  • Un elemento ClienteBluetooth1 (o podes atopar no bloque de Conectividad)

Programación de Bloques:

A conexión Bluetooth depende do Selector de Lista que chamamos CONECT.

Ao inicializar a pantalla a App tomará todas as conexións Bluetooth e as listará neste elemento.

Unha vez pulsamos o selector CONECT mostraranos o listado de conexións e establecerá conexión co módulo Bluetooth conectado ao Arduino.

Unha vez conectado cambiará a cor de texto a azul.

bloques-bluetooth

Cada un dos tres Deslizadores realizan a mesma función, un para cada cor. Cando hai un cambio de posición en calqueira dos Deslizador, comprobamos se temos conexión Bluetooth e enviamos os valores redondeados dos Deslizadores vermello, verde e azul, separados con comas e rematando cun retorno de carro, por exemplo: 145 , 34, 210 \n

bloquedeslizadorblue bloquedeslizadorgreen bloquedeslizadorred

red_green_blue

Reto 1:

Serás quen de engadir outro Deslizador para controlar con el os outros tres para que así estean sincronizados?

Unha Pista. En App Inventor:

Cuando  [DeslizadorAgregado] Posición cambiada]ejecutar

  • poner [REDDeslizador] [Posición DelPulgar] a [DeslizadorAgregado] [Posición DelPulgar]
  • poner [GREENDeslizador] [Posición DelPulgar] a [DeslizadorAgregado] [Posición DelPulgar]
  • poner [BLUEDeslizador] [Posición DelPulgar] a [DeslizadorAgregado] [Posición DelPulgar]

(Lembra que programando existen varias solucións)

Reto 2:

Na anterior práctica conectábamos o Bluetooth nas entradas dixitais (0,1) RX e TX  do Arduíno, pero nesta práctica cambiamos a conexión do Bluetooth utilizando Software Serial BT (10,11), é  dicir, que o pin 10 do Arduino é o RX e o pin 11 é o TX, de tal xeito que nos quedan baleiras as entradas TX e RX do Arduíno.

Serás quen de cambiar as conexións do Bluetooth para conectalo as entradas TX e RX do Arduíno? Lembra que na programación no IDE tes que usar a función Serial para comunicarte.