Biblioteca softwareserial em Arduino

Biblioteca softwareserial em Arduino

A plataforma Arduino permite que as pessoas criem projetos diferentes. Arduino é uma plataforma amigável com suporte para uma ampla gama de bibliotecas, incluindo o Biblioteca softwareserial. O Biblioteca softwareserial permite que você crie uma porta serial em qualquer um dos pinos digitais em seu quadro Arduino.

Neste artigo, nos aprofundaremos na biblioteca softwareserial e exploraremos como funciona.

Introdução à biblioteca softwareserial

O Biblioteca softwareserial é uma biblioteca Arduino padrão que permite a comunicação serial em pinos digitais que não sejam TX e RX. A biblioteca permite a criação de uma porta serial de software, que pode ser usada para se comunicar com outros dispositivos, como outros microcontroladores, computadores ou até módulos Bluetooth. A biblioteca softwareserial está incluída no Arduino IDE e pode ser usada com qualquer placa Arduino.

Observação: Geralmente, Tx e Rx Os pinos são usados ​​para comunicação em série, mas usando esta biblioteca, podemos permitir que a placa Arduino use qualquer um dos pinos digitais para substituir os pinos TX e RX.

Compreendendo as funções da biblioteca softwareserial

O Biblioteca softwareserial tem várias funções que permitem configurar e controlar a porta serial de software. Aqui estão algumas das principais funções que você deve saber:

Softwareserial ()

Esta função cria uma nova instância do Softwareserial aula. Esta função tem dois argumentos, o pino RX e o pino TX. Por exemplo, se você deseja criar uma porta serial de software nos pinos 2 e 3, usaria o seguinte código:

Softwareserial myserial (2, 3); // rx, tx

O Softwareserial () o método é usado para criar uma nova instância de um Softwareserial objeto. Permite a criação de várias instâncias, no entanto, em um momento apenas um pode ser ativo.

Sintaxe

A sintaxe para o Softwareserial () O método é o seguinte:

Softwareserial (rxpin, txpin, inverso_logic)

Parâmetros

Os parâmetros para o Softwareserial () são

rxpin: Este parâmetro especifica o pino que será usado para receber dados seriais.

txpin: Este parâmetro especifica o pino que será usado para transmitir dados seriais.

Inverse_Logic: Este parâmetro é opcional e inverte o sentido de entrada. O valor padrão é falso, o que significa que um pino baixo no rx é interpretado como um 0 bit e um alto como um 1 bit. Se definido como true, o pino baixo do RX agora levará de 1 bit e alto como 0 bits.

Retornar

O Softwareserial () não retorna nada.

Funções da biblioteca de softwareserial () arduino ()

Arduino Softwareserial () tem uma lista de funções para comunicação serial entre dispositivos. Algumas das principais funções são discutidas aqui:

  • começar()
  • disponível()
  • ler()
  • escrever()

começar()

O começar() A função inicializa a porta serial de software com uma taxa de transmissão. A taxa de transmissão é a velocidade de transmissão de dados sobre a porta serial. Por exemplo, para definir 9600 como a taxa de transmissão para comunicação serial, você usaria o seguinte código:

myserial.começar (9600);

disponível()

O disponível () fUnction retorna bytes disponíveis para leitura na porta serial de software. Por exemplo, para verificar se existem dados disponíveis para serem lidos, você usaria o seguinte código:

se (myserial.disponível ()> 0)
// Leia dados de entrada
char adomingbyte = myserial.ler();

ler()

O ler() A função lê o próximo byte de dados da porta serial de software. Por exemplo, para ler um byte de dados e imprimi -los no monitor serial, você usaria o seguinte código:

char adomingbyte = myserial.ler();
Serial.println (IncomingByte);

escrever()

O escrever() A função grava um byte de dados na porta serial de software. Por exemplo, para enviar a carta "A" Sobre a porta serial de software, você usaria o seguinte código:

myserial.escreva ('a');

Arduino Softwareserial () Biblioteca Exemplo Código

Agora vamos nos comunicar entre duas placas Arduino sobre a comunicação em série usando esta biblioteca. Pegue duas placas Arduino e conecte -as como mostrado na imagem abaixo.

Conectar D2 da placa mestre Arduino com D3 da placa de escravo Arduino, de maneira semelhante, conecte -se D3 do mestre Arduino com D2 do escravo Arduino.

