Você está na página 1de 7

31/01/2018 Nossos Robôs: Arduino com MATLAB!

Mini tutorial

mais Próximo blog» Criar um blog Login

Início Arduino Robôs Aéreos - Drones Competições Lego NXT Robótica Robôs legais Tutoriais e Simuladores

quarta-feira, 12 de outubro de 2011

Arduino com MATLAB! Mini tutorial


--- Atualizado em 26/04/2014

É 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.
Google+ Followers

Como exemplo, fiz um data logger simples. O programa amostra várias vezes a entrada analógica A2, ajusta Felipe Nascimento M…
o PWM da saída 11, guarda os valores num vetor e depois mostra o gráfico dos valores armazenados. Veja
Adicionar aos círculos
como ficou o resultado:
A lista de seguidores é
particular

Seguir por e-mail!

Email address... Submit

Pesquisar este blog

Pesquisar

Postagens populares

Mecatrônica ou Controle e
Automação?
Que curso devo fazer para
estudar Robótica? Engenharia
Mecatrônica ou Engenharia de
Controle e Automação? Qual é a
diferença entre eles? M...

MATLAB obtendo dados de uma das entradas analógicas do Arduino. Monte seu robô
com Arduino!
Mini-robô com
Você pode baixar meu código aqui! Arduino. Quer
montar seu próprio
robô? Você pode!! 
Preparei um passo-a-passo para fazer a conexão Arduino-MATLAB:
Neste post vou descrever como
você pode montar o robô ao lado,
1. Faça download do toolbox do Arduino para o MATLAB: mo...
http://www.mathworks.com/matlabcentral/fileexchange/32374
Quer aprender
robótica?
2. Instale o toolbox:
--- Atualizado em
 - descompacte o arquivo e coloque a pasta ArduinoIO no caminho de sua proferência (por exemplo, na 31/07/2017: Esse
pasta work do MATLAB); post é antigo. A
 - abra o MATLAB, vá até a pasta ArduinoIO e rode o arquivo "install_arduino.m" para que o caminho seja informação é
válida, mas alguns dos links não
configurado corretamente; funcionam mais. Falei um pouco
mais sobre...
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"; Cursos online (e
gratuitos) de
Robótica
4. Verifique a porta COM a que seu Arduino está conectado e feche a IDE; --- Atualizado em
31/05/2015 e
5. De volta ao MATLAB, digite o seguinte comando (substitua 'COM8' pela porta onde seu Aduino está): 31/07/2017. A
popularização de cursos online
a = arduino('COM8')
aumenta a cada dia.
Especialmente no ano de 2012
Deve aparecer na tela a mensagem: houve um ...
Attempting connection .............

http://nossosrobos.blogspot.com/2011/10/arduino-com-matlab.html 1/7
31/01/2018 Nossos Robôs: Arduino com MATLAB! Mini tutorial

Arduino com
Se tudo estiver correto, depois de alguns segundos surgirão as mensagens: MATLAB! Mini
Basic Analog and Digital I/O (adio.pde) sketch detected ! tutorial
Arduino successfully connected ! --- Atualizado em
26/04/2014 É isso
mesmo! Agora
a = você pode ligar seu Arduino ou
LaunchPad (com MSP430) na USB
e escrever programas diretam...
arduino object connected to COM8 port
Basic Analog & Digital I/O sketch (adio.pde) running on the board Simulador on-line
... para Arduino
e outras informações. Durante muito
tempo eu procurei
por um simulador
Pronto! A partir de agora sua placa está pronta para receber comandos diretamente do MATLAB!! Como de Arduino que
primeiro teste, escreva: fosse bom e fácil de usar (como o
próprio Arduino). Apesar de
existirem vári...
a.pinMode(13,'output');
a.digitalWrite(13,1); Lego Mindstorms
NXT 2.0
Recentemente
O LED do pino 13 deve acender!
ganhei de presente
o kit de robótica
Você deve ter notado que a sintaxe no MATLAB é muito parecida com a da própria linguagem do Arduino, o Mindstorms NXT
que ajuda muito! Outros exemplos de comandos são: 2.0, da Lego . Trata-se de um kit
contendo três motores (cada um
já montad...
a.digitalRead(4) % lê valor digital do pino 4
Robotics Toolbox -
a.analogRead(2) % lê valor analógico do pino A2 Um Simulador de
Robótica para
MATLAB (mini
a.analogWrite(11, 155) % ajusta o duty cycle do PWM do pino 11 para 155 tutorial)
--- Atualizado em
19/08/2014 Você está procurando
a.serial % obtém a identificação da porta serial do Arduino um simulador para estudar
robótica ou para testar
a.flush; % apaga os dados do buffer serial do Arduino controladores para robôs? Seus
problem...

a.roundTrip(42) % envia um dado ao Arduino, que o envia de volta Arduino + Threads


Ou... como piscar dois LEDs com
Com esse pacote também é possível controlar servomotores e fazer a leitura de encoders diretamente do Arduino de maneira foda. :-)
Falando sério, o  +Ivan Seidel
MATLAB. Para isso, ao invés de fazer o upload do arquivo "adio.pde" para o Arduino, você vai precisar usar o  criou uma biblioteca muito legal
"adioe.pde" (encoder) ou o "adioes.pde" (encoder + servo). Para controlar motores CC, pode usar o de thr...
"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- Mini-curso de Sistemas
Embarcados com Arduino
arduinoio-package-
Quem quer construir seu próprio
robô precisa ter conhecimentos
Informações completas sobre o ArduinoIO Package para MATLAB estão em: básicos de sistemas embarcados.
http://www.mathworks.com/academia/arduino-software/arduino-matlab.html A denominação "sistemas
embarcados"...

