COMUNICACION A DISTANCIA CON ARDUINO Y RS485

JUE, 14 / SEP / 2023

Existe una norma técnica para transmitir información a distancias de hasta poco más de un kilómetro. Es en la capa física donde se la aplica, y se la conoce como RS485.

La norma permite establecer comunicaciones simplex, half dúplex y full dúplex, dependiendo de la cantidad de interfaces utilizadas.

En este Informe USERS aprenderás a lograr que dos o más placas Arduino, separadas entre sí hasta por 1200 metros, se comuniquen entre ellas.

Autor: Ing. Iván Lobo Varela

Norma RS485

Esta norma se diseñó para mejorar las prestaciones de la comunicación por RS232, que depende de la distancia y es más susceptible al ruido electromagnético.

Cuanto mayor distancia hay entre los equipos que intercambian datos, o si la comunicación se establece en entornos eléctricamente ruidosos, la información puede verse afectada. De hecho, el estándar RS232 define como máximo 15 metros entre transmisor y receptor. Esto sucede porque la información se convierte a niveles de tensión.

En binario, un cero lógico se transmite como un valor de tensión positivo de 10 voltios y un uno lógico, como un valor negativo de -10 voltios (o al revés si se utiliza lógica negativa). Aun empleando cables apantallados, los valores ±10 V se ven afectados por la resistividad del cable y el ruido electromagnético del ambiente, entre otros factores.

Si, por ejemplo, el cable atraviesa un entorno con motores, hornos de microondas, fuentes de alimentación o grandes equipos de aire acondicionado, esos ±10 V pueden llegar a modificarse y confundir a los receptores, con lo cual obligan a los transmisores a reenviar los datos y entonces las comunicaciones se tornan lentas e ineficaces.

La comunicación basada en RS485, en cambio, no utiliza niveles de tensión para identificar los unos y los ceros, sino que emplea el cambio de polaridad entre sus pines. Por ejemplo, imaginemos lo siguiente: el pin A será el positivo y el pin B será el negativo, y eso representa un 1 (uno). En cambio, si A es el negativo y B es el positivo, entonces el dato es un 0 (cero).

Este estándar se diseñó para trabajar en ambientes de mucho ruido eléctrico y/o electromagnético. La distancia máxima a la que se puede establecer una comunicación de buena calidad es de unos 1200 m.

Uso de Arduino para controlar cualquier función a 1 km

Esta norma es tan versátil y simple de usar, que no requiere protocolos ni codificaciones especiales para la información que se quiere enviar. Si deseamos mandar un comando que diga: “encender ventilador” o “ev”, es lo mismo. Es decir, esta norma solo establece el cómo, no el qué; del qué nos ocupamos nosotros.

Comercialmente se pueden adquirir módulos RS485 para utilizar con la plataforma Arduino (o cualquier otra) y por un costo de aproximadamente un cuarto del valor de un Arduino Nano.

Estos módulos constan de 8 contactos: los pines de alimentación de la placa (+5 V y GND), los pines de red/comunicación (A y B), que se pueden atornillar en esta imagen de ejemplo (dispone de un conector a tal efecto), y los pines de control y datos, normalmente llamados DI-RO (datos de entrada y salida) y DE-RE (para controlar si el módulo está en modo transmisor o receptor), a los que se pueden soldar conectores o cables.

El funcionamiento es muy simple. Si enviamos un 1 a los pines DE-RE, la placa se configura en modo transmisor (o TX). Si enviamos un 0, se configura en modo receptor (o RX).

En el pin DI (Driver Input) se coloca la información que se quiere enviar y del pin RO (Receiver Output) saldrá el dato que se espera recibir.

Pines de control, envío y recepción de datos.

Como puedes imaginar, el mismo Arduino controla esta placa a través de cualquiera de sus pines, solo hay que colocar un HIGH o LOW en la línea de control y ¡listo!

Entonces veamos la disposición de pines de una placa Arduino Nano.

Disposición de pines de una placa Arduino Nano.

Tomemos el pin digital D2 (podríamos tomar cualquiera, por supuesto), que utilizaremos para controlar la placa RS485. Basta con indicar:

digitalWrite (D2, HIGH);    //setea a uno o nivel lógico alto el pin D2

De este modo, la placa se convertirá en transmisora.

digitalWrite (D2, LOW);   //setea a cero o nivel lógico bajo el pin D2

Esto hará que la placa se convierta en receptora.

Aprende más sobre Arduino + RS485 leyendo la edición completa de este Informe en RedUSERS PREMIUM

También te puede interesar:

PROGRAMA TU ARDUINO

En este e-book aprenderás las bases necesarias para comenzar  a escribir tus primeros programas para Arduino. En sus  páginas conocerás lo fundamental de la sintaxis y también el  uso correcto de las variables y constantes. Además se repasa el  uso de las estructuras de control de flujo y, finalmente, la  importancia de las entradas y salidas, tanto digitales como  analógicas.

Informe USERS es una publicación digital semanal exclusiva para suscriptores de RedUSERS Premium, en ella analizamos en profundidad temas de actualidad en tecnología: tendencias, aplicaciones, hardware, nuevas tecnologías y más.


RedUSERS PREMIUM contiene cientos de publicaciones y puedes leerlas a todas, por una mínima cuota mensual SUSCRIBETE!

¡Comparte esta noticia!
TAGS ,