Saltar al contenido

¿Cómo conecto un terminal serial sin formato a una conexión bluetooth?

Agradecemos tu apoyo para difundir nuestros artículos en referencia a las ciencias informáticas.

Solución:

1) Uso hcitool scan para encontrar la dirección Mac del dispositivo.

El dispositivo debe configurarse en modo esclavo con un pin conocido. Si no usa un pin conocido, ubuntu crea uno y, por lo general, no tendrá tiempo de ingresarlo en los torpes menús de su herramienta de medición.

2) No estoy completamente seguro de que esto sea necesario, pero en el menú de interfaz gráfica de usuario de bluetooth, empareje el dispositivo.

3) en /etc/bluetooth/rfcomm.conf

rfcomm0 
        bind no;
        device 00:07:80:44:4F:37;
        channel 1;
        comment "Serial Port";
        

El “bind no” es importante, de lo contrario, intentará vincularse automáticamente, lo que presenta todo tipo de problemas para acceder realmente al dispositivo (ya que es bastante exigente con respecto a cuándo está asociado)

4) sudo rfcomm connect 0

Si tiene errores, reinicie el servicio de bluetooth.

5) screen /dev/rfcomm0

Para los comandos en serie reales transmitidos de esta manera, comuníquese con su proveedor y pídale.

Aquí está mi forma de proceder para conectarme a un dispositivo bluetooth HC-05 conectado a mi arduino. No necesita escribir un archivo como en la respuesta de Brian, pero la idea es similar. Lo probé con una configuración de velocidad de 9600 baudios en el dispositivo HC-05.

Primer paso: vincular el dispositivo y proporcionar el PIN

Intenté configurar el emparejamiento desde la GUI, pero no funcionaba. Aquí está la forma de proceder de la línea de comando que funcionó para mí. Primero, emparejemos el dispositivo desde la línea de comandos. Correr :

sudo bluetoothctl

Asegúrese de que el dispositivo bluetooth esté iniciado:

# power on

Ahora iniciamos el agente que “recordará el pin” para rfcomm :

# agent on

Ahora habilitamos el modo de escaneo para encontrar nuestro dispositivo y poder emparejarlo:

# scan on

Después de unos segundos, debería aparecer la MAC de su dispositivo. Lo denotaremos como después. Luego, solo necesita emparejar el dispositivo de esta manera:

# pair 

Se le pedirá que escriba un PIN, por defecto es 1234 en mi dispositivo HC-05. Puede tener en cuenta que es posible que su dispositivo se conecte y luego se desconecte con un mensaje como ese:

[CHG] Device 20:16:10:24:29:77 UUIDs: 00001101-0000-1000-8000-00805f9b34fb
[CHG] Device 20:16:10:24:29:77 ServicesResolved: yes
[CHG] Device 20:16:10:24:29:77 Paired: yes
Pairing successful
[CHG] Device 20:16:10:24:29:77 ServicesResolved: no
[CHG] Device 20:16:10:24:29:77 Connected: no

pero no es un problema. No necesita conectarse, por lo que ahora puede salir bluetoothctl escribiendo Ctrl + D.

Proporcione un archivo utilizable /dev/rfcomm0

En primer lugar, asegúrese de no ejecutar ningún comando rfcomm antes. De hecho, incluso si cierras con Ctrl+C el programa, aún se ejecuta en segundo plano.

sudo killall rfcomm

Ahora, puedes correr

sudo rfcomm connect /dev/rfcomm0 20:16:10:24:29:77 1 &

Tenga en cuenta que si intenta escribir en la entrada de rfcom, no pasó nada. Necesitas usar otro programa.

Tercer y último paso: escribir en el /dev/rfcomm0

Hay varias formas de escribir en el archivo, pero tenga en cuenta que todas las formas de proceder implican root. Aquí describo varios programas que pueden hacer eso (para que puedas elegir dependiendo de tu necesidad o de lo que esté instalado en tu sistema, por ejemplo). Si olvida ejecutar el programa como root, es posible que tenga un error:

stty: /dev/rfcomm0: Device or resource busy

Primera opción: conectarse usando screen

La pantalla es una herramienta muy poderosa. Puedes instalarlo (siempre es útil) usando:

sudo apt-get install screen

y luego corre

sudo screen /dev/rfcomm0

Si olvida ejecutarlo como root, obtendrá un error como el que recibió Aleksander:

[screen is terminating]

Para salir, escriba “(CTRL + A) + :quit”

Segunda opción: conectarse usando minicom

Instalarlo

sudo apt-get install minicom

y luego corre

sudo minicom -D /dev/rfcomm0

Si olvida ejecutarlo como root, tendrá un error como

minicom: cannot open /dev/rfcomm0: Device or resource busy

Para salir, escriba “Ctrl + AX”.

Tercera opción: minitérmino de secuencia de comandos de python

Descargue este script y ejecute:

chmod +x miniterm.py
sudo ./miniterm.py /dev/rfcomm0

Escribir directamente en el archivo

En primer lugar, ejecute el siguiente comando (9600 es la velocidad en baudios):

sudo stty -F /dev/rfcomm0 cs8 9600 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts 

Ahora puedes escribir en este archivo como en un archivo clásico:

sudo su -c "echo 'message' > /dev/rfcomm0"

y en teoría leer de él usando

sudo tail -f /dev/rfcomm0

Pero no sé leer no funciona, si alguno de ustedes tiene una idea…

Como una adición a la respuesta de Brian. La pantalla no funcionó para mí, mostrando inmediatamente [screen is terminating]

Así que encontré este script de python miniterm. El uso es similar:

sudo miniterm.py /dev/rfcomm0

Comentarios y valoraciones del artículo

Nos encantaría que puedieras mostrar este enunciado si si solucionó tu problema.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *