Pic
shadow

El Bluetooth nos abre un sin fin de posibilidades a la hora de controlar nuestros proyectos de forma remota. No sólo para accionarlos a distancia sino para recibir información sobre ellos.

De entrada la idea de utilizar una tecnologia relativamente nueva cómo el Bluetooth puede resultar intimidante, pero veremos que comunicarnos con nuestro Arduino via Bluetooth es más sencillo de lo que pensamos.

Podemos encontrar en internet módulos cómo el HC-05 o el HC-06 que cuestan entorno a los 5€ y tienen todo lo necesario para establecer comunicación.

De entrada, el circuito es tan sencillo cómo este:

IMPORTANTE: cada modelo de Bluetooth lleva las patillas localizadas en un lugar distinto. Asegurate de descubrir que patillas de tu módulo corresponden a Vcc, GND, Tx y Rx.

center

Es MUY importante tener en cuenta que el módulo se alimenta con 3.3V, por lo que deberemos conectarlo a esta salida de nuestro Arduino.

Para establecer comunicación tenenos que cruzar las vias Rx y Tx de arduino y el módulo Bluetooth, es decir, el Rx de Arduino deberá estar conectado al Tx del módulo, y el Rx de este al TX de Arduino.

Ya tenemos nuestro adaptador Bluetooth alimentado y preparado para establecer comunicación, unicamente necesitamos programar Arduino para que sepa cómo enviar la información y cómo recibirla.

Para ello vamos a completar nuestro circuito con algunos componentes que podamos leer o controlar. Para hacer simple el ejemplo utilizaremos tres leds que podremos encender o apagar y un potenciometro que leeremos y enviaremos via bluetooth.

  • Protoboard Ampliar
    Esquema Ampliar

Ahora nos queda hacer la parte del software, si sabemos programar aplicaciones para Android podemos crear una pequeña aplicación para controlar el circuito desde nuestro teléfono o tablet. Sino sabemos o no queremos complicarnos tanto la vida podemos usar un ordenador con Bluetooth y un programa tipo HyperTerminal para mandar comandos por el puerto serial que se configura con nuestro adaptador Bluetooth.

veamos, el código por partes para entenderlo mejor, empezaremos enviando datos por bluetooth:

	#include <SoftwareSerial.h>
	//Creamos  un objeto de la libreria SoftwareSerial
	SoftwareSerial BT(2, 3);
	int potenciometro=0;

	void setup(){
	
		//iniciamos la cominucación por serial
		BT.begin(9600);
	
		//Cuando todo este listo, enviamos el mensaje "conectado" para que se muestre en la consola.
		BT.println("Conectado");

	}

	void loop(){

		//leemos el pin conectado al potenciometro y lo almacenamos en la variable potenciometro
		potenciometro=analogRead(5);

		//mandamos por serial el valor de  la variable potenciometro
		BT.println(potenciometro);

		//hacemos una pausa antes de tomar la siguiente lectura.
		delay(1000);
	}


	

Cómo podemos ver, utilizar un Bluetooth con Arduino es exactamente igual de sencillo que conectarse con el cable USB, esto se debe a que en ambos casos estamos utilizando una conexión via serial.

Ahora vamos a ver el código necesario para controlar los leeds dependiendo de la señal que nos mandan:

	#include <SoftwareSerial.h>
	char orden;
	//Creamos un objeto de la librería SoftwareSerial y enviamos las patillas a las que esta conectado nuestro BT
	SoftwareSerial BT(0,1);
	int led1 = 2;
	int led2 = 3;
	int led3 = 4;

	void setup(){
		//Configuramos los pines de los leds cómo salidas
	  	pinMode(led1,OUTPUT);	    
	  	pinMode(led2,OUTPUT);	    
	  	pinMode(led3,OUTPUT);	    
	    //iniciamos  la comunicación por serial
	  	BT.begin(9600);
	  	//Cuando todo este preparado enviamos el mensaje "conectado" para que se muestre en el terminal
	  	BT.println("Conectado");
	}
	void loop() {
	//Si la conexión esta disponible
	  if(BT.available()){
	  	//leemos si se nos esta enviando algo por serial (mediante el bluetooth)
	    orden=BT.read();
	    //hacemos un switch con las posibilidades de la variable
	   
	    switch(orden){

		    //Si recibimos un 0, encendemos el primer led
		      case '0':
		        digitalWrite(led1,HIGH);
		        delay(500);
		        BT.println("Led 1 on");
		        break;

		    //Si nos llega un 1, encendemos el segundo
		    case '1':
		        digitalWrite(led2,HIGH);
		        delay(500);
		        BT.println("Led 2 on");
		        break;

		    //Si nos llega un dos, encendemos el tercer led. 
			case '2':
		        digitalWrite(led3,HIGH);
		        delay(500);
		        BT.println("Led 3 on");
		        break;

		    //Cualquier otra cosa que recibamos apagará todos los leds. 
		      default:
		        delay(500);
		        digitalWrite(led1,LOW);
		        digitalWrite(led2,LOW);
		        digitalWrite(led3,LOW);		        
		        
		        BT.println("Todo Apagado");
	    }
	  }
	}
	

Para hacer las dos cosas unicamente tenemos que juntar ambos códigos

Ahora que sabemos leer y controlar circuitos via Bluetooth podemos empezar a incorporarlo en nuestros proyectos, por ejemplo podemos controlar motores de CC y cambiar el potenciometro por un sensor, cómo podría ser un sensor de temperatura, o de ultrasonidos para medir la distancia hasta un obstaculo.