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:

Interessante? Compartilhe!

16 Comments

  1. Pingback: Arduino + Python + FIRMATA « Acarajé Turbinado

  2. Jorge

    aeeeee baiano!! parabéns pela iniciativa!!

    Reply
  3. Suzin

    agora senti firmeza! show de bola bahia..

    Reply
  4. Pingback: Os números de 2010 « Acarajé Turbinado

  5. Darlan M. Dariva

    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

    Reply
  6. Christian Bodaneze

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

    VLW!!

    Reply
  7. Ana de Sousa

    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?

    Reply
  8. Emerson Moraes

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

    Reply
  9. Pingback: Os números de 2010 | hamiltonsena.net

  10. bemielison

    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?

    Reply
  11. taurian

    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

    Reply
  12. Carlos Augusto Mattoso

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

    Reply
  13. VD

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

    Reply
  14. Hamilton Sena

    Precisa sim VD!

    Reply
  15. VD

    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”);

    Reply
  16. Bruno Henrique

    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?

    Reply

Deixe uma resposta para Christian Bodaneze Cancelar resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *