Comunicación Serie en Arduino: Dominando UART Básico y Solución de Problemas
Arduino Serial: Comunicación Serie por Arduino
Antecedentes de la Comunicación Serie
Cuando microcontrolador o microprocesador necesita comunicarse con el exterior, proporciona datos en paquetes de 8 bits. Si un sistema necesita comunicarse con otro, se usaría cable de 8 hilos, pero no es práctico: la señal se distorsiona en distancias largas y es costoso por el alto coste del haz de 8 hilos. Este protocolo se llama comunicación paralela.
Surge la necesidad de nuevo protocolo: protocolo serie, que usa solo 3 hilos para transmitir todos los datos de 8 líneas.
Protocolo Serie
En protocolo serie, 8 bits de datos se convierten a flujo serie de bits por registro de desplazamiento paralelo-en-serie. En receptor, se convierten a 8 bits paralelos por registro serie-en-paralelo. Comunicación serie usa 2 métodos: síncrono (bloques de datos) y asíncrono (byte a byte). Mayormente se usa modo asíncrono.
Tres tipos de sistemas en comunicación serie:
- Simplex (solo transmite datos)
- Semidúplex (transmite o recibe, no simultáneamente)
- Full Dúplex (transmite y recibe simultáneamente)
Protocolo serie conocido como RS232: un byte de datos se coloca entre bits de inicio y parada (trama/framing). Estándar inicial para PC estándar años antes de lógica TTL. En RS232, nivel alto = -1 a -25V, nivel bajo (0) = +3 a +25V. Para compatibilidad con TTL se usa convertidor de voltaje, IC más común: MAX232. Arduino tiene capacidad integrada para compatibilidad TTL y puerto PC estándar.
Programando Arduino para Comunicación Serie
Arduino tiene librería integrada para RS232, no necesitas escribir todo el protocolo ni preocuparte por integridad de datos; la librería RS232 lo maneja.
Funciones Importantes en Comunicación RS232:
- Serial.begin(x): x = baud rate (velocidad). Común 9600. Va en
void setup(). - Serial.available(): Verifica si hay datos serie para recibir. Retorna 0 = sin datos, 1 = datos disponibles.
- Serial.read(): Lee dato del buffer. Por defecto, al enviar dato es tipo char; al leer, lee valor decimal (ej. envías '1', lee 49 = decimal de char '1').
- Serial.println(x): Imprime dato de variable x en monitor serie del IDE Arduino y lo envía al puerto.
- Serial.flush(): Limpia valores basura en buffers serie.
Ejemplo de Programación Puerto Serie en Arduino
void setup() {
Serial.begin(9600);
}
void loop() {
if (Serial.available() > 0) {
int data = Serial.read();
Serial.print("Recibido: ");
Serial.println(data);
}
}
Ejecuta este programa y modifícalo para tu comprensión y práctica.
Mantente conectado para más tutoriales.
También Podrías Leer:
- Cómo Programar Microcontrolador PIC18. Tutorial Paso a Paso.
- MAX232: Construcción, Operación, Tipos y Aplicación.
- 10+ Herramientas Diseño y Simulación para Ingenieros Eléctricos/Electrónicos Online.
- 15 Apps Android Imprescindibles para Ingenieros y Estudiantes Eléctricos/Electrónicos.
- Circuito Proyecto Interruptor de Aplausos Usando Temporizador 555.
- Cómo Encontrar Valor de Resistencia Quemada (3 Métodos Prácticos).
Tecnología Industrial
- Integración I2C Fluida entre Arduino y Raspberry Pi 2 para Proyectos IoT con Sensores
- Transferencia Inalámbrica de Datos Magnéticos con Arduino y Sensor 3D Infineon
- Facilitar la comunicación sordo‑ciego usando 1Sheeld y Arduino
- Registrador de Temperatura y Humedad con Arduino, DHT11 y Ethernet Shield
- Arduino UNO + Shield WiFi: Visualización de Temperatura en Tiempo Real en Web vía Serial
- Entendiendo el Flujo de Datos: De Simplex a Comunicación Full-Duplex
- Comunicación Óptica de Datos: Aprovechando la Luz para Transmisión de Alto Ancho de Banda Libre de Interferencias
- Entendiendo Protocolos de Red: De Capa Física a Arbitraje Avanzado
- Microprocesadores: La Evolución de la Computación con Programa Almacenado
- MQTT vs. DDS: Elegir el Protocolo M2M Adecuado para IoT
- Comunicación IIoT industrial: 6 protocolos de infraestructura probados