Arduino + MATLAB

Arduino + MATLAB

Como acadêmico de um curso de engenharia, utilizo muito o MATLAB para simulação matemática.

– Deixa de ser chato Hamilton conta logo como comunicar o MATLAB com o ARDUINO. Tá bom vamos lá!!!

Mas primeiro um pouco de teoria.

Como foi visto no post “O que é Arduino” o mesmo é uma placa de fácil manipulação e programação, mas podemos usar o Arduino também como uma interface de comunicação  entre o PC.

Em muitos projetos não é necessário que o Arduino trabalhe como um processador independente, mas como um dispositivo intermediário através do qual há a conexão de sensores, leds, motores, etc a um computador. Nesta configuração, a placa e o PC ficam conectados e se comunicam através da porta USB/serial. Um aplicativo executado no PC (que no nosso caso será a classe arduino.m  instanciado) interage com outros aparelhos conectados à placa.

Para que essa interação seja feita é necessário adicionar o firmware adiosrv.pde que fará o papel de informar os status e as ações do Arduino. Abaixo segue um diagrama de como isso funciona.

 

ArduinoMatlab

Vamos agora para pratica:

  1. Faça o download do arduino-matlab em http://www.mathworks.com/academia/arduino-software/arduino-matlab.html, após o download pegue o arquivo adiosvr.pde que encontra-se dentro da pasta adiosvr e grave no Arduino via IDE de programação. Caso não saiba como fazer isso, assista o vídeo do post “O que é Arduino” .
  2. Abra o MATLAB, adicione o arquivo arduino.m no WORKSPACE, a partir desse momento o MATLAB já esta pronto para se comunicar com o Arduino.
  3. Dentro do arquivo que foi baixado arduino-matlab contém diversos exemplos mas segue abaixo um exemplo de utilização de escrita e leitura digital e analógica, como também a disposição dos pinos na placa do Arduino.

arduino_board

 

[sourcecode language=”matlab”]

% conectando ao arduino
a=arduino(‘COM5′)

% especificando os modos que os pinos 4, 13 e 5 iram trabalhar
a.pinMode(2,’input’);
a.pinMode(13,’output’);
a.pinMode(9,’output’);

% Efetuando uma leitura digital no pino 4
dv=a.digitalRead(4)

% escrevendo o que tem na variavel dv (0 or 1) no pino 13
a.digitalWrite(13,dv)

% lendo a entrada analógica no pino 5 (NB: não é o pino 5 digital)
av=a.analogRead(5)

% normalizando av de 0:1023 para 0:255
av=(av/1023)*255

% escrevendo a saida av no pino 9 (pwm)
a.analogWrite(9,av)

% fechando a seção
delete(a)

[/sourcecode]

Segue abaixo imagens de outro código executado no command do MATLAB junto com o hardware.

 

 

Para mais informações segue um PDF feito pelo Giampiero Campa mostrando mais detalhadamente com usar essa ferramenta: http://www.mathworks.cn/matlabcentral/fileexchange/27843-arduino-io-package-slides-and-examples

Segue também um target para utilizar junto com o SIMULINK: http://www.mathworks.com/academia/arduino-software/arduino-simulink.html

Related posts:

Sou engenheiro de Controle e Automação, técnico em processamento de dados, professor de controle industrial e eletricidade na instituição SENAI-PR, empreendedor, sócio e diretor de engenharia da empresa Mobhis Automação Urbana (www.mobhis.com.br).

Share This Post

16 Comments

  1. Jorge - 18/10/2010

    aeeeee baiano!! parabéns pela iniciativa!!

  2. Suzin - 18/10/2010

    agora senti firmeza! show de bola bahia..

  3. Os números de 2010 « Acarajé Turbinado - 02/01/2011

    […] O seu dia mais activo do ano foi 18 de outubro com 49 visitas. O artigo mais popular desse dia foi Arduino + MATLAB. […]

  4. Darlan M. Dariva - 03/05/2011

    Hamilton,

    Como havia comentado…. hehehe eu utilizei as informacões acima para começar a brincar com o arduino, gostei das dicas…. PARABÉNS pela iniciativa…

    Abraços

  5. Christian Bodaneze - 11/06/2011

    BAIANINHOOOOO!!
    Show de bola seu tutorial, funcionou perfeitamente!!!

    VLW!!

  6. Ana de Sousa - 01/07/2011

    Muito bom seu tutorial.

    Eu estou tentando acessar os pinos TX e RX do Arduíno para enviar e receber dados via XBee, gostaría de saber se isso é possível utilizando esse patch.
    Utilizando as funções dentro do pacote, não é possível acessar os pinos 0 e 1, você poderia me ajudar?

  7. Emerson Moraes - 06/07/2011

    Muito bom … !!! Parabéns de futuro engenheiro para outro !!! abraço

  8. Os números de 2010 | hamiltonsena.net - 09/07/2011

    […] O seu dia mais activo do ano foi 18 de outubro com 49 visitas. O artigo mais popular desse dia foi Arduino + MATLAB. […]

  9. bemielison - 19/01/2012

    Excelente cara. Poderia postar mais exemplos do uso do arduino junto ao matlab? gostaria de simular vôos (trajetoria) de aeromodelismo (aviao com arduino) no matlab, é possivel?

  10. taurian - 27/03/2012

    Hamilton,
    Obrigado as suas informaçoes estam a ser muito boas mas eu tenho um problema eu sou utilizador de Mac osx e quando defino a minha porta serial Por Ex: a=arduino(‘dev/cu.usbserial-A400AQKM’) ele nao reconhece a minha porta
    como eu posso fazer ?

    Obrigado

  11. Carlos Augusto Mattoso - 13/06/2012

    Muito bom trabalho, estou tentando fazer um controlador PID de temperatura com Matlab e arduino.

  12. VD - 11/08/2012

    Precisa ter cadastro no site do mathworks? Pois não estou encontrando o link para download …

  13. VD - 12/08/2012

    Conssegui fazer o download mesmo sem cadastro rsrs. Mas tenho mais uma pergunta:
    Preciso bastante trabalhar com display LCD(queria fazer pelo matlab,pois irei trabalhar com redes neurais no meio do projeto), e creio que nessas bibliotecas de comunicação não tem nada para manipulação de LCD…como eu resolveria isso?
    Queria trabalhar, por exemplo, códigos desse tipo no matlab, so que o arduino.m não dispôe de nada para isso…

    #include
    LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
    lcd.begin(16, 2);
    lcd.print(“RAA”);

  14. Bruno Henrique - 25/09/2012

    Hamilton, parabéns pelo site e pelos tutoriais! Veja se pode me ajudar, usando o arduino para leitura de uma tensão da rede o resultado é colocado numa tabela e o gráfico feito em excel fica perfeito (senoidal), agora usando o arduino + matlab a leitura fica horrível, acredito que deva haver alguma diferença na frequência da leitura. Sabe o que pode ser?

Deixe uma resposta para Hamilton Sena Cancelar resposta