Para iniciar um projecto muito
simples, sendo que podem ser encontradas na Internet diversas soluções idênticas,
no entanto tentei tornar esta mais completa e fácil de entender que todas as
outras que já analisei.
Ilustração 1: Diagrama de Ligações
Este projecto, pretende demonstrar
como funciona a comunicação entre o PC e o Arduino via USB, dando a conhecer
cada uma das etapas da comunicação de forma completa e clara.
Pretende ainda demonstrar, como se
pode criar aplicações Windows, para controlar a comunicação entre o PC e o Hardware
externo.
Aplicação Controla Arduino
Ilustração 2:
Aplicação Controla Arduino
Controla Arduino, é um pequeno
aplicativo Windows, criado com o intuito de dar a conhecer a comunicação entre o
PC e o Arduino e vice-versa, permitindo realizar funções básicas, como obter uma
resposta por parte do Arduino e permitindo piscar um LED.
Esta foi desenvolvida no Software
da Microsoft, Visual Studio 2010 e foi codificada em Visual Basic (VB), esta permite
a configuração dos principais parâmetros de comunicação entre o PC e o Arduino,
bem como o envio e a receção de caracteres permitindo assim, testar de uma
forma muito simples a comunicação entre o PC e o Arduino.
Etapas de desenvolvimentos:
1º Desenvolver a aplicação em
Visual Basic:
Começamos por instalar a
aplicação Microsoft Visual Studio caso ainda não o tenhamos instalado no nosso
PC para que possamos criar a aplicação Controla Arduino.
Ilustração 3: Logo
Visual Studio 2010
A aplicação Controla Arduino, é muito
simples e foi desenvolvida em VB que permite, estabelecer uma ligação entre o nosso
PC e Arduino através da conexão USB.
Esta permite, a configuração dos
parâmetros da comunicação muito facilmente, parâmetros estes que vão desde, porta
de comunicação (porta COM) ao BitStop. Para tornar esta configuração mais dinâmica
foi ainda dotada de um ficheiro que permite guardar as configurações do nosso
sistema.
Este ficheiro é denominado de “config.xml”,
caso não exista é gerado automaticamente a quando do estabelecimento da ligação
entre o PC e o Arduino, e são guardados neste, todos os parâmetros de
comunicação ente o PC e o Arduino facilitando assim, a utilização da aplicação,
uma vez que da próxima vez que utilizarmos a aplicação esta já vai reconhecer
os parâmetros de ligação automaticamente.
Código VB mais relevante:
Estas são as funções que permitem
estabelecer e fazer a comunicação entre o PC e o Arduino.
SerialPort2.PortName = COM -> código
que permite definir a porta COM para a comunicação;
SerialPort2.BaudRate = 9600 -> código que permite definir a velocidade
de comunicação;
SerialPort2.Open() -> código que permite realizar a abertura
da porta COM para a comunicação;
SerialPort2.Write(txtEnviar.Text) -> código
que permite escreve para a porta COM seleccionada;
System.Threading.Thread.Sleep(250) -> código que faz o sistema esperar 250
milissegundos até a leitura;
txtResposta.Text = SerialPort2.ReadExisting() -> código que permite ler da porta COM seleccionada;
SerialPort2.Close() -> código que
permite realizar o fecho da porta COM para a comunicação;
Note que, estas funções são utilizadas em
separado, sendo que este código serve apenas para apresentar as funções, descrevendo a sua função no código da aplicação Controla Arduino.
2º Desenvolver do código em
C/C++ para o Arduino:
Ilustração 4: The
Arduino Software
Este é um código muito simples, que
pode ser dividido em duas funções distintas:
- void setup()
- É nesta função que se define as configurações do
nosso Arduino, neste caso a apenas foi definida a velocidade de comunicação;
void setup() // ............... Função Setup .................{Serial.begin(9600); // Definição da Velocidade de comunicação}
2. void loop()
- É nesta função que é desenvolvido o código que irá desempenhar o papel que pretendemos.
- Aqui são definidas as funcionalidades que pretendemos ver realizadas pelo Arduino.
o
É enviada para a aplicação Controla Arduino a
resposta;
o
O Led 13 do Arduino pisca de acordo com a
resposta;
void loop() // ................. Função Loop .................
{
caracter=0; // Inicia a variável "carácter" a Zero
if (Serial.available()> 0) // Verifica se foi recebido algum carácter (código ASCII recebido > 0)
{
caracter=Serial.read(); // Se sim -> Ler e guarda o valor enviado pela aplicação
// Controla Arduino na variável "carácter"
}
//------ Testa o valor recebido ------
if (caracter== 97) // Se for recebido o 97 código ASCII "a"
{
Serial.print("b"); // Resposta = "b"
//------ O LED pisca 1 vez ------
digitalWrite(13, HIGH); // LED on
delay(1000); // Espera um segundo
digitalWrite(13, LOW); // LED off
delay(1000); // Espera um segundo
}
else if(caracter==98) // Se for recebido o 98 código ASCII "b"
...
}
{
caracter=0; // Inicia a variável "carácter" a Zero
if (Serial.available()> 0) // Verifica se foi recebido algum carácter (código ASCII recebido > 0)
{
caracter=Serial.read(); // Se sim -> Ler e guarda o valor enviado pela aplicação
// Controla Arduino na variável "carácter"
}
//------ Testa o valor recebido ------
if (caracter== 97) // Se for recebido o 97 código ASCII "a"
{
Serial.print("b"); // Resposta = "b"
//------ O LED pisca 1 vez ------
digitalWrite(13, HIGH); // LED on
delay(1000); // Espera um segundo
digitalWrite(13, LOW); // LED off
delay(1000); // Espera um segundo
}
else if(caracter==98) // Se for recebido o 98 código ASCII "b"
...
}
Aqui podemos ver a parte inicial
do código depois repete-se para o caracter “b” e “c”.
Testes da aplicação:
Este estudo foi realizado recorrendo à aplicação Controla Arduino e a um Arduino Duemilanove, sendo que a
mesmo poderia ter sido realizado com qualquer outro modelo de Arduino.
Após o estabelecimento da ligação
entre o PC e o Arduino, esta disponibiliza três testes semelhantes, testes estes
que passam pelo envio de caracteres através da aplicação Controla Arduino para
o Arduino, e a receção da resposta enviada pelo Arduino para a aplicação, que
não é mais que a devolução de outro carácter e o piscar do Led do pino 13 do
Arduino.
Testes:
- Envio da caracter“a” resposta caracter “b” Led pisca 1 vez.
- Envio da caracter “b” resposta caracter “c” Led pisca 2 vezes.
- Envio da caracter “c” resposta caracter “abcde” Led pisca 3 vezes.
Nota: Apenas são aceites os caracteres “a”, “b” e “c” sendo
que qualquer outro caracter introduzido vai gerar uma mensagem de erro.
Vídeo dos testes da Aplicação
Links úteis:
Ficheiros para
Download:
Obrigado
JsCoelho
ta bom:::
ResponderEliminar