Passo 2 - Controlar e Monitorar Dados no Arduino com o MatLab
- Marcelo Bordallo
- 30 de jun. de 2015
- 2 min de leitura
I - MATLAB
Inicialmente pensou-se em utilizar bibliotecas prontas encontradas na internet e nos sites do Arduino e MatWorks para fazer o controle e monitoramento de dados no Arduino pelo MatLab, porém após algumas pesquisas na documentação disponível do programa, foi descoberto que o acesso à porta serial com o MatLab é feito de modo extremamente fácil.
Abaixo segue algumas funções para utilização da porta e uma breve descrição das mesmas:
Cria-se um objeto para se utilizar e configurar a porta serial.
%Configuração da Porta
ComTest = serial('COM4');
%Cria um objeto de nome ComTest para configura e utilizar a
comunicação serial
Podem-se configurar os parâmetros da porta da seguinte maneira:
set(ComTest,'BaudRate',9600);
set(ComTest,'DataBits',8);
set(ComTest,'Parity','none');
set(ComTest,'StopBits',1);
set(ComTest,'FlowControl','none');
% Tamanho do Buffer de entrada
set(ComTest,'InputBufferSize',512);
% Tempo para receber algum dado (ms)
set(ComTest,'Timeout',5000);
% O programa aguarda este tempo para receber um dado, caso o dado
não chegue, o programa segue adiante
Obs: Caso os parâmetros acima mencionados não sejam digitados, o MatLat configura-os automaticamente.
Para abrir a porta serial:
%Abre a porta Serial
fopen(ComTest);
%A porta deve ser aberta antes de ser utilizada.
Para envio de dados:
%Envia uma string %s, Caractere %c, etc.
fprintf(ComTest,'%u',dado);
Para receber dados:
% Os dados recebidos são armazenados no vetor dado
dado=fread(ComTest,1);
%o segundo valor '2' é o número de bytes a receber
%caso um byte não seja recebido o programa aguarda
%até estourar o tempo limite, que pode ser configurado
%por set(ComTest,'Timeout',tempo); tempo em ms
Para finalizar a porta escreve-se:
fclose(ComTest);
delete(ComTest)
clear ComTest
Obs: Mais detalhes sobre todas estas funções podem ser encontradas na documentação do MatLab.
Utilizando-se das funções acima, foi escrito um programa no MatLab capaz de abrir e configurar uma porta serial, além de enviar e receber dados pela mesma.

Especificamente, este programa envia um byte pela serial, lê a porta, confirma se o led foi ligado ou desligado e imprime o dado recebido.
II - ARDUINO
No caso do Arduino o envio e recebimento de dados pela serial é ainda mais simples.
A configuração da porta:
//configura a comunicação seria com baud rate de 9600
Serial.begin(9600);
O envio de dados:
Serial.write(byteRead);
O recebimento de dados:
byteRead = Serial.read();
Para saber se há dados a serem recebidos pode-se utilizar a função Serial.available(), como no exemplo:
if (Serial.available()) //verifica se tem dados diponível para leitura
{
byteRead = Serial.read(); //le bytwe mais recente no buffer da serial
}
Assim, foi escrito um programa para o Arduino com a função de receber um dado. Caso este dados seja 49 (numero 1 na tabela ASCII) o pino 4 do Arduino é ligado, caso o valor recebido seja 50 (numero 2 na tabela ASCII) ele é desligado.
Após isso, o valor recebido é reenviado pela serial.

III - RESUTADO
Como é possível enviar e receber dados pela porta serial entre o MatLab e o Arduino com muita facilidade, resolveu-se fazer os próprios scripts de comunicação. Desta forma entende-se melhor o funcionamento do programa e facilita a solução de problemas que vierem a ocorrer.

Led ligado pelo MatLab: (digitado 1)

Led desligado pelo MatLab: (digitado 2)

Comments