Comunicação UART em série entre duas placas Arduino

Comunicação UART em série entre duas placas Arduino

Uart é um acrônimo de transmissor de receptor assíncrono universal. UART é o protocolo de comunicação serial mais usado no qual o formato de dados e a velocidade de comunicação é configurável. Arduino tem três protocolos de comunicação chamados SPI, I2C e UART. O protocolo UART permite que o Arduino se comunique entre diferentes dispositivos e sensores. Agora discutiremos como usar a comunicação UART entre duas placas Arduino.

Comunicação UART em série

UART serial é o protocolo de comunicação serial usado pelo Arduino para se comunicar com microcontroladores e PCs. Arduino tem uma porta UART em D0 e D1. Um ônibus em série com dois terminais é usado na comunicação UART, um para enviar dados nomeados Tx no pino D1 e outro para receber dados que são indicados como Rx no pino D0. Portanto, todos os dispositivos que funcionam sobre o protocolo UART devem ter dois pinos seriais:

  • Rx para receber dados
  • Tx para transmitir dados

Embora o uso desses dois pinos para o UART, é importante observar que os pinos UART são específicos para um dispositivo significa que, se você deseja estabelecer uma comunicação em série usando o UART entre duas placas Arduino, o pino RX da primeira placa será conectado ao pino TX do segundo placa da mesma forma tx pino do primeiro com rx pino do segundo.

Comunicação serial de UART entre duas pranchas de Arduino

Agora, conectaremos duas placas Arduino usando pinos TX e RX para estabelecer uma comunicação serial entre eles um quadro Arduino que transmitirá dados Mestre e o segundo conselho do Arduino, que receberá instruções, atuará como Escravo. Configuraremos nossas placas Arduino em configuração de mestre e escravo. Antes de ir mais longe, precisamos do seguinte equipamento para iniciar nossa comunicação serial uart.

Equipamento necessário

  • 2X Placas Arduino
  • 2x cabo USB B
  • 6x fios de jumper
  • Pão de pão
  • Resistor 220 ohm
  • LIDERADO

Para iniciar a comunicação entre duas placas Arduino, uma será configurada como remetente e outra placa Arduino como o receptor. Então, devemos escrever dois programas, um para o remetente e o segundo para o receptor. Siga as etapas abaixo mencionadas para estabelecer a comunicação serial.

Exemplo 1: Passando uma corda de um Arduino para outro através da Comunicação UART

Definiremos uma corda em nosso mestre Arduino e tentaremos passar para escravos Arduino usando a comunicação serial uart. Siga abaixo as etapas fornecidas para passar dados entre dois arduinos.

Etapa 1: Conecte o mestre Arduino

O uso de um cabo USB B conecta a placa Arduino, que atua como mestre para o PC. Lembre -se de selecionar a porta COM primeiro antes de enviar o esboço. Aqui, no nosso caso, o Arduino está conectado na porta COM6.


Agora faça o upload abaixo do código para a placa Arduino Master Arduino do remetente.

// Código da placa Arduino do remetente (mestre)
char mystring [15] = "Linuxhint.com "; // dados de string que devem ser enviados
Void Setup ()
Serial.começar (9600); // Comece a série a 9600 taxas de transmissão

Void Loop ()
Serial.Escreva (mystring, 15); // Escreva os dados seriais
atraso (1000);



O código acima enviará uma mensagem simples linuxhint.com o outro Arduino. Primeiro, definimos uma matriz “Linuxhint.com ”. O número 15 de colchetes mostra que essa matriz pode conter 15 caracteres. 13 são alfabetos, enquanto 2 são definidos para o espaço para que possamos ver uma saída clara no monitor serial. Dentro configurar() A comunicação em série é estabelecida usando serial.BEGIN () e 9600 é selecionado como taxa de transmissão.

O laço() A seção do esboço contém o Serial.escrever() função. Essas funções escreverão uma mensagem para a placa de escravo do receptor Arduino com 1000 milissegundos atraso.

Etapa 2: Conecte o escravo Arduino

Conecte a segunda placa Arduino, que é escrava em nossa configuração. Conecte esta placa em qualquer porta PC que não seja a porta usada na etapa anterior pelo Mestre Arduino Board. Antes de enviar o código Arduino, selecione Arduino Com Port. Nosso Slave Arduino Board está conectado no COM8.


Agora faça o upload abaixo do código dado no Slave Arduino Board.

// Código da placa do Receptor Arduino
char mystring [20]; // variável inicializada para armazenar recebimento
Void Setup ()
Serial.começar (9600); // Comece a série em 9600 baud

Void Loop ()
Serial.Readbytes (MyString, 15); // Leia os dados de série
Serial.println (mystring); // Imprima dados sobre o monitor serial
Serial.println ("receptor");
atraso (1000);



Acima do código de escravo Arduino é semelhante ao mestre Arduino, a única diferença está aqui em vez de Serial.escrever() Nós usamos Serial.ReadBytes () que lerá dados recebidos do Master Arduino. Depois de ler dados, serei impresso no monitor serial usando Serial.println () função.

