top of page

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.

Programa 1 MatLab.jpg

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.

Programa 1 Arduino.jpg

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.

Resultado MatLab.jpg

Led ligado pelo MatLab: (digitado 1)

DSCF3458.JPG

Led desligado pelo MatLab: (digitado 2)

DSCF3459.JPG


 
 
 

Comments


© 2023 por Tendências de Negócios. Orgulhosamente criado com Wix.com

bottom of page