A la caza del null-modem
Γεια σε όλους!! Alguna vez te ha pasado eso de que no puedes comunicarte con un equipo por RS232 con un cable y viene el ingeniero pro de la empresa, cambia el cable y ya va todo?
Pues creo que es hora de desenmascarar a ese ingeniero pro y ser nosotros también el/la ingenier@ pro que conoce los secretos del cableado… Los chic@s del cable… Bueno, igual eso lo saqué de otro sitio…
Concretamente el cable que ha utilizado nuestro compañero es uno al que llaman null-modem… Y yo me pregunto… ¿Por qué funcionó?
Que bonito volver a conocer la comunicación serie
En la comunicación serie (RS232, RS422 y RS485) y en nuestras comunicaciones diarias, cada mensaje que transmitimos debe de ser recibido por alguien.
Esta idea tan simple en la vida real, implica que en una comunicación serie tenemos uno o varios pines TX, de transmisión, y otros RX, de recepción. Para enviar un mensaje deberemos de enviarlo desde el pin de TX de nuestro dispositivo al pin RX del dispositivo que nos escucha.
Esto mismo lo vemos en Arduino, dónde tenemos un pin RX (Pin 0) y TX (Pin 1) muy marcados. A través de ellos fluye la comunicación.
Si tomaramos otro Arduino deberíamos cruzar los cables, de manera que el pin 0 del primer Arduino iría al pin 1 del segundo Arduino. y el pin 1 del primer Arduino iría al pin 0 del segundo Arduino.
Cuando tú me hablabas de café y yo de té… Sin escucharnos demasiado
¿Qué pasaría si conectásemos el pin 0 con el pin 0 y el pin 1 con el pin 1? Pues que tendríamos dos orejas escuchándose a sí mismas y dos bocas muy muy juntas… Y ya sabemos que cuando dos bocas están muy juntas no buscan escucharse la una a la otra precisamente…
Al final estarían colisionando los dos mensajes y nunca llegarían a los oídos (RX). Una manera de saber si esto está ocurriendo es lanzar una comunicación y vigilar con un osciloscopio cuál es el cable de transmisión.
De hecho, con el osciloscopio podemos ver el mensaje. El cuál podríamos descifrar ya que se encuentra en binario, siendo HIGH un 1 y LOW un 0.
Pero claro, los osciloscopios no es lo típico que tienes en casa o que te llevas a cualquier lugar. Pero tal vez un multímetro si que es algo más accesible.
Si la comunicación es correcta tendremos tensión entre los dos bornes del cable y en los dos cables de comunicación ya que se envían mensajes desde A a B y desde B a A.
Una comunicación incorrecta vendría si siempre vemos una tensión entre los extremos de un cable y ninguna (0 Voltios) entre los extremos del otro. Esto implicaría que hay un cable en el que están constantemente hablando (Hay dos TX) y otro cable en el que existe el silencio absoluto porque están ambos a la escucha (Hay dos RX).
Información básica sobre Proteción de datos
Responsable ➥ Sergio Luján Cuenca
Finalidad ➥ Gestionar el envío de correos electrónicos con artículos, noticias y publicidad. Todo relacionado con los temas de rufianenlared.com
Legitimación ➥ Consentimiento del interesado
Destinatarios ➥ Estos datos se comunicarán a MailRelay para gestionar el envío de los correos electrónicos
Derechos ➥ Acceder, rectificar y suprimir los datos, así como otros derechos, como se explica en la política de privacidad
Plazo de conservación de los datos ➥ Hasta que se solicite la supresión por parte del interesado
Información adicional ➥ Puedes encontrarla en la política de privacidad y el aviso legal
DTE y DCE… Iguales por fuera diferentes por dentro
Por lo que ya conocemos el problema, pero no por qué se produce. Y esto se produce debido a lo que llaman DCE y DTE.
DTE (Data Terminal Equipment) y DCE (Data Communications Equipment) son nombres que vienen de antiguo. El primero se refería al ordenador y el segundo al módem.
De esta manera, utilizando un cable DB-9, al conectar el pin 2 del ordenador con el pin 2 del módem estaremos conectando RX y TX de cada uno de los dispositivos y se dará una comunicación correcta.
Con el tiempo, más dispositivos han aparecido y algunos de ellos no necesitan módems para ser utilizados por el ordenador. A esto hay que añadirle que DTE suele ser un conector DB-9 macho y DCE un conector DB-9 hembra. Pero no tiene por qué…
De modo que cada fabricante hace un poco lo que quiere, si se siente más ordenador pondrá unos pines DTE y se siente más módem pondrá unos pines DCE. Pero estos pines pueden ser macho o hembra según lo crea conveniente.
Por lo que externamente tendremos un cable DB-9 a DB-9 que conecta bien dos dispositivos pero que no tiene por qué hacer que comuniquen ya que externamente en los dispositivos no podemos ver si tenemos un DCE o un DTE.
Ahora sí: null-modem y straight-through…
¿Que por qué es importante lo del DTE y DCE? Porque los cables normales están hechos para conectar un DTE a un DCE. ¿Y qué pasa si tenemos dos dispositivos que encajan perfectamente con nuestro cable pero que son ambos DTE?
Que la comunicación no se va a dar ya que necesitamos cruzar los cables. Para ello existen los cables null-modem. Este nombre viene de que estamos eliminando el módem (DCE) y nos quedamos con dos DTE.
Al final los cables normales o straight-through mantienen el pin 2 en el 2 y el 3 en el 3 y los null-modem los intercambian. Es por eso que con un multímetro podemos pinchar un pin 2 del cable y el pin 2 del otro extremo y saber que si hay continuidad entre ambos estamos ante un cable straight-through. Si no la hay pero si que existe esta continuidad entre el pin 2 de un extremo y el 3 del otro estamos trabajando con un cable null-modem.
Cuando todo estaba bien… Fallaba el baudrate
Y con esto ya lo tendrías todo listo. Si aun así, ahora recibes caracteres extraños seguramente se trate del baudrate (O velocidad de transmisión). Los dispositivos se están comunicando a velocidades diferentes y la lectura y la escritura no está acompasada.
Esto lleva a leer caracteres extraños que no esperabas. Pero no es el cable, son los dispositivos que aún no se entienden…
Así que… ¡Bienvenido al grupo elitista de ingenieros pro! De nada 😉