

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

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:
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...)