Raspberry Pi y Bluetooth [2] 5

Ya hemos comentado en la primera parte de este artículo la forma de realizar la configuración básica para que nuestra Raspberry Pi reconozca un dispositivo Bluetooth-USB, así como los comandos adecuados para “emparejar” (vincular) dos dispositivos mediante un radio-enlace Bluetooth.

Nota: cuando se trate de Bluetooth conviene tanto tener actualizado el sistema

sudo apt-get update

sudo apt-get upgrade

como acordarnos de que el dispositivo a buscar esté visible (desde el SETUP del mismo).

Una vez tengamos lista nuestra Raspi podemos dar un salto cuantitativo y – además de vinvularla a un dispositivo BT externo – intentar comunicarnos con el mismo. A modo de ejemplo práctico, vamos a vincular un dispositivo Android y crear un enlace BT-RFCOMM con el mismo.

En este caso, seguir la secuencia aconsejada es muy muy recomendable …

Los pasos que vamos a seguir son:

(0) Verificación del dongle Bluetooth.
(1) Instalación del sofware de terminal en Android (TerminalBT).
(2) Protocolo RFCOMM y fichero de configuración.
(3) Instalación/configuración del software terminal en Raspberry Pi (minicom).
(4) Chequeando y … ¡¡Conectando!!

Así que, como dijo Jack el destripador … vayamos por partes 😉

(0) Verificación del dongle Bluetooth.

Una vez conectado el Bluetooth-USB a nuestra Raspberry, y para asegurarnos de la correcta instalación y “status” del mismo, podemos recurrir a varios comandos, por ejemplo …

lsusb

o bien, para ver datos de mi propio dispositivo BT

hcitool dev

para ver aún más datos del mismo

hciconfig -a

y para saber el estado del servicio que controla Bluetooth

sudo service bluetooth status

BT2_01

(1) Instalación del sofware de terminal en Android (TerminalBT).

Ahora instalamos el programa que, desde nuestro dispositivo Android, nos permitirá abrir una sesión de terminal con nuestra Raspberry Pi. Se trata del programa TerminalBT. Una aplicación gratuita y que nos será de gran utilidad …

BT2_02

Realizamos la instalación típica en nuestro dispositivo (Teléfono o Tablet) Android.

(2) Protocolo RFCOMM y fichero de configuración.

Ahora, y antes de proceder con los siguientes pasos hemos de averiguar cierto dato sobre la conexión a configurar. Tal y comentamos en la primera parte de este artículo uno de los protocolos manejado vía BT es RFCOMM, y aunque este protocolo se puede usar en varios “perfiles” dentro de Bluetooth lo que nos interesa (en nuestro ejemplo) es utilizarlo para implementar una comunicación de terminal bi-direccional.

Para poder ver algo más sobre el protocolo que nos interesa – tras emparejar los dispositivos como ya se comentó – ejecutaremos el comando que nos muestre las opciones (protocolos) que nos ofrece nuestro dongle BT para conectar con el dispositivo Android de nuestra elección…

OjO (todos los comandos han de ejecutarse con el MAC de nuestro dispositivo, el valor 11:22:33:44:55:66 solo se indica a modo de ejemplo)

realizamos el escaneo de dispositivo con

hcitool scan

Scanning …
11:22:33:44:55:66    Nexus 7

emparejamos (vinculamos) con

sudo bluez-simple-agent hci0 11:22:33:44:55:66

RequestPinCode (/org/bluez/1996/hci0/dev_11_22_33_44_55_66)
Enter PIN Code: 1234
Release
New device (/org/bluez/1996/hci0/dev_11_22_33_44_55_66)

ahora vemos los protocolos disponibles en el mismo con

sudo sdptool browse 11:22:33:44:55:66

y podemos comprobar que – en principio – y aún existiendo el RFCOMM, no existe un protocolo que “explícitamente” no indique el modo de conexionado terminal (?) … esto puede confundirnos en un principio, pero lo que hacemos es – sin desvincularnos, claro está – abrir la aplicación que usaremos como terminal bajo Android (TerminalBT, en nuestro caso) en nuestro dispositivo y, a continuación, volver a indigar con el mismo comando

sudo sdptool browse 11:22:33:44:55:66

y vemos – en nuestro ejemplo, al final del listado obtenido -que ahora SI que tenemos un protocolo RFCOMM operando en un perfil de comunicación terminal (BluetoothTerminal).

De esta información, lo más importante es fijarnos en el número de canal que utiliza dicho perfil.

Vemos que, en nuestro ejemplo, es el canal 4

Este dato será preciso para realizar una configuración posterior… tomamos nota.

La configuración – por defecto – precisa para comunicarnos mediante Bluetooth/RFCOMM pasa por el fichero que tenemos en /etc/bluetooth/rfcomm.conf

Lo editamos con

sudo nano /etc/bluetooth/rfcomm.conf