Bom divertimento e até a próxima!


Colaboradores
Referências:
http://www.mathworks.com/matlabcentral/fileexchange/32374-matlab-support-package-for-arduino--aka-arduinoio-package- Alexandre Brandão
http://www.mathworks.com/academia/arduino-software/arduino-matlab.html
Felipe Nascimento Martins
http://energia.nu/Guide_MSP430LaunchPad.html

Total de visualizações de página


Postado por Felipe Nascimento Martins às 00:02
Reações:  Legal :-) (5) Não gostei (0) 605528

Marcadores: Arduino, Energia, LaunchPad, MATLAB, MSP430, Tutorial

93 comentários

Adicione um comentário como Sarah Silveira Mendes

Principais comentários
 

Felipe Nascimento Martins 3 anos atrás  -  Compartilhada publicamente


 
+Wesley Esdras, se o GPS se comunicar com o Arduino via serial, você vai precisar de
duas seriais, sim. O Arduino Mega tem 4 seriais, então poderia usar esse. 
Supondo que a válvula esteja conectada a pino 11, se for uma solenóide (liga/desliga),
http://nossosrobos.blogspot.com/2011/10/arduino-com-matlab.html 2/7
31/01/2018 Nossos Robôs: Arduino com MATLAB! Mini tutorial
Supo do que a á u a esteja co ectada a p o , se o u a so e ó de ( ga/des ga),
você pode acionar e desligar com os comandos a.digitalWrite(11,1) e
a.digitalWrite(11,0). Se a válvula aceitar um sinal PWM para uxo ajustável, pode usar o
comando a.analogWrite(11, DTY), onde DTY é um valor entre 0 e 255.  
Abraços!

+3 1  ·  Responder

Ver todas as 3 respostas

Felipe Nascimento Martins 2 anos atrás


 Olá, +Wander Scheidegger. Eu corrigi o link para o arquivo "data_logger_arduino.m".
Por favor, tente novamente. Qualquer problema ou dúvida, é só falar.

Wander Scheidegger 2 anos atrás


 Funcionou. Obrigado.

Andre Sousa 4 anos atrás  -  Compartilhada publicamente


 
Bom dia Felipe
Estou tentando fazer a conexão via bluetooth. O dispositivo chega até a emparelhar com
o notebook, mas da o erro abaixo. Você pode ajudar?
Warning: A timeout occurred before the Terminator was reached

1  ·  Responder

Ver todas as 3 respostas

Andre Sousa 4 anos atrás


 Boa tarde Felipe, felizmente consegui realizar a comunicação via bluetooth entre o
Matlab e o Arduíno. Consegui identi car que o erro que estava dando era porque o
arquivo adiosrv estava com uma velocidade de serial diferente da programada na
porta USB. Mudei tudo para 9600 e funcionou bem

Felipe Nascimento Martins 4 anos atrás


 Que bacana, Andre! Você usou um módulo bluetooth conectado na USB do
