arduino,  raspberry pi

Configurar Bluetooth desde Terminal – Raspbian, Debian, Ubuntu y familia xD

Desde el punto de vista del desarrollo de aplicaciones, la conectividad Bluetooth simplifica mucho la tarea del programador.

Anteriormente hemos visto el uso del Bluettoth vinculando Arduino con un movil Android. En esta ocasión vamos a avanzar hacia la integración de Arduino y Raspberry pi con bluetooth.

Si bien vamos a hacer el enfoque de la conexión a un modulo HC-06 de Arduino, sirve para cualquier configuración Bluetooth desde el Terminal.

Instalación bluetooth

En esta ocasión he utilizado una Raspberry pi Zero W con Raspbian aunque funciona con cualquier Linux de la familia Debian, Ubuntu, Lubuntu, ….

Necesitamos bluez, bluetooth y blueman:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install bluez bluetooth blueman

Comprobamos estado del bluetooth

 sudo /etc/init.d/bluetooth status -l

Vemos que está activo.

  • Es posible que de un error indicando «Failed to set privacy…», es común y no afecta al funcionamento por lo que ignóralo.

Si estuviera detenido, inicia el servicio con:

sudo systemctl start bluetooth

Una vez iniciado vamos a configurarlo, para ello utilizaremos bluetoothctl.

bluetoothctl

Seguimos con el Terminal, ejecuta:

sudo bluetoothctl

¡¡Es importante hacerlo con sudo o dará problemas con el default-agent!!

Error al establecer default-agent por falta de permisos.

Una vez dentro de Bluetoothctl, definimos default-agent, buscamos dispositivos cercanos, emparejamos y establecemos como dispositivo de confianza:

[bluetooth]# default-agent
...
[bluetooth]# scan on
...

scan on devolverá la lista de dispositivos encontrados, una vez localizado cogemos la MAC Address y emparejamos con pair:

[bluetooth]# pair 99:99:99:99:99:99

Introducimos el PIN de 4 digitos, debemos conocerlo.

Si queremos guardar la configuración y establecer la relación de confianza entre los dispositivos, utilizamos trust:

[bluetooth]#trust 99:99:99:99:99:99

Con esto ya tenemos emparejado nuestra raspberry y el dispositivo.

Conectar con el dispositivo

Una vez establecido el emparejamiento, podrás conectar los dispositivos siempre que lo necesites.

En el Terminal, ejecuta:

sudo rfcomm connect hci 99:99:99:99:99:99

Verás la siguiente respuesta indicando que se ha conectado correctamente:

Connected /dev/rfcomm0 to 20:13:08:14:25:57 on channel 1
Press CTRL-C for hangup

En el caso de la HC-06, dejará de parpadear y el led pasa a estar fijo.

Esta entrada es un paso previo y necesario para lo que vendrá pronto. Utilización de Arduinos y sensores (PIR, temperatura, intensidad luz, consumo electrico, control de dispositivos, luces, …) sincronizados a unidad central Raspberry Pi por bluetooth para notificar y controlar via Telegram de lo que sucede en casa/oficina…, y programado en Python!

Puede que te resulten interesantes las entradas:

Vincular Android y Arduino por Bluetooth

Uso de bluetooth y relé en Arduino. Encender lampara desde el movil.

Nos vemos pronto, Saludos!

4 Comments

  • Gustavo

    Buenas tardes, gracias por el tiempo dedicado a tu blog y compartirlo, muy didáctico.
    En realidad a estas alturas de buscar y buscar por la web me estoy dando cuenta que quizás no haya manera o no exista la forma de conectar sin cable usb un Arduino con Raspberry Pi y leer la información de sus sensores con un script Python, no se si tú has visto algún tema al respecto o quizás sepas de ello, te agradecería me ayudes con el tema.
    Saludos.

    • admin

      Hola Gustavo.
      En algún sitio tengo pruebas de envío de datos recogidos por sensores (PIR, GPS, …) por Bluetooth a Raspberry/PC haciendo la recepción y tratamiento de valores con Python.
      A fin de cuentas, es lectura/escritura por puerto Serie.
      Lo busco y lo subo.

      Gracias por el comentario,
      un saludo.

  • Ana Luna

    es posible enviar una serie de datos, como mencionas, variables de monitoreo a través del puerto serie? como con un HC-06 desde el arduino y crear una base de datos en Raspberry?

    • Reyes

      Claro, yo he programado cosas así. Te recomiendo que primero te olvides del bluetooth y consigas una aplicación que te lea los datos que mandas del Arduino a la raspberry y cree la base de datos. Cuando te funcione solo tienes que añadir system(«sudo rfcomm connect hci 99:99:99:99:99:99») a tu aplicación y cambiar el puerto serie AMA0 o S0 por el rfcomm que acabas de crear.

      Un saludo

Deja un comentario

Tu dirección de correo electrónico no será publicada.