Objetivos
Material requerido.
Arduino Uno o similar. | |
Modulo Bluetooth HC-06 | |
Cables Dupont Macho-Hembra |
Enviando datos desde Arduino al PC mediante Bluettoth
Una de las cosas más frecuentes cuando utilizas tu Arduino es usarlo como Data Logger, es decir como un sistema de recolección de datos procedentes de un sistema cualquiera para su estudio o proceso posterior.
Una de las maneras más típicas es usar lector de tarjetas SD para que se pueda retirar al cabo de un tiempo, pero a nivel doméstico o a pequeña escala es más sencillo usar un enlace Bluetooth para recibir esos datos en tu PC y almacenarlos allí directamente.
Me ha sorprendido que no hay muchos tutoriales sobre como conectar Arduino y el PC mediante Bluetooth y no entiendo porqué, la ventaja de tener una conexión inalámbrica entre PC y Arduino es lo bastante atractiva como para que compensen los inconvenientes.
Otra ventaja d este método es que podemos gobernar nuestros circuitos Arduino directamente desde un PC de control, y eso incluye pequeños robots o motores.
Es igual de sencillo conectar nuestro PC a los Arduinos con Bluetooth como lo ha sido hasta ahora para conectarlos a un teléfono móvil, y en muchas ocasiones bastante más práctico.
En esta sesión vamos a instalar un adaptador >Bluetooth a nuestro PC (En el caso de que no lo tengáis incluido) y luego vincularlo al módulo BT del Arduino.
Diagrama de conexión
Vamos a reusar el mismo circuito que usamos en la sesión previa.
Y el esquema de la protoboard:
Conectando Arduino al PC mediante Bluetooth
Una vez que conectemos el adaptador Bluetooth al PC deberíamos poder pinchar en los iconos inferiores a la derecha de Windows y ver el símbolo de Bluetooth. SI no es así basta con desplegar los iconos ocultos pichando en la flechita:
Si hacemos doble clic en el símbolo de Bluetooth mostrara los dispositivos BT visibles alrededor.
Al final deberíais ver una ventana parecida a esta:
El icono de la izquierda, representa mi Arduino (Cuyo nombre es Charly) y si ya has conseguido vincularlo al PC, recordara los datos de conexión para la próxima vez. El procedimiento es en todo similar a vincular unos auriculares Bluetooth.
Si hacéis doble clic en el icono os mostrara la venta de propiedades y si elegís la pestaña de Hardware, os mostrará la puerta COM que ha levantado para él. En mi casa COM11:
Necesitamos ahora un programa de terminal serie que nos permita abrir una conexión con el adaptador BlueTooth del PC una vez vinculado a Arduino. Yo hace años que uso un pequeño y muy resultón programa para estas ocasiones, que se llama Putty. Una búsqueda en Google de Putty os enviara rápidamente a su página de descarga.
Es un programa con muchas opciones (Lo que no debe asustaros) y que sirve para casi cualquier cosa que envié datos en Stream, incluyendo puertas series, TCPIP y además acepta conexiones seguras SSH, y encima es gratis.
Cuando arrancas Putty aparece esta ventana
En mi caso he seleccionado Serial en COM11 y 9600 de velocidad. Si pincháis en la izquierda en la sección de Logging (Registro), conviene pedirle que guarde registro de todo el cruce de información entre el PC y Arduino vía BT, para que lo podamos ver más tarde.
En mi caso le pido que guarde todo en un fichero llamado putty.log y que pise el anterior si existe (Para no pasarme la vida diciéndole que puede sobrescribirse).
Si pinchamos ahora en Terminal, seleccionad que fuerce el hecho en lo que recibimos y también en lo que enviamos, y eso es todo
Si volvéis a la sección de Session, podéis guardar la configuración con un nombre para usarla en otro momento. Ahora ya podemos pulsar el boto Open para abrir la comunicación.
Al hacerlo veréis que el testigo piloto del módulo Bluetooth deja de parpadear quedándose fijo. Indica que se ha establecido la comunicación.
El programa de control
El programa de gestión de la conexión es de lo más sencillo. Vamos a aceptar en nuestro Arduino 3 órdenes que corresponden a los pines 13,12 y 11. Cuando recibamos un numero de pin, invertiremos el estado del mismo pasando el LED de apagado a encendido y viceversa.
Además, como queremos que nuestro Arduino nos envié datos al PC para su almacenamiento, estableceremos un programa que envié los valores de las puertas analógicas A0,A1 y A2, aun cuando no tienen nada conectado, por lo que serán valores aleatorios.
Aquí tenéis el programa completo
Como siempre cargamos la librería serie y creamos la puerta BT1 para comunicar con el Bluetooth
#include <SoftwareSerial.h> SoftwareSerial BT1(3, 2); // RX | TX void setup() { Serial.begin(9600); BT1.begin(57600); }
Después vamos a usar la función GetLine de nuevo para enviar líneas completas al PC desde la consola de Arduino y una versión modificada de la misma llamada GetLineBT para hacer lo mismo a través de la puerta BT1.
if (BT1.available()) { B= GetLineBT(); Serial.println(B); } if (Serial.available()) { String S = GetLine(); BT1.println(S); Serial.println(S); }
Es lo de siempre, leemos lo que entra por Bluetooth y lo enviamos a la puerta serie. A su vez enviamos a BT1 lo que escribimos en la consola.
Para gobernar los LEDS utilizamos el siguiente código, que simplemente invierte el valor del pin digital correspondiente cuando recibe la instrucción pertinente.
if (B =="13") digitalWrite(13, !digitalRead(13)); if (B =="12") digitalWrite(12, !digitalRead(12)); if (B =="11") digitalWrite(11, !digitalRead(11));
Y por ultimo para recibir los valores de las puertas analógicas A0,A1 y A2 cada 3 segundos usamos:
if (millis() % 3000 == 0) { BT1.println("Analog 0 = " + String(analogRead(A0))) ; BT1.println("Analog 1 = " + String(analogRead(A1))) ; BT1.println("Analog 2 = " + String(analogRead(A2))) ; BT1.println("................."); }
Aquí tenéis un mini video con el resultado
Resumen de la sesión