computador? Como ca o código no MATLAB?

Adonis Leal 3 anos atrás  -  Compartilhada publicamente


 
Ola. muito bom as informações do seu Blog.
Bem acabei de baixar a toolbox do Arduino para o MATLAB porem não tem o arquivo
"adiosrv.pde" encontrei somente os seguinte arquivos:

Leia mais

1  ·  Responder

Ver todas as 10 respostas

Adonis Leal 3 anos atrás


 Muito bom o seu esclarecimento. Agora to compreendendo melhor. E tem como eu
amostrar o mais rapido possível e enviar direto para o Computador, mas sem ser
pelo matlab. No caso usaria a memória do computador e não a memória do arduino,
Leia mais

Felipe Nascimento Martins 3 anos atrás


 Adonis, na verdade tem como fazer isso, sim. Tanto com o LabVIEW como com o
MATLAB. Na verdade, a limitação está na velocidade de comunicação (115.200bps),
e esse limite é do Arduino. Você vai ter de alterar o programa que é colocado no
Leia mais

BRA- Jonny Matuichuk 4 anos atrás  -  Compartilhada publicamente


 Bom dia Felipe,  obrigado mais uma vez pelas informações compartilhadas. 

Gostaria de mais um auxilio. Estou efetuando a transmissão e  recepção de sinais de


áudio entre 2 arduinos com módulos Xbee e apos a recepção quero jogar os valores para
Leia mais

1  ·  Responder

Felipe Nascimento Martins 4 anos atrás


 Jonny, a COM que o Arduino cria no computador já é uma COM virtual, pois na
verdade ele se comunica via USB. Para fazer seu sistema funcionar como você quer,
você precisa usar um Arduino que tenha pelo menos duas portas seriais: uma para a
comunicação com o computador e outra para o XBee. Experimente com o Arduino
Mega.
http://nossosrobos.blogspot.com/2011/10/arduino-com-matlab.html 3/7
31/01/2018 Nossos Robôs: Arduino com MATLAB! Mini tutorial
g

Renato Marino Henz 4 anos atrás  -  Compartilhada publicamente


 Ah, consegui já hehe, tava fazendo errado aqui

1  ·  Responder

Felipe Nascimento Martins 4 anos atrás


 :-)

Bruno Targino 2 anos atrás  -  Compartilhada publicamente


 
Felipe, estou usando um acelerômetro mma 7361 para fazer análise de vibração você
pode me informal qual a taxa de transferência do arduino com Matlab,? o tempo de
medição de cada dado do acelerômetro.

1  ·  Responder

Ver todas as 3 respostas

Bruno Targino 2 anos atrás


 +Felipe Nascimento Martins ok, obrigado! como faço para enviar todas as medições
do acelerômetro para o arduino de uma só vez? 

Felipe Nascimento Martins 2 anos atrás


 O programa do Arduino para operar com o MATLAB faz o seguinte: quando recebe
um comando especí co do MATLAB, faz uma leitura do valor analógico e envia via
serial para o MATLAB. Você vai precisar alterar o programa do Arduino para fazer
Leia mais

José Reis 2 anos atrás  -  Compartilhada publicamente


 
Ola, amigo
excelente site de pesquisa o seu, me ajudou muito.
Quando vou carregar o arquivo "adioes.pde" no arduino uno, ele não envia e aparece essa
msg:  avrdude: ser_open(): can't open device "\\.\COM3": Acesso negado.

será que ele não suporta o tamanho do arquivo?

1  ·  Responder

Ver todas as 3 respostas

José Reis 2 anos atrás


 Deu certo sim, tava com erro de comunicação. eu forçei a porta para outra COM, e
deu certo.Obrigado mesmo!

Felipe Nascimento Martins 2 anos atrás +1


 Joia! Sucesso!

Renato Marino Henz 4 anos atrás  -  Compartilhada publicamente


 
Olá, boa noite, tudo bem?
Primeiramente, parabéns pelo post, muito bacana!
Porém, to com uma dúvida aqui: ao chegar no diretório onde extrai o conteúdo do
arquivo zipado ArduinoIIO.rar o matlab diz o seguinte: 
??? Unde ned variable "install_arduino" or function "install_arduino.m".
Sabe como posso resolver isso?
Valeu!

+2 1  ·  Responder

