Pic
shadow
Atención: Esto es unicamente el ciruito de control, si quieres aprender más sobre control de Pinguino via Bluetooth te recomendamos que consultes el tutorial sobre Pinguino y Bluetooth.

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 Pinguino 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.

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.

Los módulos bluetooth cómo el HC-06 suelen funcionar a 3.3V, cómo nuestro pinguino unicamente tiene un pin que entrega 5V necesitamos montar un pequeño circuito que baje el voltaje para evitar quemar el módulo.

Este circuito estará formado por un MCP1700, un pequeño - y económico - regulador de voltaje que entrega en su salida 3.3V, junto con dos condesadores que estabilizarán la alimentación del bluetooth.

A parte esto unicamente necesitamos colocar una resistencia de 2k7 Ohm para evitar que las señales emitidas por Pinguino (que estan a 5V) dañen el módulo que funciona con 3.3V.

circuito

Con este circuito ya tendríamos comunicación entre el Pinguino y el módulo de Bluetooth. Ahora vamos a ampliarlo con algunos elementos que podamos leer y controlar:

  • Protoboard Ampliar
    Esquema Ampliar

Ahora cargaremos un código en nuestro Pinguino que sea capaz de controlar los leds y transmitir la lectura del potenciometro, para simplificar las cosas los veremos por separado, pero para hacer las dos tan solo tendríamos que unificarlos:

	void setup(){  
      	//iniciamos la conexionk
    	Serial.begin(9600);  
    }  
       
    void loop() {  
    //leemos el potenciometro
      int sensorValue = analogRead(A0);      
      //enviamos la lectura via blutooth
      Serial.printf("@%d\r\n",sensorValue);  
    }  
	
	

Ahora el programa veamos el programa que recibe ordenes desde el bluetooth y enciende los leds:

char dato;
 unsigned char receivedbyte;
 unsigned char rxstr[64];
 #define led1 10;
 #define led2 11;
 #define led3 12;

void setup(){
 	pinMode(led7, OUTPUT);
 	digitalWrite(led7,LOW);
 }
 
void loop(){

	//Enviamos un mensaje de preparado cuando tengamos lista la conexión
	CDC.printf("Preparado\r\n");
	
	//Leemos lo que nos envian via serial
	while((receivedbyte = CDC.read(rxstr)) == 0);
	
	//Si recibimos algo...
	if(receivedbyte > 0){	
		//Comprobamos  lo que hemos  recibido y actuamos en consecuencia:
		//almacenamos el valor recibido en una variable llamada dato:
		dato = rxstr[0];
		
		//Analizamos su valor para encender o apagar leds 
		if(dato == '1'){
			//si es un 1 encendemos el led1
			digitalWrite(led1,HIGH);
		}else if(dato == '2'){
			//si es un dos encendemos el led 2
			digitalWrite(led2,HIGH);
		}else if(dato == '3'){
			//si es un 3 encendemos el led 3
			digitalWrite(led3,HIGH);
		}else if(dato == '0'){
			//Si es un 0 apagamos todo
			digitalWrite(led1,LOW);
			digitalWrite(led2,LOW);
			digitalWrite(led3,LOW);
		}
	 
	}
 }

Ahora podemos incuir esta conexión en nuestros proyectos. Podemos cambiar los elementos que hemos visto por otros que permitan montajes más complejos y espectaculares (los leds podrían ser relés que nos permitan encender y apagar las luces de nuestra casa, por ejemplo. O motores de CC y montar un pequeño robot controlado via bluetooth. También podemos cambiar el potenciometro por sensores de temperatura, giroscopios...)