Etapa 3: conecte os dois arduino usando pinos TX e RX

Depois que o código Arduino é carregado nas duas placas Arduino, agora conecte a placa mestre e escrava, como mostrado na figura abaixo. Conecte o pino TX do primeiro arduino com o pino RX do segundo pino RX Arduino do primeiro arduino com pino TX do segundo arduino.

Lembre -se, ao fazer o upload de código em ambos os arduino, não conecta os pinos TX e RX, caso contrário, a comunicação serial não será possível.


Saída do mestre arduino

O mestre Arduino está enviando uma corda constantemente para escravo Arduino com um atraso de 1000 milissegundos.


Saída de escravo Arduino

Slave Arduino irá primeiro imprimir receptor no terminal serial de saída depois que receberá um Linuxhint da matriz.com um atraso de 1000 milissegundos do mestre Arduino. Portanto, a comunicação serial é feita entre duas pranchas de Arduino.

Exemplo 2: Blink LED usando duas placas Arduino através da Comunicação UART

Etapa 1: Faça o upload do código para o Mestre Arduino Board

Conecte a placa Arduino, que atua como mestre com o PC usando o cabo USB B e selecione a porta COM na qual o Arduino está conectado. No nosso caso, o Mestre Arduino Board está conectado na porta COM7.


Faça o upload do código fornecido abaixo na placa do remetente Arduino.

// Código da placa Arduino Transmissor (TX)
configuração void ()

Serial.começar (9600);

Void Loop ()

Serial.impressão (1);
Atraso (2000);
Serial.impressão (0);
Atraso (2000);



No Code Master Arduino acima, está enviando instruções para o escravo Arduino na forma de números 1 e 0. O mestre envia o número 1 e aguarda 2 segundos depois disso, envia o número 0 e depois vai para um atraso de 2 segundos. Depois disso, começa a repetir um loop. Aqui usamos o Serial.imprimir() Função que converterá as instruções mestre do Arduino em caracteres ASCII, o que significa que o mestre transmitirá valores 49 para 1 e 48 para 0.

Etapa 2: Faça o upload do código para o Slave Arduino Board

Agora conecte a segunda placa Arduino, que está atuando como escrava com qualquer outra porta de PC usando o cabo USB B. Lembre -se de selecionar a porta do Arduino Board Com primeiro antes de enviar o código do remetente. Slave Arduino Board está conectado na porta COM8 do PC.


Agora faça o upload do código abaixo no segundo quadro Arduino, que está atuando como escravo.

// Código da placa Arduino do receptor (RX)
char serialinput = ";
byte LED = 2;
configuração void ()

pinmode (LED, saída);
Serial.começar (9600);

Void Loop ()

se (serial.disponível())

char serialinput = serial.ler();
if (serialInput == '0') DigitalWrite (LED, Low);
if (serialInput == '1') digitalWrite (LED, alto);
Serial.println (SerialInput);



No Código acima do Slave Arduino Char SerialInput.

Depois disso, na seção Loop do código, uma verificação será feita usando se condição.

se (serial.disponível())


Comando acima, verificará se há algum dados chegando no buffer ou não.

Se houver algum dado chegando a um único caractere é lido e armazenado em Caracteres variável SerialInput.

Já que estamos interessados ​​apenas em 0 e 1 valores. Se as declarações farão o trabalho aqui. Se as declarações verificarão o valor do SerialInput se for 1, ele enviará um sinal alto para o LED conectado no pino 2 da placa de escravo. Se recebeu serialinput 0, enviará um sinal baixo para o pino número 2.

Observação: Sempre conecte as duas placas Arduino em portas COM separadas e antes de fazer upload de novo código, selecione Arduino Com Port First First. É recomendável usar duas janelas separadas de IDE para ambas as tábuas Arduino.

Etapa 2: Faça o upload do código para o Slave Arduino Board

Conecte as placas Arduino na configuração abaixo, conforme mostrado na imagem. Conecte o TX do primeiro Arduino com RX do segundo Arduino. Da mesma forma, conecte o RX do primeiro Arduino com o TX do segundo Arduino. Não conecte os pinos TX e RX antes de enviar o código Arduino, pois o Arduino possui apenas uma porta de comunicação serial conectando essas duas portas com qualquer outro dispositivo, bloqueará a comunicação serial com o PC através do cabo USB.

Conecte o LED no pino digital número 2 e o pino GND de Arduino, entre esses dois pinos conectam um resistor de 220ohm para manter limites de corrente seguros. Conecte o Arduino GND.


LED de saída piscando

Depois de fazer upload de código nas duas placas do Arduino. Master enviará instruções sobre e desativará com um atraso de 2000ms. Na produção, podemos ver um LED piscando consecutivamente em 1 segundos e 1 seg.

LED liga


LED Desligue

Conclusão

O protocolo de comunicação serial do UART é usado por vários dispositivos e módulos que permitem que o Arduino o integre em qualquer circuito ou projeto. Aqui cobrimos como podemos conectar dois arduinos e transferir dados usando comunicação serial. Usando o protocolo UART, podemos melhorar a comunicação entre dispositivos e tábuas Arduino.