Felipe Nascimento Martins 4 anos atrás


 Olá, Renato. Obrigado pelo elogio. Fico feliz que tenha gostado do post e que tenha
conseguido resolver o problema! :-)
Estou "um pouco" atrasado nas respostas aos comentários... :-p

Felipe Nascimento Martins 11 meses atrás  -  Compartilhada publicamente


 
Olá, +Gabriel Valluis . Parece que tá faltando alguma biblioteca em seu Arduino IDE. De
qualquer forma, a Mathworks agora disponibiliza suporte para Arduino também de outra
forma:
https://nl.mathworks.com/hardware-support/arduino-matlab.html

1  ·  Responder

http://nossosrobos.blogspot.com/2011/10/arduino-com-matlab.html 4/7
31/01/2018 Nossos Robôs: Arduino com MATLAB! Mini tutorial
Mirelli Fernandes 2 anos atrás  -  Compartilhada publicamente
 
Felipe Nascimento Martins, parabéns pelo posto!
Estou comunicando o Arduino UNO com o MATLAB  e um transmissor RF, gostaria de
saber como posso incluir a biblioteca VirtualWire na minha aplicação?
Saudações...

+1 1  ·  Responder

Ver todas as 5 respostas

Danilo Fernandes 1 ano atrás


 Olá +Felipe Nascimento Martins. Eu estou tentando fazer uma conexão entre dois
arduínos, com um receptor e transmissor RF ligado em cada um deles, usando a
biblioteca VirtualWire para o arduino, e o Matlab. Meu objetivo é analisar os dados
Leia mais

Felipe Nascimento Martins 1 ano atrás


 Olá, +Danilo Fernandes. Infelizmente, não sei como a +Mirelli Fernandes resolveu
esse problema. Como eu nunca trabalhei com a biblioteca VirtualWire, não tenho
informações para ajudar você. Mas, creio que não seja necessário analisar
Leia mais

BRA- Jonny Matuichuk 4 anos atrás  -  Compartilhada publicamente


 
Bom dia Felipe, gostei mto do seu blog e do exemplo dado acima.  Estou utilizando um
ATmega 2560 e como teste estou utilizando um potenciômentro como um sensor linear
em con g de divisor de tensão, simplesmente para jogar as amostras no matlab e plotar
um gra co da leitura real destes dados. Para isso é necessário transferir o
programa  "adiosrv.pde" para a placa do arduino e pedir para o matlab ler os pinos que eu
estou colocando este divisor de tensão? atenciosamente

+1 1  ·  Responder

Felipe Nascimento Martins 4 anos atrás


 Olá, Jonny. Fico feliz que tenha gostado do blog! Obrigado pelo elogio!
Sim, para ler os pinos de entrada analógica do Arduino pelo MATLAB você deve
transferir e rodar o programa adiosrv.pde no Arduino. Você deve declarar o Arduino
Leia mais

rafael bartz 2 anos atrás  -  Compartilhada publicamente


 
bom dia ...
estou usando um comunicador via gsm no meu arduino e precisaria usar a outra porta
serial do arduino .. sabe como faço para ativar a outra porta dele?

OBrigadoooo

1  ·  Responder

Ver todas as 3 respostas

Rafael Gustavo Bartz 2 anos atrás


 Boa tarde Felipe eu tenho um mega mas não sei como usar 2 portas seriaia

Felipe Nascimento Martins 2 anos atrás


 Dá uma olhada nesse exemplo:
http://www.arduino.cc/en/Tutorial/MultiSerialMega

andre hoffmann pinto 2 anos atrás  -  Compartilhada publicamente


  felipe tenho algumas duvidas , tenho um arduino uno com um sensor RGB para
olá
detectar variaçoes de cores em especial de azul ja possuo o codigo do arduino para
leitura mas precisa ler esses valores no matlab em tempo real e nao consigo pois ele me
retorna sempre o buffer... e repete as posiçoes iniciais vc pode ajudar ??

1  ·  Responder

Felipe Nascimento Martins 2 anos atrás


 Olá, +andre hoffmann pinto. Para usar o exemplo do post você precisar rodar um
