Arduino Uno
Imagem de Daan Lenaerts por Pixabay

Arduino: Comunicação Serial

Erick Simões
NAVE Recife
Published in
5 min readSep 11, 2020

--

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?

Pen drive
Imagem de Clker-Free-Vector-Images por Pixabay

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.

Uso do Serial.begin()

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 valor 15.
  • [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 um Serial.println(). Este texto, escrito entre “aspas”, por estar dentro do método setup()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ável valorExemplo e então a linha é “quebrada”;
  • [12] O código se repete a cada 1 segundo (1000 milissegundos).

Monitor Serial

Print de um código no Tinkercad com destaque para o monitor serial
Monitor Serial do simulador de Arduino do Tinkercak

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á! 🖖

--

--

Erick Simões
NAVE Recife

Bacharel em Sistemas de Informação, professor de jogos digitais, palestrante, programador erudito, adestrador de robôs, defenestrador de bugs, maker diletante