y hacemos que quede algo así (OjO, eliminamos las almohadillas de las líneas activas)

Ahora es importante destacar que la conexión por defecto del protocolo RFCOMM llama a “rfcomm0” y que el canal utilizado (el averiguado en el paso anterior) es el 4 (channel 4).

(3) Instalación/configuración del software terminal en Raspberry Pi (minicom).

Al margen de otras posibilidades, vamos a utilizar un “clásico” de Linux para realizar la función de terminal. Se trata del programa minicom, el cual – pese a no ser de manejo muy intuitivo – nos permite una configuración rápida y cuyo proceso comentaremos en detalle.

Instalamos en nuestra Raspberry el programa con

sudo apt-get install minicom

Para configurarlo y adaptarlo a nuestras necesidades (operar en /dev/rfcomm) ejecutamos

sudo minicom -s

nota: es importante hacerlo con privilegios de root para que nos permita luego grabar la configuración.

ahora vamos a modificar unos pocos parámetros a nuestro gusto …

en la ventana que aparece seleccionaremos “Configuracion del puerto serial”

BT2_03

y ahora, mediante las teclas A, E, F y G configuramos algo como esto

BT2_04

vamos saliendo de los menues con ESC y, finalmente

damos a “Salvar configuración como” y elegimos – en nuestro ejemplo – el nombre “rfcomm

salimos finalmente con

“Salir del minicom”

De momento el programa minicom queda instalado y configurado. Vamos con el siguiente paso …

(4) Chequeando y … ¡¡Conectando!!

Bueno, dada la cantidad de pasos dados hasta ahora, vamos a repasar lo ya hecho e indicar los pasos finales para que nuestros terminales “charlen” entre ellos …

Recordamos que

– tenemos “visible” el dispositivo Android a emparejar
– hemos instalado el software minicom en la Raspberry Pi
– hemos creado la configuración “rfcomm para minicom
– hemos editado el fichero por defecto del protocolo RFCOMM (/etc/bluetooth/rfcomm.conf)
– hemos instalado la aplicación TerminalBT en dispositivo Android
– hemos emparejado dispositivos (Raspi con Android)

y ahora hacemos esto

– lanzo la aplicación TerminalBT en Android
– abro una ventana terminal exclusivamente para lanzar la conexión
– conecto dispositivos vía RFCOMM mediante

sudo rfcomm connect 0

obtendremos algo como esto

– ejecuto – en otra ventana terminal – el minicom en Raspi con

minicom rfcomm

veremos algo así

BT2_05

de momento, vamos a nuestro dispositivo Android (que estaba ya abierto) teclearemos

en el minicom veremos aparecer el texto enviado

BT2_06

Si escribimos algo en el minicom y pulsamos <Enter> se enviará al terminal Android, pero, salvo que lo activemos, no tendremos eco de pantalla. Como quiera que minicom no es muy intuitivo vamos a ver – a modo de ejemplo práctico – como se activa el eco y como se sale del programa …

Si en la ventana de minicom pulsamos simultáneamente las teclas Control y A (abreviadamente Ctrl-A) y las soltamos, el programa espera que pulsemos alguna otra tecla:

por ejemplo, si hacemos

Ctrl-A y luego E  activamos el eco de pantalla

si queremos cerrar el minicom, pulsaremos

Ctrl-A y luego Q

Nota:

Podemos hacer que el eco de pantalla sea permanante ejecutando la configuración creada anteriormente. Para ello ejecutamos

sudo minicom rfcomm -s

y seleccionaremos “Pantalla y teclado

activamos el eco con Q

y salimos guardando de nuevo sobre rfcom

salimos con “Salir del Minicom

Asi que ahora que Raspi puede charlar con Android … a DIVERTIRSE

 

 

5 thoughts on “Raspberry Pi y Bluetooth [2]

  1. Reply Anónimo Sep 27, 2013 3:54 am

    quisiera saber en que lenguaje fue hecha la programcion

  2. Reply Juanlico Oct 2, 2013 7:02 pm

    Hola tengo un problemilla soy MUYY nuevo en esto y cuando llego aqui.
    sudo rfcomm connect 0
    la raspuesta es
    can´t connect RFCOMM sockt: host is down
    Creo que el tema va por que mi Pi se desconecta del bluetooth de mi telefono, la verdad estoy bastante perdido.
    Gracias

  3. Reply Juanlico Oct 2, 2013 7:31 pm

    solucionado XD

  4. Reply Marina Dic 5, 2015 6:09 pm

    Hola Juanillo,

    Yo también soy muy nueva en este mundillo y estoy teniendo el mismo problema, me gustaría saber como lo has solucionado. Muchas gracias por tu atención.

    Un saludo,
    Marina.

  5. Reply Marina Dic 5, 2015 6:11 pm

    Perdona no había leído bien tu nombre, Juanlico.

    Un saludo

Leave a Reply