El UART es un protocolo serie asíncrono entre dos dispositivos. Es la forma más simple y clásica de hacer que dos chips “hablen” entre sí usando líneas separadas de transmisión y recepción.
De nada sirve tener un procesador muy potente si no puede contarle lo que “piensa” a otros chips (sensores, pantallas u otros micros). Y aquí el UART sigue siendo el rey de la sencillez: depuración por puerto serie, GPS, módulos Bluetooth clásicos o bootloaders.
En el mundo Arduino, lo llamamos simplemente “Serial”. Es lo que usas cada vez que abres el Monitor Serie para ver un Serial.print("Hola Mundo").
¿Qué es UART?
A diferencia de otros protocolos que veremos después (como I2C o SPI), el UART es Asíncrono. Esto significa que NO hay una línea de reloj (Clock) que marque el ritmo.
Analogía: Imagina dos músicos tocando juntos.
En un sistema Síncrono (con reloj), hay un baterista marcando el tiempo (tuc-tuc-tuc). Ambos saben cuándo tocar.
En el UART (Asíncrono), no hay baterista. Ambos músicos deben haber acordado previamente tocar a una velocidad exacta (por ejemplo, 120 BPM). Si uno toca más lento que el otro, la canción es un desastre.
Los cables: TX y RX
Físicamente, el UART requiere al menos dos cables de datos (más la referencia de masa, GND).
- TX (Transmit): Por aquí salen los datos (habla).
- RX (Receive): Por aquí entran los datos (escucha).
Cómo cruzar TX y RX
Aquí falla el 90% de los principiantes. El UART es una comunicación cruzada. Lo que yo hablo (TX), tú lo escuchas (RX).
- El TX del Dispositivo A → va al RX del Dispositivo B.
- El RX del Dispositivo A → va al TX del Dispositivo B.
- En una conexión UART no aislada, GND debe unirse con GND para compartir la referencia eléctrica.
No conectes dos salidas TX entre sí. Si ambas intentan imponer niveles opuestos, puede circular una corriente excesiva y dañarlas. Para compartir una línea hace falta una interfaz diseñada para ello.
El baud rate (la velocidad)
Como no tenemos un cable de reloj para sincronizarnos, ambos dispositivos deben configurarse a la misma velocidad. Esta se expresa en baudios (símbolos por segundo). En una UART binaria cada símbolo transporta un bit de línea, aunque el encuadre reduce la tasa de datos útiles.
Las velocidades estándar son:
- 9600: La clásica y lenta. Muy robusta.
- 115200: La estándar moderna (usada por ESP32 y la mayoría de bootloaders).
- Otras: 19200, 38400, 57600…
Si tu Arduino envía a 9600 baudios y tu ordenador escucha a 115200 baudios, verás símbolos extraños y basura en la pantalla. Es como si escucharas un disco de vinilo a la velocidad incorrecta.
La trama de datos: ¿cómo viaja la información?
En la línea de cable, el estado de reposo (silencio) es HIGH (1). Cuando se quiere enviar un Byte (una letra, por ejemplo ‘A’), ocurre lo siguiente:
- Start Bit (Bit de Inicio): La línea baja a 0 durante un ciclo. Esto le dice al receptor: “¡Despierta, voy a hablar!”.
- Bits de Datos: Se envían los 8 bits del byte, uno detrás de otro (generalmente empezando por el bit menos significativo).
- Parity Bit (Opcional): A veces se añade un bit extra para comprobar errores (pocas veces se usa hoy día, configuramos “Sin Paridad”).
- Stop Bit (Bit de Parada): La línea vuelve a subir a 1 para marcar el final.
Todo esto ocurre rapidísimo y el hardware del UART lo hace automático. Tú solo le dices “Envía una A” y el chip genera esos pulsos.
Niveles de tensión: TTL vs RS-232
Aquí hay una trampa histórica peligrosa.
- UART TTL (Transistor-Transistor Logic): Es el que usan los microcontroladores (Arduino, ESP32, módulos GPS).
- 0 Lógico = 0V.
- 1 Lógico = 5V (o 3.3V).
- RS-232: es la interfaz eléctrica asociada a muchos puertos serie con conector DB9. Usa tensiones positivas y negativas e invierte la lógica respecto a una UART de microcontrolador; los valores exactos dependen del transceptor y de la carga.
Advertencia de Seguridad: Si conectas un sensor o aparato industrial con puerto RS-232 directamente a los pines RX/TX de tu Arduino, lo quemarás instantáneamente. El voltaje es inverso y muy alto (-12V). Necesitas un chip conversor (como el famoso MAX232) para traducir los niveles.
Ventajas y desventajas
| Característica | Valoración |
|---|---|
| Simplicidad | ⭐⭐⭐⭐⭐ (Muy fácil de programar) |
| Cables | 2 hilos (+GND) |
| Velocidad | Baja/Media (hasta unos pocos Mbps) |
| Distancia | Corta (metros) en TTL, Larga en RS-232/485 |
| Tipología | Punto a Punto (Solo dos dispositivos hablando) |
El gran defecto del UART es que es Punto a Punto. No puedes conectar 5 sensores al mismo cable TX/RX.
Para conectar muchos dispositivos usando pocos cables, necesitamos algo más avanzado… como el I2C.