Librería arduino para comunicación serial

01/09/2022

Valoración: 2.92 (238 votos)

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.

Temario

¿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 de baudRate debe 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 a Serial.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.

arduino libreria para comunicacion serial - Cómo obtener un puerto serie en Arduino

¿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 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.

Subir