SoftwareSerial Library no Arduino

Softwareserial Library No Arduino



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

Neste artigo, vamos nos aprofundar na biblioteca SoftwareSerial e explorar como ela funciona.







Introdução à SoftwareSerial Library

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



Observação: Geralmente, Texas e RX os pinos são usados ​​para comunicação serial, 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 SoftwareSerial library tem várias funções que permitem configurar e controlar a porta serial do 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, use o seguinte código:

SoftwareSerial mySerial ( 2 , 3 ) ; // RX, T.X.



O SoftwareSerial() método é usado para criar uma nova instância de um SoftwareSerial objeto. Ele permite a criação de várias instâncias, porém, por vez, apenas uma pode estar ativa.

Sintaxe

A sintaxe para o SoftwareSerial() método é o seguinte:

SoftwareSerial ( rxPin, txPin, inverse_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.

lógica_inversa: Este parâmetro é opcional e inverte o sentido dos bits recebidos. O valor padrão é falso, o que significa que um nível BAIXO no pino RX é interpretado como 0 bit e um nível ALTO como 1 bit. Se definido como verdadeiro, o LOW no pino RX agora assumirá 1 bit e HIGH como 0 bit.

Retornar

O SoftwareSerial() não retorna nada.

Funções da biblioteca Arduino SoftwareSerial()

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

começar()

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

mySerial.begin ( 9600 ) ;

disponível()

O disponível() f unction retorna bytes disponíveis para leitura na porta serial do software. Por exemplo, para verificar se há algum dado disponível para ser lido, você usaria o seguinte código:

se ( mySerial.available ( ) > 0 ) {
// ler dados de entrada
char entranteByte = mySerial.read ( ) ;
}

ler()

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

char entranteByte = mySerial.read ( ) ;
Serial.println ( byte de entrada ) ;

escrever()

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

mySerial.write ( 'A' ) ;

Código de exemplo da biblioteca Arduino SoftwareSerial ()

Agora vamos nos comunicar entre duas placas Arduino através da comunicação serial usando esta biblioteca. Pegue duas placas Arduino e conecte-as conforme mostrado na imagem abaixo.

Conectar D2 da placa Arduino Mestre com D3 da placa Arduino Escravo, conecte da mesma forma D3 do Mestre Arduino com D2 do Arduino Escravo.

Observação: Para comunicação serial, o Texas pino está sempre conectado ao RX pino do Arduino oposto e o RX pino do Master está sempre ligado ao Texas pino do outro Arduino.

A seguir está o hardware de ambas as placas Arduino.

Aqui está um exemplo de código Arduino que demonstra como usar o SoftwareSerial library para estabelecer a comunicação entre duas placas Arduino:

Código da placa do remetente

O código abaixo é para o Arduino remetente, que escreverá uma string na placa Arduino receptora.

#include

// Configurar objeto serial de software
SoftwareSerial mySerial ( 2 , 3 ) ;

anular configuração ( ) {
// Iniciar a comunicação serial
Serial.begin ( 9600 ) ;
enquanto ( ! Serial ) {
; // espere para porta serial para conectar
}

// Inicie a comunicação serial do software
mySerial.begin ( 9600 ) ;
}

loop vazio ( ) {
// Envie uma mensagem pela conexão serial do software
mySerial.println ( 'Olá, placa do receptor!' ) ;
atraso ( 1000 ) ;
}

Código da placa receptora

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

#include

// Configurar objeto serial de software
SoftwareSerial mySerial ( 2 , 3 ) ;

anular configuração ( ) {
// Iniciar a comunicação serial
Serial.begin ( 9600 ) ;
enquanto ( ! Serial ) {
; // espere para porta serial para conectar
}

// Inicie a comunicação serial do software
mySerial.begin ( 9600 ) ;
}

loop vazio ( ) {
// Verificar se os dados estão disponíveis na conexão serial do software
se ( mySerial.available ( ) ) {
// Leia os dados e imprima-os no monitor serial
Serial.println ( mySerial.readString ( ) ) ;
}
}

Neste exemplo, primeiro incluímos o SoftwareSerial library no início do código. Em seguida, criamos um SoftwareSerial objeto chamado “ mySerial ” com os pinos 2 e 3 especificados como os pinos RX e TX, respectivamente.

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

Na função loop() da placa receptora, o código verificará a disponibilidade de dados seriais na conexão serial do software usando mySerial.available() método. Se houver dados disponíveis, lemos os dados usando o método mySerial.readString() e os imprimimos no monitor serial usando o método Serial.println().

Limitações da Biblioteca SoftwareSerial()

O SoftwareSerial library tem várias vantagens diferentes, mas também tem algumas limitações das quais 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 operam em taxas de transmissão 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 mudança para RX, limitando quais pinos podem ser usados.
  • Da mesma forma, nas placas Leonardo e Micro, apenas alguns pinos podem ser usados ​​para RX devido à falta de interrupções de mudança.
  • A velocidade RX máxima nas placas Arduino ou Genuino 101 é de 57600 bps.
  • O RX não funciona no pino digital 13 das placas Arduino ou Genuino 101.
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 & microfone 8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI).

Conclusão

O SoftwareSerial library no Arduino é uma ferramenta útil para comunicação 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 a transferência simultânea de dados. Para mais detalhes, leia o artigo acima.