Observação: Para comunicação em série, o Tx PIN está sempre conectado ao Rx Pin do Arduino oposto e do Rx Pin do mestre está sempre conectado ao Tx Pin do outro Arduino.

A seguir, o hardware de ambas as tábuas Arduino.

Aqui está um exemplo de código Arduino que demonstra como usar o Biblioteca softwareserial Para estabelecer a comunicação entre dois conselhos de Arduino:

Código da placa do remetente

O código abaixo é para o remetente Arduino, que escreverá uma string para o receptor Arduino Board.

#incluir
// Configurar objeto serial de software
Softwareserial myserial (2, 3);
Void Setup ()
// Inicie a comunicação serial
Serial.começar (9600);
enquanto (!Serial)
; // Aguarde para que a porta serial se conecte

// Inicie a comunicação serial de software
myserial.começar (9600);

Void Loop ()
// Envie uma mensagem sobre a conexão serial do software
myserial.println ("Olá, placa de receptor!");
atraso (1000);

Código da placa do receptor

O código abaixo é para a placa do receptor. Usando este código Arduino receberá a string de outra placa sobre a comunicação serial estabelecida entre duas placas Arduino.

#incluir
// Configurar objeto serial de software
Softwareserial myserial (2, 3);
Void Setup ()
// Inicie a comunicação serial
Serial.começar (9600);
enquanto (!Serial)
; // Aguarde para que a porta serial se conecte

// Inicie a comunicação serial de software
myserial.começar (9600);

Void Loop ()
// Verifique se os dados estão disponíveis na conexão serial do software
se (myserial.disponível())
// Leia os dados e imprima -os no monitor serial
Serial.println (myserial.readString ());

Neste exemplo, primeiro incluímos o Biblioteca softwareserial No início do código. Então, criamos um Softwareserial objeto chamado “myserial”Com os pinos 2 e 3 especificados como pinos RX e TX, respectivamente.

No configurar() função, iniciamos a serial de hardware e a comunicação serial de software com uma taxa de transmissão de 9600. No laço() Função da placa do remetente, enviamos uma mensagem sobre a conexão serial do software usando myserial.Método println () e aguarde um segundo antes de enviar a próxima mensagem.

Na função loop () da placa do receptor, o código verificará a disponibilidade de dados serial na conexão serial do software usando myserial.disponível() método. Se houver dados disponíveis, lemos os dados usando o myserial.READSTRING () Método e imprimi -lo no monitor serial usando o serial.Método println ().

Limitações da biblioteca softwareserial ()

O Biblioteca softwareserial tem várias vantagens diferentes, mas também algumas limitações que os usuários devem estar cientes. Essas limitações incluem

  • Incapacidade de transmitir e receber dados simultaneamente.
  • Ao usar várias portas seriais de software, apenas uma porta pode receber dados de uma só vez.
  • As portas seriais baseadas em software criadas usando esta biblioteca opera a taxas de Baud mais baixas e não são tão confiáveis ​​quanto as portas seriais baseadas em hardware.
  • Alguns pinos nas placas Mega e Mega 2560 não suportam interrupções de alteração para RX, limitando quais pinos podem ser usados.
  • Da mesma forma, nas placas Leonardo e Micro, apenas certos pinos podem ser usados ​​para RX devido à falta de interrupções de mudança.
  • A velocidade máxima de RX nas placas Arduino ou Genuino 101 é de 57600 bps.
  • O RX não funciona no pino digital 13 do Arduino ou Genuino 101 Boards.
Quadro Pinos rx
Mega & Mega 2560 10, 11, 12, 13, 14, 15, 50, 51, 52, 53, A8 (62), A9 (63), A10 (64), A11 (65), A12 (66), A13 (67), A14 (68), A15 (69).
Leonardo e micro 8, 9, 10, 11, 14 (miso), 15 (sck), 16 (mosi).

Conclusão

O Biblioteca softwareserial Em Arduino, é uma ferramenta útil para se comunicar com dispositivos usando protocolos de comunicação serial. Ele permite que os desenvolvedores criem portas seriais baseadas em software que podem ser usadas em conjunto com portas seriais baseadas em hardware. Esta biblioteca tem algumas limitações, pois não permite transferência de dados simultâneos. Para mais detalhes, leia o artigo acima.