01/09/2022
La comunicación serial es fundamental en la programación de Arduino, permitiendo la interacción entre la placa y otros dispositivos o un ordenador. Este artículo profundiza en las librerías y técnicas para dominar esta herramienta esencial.

¿Qué es la Comunicación Serial?
La comunicación serial es un método de transmisión de datos digitales secuencialmente, un bit tras otro, a través de un solo cable (o par de cables para transmisión y recepción). En Arduino, se utiliza para enviar y recibir información entre la placa y un ordenador, otro Arduino, o cualquier dispositivo con capacidad de comunicación serial.
Pines de Comunicación Serial en Arduino
La mayoría de las placas Arduino cuentan con pines dedicados a la comunicación serial:
- RX (Recepción): Recibe datos seriales.
- TX (Transmisión): Transmite datos seriales.
En Arduino UNO, estos pines son el 0 (RX) y el 1 (TX). Es importante recordar que estos pines no pueden usarse como salidas digitales mientras se emplean para la comunicación serial. Además, el puerto USB de Arduino también utiliza un protocolo serial para la comunicación con el ordenador.
Librería Serial de Arduino
Arduino incorpora una librería Serial integrada, que facilita enormemente la comunicación serial. Esta librería proporciona funciones como:
Serial.begin(baudRate): Inicializa la comunicación serial a una velocidad específica (baudios). El valor debaudRatedebe coincidir en el emisor y el receptor. Valores comunes son 9600, 115200, etc.Serial.print(data): Envía datos al puerto serial. Puede enviar diferentes tipos de datos como números, texto, caracteres, etc.Serial.println(data): Similar aSerial.print(), pero añade un salto de línea al final del dato.Serial.read(): Lee un byte de datos del puerto serial.Serial.available(): Devuelve el número de bytes disponibles para leer en el búfer serial.
Ejemplos de Uso de la Librería Serial
Ejemplo 1: Control Remoto de un LED
Este ejemplo muestra cómo controlar el encendido y apagado de un LED desde el monitor serial:
void setup() { Serial.begin(9600); pinMode(13, OUTPUT); // Pin 13 como salida para el LED}void loop() { if (Serial.available() > 0) { char dato = Serial.read(); if (dato == '1') { digitalWrite(13, HIGH); // Encender LED } else if (dato == '0') { digitalWrite(13, LOW); // Apagar LED } }}En este código, se envía '1' para encender el LED y '0' para apagarlo.
Ejemplo 2: Lectura de Datos de un Sensor
Este ejemplo muestra cómo leer datos de un sensor y enviarlos al monitor serial:
#include <SoftwareSerial.h>SoftwareSerial sensorSerial(2, 3); // RX, TXvoid setup() { Serial.begin(9600); sensorSerial.begin(9600);}void loop() { if (sensorSerial.available() > 0) { int dato = sensorSerial.read(); Serial.println(dato); // Mostrar el dato en el monitor serial }}Este código utiliza la librería SoftwareSerialpara comunicarse con un sensor a través de pines digitales. Es importante configurar la velocidad en baudios ( baudRate) tanto para Serialcomo para sensorSerial.
Ejemplo 3: Comunicación entre dos Arduinos
Este ejemplo ilustra la comunicación serial entre dos Arduinos:
Arduino 1 (Emisor):
void setup() { Serial.begin(9600);}void loop() { Serial.println("Hola desde Arduino 1!"); delay(1000);}Arduino 2 (Receptor):
void setup() { Serial.begin(9600);}void loop() { if (Serial.available() > 0) { String mensaje = Serial.readStringUntil(''); Serial.println("Arduino 2 recibió: " + mensaje); }}En este ejemplo, Arduino 1 envía mensajes a Arduino 2, que los recibe e imprime en su monitor serial.
SoftwareSerial: Comunicación Serial en Pines Digitales
La librería SoftwareSerialpermite emular la comunicación serial en pines digitales, lo cual resulta útil cuando se necesitan más puertos seriales de los disponibles en la placa. Sin embargo, esta librería consume más recursos de la placa y su velocidad es menor que la comunicación serial hardware.
Consideraciones Importantes
- Velocidad en Baudios: Asegurarse que la velocidad en baudios configurada en
Serial.begin()sea la misma en ambos dispositivos que se comunican. - Búfer Serial: El búfer serial tiene una capacidad limitada. Si se envían datos muy rápidamente, algunos pueden perderse.
- Manejo de Errores: Implementar mecanismos para manejar errores de comunicación.
Consultas Habituales
A continuación, se responden algunas de las consultas más frecuentes sobre la comunicación serial en Arduino:
¿Cómo configurar la velocidad en baudios?
Se configura mediante Serial.begin(baudRate), donde baudRatees la velocidad deseada en baudios. Esta velocidad debe ser la misma en ambos dispositivos.
¿Qué pasa si las velocidades en baudios no coinciden?
La comunicación fallará, los datos se recibirán corruptos o no se recibirá nada.

¿Cómo leer datos del puerto serial?
Se utiliza Serial.read()para leer un byte de datos, y Serial.available()para comprobar si hay datos disponibles.
¿Cómo enviar datos al puerto serial?
Se utiliza Serial.print()o Serial.println()para enviar datos al puerto serial.
Tabla Comparativa: Serial vs. SoftwareSerial
| Característica | Serial | SoftwareSerial |
|---|---|---|
| Hardware | Sí | No |
| Velocidad | Alta | Baja |
| Recursos | Menos consumo | Más consumo |
| Pines | Pines dedicados (RX, TX) | Pines digitales |
Esta tabla resume las diferencias clave entre la comunicación serial hardware y software. La elección entre ambas dependerá de las necesidades específicas del proyecto.
Dominar la comunicación serial es fundamental para desarrollar proyectos avanzados con Arduino. Con la práctica y la comprensión de las librerías y funciones disponibles, se podrá aprovechar al máximo esta poderosa herramienta.
Si quieres conocer otros artículos parecidos a Librería arduino para comunicación serial puedes visitar la categoría Libros y Librerías.
