Comunicación entre dos Arduinos por Serial UART

¡Conéctate conmigo en las redes sociales para actualizaciones y contenido!

En este tutorial, utilizaremos dos Arduino Uno para comunicarse entre sí a través de la comunicación Arduino UART (receptor-transmisor asíncrono universal). Esta comunicación es un tipo de comunicación serial, también conocida como USART.

Este tutorial ayuda a los ingenieros de hardware y software a crear una conexión por cable entre los dispositivos usando menos cables.

UART Introducción

UART es un tipo de protocolo de comunicación en serie que permite que dos dispositivos intercambien datos a través de una sola línea de comunicación con comunicación en serie.

UART utiliza dos cables para la comunicación: una línea de transmisión (TX) y una línea de recepción (RX). Desde el punto de vista del cableado, el Rx del segundo microcontrolador se conecta con el Tx del primero. Cuando un dispositivo quiere enviar datos al otro, transmite una serie de bits a través de la línea TX, y cada bit se envía secuencialmente. El dispositivo receptor luego lee estos bits de la línea RX y los interpreta como datos.

El UART utiliza el formato común sin retorno a cero (NRZ) al enviar y recibir. Los datos se transmiten como una serie de bits, y cada bit representa un «0» o un «1». Estos bits se transmiten uno a la vez, con una duración fija entre cada bit para permitir que el receptor interprete correctamente los datos.

Una de las características clave de UART es que es un protocolo asíncrono. Esto significa que no existe una relación temporal fija entre el emisor y el receptor y que cada dispositivo puede transmitir datos a su propio ritmo. Para realizar esto, UART usa un bit de inicio y un bit de parada para indicar el comienzo y el final de cada transmisión de datos. Cada transmisión de caracteres comienza con un bit de inicio y luego tiene de cinco a nueve bits de datos transmitidos antes de terminar con uno o más bits de parada. Tanto las partes Begin como Stop son siempre espacios o marcas. El bit de parada también notifica al receptor que la transmisión de datos está completa y permite que el receptor se prepare para la siguiente transmisión.

Cada bit transmitido dura 1/segundo (tasa de baudios). El oscilador del sistema utiliza un generador de tasa de baudios especializado en el chip para generar frecuencias de tasa de baudios estándar.

UART también permite diferentes configuraciones, como la cantidad de bits de datos por transmisión, el bit de paridad utilizado para la verificación de errores y la tasa de baudios, que determina la velocidad de transmisión de datos. Estas configuraciones deben ser las mismas en ambos dispositivos para garantizar una comunicación exitosa.

En general, UART es un protocolo de comunicación confiable y ampliamente utilizado que es simple de implementar y funciona bien para muchas aplicaciones.

Lo que necesitamos

Como de costumbre, sugiero agregar desde ahora a su carrito de compras de comercio electrónico favorito todo el hardware necesario, para que al final pueda evaluar los costos generales y decidir si continúa con el proyecto o los elimina del carrito de compras. Entonces, el hardware será solo:

Procedimiento paso a paso

Diagrama de cableado de comunicación Arduino UART

El objetivo principal del proyecto es conectar las dos placas Arduino a través de UART TX (transmisor) y RX (receptor). Es vital tener en cuenta que TX en Arduino 1 se vincula con RX en Arduino 2 para que cuando un dispositivo se comunique, el otro escuche y viceversa.

Arduino Uno 1 >> Arduino Uno 2

  • Conectar tierra a tierra
  • Conecte el pin TX Arduino 1 al RX del Arduino 2
  • Conecte el pin RX Arduino 1 al TX del Arduino 2

Comunicación Uart entre dos Arduino

Obtenga el código para la comunicación entre los dos Arduinos

Conecte su PC a la placa Arduino y abra el IDE de Arduino. Para los primeros pasos, puede consultar el tutorial Conexión de PC con Windows con Arduino. Los códigos “.ino” están disponibles en mi área de descargas a través del siguiente enlace:

uart-transmitter-code.ino

uart-receptor-code.ino

Código Explicación

Sección 1: código “uart-transmitter-code.ino”

Esta sección contiene la explicación del código para el transmisor, que realiza Serial.write(x). La x es el valor que se lee desde el pulsador. El botón pulsador, cuando se presiona, se vuelve alto, lo que significa que se convierte en 1. La velocidad en baudios configurada para la comunicación es 9600. Los LED se configuran aquí para obtener el valor del receptor para encender y apagar el LED.

#define PB 2 void setup() {   Serial.begin(9600);   pinMode(13, OUTPUT);   pinMode(PB, INPUT); } void loop() { byte x=digitalRead(PB);   Serial.write(x);   if(Serial.available())   {   byte rec=Serial.read();   if(rec==1)   {     digitalWrite(13,HIGH);   }       else digitalWrite(13,LOW);   } }

Sección 2: código “uart-receiver-code.ino”

Esta es la sección para la parte receptora. Tanto los códigos de recepción como los de transmisión tienen el mismo aspecto, ya que la comunicación se realiza en semidúplex. Entonces, los comandos se envían desde el transmisor y se reciben en el receptor mediante serial.read() si el valor es 1, entonces el LED se enciende; de lo contrario, permanece apagado.

#define PB 2 void setup() {   Serial.begin(9600);   pinMode(13, OUTPUT);   pinMode(PB, INPUT); } void loop() { byte x=digitalRead(PB);   Serial.write(x);   if(Serial.available())   {   byte rec=Serial.read();   if(rec==1)   {     digitalWrite(13,HIGH);   }       else digitalWrite(13,LOW);   } }

Simulando la comunicación Arduino UART

La simulación está hecha para dar la demo, ya que en la imagen se puede ver que el led del lado del receptor está encendido, lo cual sucedió al presionar el botón en el transmisor. Del mismo modo, la segunda figura muestra que el LED está en el lado del transmisor, en el que se presiona el botón en el receptor. Al presionar el botón, el valor se convierte en 1, lo que significa que el valor transmitido es 1, mientras que sin presionar el botón, el valor es 0.