É isso mesmo! Agora você pode ligar seu Arduino ou LaunchPad (com MSP430) na USB e escrever programas diretamente a partir do MATLAB ou do Simulink!! É muito bacana! Imagine o potencial: os programas são escritos e executados pelo MATLAB!
Fiz o teste com meu Arduino Mega. Testei no MATLAB R2009a com Windows Vista e deu certo! Também testei com sucesso com Arduino UNO no MATLAB R2013a rodando em Windows 8.
As informações a seguir se referem ao Arduino. Mas, se você usa LaunchPad com MSP430, você também pode usar esse pacote para fazer o MATLAB se comunicar com sua placa! Para isso, use o Energia IDE para carregar os arquivos "adio.pde" ou "adioe.pde". Podem ser usadas placas com MSP430G2553 e com MSP430G2452 (o G2231 não possui memória suficiente). Os demais passos são exatamente os mesmos.
Como exemplo, fiz um data logger simples. O programa amostra várias vezes a entrada analógica A2, ajusta o PWM da saída 11, guarda os valores num vetor e depois mostra o gráfico dos valores armazenados. Veja como ficou o resultado:
MATLAB obtendo dados de uma das entradas analógicas do Arduino. |
Você pode baixar meu código aqui!
1. Faça download do toolbox do Arduino para o MATLAB:
http://www.mathworks.com/matlabcentral/fileexchange/32374
2. Instale o toolbox:
- descompacte o arquivo e coloque a pasta ArduinoIO no caminho de sua proferência (por exemplo, na pasta work do MATLAB);
- abra o MATLAB, vá até a pasta ArduinoIO e rode o arquivo "install_arduino.m" para que o caminho seja configurado corretamente;
3. Usando a IDE do Arduino (ou o Energia, caso use LaunchPad), transfira o programa "adio.pde" para a placa. Este programa está na pasta "...\ArduinoIO\pde";
4. Verifique a porta COM a que seu Arduino está conectado e feche a IDE;
5. De volta ao MATLAB, digite o seguinte comando (substitua 'COM8' pela porta onde seu Aduino está):
a = arduino('COM8')
Deve aparecer na tela a mensagem:
Attempting connection .............
Se tudo estiver correto, depois de alguns segundos surgirão as mensagens:
Basic Analog and Digital I/O (adio.pde) sketch detected !
Arduino successfully connected !
a =
arduino object connected to COM8 port
Basic Analog & Digital I/O sketch (adio.pde) running on the board
...
e outras informações.
Pronto! A partir de agora sua placa está pronta para receber comandos diretamente do MATLAB!! Como primeiro teste, escreva:
a.pinMode(13,'output');
a.digitalWrite(13,1);
O LED do pino 13 deve acender!
Você deve ter notado que a sintaxe no MATLAB é muito parecida com a da própria linguagem do Arduino, o que ajuda muito! Outros exemplos de comandos são:
a.digitalRead(4) % lê valor digital do pino 4
a.analogRead(2) % lê valor analógico do pino A2
a.analogWrite(11, 155) % ajusta o duty cycle do PWM do pino 11 para 155
a.serial % obtém a identificação da porta serial do Arduino
a.flush; % apaga os dados do buffer serial do Arduino
a.roundTrip(42) % envia um dado ao Arduino, que o envia de volta
Com esse pacote também é possível controlar servomotores e fazer a leitura de encoders diretamente do MATLAB. Para isso, ao invés de fazer o upload do arquivo "adio.pde" para o Arduino, você vai precisar usar o "adioe.pde" (encoder) ou o "adioes.pde" (encoder + servo). Para controlar motores CC, pode usar o "motor_v1.pde" ou o "motor_v2.pde". Veja mais detalhes em:
http://www.mathworks.com/matlabcentral/fileexchange/32374-matlab-support-package-for-arduino--aka-arduinoio-package-
Informações completas sobre o ArduinoIO Package para MATLAB estão em:
http://www.mathworks.com/academia/arduino-software/arduino-matlab.html
Bom divertimento e até a próxima!
Teste com meu ArDuino Nano no w7 64 bits, montei um circuito RC para testar um controlador PID a partir do Simulink e ficou show de bola...Valeu!!!!
ResponderExcluirImagem do resultado: https://www.facebook.com/photo.php?fbid=2210568800207&set=a.1571454862758.45632.1727124872&type=3&theater
Muito legal, Robson! Fico feliz que o post tenha sido útil! :-)
ExcluirFicou muito legal o seu pequeno tutorial, parabenizo pelo blog.
ResponderExcluirMas não consegui compilar o codigo do srv.pde. Diz que falta outra biblioteca.
Obrigado pelo elogio! Fico feliz que tenha gostado!
ExcluirVocê instalou a biblioteca de controle de motores? Tem um link no post.
Consigo ler valores e plotar gráfico no MATLAB?
ResponderExcluirSim. O exemplo que apresento no texto faz exatamente isso.
Excluir