Arduino: Comunicação Serial
Você lembra da primeira vez que serializou dados? Como assim você nunca fez isso?
Venho aqui lhe informar que sim, você já serializou dados, e posso provar!
Se em algum momento da vida você fez algo descrito a seguir então você já serializou dados:
- Salvar um arquivo no computador;
- Usar um pen drive;
- Enviar mensagem por algum aplicativo;
- Ler esse texto.
Agora que você já sabe que tem serializado dados por aí, resta saber o que isso significa e o que isso tem a ver com Arduino.
Serialização
No contexto de tecnologia, chamamos de serialização o processo de organizar dados de uma forma que eles possam ser armazenados e transmitidos. Seria como colocar os dados em uma espécie de caixa que todo mundo sabe como abrir e fechar, e tem um formato e tamanho perfeito para viagens.
Neste cenário, entenda como dados todo e qualquer tipo de valor usado em um programa de computador: variáveis, funções, estruturas de dados… No caso do Arduino os dados podem ser os números dos pinos onde os componentes estão conectados, informações coletadas a partir de um sensor ou qualquer outra coisa que você considere importante armazenar ou transmitir para outro dispositivo.
O processo de serialização é independente de plataforma, ou seja, se um dado foi serializado por uma aplicação para PC, ela pode ser deserializada (processo contrário ao da serialização) em um dispositivo Android, por exemplo.
E por que serializamos?
Serializamos para permitir que os dados sejam transmitidos entre diferentes plataformas. Exemplo: Quando você quer salvar um arquivo que está no computador em um pen drive, os dados são serializados e transmitidos pela porta USB (Universal Serial Bus, em português, porta serial universal) até o dispositivo. Isso só é possível graças a serialização dos dados.
Aprenda um pouco mais sobre serialização aqui:
E o Arduino, o que tem a ver com isso?
Agora é que a conversa fica interessante! O Arduino é um sistema embarcado, ou seja, é um dispositivo com memória, microcontrolador, canais de entrada e saída de informação próprios. Para ele conseguir se comunicar com outros dispositivos, recebendo e enviando informações, ele precisa serializar os dados. Isso pode ser útil se você quiser enviar e receber informações entre o Arduino e um computador.
Exemplo: no Arduino você coleta alguns dados através de sensores e deseja visualizar esses dados no computador. Para conseguir fazer isso, você os envia através de uma conexão USB entre eles.
O bacana é que você não precisa se preocupar com os detalhes técnicos, basta conhecer as funções de comunicação do Arduino.
Serial
No Arduino, sempre que quisermos realizar a comunicação entre a placa e outros dispositivos, usamos a comunicação Serial. Todo esse comportamento é definido no código de forma simples e fácil.
Serial.begin()
Tudo começa por aqui! Esse comando indica que o Arduino irá se comunicar de forma serial. Ele recebe como parâmetro um valor que determina a velocidade em que essa comunicação será feita (baud rate ou transferência em bits por segundo). Este comando deve estar sempre dentro do setup()
e, por padrão, usamos o valor de 9600
como parâmetro.
Serial.print() e Serial.println()
Esses comandos são capazes de enviar para ao computador os dados passados como parâmetro. Eles podem ser usados tanto dentro do setup()
quanto do loop()
.
E qual a diferença entre usar o print()
do println()
? O print()
exibe a informação passada como parâmetro e se mantém na mesma linha. Já o println()
sempre que a informação é exibida, ele quebra a linha, dando um “enter” no final. Assim, a próxima informação exibida aparecerá na próxima linha.
Veja o exemplo:
Agora vamos analisar o que acontece em cada linha de código (entre colchetes, estão as linhas de código):
- [1] Começamos definindo a variável
valorExemplo
do tipo inteiro com o valor15
. - [3] Dentro do
setup()
iniciamos a comunicação serial usando o método [4]Serial.begin(9600)
e, em seguida, [5] exibimos o texto:"O Arduino foi iniciado!"
, usando umSerial.println()
. Este texto, escrito entre “aspas”, por estar dentro do métodosetup()
será exibido apenas uma vez durante a execução do código; - [8] Dentro do
loop()
, a cada repetição, é exibida uma linha composta por dois comandos: - [9] O primeiro é o
print()
que exibe o texto:"O valor armazenado na variável é "
. Observe que o próximo comando será exibido na mesma linha; - [10] O segundo é o
println()
onde é exibido o valor da variávelvalorExemplo
e então a linha é “quebrada”; - [12] O código se repete a cada 1 segundo (1000 milissegundos).
Monitor Serial
Para conseguir ver todas as informações que o Arduino está enviando através dos métodos print()
e println()
usamos o Monitor Serial (Serial Monitor). Ele funciona como uma espécie de chat. Lá você consegue ver as mensagens enviadas pelo Arduino e pode também enviar mensagens para ele.
Nesta imagem, o código de exemplo visto anteriormente foi executado no simulador de Arduino do Tinkercad e exibiu a saída em destaque.
Para ver esse exemplo sendo executado no simulador, confira o link a seguir:
Para conhecer as outras funções da comunicação serial no Arduino, veja a documentação da plataforma aqui.
Seguindo essa mesma lógica, seria possível exibir um dado coletado de um sensor, responder a comandos enviados pelo computador e até fazer a comunicação do Arduino com outros dispositivos de forma autônoma, mas isso é assunto para uma próxima aula, até lá! 🖖