programa especí co no Arduino(veja explicação no texto). Assim, você deve fazer
um programa no MATLAB que vai fazer a leitura do seu sensor (e não um programa
Leia mais

andre hoffmann pinto 3 anos atrás  -  Compartilhada publicamente


 
felipe .. estou precisando fazer uma rede neural em matlab conversar com o arduino para
ele controlar uma fonte de alimentação ... .como posso fazer isso ?? obrigado

http://nossosrobos.blogspot.com/2011/10/arduino-com-matlab.html 5/7
31/01/2018 Nossos Robôs: Arduino com MATLAB! Mini tutorial
1  ·  Responder

Ver todas as 6 respostas

andre hoffmann pinto 3 anos atrás


 Obrigado e parabens pela sua atencao..muito prestativo....

Felipe Nascimento Martins 3 anos atrás


 Beleza, cara!

Wazzupdarkup 3 anos atrás  -  Compartilhada publicamente


 
Olá! Primeiramente, parabéns pelo tutorial. Estou tentando pegar os dados do GPS
recebidos no arduino e passar para o matlab. O problema é: como fazer o Serial.print dos
dados recebidos via serial no Matlab? Agradeceria se pudesse me ajudar! Abraços

1  ·  Responder

Felipe Nascimento Martins 3 anos atrás +1


 Olá, +Wazzupdarkup. Que bom que gostou!
O pacote ArduinoIO para MATLAB usa um programa especí co no Arduino
(adioes.pde) que lida com a comunicação com o MATLAB. Até onde eu sei, não
Leia mais

Frederico Bortolini Matoso 3 anos atrás  -  Compartilhada publicamente


 Olá, 

Como faço pra aumentar a frequencia que leio a porta analógica do arduino.

Obrigado

1  ·  Responder

Felipe Nascimento Martins 3 anos atrás


 Olá, +Frederico Bortolini Matoso. No meu código você pode tentar diminuir o valor
da variável ts, que guarda o valor do tempo de amostragem. No entanto, não dá pra
diminuir muito se você usar no Arduino o programa original da MathWorks
Leia mais

Theoprax Mecatrônica 3 anos atrás  -  Compartilhada publicamente


 Alguém sabe fazer isso para o UBUNTU?

1  ·  Responder

Felipe Nascimento Martins 3 anos atrás


 Não tenho o MATLAB no Ubuntu, por isso não testei. Quando descobrir, compartilha
com a gente!

Ricardo Panesi 3 anos atrás  -  Compartilhada publicamente


 Tá dando o seguinte erro:  a.aser=serial(comPort,'BaudRate',115200);

1  ·  Responder

Ver todas as 9 respostas

Ricardo Panesi 3 anos atrás


 tenho o windows 2008

Felipe Nascimento Martins 3 anos atrás


 +Ricardo Panesi, lamento, mas com as informações que você me passou eu não
consigo identi car o que pode estar errado. Se conseguir resolver, conte aqui o que
fez! Boa sorte!

Gelson Camargo 3 anos atrás  -  Compartilhada publicamente


 Felipe,  essa mudança fez ele rodar perfeitamente. 

Estou tentando tirar uma função de transferência do circuito, acredite, isso me ajudou
muito.
Depois é aplicar na função PID do matlab.

Grato
Gelson

1 Responder
http://nossosrobos.blogspot.com/2011/10/arduino-com-matlab.html 6/7
31/01/2018 Nossos Robôs: Arduino com MATLAB! Mini tutorial
1  ·  Responder

Felipe Nascimento Martins 3 anos atrás


 Que bom, Gelson! Fico feliz que o post tenha sido útil. :-)
Sucesso com seu projeto!

Gelson Camargo 3 anos atrás  -  Compartilhada publicamente


 
Olá, muito bom seu blog, parabéns.
Suas informações ajudaram bastante.

Mas, quando rodo  "data_logger_arduino " aparece essa mensagem abaixo.


Leia mais (18 linhas)

1  ·  Responder

Felipe Nascimento Martins 3 anos atrás


 Olá, +Gelson. Que estranho... Você não alterou nada no código?
Experimente comentar essa linha e rodar o programa de novo, pelo menos para
testar a amostragem do sinal analógico.

Felipe Nascimento Martins 3 anos atrás


 Ah... Troque a função int16 por int8 na linha anterior e faça o teste novamente.

Mostrar mais

Postagem mais recente Página inicial Postagem mais antiga

Assinar: Postar comentários (Atom)

Tema Simples. Tecnologia do Blogger.

http://nossosrobos.blogspot.com/2011/10/arduino-com-matlab.html 7/7