Comunicación en serie UART entre dos tableros Arduino

Comunicación en serie UART entre dos tableros Arduino

UART es un acrónimo de transmisor de receptor asíncrono universal. UART es el protocolo de comunicación en serie más utilizado en el que el formato de datos y la velocidad de comunicación son configurables. Arduino tiene tres protocolos de comunicación llamados SPI, I2C y UART. El protocolo UART permite a Arduino comunicarse entre diferentes dispositivos y sensores. Ahora discutiremos cómo usar la comunicación UART entre dos tableros Arduino.

Comunicación en serie UART

Serial UART es el protocolo de comunicación en serie utilizado por Arduino para comunicarse con microcontroladores y PCS. Arduino tiene un puerto UART en D0 y D1. Se utiliza un bus en serie con dos terminales en la comunicación UART, uno para enviar datos nombrados Tx en el pin D1 y otro para recibir datos que se denotan como Rx en el pin d0. Entonces, todos los dispositivos que funcionan sobre el protocolo UART deben tener dos pines en serie:

  • Rx para recibir datos
  • Tx para transmitir datos

Mientras usa estos dos pines para UART, es importante tener en cuenta que los pines UART son específicos para un dispositivo en sí, si desea establecer la comunicación en serie usando UART entre dos tableros Arduino, entonces el pin RX de la primera placa se conectará al pin TX del segundo placa de manera similar TX Pin del primero con pin rx del segundo.

Comunicación en serie de UART entre dos tableros Arduino

Ahora, conectaremos dos placas Arduino que usan pines TX y RX para establecer una comunicación en serie entre ellos un tablero Arduino que transmitirá datos actuará como Maestro y la segunda junta de Arduino que recibirá instrucciones actuará como Esclavo. Configuraremos nuestros tableros Arduino en la configuración maestra y esclava. Antes de ir más allá, necesitamos el siguiente equipo para comenzar nuestra comunicación en serie UART.

Equipamiento requerido

  • 2x tableros Arduino
  • 2x Cable USB B
  • 6x cables de jersey
  • Tablero de circuitos
  • Resistencia 220 ohmios
  • CONDUJO

Para comenzar la comunicación entre dos tableros Arduino, uno se configurará como remitente y otro tablero de Arduino como receptor. Entonces, debemos escribir dos programas, uno para remitente y segundo para el receptor. Siga los pasos mencionados a continuación para establecer la comunicación en serie.

Ejemplo 1: pasar una cadena de un arduino a otro a través de la comunicación UART

Definiremos una cadena en nuestro maestro Arduino e intentaremos pasarlo a la esclava Arduino usando la comunicación en serie UART. Siga a continuación los pasos dados para pasar datos entre dos arduinos.

Paso 1: Connect Master Arduino

El uso de un cable USB B conecta la placa Arduino que actúa como maestro a la PC. Recuerde seleccionar primero el puerto COM antes de cargar el boceto. Aquí en nuestro caso, el Arduino está conectado en el puerto COM6.


Ahora cargue el código a continuación en el tablero Arduino del remitente Master.

// Código de tablero Arduino del remitente (maestro)
char mystring [15] = "Linuxhint.com ";/ Datos de cadena que se enviarán
setup () void
De serie.comenzar (9600); // Comenzar la serie a 9600 baudios

bucle void ()
De serie.escribir (mystring, 15); // Escribir los datos en serie
retraso (1000);



El código anterior enviará un mensaje simple Linuxhint.com a la otra arduino. Primero, hemos definido una matriz "Linuxhint.com ". El número 15 interno de los soportes muestra que esta matriz puede contener 15 caracteres. 13 son alfabetos, mientras que 2 están configurados para el espacio para que podamos ver la salida clara en el monitor en serie. Adentro configuración() La comunicación en serie se establece utilizando serial.begin () y 9600 se selecciona como tasa de baudios.

El bucle() La sección del boceto contiene el De serie.escribir() función. Estas funciones escribirán un mensaje en el receptor esclavo Arduino Board con 1000 milisegundos.

Paso 2: Conecte Slave Arduino

Conecte la segunda placa Arduino que es esclava en nuestra configuración. Conecte esta placa en cualquier puerto de PC que no sea el puerto utilizado en el paso anterior por la placa del maestro Arduino. Antes de cargar el código Arduino, seleccione el puerto Arduino COM. Nuestro tablero de esclavos Arduino está conectado en COM8.


Ahora cargue a continuación el código dado en la tabla de esclavo Arduino.

// Código de tablero Arduino receptor
char mystring [20]; // variable inicializada para recibir recibir
setup () void
De serie.comenzar (9600); // Comenzar la serie a 9600 baudios

bucle void ()
De serie.Readbytes (Mystring, 15); // Lea los datos en serie
De serie.println (myString); // Imprimir datos en el monitor de serie
De serie.println ("receptor");
retraso (1000);



El código de arriba del esclavo Arduino es similar como el maestro Arduino, solo la diferencia está aquí en lugar de De serie.escribir() Hemos usado De serie.Readbytes () que leerán datos entrantes del maestro Arduino. Después de leer datos, me imprimiré en el monitor en serie utilizando De serie.println () función.

Paso 3: Conecte ambos Arduino usando pines TX y RX

