Arduino – Comunicação entre PC e Arduino [Parte 1]

Agora voltou as aulas da faculdade e esta um pouco corrido publicar alguma coisa, mas entre um tempinho e outro escrevo um artigo novo, é que este faz tempo que era pra colocar no blog e acabei enrolando, enfim vamos lá.

Hoje vou mostrar como é fácil comunicar o Arduino com o computador, nesta primeira parte vamos apenas via computador ligar e desligar um Led no Arduino, em um post anterior mostrei como acender um Led no Arduino, e vamos utilizar apenas o Arduino UNO e um Led que já vem no mesmo, como na figura abaixo:

Antes de continuar queria dar uma breve introdução de o que é a comunicação do Arduino no nosso caso o UNO, que utiliza o microcontrolador AVR ATmega328, pois a comunicação em si é USB correto, mas quando falamos em comunicação em termos de enviar e receber informações de algum equipamentos podemos falar de CDC ou HID, no popular CDC irá reconhecer o seu hardware no nosso caso o Arduino como uma porta Serial e lhe dará uma COM, normalmente COM1 é da placa-mãe ele fornecerá COM3 ou COM4 depende o caso, e você comunica por esta Porta Serial, já o HID já é um caso mais particular pois a comunicação é realizada pelo “nome amigável” do dispositivo que seria aquele nome que o hardware é reconhecido no Gerenciador de Dispositivo ou o idProduct e idVendor, mas HID é um assunto futuro e depois que eu terminar o software hehe.

Maravilha! Sabemos então que o Arduino é reconhecido no computador por uma porta Serial. Agora vamos ver como lidamos com esta porta “dentro” do Arduino.

As seguintes sintaxes são usadas quando se fala em comunicação Serial com Arduino:

Serial.begin();    Esta deve ser a primeira função a ser usada quando se configura Serial  “em um Arduino”, pois é aqui que você irá configurar a taxa de comunicação, da comunicação Serial [Arduino x PC], vou utilizar um valor default para todos exemplos que uso será 9600 bps.

Serial.available();   Esta função é muito importante, pois ela é a função que fica na escuta só aguardando, porque por exemplo você liga o Arduino e executa o seu programa no computador mas você não faz nada, ae você resolve enviar um caracter para o Arduino, então esta função fica monitorando quando for 0 não esta entrando nada, caso seja maior que zero algo esta chegando da Serial.

Serial.read();     Esta função é usada quando você envia um caracter ou comando para o Arduino, ae você vai processar e trabalhar com o que enviou dentro do Arduino então você usa Serial.read(); para ler o que entra pela Serial e guardar em uma variável por exemplo.

Serial.write();   Esta função é o oposto de Serial.read(), esta você escreve na Serial, ou seja, você envia algo para o computador e se você fizer algo que esteja na escuta la no computador irá receber o que você enviar.

Então agora baseado no conhecimento do post sobre acender led no Arduino, vamos dar uma adaptada e comunicar com Serial.

Segue abaixo o código-fonte do arquivo.c do Arduino:

Comentei o máximo possível e o mais simples e claro que pude, achei que ficou tão claro que até eu entendi hehe.

A lógica de programar no Arduino é a mesma variáveis globais evito usar mas neste exemplo didático ta valendo, em seguida void setup(), com o que deve fazer assim que ligar o Arduino, e em seguida void loop() é onde deve ficar todo o código-fonte que irá trabalhar mesmo, em um loop infinito algo como while (1) no C bruto mesmo.

int PinoLed = 13; //PinoLed é o nome da minha variável do Led e 13 é o numero do pino deste Led no Arduino UNO, se notar tem a I/O 13 ao lado do GND no Arduino UNO onde caso queira pode espetar o Led no GND e 13 que é o mesmo efeito de usar o Led que vem embutido nele.

char EstadoLed=0; //Variável que declarei para receber o que eu for enviar do PC para o Arduino, e já coloquei 0 pra não ficar com lixo

Bom como o código esta todo acima na imagem e bem documentado vou falar apenas sobre as funções do Serial.

Serial.begin(9600); //Nenhum mistério certo? Aqui como disse é onde configuramos a velocidade da comunicação Serial [Arduino x PC]

Serial.available() > 0  //Essa é a função que comentei se eu não enviar nada pela Serial PC > Arduino, nada faz, caso envie, este status não será mais zero e ele entra na estrutura que for feita

EstadoLed = Serial.read(); //Se eu enviei algo pela Serial, preciso guardar certo? Então uso uma variável e mando ela receber o que entrar pela Serial, então uso desta maneira.

digitalWrite(PinoLed, HIGH); //É realizada uma verificação do que entra pela Serial, se for 76 ou 68, ou seja, L ou D, é que temos que colocar em Decimal, no caso se for 76 irá escrever no PinoLed, HIGH, ele vai ligar, ativar o que seja melhor para você entender no pino passado na função.

digitalWrite(PinoLed,LOW); //Ele irá escrever no Pino passado no caso PinoLed é 13, posso colocar 13 ali que da o mesmo efeito, a ação será LOW, ou apagar, desligar, desativar o que seja de melhor entendimento.

Maravilha. Depois de digitar todo este código salve em seu computador, mande compilar, se tudo ocorreu bem e é fácil de ver pois já ensinei num post anterior, agora envie para o Arduino UNO o código.

Agora vamos da outra ponto, do lado do PC, desenvolvi um programa que será bem default nos artigos de Serial e comunicação do Arduino, pois hoje é para acender e apagar mas já fiz pensando em ser geral para outros posts e vamos sempre usar ele.

Segue a tela dele abaixo:

Na imagem abaixo vemos como configurar o programa para comunicar com vosso Arduino:

Porta Serial: Qual COM o seu Arduino esta conectado pode ser visto no Gerenciador de Dispositivo do Windows ou pela IDE do Arduino em Tools > Serial Port

Baud Rate: É a taxa de transferência é aquele 9600 que configuramos lembra?

Data bit: Não vou entrar em detalhe pois o Artigo não é sobre Serial em si mas pode deixar 8

Stop bit: Mesma coisa do anterior e pode deixar 1

Depois de configurado clique no botão onde tem uma seta vermelha indicando, caso tenha feito correto os botões Ligar e Desligar serão habilitado, caso selecione uma COM sem uso um erro será informado, caso selecione uma COM mas que não seja do Arduino nenhum erro será reportado mas o mesmo não ira funcionar.

Agora clique em Ligar e olhe no Arduino se tudo ocorreu bem o Led irá acender, depois clique em Desligar e olhe no Arduino o Led será apagado.

Pronto! Agora o nosso software está comunicando com o Arduino, se prestar atenção quando clica em Ligar ou Desligar o Led TX pisca também, em um próximo post iremos ver como comunicar com o Arduino e o Arduino comunicar com nossa aplicação.

Download do Aplicativo: https://www.dropbox.com/sh/7n6b17hj6fcoc4t/Zzme4X7ihk/Arduino%20IO%20Led.exe

OBS: Por algum problema de configuração, do software ou Arduino este software pode apresentar erros, pois não trabalhei com Tratamento de Exceções “ainda”, mas como já mencionei este será um software que irei adaptar e ir utilizando em vários tópicos, com o decorrer ire personalizando, atualizando e corrigindo os problemas.

Duvidas e sugestões:  [email protected]

Share Button

CC BY-NC-SA 4.0 Arduino – Comunicação entre PC e Arduino [Parte 1] by Cleiton Bueno is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.