Bluetooth_bitbloq_2

¿Quieres comunicarte vía bluetooth con tu placa controladora? Puedes hacerlo si tienes un módulo bluetooth compatible con arduino o una placa como la ZUM BT-328 que lo lleve integrado. Una comunicación se realiza siempre entre dos partes, entre dos makers, entre dos robots, entre dos lechugas… bueno, las lechugas lo tienen más difícil para comunicarse… A lo que iba, para conseguir una comunicación inalámbrica vía bluetooth lo que necesitas son dos programas, uno que se ejecute en el ordenador o dispositivo móvil/tablet y otro que se ejecute en la placa cerebro que uses.

Bluetooth_bitbloq_2

En este post se explica cómo realizar dicha comunicación con un ordenador que tenga Bluetooth. Necesitamos entonces:

  1. Programa dentro de la placa controladora que envíe/reciba datos. (Lo haremos con bitbloq )
  2. Programa dentro del ordenador o dispositivo con bluetooth que envíe/reciba datos. (Usaremos el Monitor Serial de la IDE de Arduino)

Abre bitbloq y descarga el IDE de Arduino. ¡Manos al código!

ESCRIBIR POR PUERTO SERIE BLUETOOTH


Serial_bitbloq__BT__1

En este primer ejemplo queremos enviar una frase ‘Bluetooth era un vikingo‘ por el puerto bluetooth esperando 2 segundos entre envío y envío.

Parte 1: EMISOR – Programación en bitbloq

En primer lugar usaremos este bloque de bitbloq de la pestaña Comunicación para inicializar los parámetros del puerto serie bluetooth. Si usas una placa ZUM BT-328 tendrás que poner una velocidad de 19200 baudios:

blu__1

Si en cambio usas el módulo Bluetooth de “Mi Primer Kit de Robótica” que es un HC-05, tendrás que poner 38400 baudios y conectarlo de la siguiente forma:

bluetooth_bitbloq_2

conexion_ModuloBluetooth

¡OJO! Justo cuando le des a Cargar el programa en la placa controladora, debe estar desconectado el cable naranja del pin 0. En cambio, cuando lo vayas a hacer funcionar vuelve a conectarlo como en el esquema.

Los bloques bitbloq de este ejemplo de programación son así de sencillos:

bloques_bluetooth_enviar

Como habrás visto, tan sólo es necesario el bloque de Bluetooth: Enviar donde conectamos el bloque de texto de nuestra frase. Carga este programa en la placa.

Parte 2: RECEPTOR – Usando el Monitor Serial de Arduino IDE

Vamos con la segunda parte, configurar el ordenador para que actúe como receptor.

Si estás usando la placa ZUM BT-328 Recuerda que debes tener el interruptor en ON y los conmutadores en la siguiente posición:

  conmutadores_Bluetooth_1_23
  • Conmutador 1: ON
  • Conmutador 2: OFF
  • Conmutador 3: OFF

Alimenta la placa con el portapilas, adaptador o cable USB.

>> Configuración Bluetooth en Windows 7:

Busca desde el botón inicio el asistente de configuración bluetooth que te guiará para establecer la conexión.

cap__0

Aunque en algunos ordenadores el asistente de configuración bluetooth sea ligeramente distinto, los pasos a seguir serán como estos:

cap_win7_bluetooth

Una vez esté configurado y le demos a conectar, nos pedirá que introduzcamos el PIN que por defecto será 1234

cap__4_PIIIN

>> Configuración Bluetooth en Linux (Ubuntu):

  1. Abre una Terminal (Alt + F2) y escribe gnome-terminal
  2. Busca la habilitación de nuevos dispositivos Bluetooth escribiendo el siguiente comando.

    $ sudo hcitool scan
    Scanning …
    98:D3:31:B2:DB:09 bqZUM_BT328

  3. Conecta tu dispositivo al puerto ‘/dev/rfcomm0′ escribiendo el siguiente comando usando la dirección obtenida en el paso anterior:

    $ sudo rfcomm bind /dev/rfcomm0 98:D3:31:B2:DB:09

>> Configuración Bluetooth en MacOX:

  1. En Preferencias de sistema selecciona Bluetooth.
    Captura de pantalla 2015-01-28 13.22.51 Captura de pantalla 2015-01-28 13.23.19
  2. Busca tu placa y pulsa enlazar. Si no puede conectarse y aparece un error, es necesario “emparejar” el dispositivo Bluetooth con el ordenador. Para ello, pulsa sobre Opciones e introduce el código “1234” y vuelve a pulsar sobre enlazar.
    Captura de pantalla 2015-01-28 13.23.45

¡¡Ya estamos conectados!! Y sabremos el numero del puerto creado dependiendo del sistema operativo, por ejemplo: ‘COM46′, ‘/dev/rfcomm0′, ‘/dev/tty.bqZUM_BT320-SPPDev’…

Abre el IDE de Arduino y selecciona en Herramientas la placa [ArduinoUNO o Arduino BT w/ATmega328] y el puerto [ej: COM46]

cap__6_arduino_puerto_placa

Ya podemos abrir el Monitor Serial desde Herramientas/MonitorSerial o pulsando este icono:

cap__7_arduino_abre_SerialMonitor

Recuerda seleccionar la velocidad de 19200 o 38400 baudios según tu placa. Verás cómo aparece la frase cada 2 segundos

cap__8_arduino_monitor_recibe_1

LEER EL PUERTO SERIE BLUETOOTH


Serial_bitbloq__BT__2

Recibiendo vía Bluetooth:

Vamos con un ejemplo para recibir datos por el puerto que hemos abierto. Lo que hace este bloque de comunicación es comprobar si ha llegado algo vía bluetooth:

blu__0

Si recibimos algo por el puerto creado lo vamos a guardar en una variable local llamada “dato” que compararemos para ver si es la letra A (¡en mayúscula!) y en caso de ser cierto, encenderemos el LED ya integrado en la placa, es decir, el del pin digital 13 (así no necesitas conectar el módulo LED). En caso de recibir cualquier otro dato, apagaremos dicho LED:

bloques_bluetooth_recibir

“- Pero… ¡Has comparado el dato con un 65!¿? – ” Pues sí querido robonauta, porque ahora mismo en bitbloq no hay un bloque para comparar variables de texto tipo char de momento sólo pueden ser tipo String. No te preocupes si te suena a chino, tan sólo debes saber que para este ejemplo usamos números para identificar letras.

La letra ‘A‘ corresponde con el número decimal 65 en código Ascii (mira la tabla al final de este post).

Carga este programa en tu placa y abre de nuevo el Monitor Serial. Escribe una ‘A’ en mayúscula y dale a enviar… ¿Ves cómo se enciende el pequeño LED? ¿Qué sucede si envias cualquier otra cosa?

cap__9_arduino_monitor_envia_fix

Ahora que eres un experto en comunicación bitbloq-bluetooth, que sepas que la aplicación para Android llamada RoboPad envía los caracteres: S,U,D,R,L,C,M… (stop, up, down, right, left, claw, manual) al pulsar los botones de control de los PrintBots. Aquí te dejo la tabla Ascii para que compares la equivalencia de las letras y caracteres que viajan:

Ascii_A

¿Te has fijado en que los números 0,1,2,3… también se envían como caracteres y tienen su correspondencia decimal en el código Ascii? Qué de cosas se pueden aprender en un día… ¡Dentro de poco sabrás leer las letras de Matrix!