Una vez que el código Arduino se carga en ambos tableros Arduino, ahora conectan la placa maestro y esclavo Arduino como se muestra en la figura a continuación. Conecte el pin Tx del primer arduino con el pin Rx del segundo arduino de manera similar RX Pin del primer arduino con el pin Tx del segundo arduino.

Recuerde que al cargar el código en estos dos arduino no conectan los pines TX y RX, de lo contrario, la comunicación en serie no será posible.


Salida del maestro Arduino

El maestro Arduino está enviando una cadena constantemente a Slave Arduino con un retraso de 1000 milisegundos.


Salida del esclavo Arduino

Slave Arduino imprimirá primero el receptor en la terminal de serie de salida después de eso, recibirá una matriz Linuxhint.com con un retraso de 1000 milisegundos del maestro Arduino. Por lo tanto, la comunicación en serie se realiza entre dos tableros Arduino.

Ejemplo 2: LED de parpadeo usando dos tableros Arduino a través de la comunicación UART

Paso 1: Subir código al tablero Master Arduino

Conecte la placa Arduino que actúa como maestro con la PC usando el cable USB B y seleccione el puerto COM en el que Arduino está conectado. En nuestro caso, la placa del maestro Arduino está conectado al puerto COM7.


Cargue el código dado a continuación en la placa Arduino del remitente.

// Código de placa Arduino transmisor (TX)
Configuración vacía ()

De serie.comenzar (9600);

bucle vacío ()

De serie.imprimir (1);
retraso (2000);
De serie.imprimir (0);
retraso (2000);



En el código anterior, el maestro Arduino está enviando instrucciones a esclavo Arduino en forma de números 1 y 0. El maestro envía el número 1 y luego espera 2 segundos después de eso, envía el número 0 y luego nuevamente va por un retraso de 2 segundos. Después de eso comienza a repetirse en un bucle. Aquí hemos usado el De serie.imprimir() función que convertirá las instrucciones del maestro Arduino en caracteres ASCII, lo que significa que el maestro transmitirá los valores 49 para 1 y 48 para 0.

Paso 2: Cargar código a la placa de esclavo Arduino

Ahora conecte la segunda placa Arduino que actúa como esclavo con cualquier otro puerto de PC usando el cable USB B. Recuerde seleccionar primero el puerto COM de la placa Arduino antes de cargar el código del remitente. La placa Arduino Slave está conectada en el puerto COM8 de la PC.


Ahora cargue el siguiente código en el segundo tablero Arduino que actúa como esclavo.

// Código de placa Arduino receptor (RX)
char serialInput = ";
byte led = 2;
Configuración vacía ()

PinMode (LED, salida);
De serie.comenzar (9600);

bucle vacío ()

if (serial.disponible())

Char serialInput = Serial.leer();
if (serialInput == '0') DigitalWrite (LED, Low);
if (serialInput == '1') DigitalWrite (LED, High);
De serie.println (SerialInput);



En el código anterior del esclavo Arduino Char SerialInput se inicializa que recibirá y almacenará instrucciones provenientes del maestro Arduino.

Después de eso, en la sección del bucle del código, se realizará un cheque usando si la condición.

if (serial.disponible())


El comando anterior verificará si hay algún datos en el búfer o no.

Si hay algún dato que viene, un solo carácter se lee y almacena en carbonizarse variable fútbol.

Ya que estamos interesados ​​solo en valores 0 y 1. Si las declaraciones harán el trabajo aquí. Si las declaraciones verificarán el valor de la entrada de serie si es 1, enviará una señal alta al LED conectada al pin 2 de la placa esclava. Si recibió SerialInput 0, enviará una señal baja al PIN número 2.

Nota: Siempre conecte ambos tableros Arduino en puertos COM separados y antes de cargar un nuevo código Seleccione Arduino COM Port primero. Se recomienda usar dos ventanas de IDE separadas para ambos tableros Arduino.

Paso 2: Cargar código a la placa de esclavo Arduino

Conecte las placas Arduino en la configuración a continuación como se muestra en la imagen. Conecte TX del primer Arduino con RX del segundo Arduino. Conecte de manera similar el RX del primer arduino con el TX del segundo arduino. No conecte los pines TX y RX antes de cargar el código Arduino, ya que Arduino solo tiene un puerto de comunicación serie que conecta estos dos puertos con cualquier otro dispositivo bloqueará la comunicación en serie con PC a través del cable USB.

Conecte el LED en el pin digital número 2 y el pin GND de Arduino, entre estos dos pines conectar una resistencia de 220ohm para mantener límites de corriente seguros. Conecte Arduino Gnd juntos.


Parpadeo del LED de salida

Después de cargar código en ambos tableros de Arduino. Master enviará instrucciones dentro y apagada con un retraso de 2000 ms. En la salida podemos ver un LED que parpadea consecutivamente en 1 segundo y 1 segundo.

LED ENCENDER


LED apague

Conclusión

El protocolo de comunicación en serie UART es utilizado por múltiples dispositivos y módulos que le permite a Arduino integrarlo en cualquier circuito o proyecto. Aquí hemos cubierto cómo podemos conectar dos arduinos y transferir datos utilizando la comunicación en serie. Usando el protocolo UART podemos mejorar la comunicación entre dispositivos y tableros Arduino.