Comunicación RS485 con Python: Tutorial paso a paso

Comunicación RS485 con Python: Tutorial paso a paso

Introducción

La comunicación RS485 es un protocolo de comunicación serial half-duplex que permite la transmisión de datos entre dispositivos a distancias de hasta 1200 metros. Es un protocolo muy utilizado en aplicaciones industriales, como el control de procesos o la automatización.

En este tutorial, aprenderemos a realizar la comunicación RS485 con Python. Para ello, utilizaremos la biblioteca pyserial, que nos proporciona una interfaz para controlar los puertos serie de nuestro ordenador.

Requisitos

Para seguir este tutorial, necesitarás lo siguiente:

  • Un ordenador con Python 3 instalado.
  • Un cable RS485.
  • Dos dispositivos compatibles con RS485.

Configuración del hardware

En primer lugar, debemos conectar los dispositivos que queremos comunicar mediante RS485. Para ello, utilizaremos un cable RS485.

El cable RS485 tiene cuatro cables:

  • TxD: Transmit Data
  • RxD: Receive Data
  • GND: Ground
  • A/B: Señales diferenciales

Los cables TxD y RxD se utilizan para la transmisión de datos. El cable GND se utiliza para la conexión a tierra. Los cables A y B se utilizan para la transmisión diferencial de datos.

Para conectar los dispositivos, debemos conectar los cables TxD y RxD de cada dispositivo entre sí. También debemos conectar los cables GND de cada dispositivo entre sí.

Configuración de Python

Para realizar la comunicación RS485 con Python, utilizaremos la biblioteca pyserial.

Para instalar pyserial, ejecuta el siguiente comando en la terminal:

pip install pyserial

Una vez instalada la biblioteca, podemos importarla a nuestro código:

Python
import serial

Ejemplo de comunicación RS485

En este ejemplo, enviaremos un mensaje de «Hola mundo» al otro dispositivo.

Python
# Importamos la biblioteca pyserial
import serial

# Creamos un objeto serial para el puerto serie
ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=1)

# Enviamos el mensaje
ser.write('Hola mundo'.encode())

# Cerramos el puerto serie
ser.close()

Este código abrirá el puerto serie /dev/ttyUSB0 a una velocidad de 9600 baudios. A continuación, enviará el mensaje «Hola mundo» al otro dispositivo. Por último, cerrará el puerto serie.

Ejemplo de recepción de datos RS485

En este ejemplo, recibiremos un mensaje del otro dispositivo.

Python
# Importamos la biblioteca pyserial
import serial

# Creamos un objeto serial para el puerto serie
ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=1)

# Recibimos los datos
data = ser.readline().decode()

# Imprimimos los datos
print(data)

# Cerramos el puerto serie
ser.close()

Este código abrirá el puerto serie /dev/ttyUSB0 a una velocidad de 9600 baudios. A continuación, recibirá los datos del otro dispositivo. Por último, imprimirá los datos recibidos.

Conclusión

En este tutorial, hemos aprendido a realizar la comunicación RS485 con Python. Para ello, hemos utilizado la biblioteca pyserial.

Con estos conocimientos, podrás realizar la comunicación RS485 entre tus dispositivos.

Referencias

  • RS485: https://en.wikipedia.org/wiki/RS-485
  • pyserial: https://pypi.org/project/pyserial/