bclose

De Arduino a tu PC por BlueTooth

Enviando datos a tu PC mediante Bluetooth

Objetivos

.

 
    • Conectar TU PC a Arduino mediante Bluetooth.
    • Gobernar el circuito de la sesión previa desde tu PC, mediante un programa sencillo.
    • Enviar lecturas de datos a tu PC para su archivo y estudio.
 

Material requerido.

Imagen de Arduino UNO

  Arduino UNO o equivalente.

Imagen superior

 Un módulo BlueTooth HC-05 o HC-06,

conexiones

 Algunos cables de protoboard, preferiblemente Dupont macho/hembra mas una protoboard

componente  Una resistencia de 330Ω
componente  4 LEDs
Conexion BT  Un adaptador Bluetooth 2.0 para PC
tienda online prometec

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.

Esquema electrico

 

Y el esquema de la protoboard:

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

 
  • El procedimiento de conexión varía según la versión de Windows y el modelo de adaptador, por lo que no es posible describir un procedimiento único. Tendréis que ver las instrucciones del fabricante de vuestro modulo.
  • También es probable que al vincularse la primera vez os pida el código PIN.
 

Al final deberíais ver una ventana parecida a esta:

Dispositivos Bluetooth

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:

Puerta com

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

Opciones basicas

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

Putty Logging

 

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

Activar local echo

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 Prog_73_1

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.

 
  • GetlLineBT tiene una particularidad y es que no busca el fin de línea como intro o ‘\n’ sino que busca retorno ‘\r’ pues Putty tiene la manía de terminar las líneas con ‘\r’ en lugar de ‘\n’ y no he sido capaz de encontrar como cambiar esto.
  • Si algún alma caritativa descubre la forma agradecería que me informara.
 

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

 

 
    • Hemos visto como montar un adaptador Bluetooth en tu PC.
    • Vimos como configurar Putty para conectar tu PC y Arduino mediante Bluetooth, incluyendo activar el Logging para guardar registro de la información que se recibe o envía.
    • Hemos presentado un pequeño programa que nos permite gobernar Arduino mediante órdenes enviadas desde el PC y además recibe lecturas directamente.