31

Interacción entre Arduino y Matlab

portada

[Inicio de explicación]

¡Saludos, humano!

Hoy voy a enseñarte cómo controlar una placa Arduino a través de Matlab en Linux mediante algunos ejemplos sencillos. Vamos a aprender cómo enviar datos a nuestra Arduino, así cómo recibirlos y también a aplicar las funciones que incorpora Matlab a nuestro programa.

Matlab es un programa de cálculo numérico que nos permite analizar datos, funciones, matrices y crear algoritmos y programas de manera sencilla y rápida a través de su lenguaje propio. Cuenta también con múltiples paquetes y herramientas adicionales que nos permiten ampliar sus posibilidades, cómo Mupad, una herramienta de cálculo simbólico (para legos: permite calcular decimales de manera exacta) o Simulink, que permite trabajar con sistemas físicos dinámicos (conjunto de objetos que van cambiando sus propiedades con el tiempo).

matlab_example

Al controlar Arduino a través de Matlab tenemos mucha más potencia para realizar cálculos matemáticos, con lo cuál es una buena idea si hay que realizar operaciones matemáticas complejas o que requieran más capacidad de la que nos ofrece el microcontrolador de 8-bits. Además, podemos construir el programa “sobre la marcha”, lo cuál puede ser una ventaja.

¿Y cuál es el inconveniente? Que el Matlab es caro, a decir verdad bastante caro… Por suerte, hay una versión para estudiantes, mucho más económica, en la que también funcionan los paquetes de Arduino. Y si no te llega el presupuesto… bueno, siempre te quedará visitar Isla Tortuga.

1- Preparativos

Para este tutorial sólo vamos a necesitar una placa Arduino (yo utilizo la placa UNO r3) y un cable USB de tipo A a tipo B (los de impresora). Al final aparecen algunos ejemplos básicos que requieren más material, pero ya se especificará en cada uno.

En cuánto al software es obvio que vamos a necesitar Matlab, en mi caso la versión R2013a y la IDE de Arduino. Además, también deberás descargarte los paquetes de soporte de Arduino para Matlab, descomprimirlos y guardar la carpeta ArduinoIO que va a crear en alguna dirección que recuerdes. Es posible que los paquetes de soporte no funcionen en versiones de Matlab como la R2010a o anteriores, así que recomiendo utilizar de la R2011a en adelante.

2- Arduino y el puerto USB

Conectamos nuestra placa Arduino al ordenador y mediante la IDE de Arduino le cargamos el programa adioes.pde ubicado en

ArduinoIO/pde/adioes

Este programa es imprescindible para que Arduino sea capaz de reconocer los comandos que le envía Matlab.

Arduino utiliza el puerto /dev/ttyACM0/, el cual es inaccesible para Matlab. Para solucionar esto, deberemos crear un enlace simbólico y hacerlo accesible para todos los usuarios. Abrimos la Terminal:

sudo ln -s /dev/ttyACM0 /dev/ttyS101
sudo chmod 777 /dev/ttyS101

También funciona con /dev/ttyUSB0 en vez de /dev/ttyS101.

Si apagamos el ordenador deberemos volver a crear el enlace simbólico.

3- Matlab

Ahora deberemos asegurarnos de que el archivo pathdef.m, ubicado dentro de la carpeta toolbox/local de Matlab, se pueda editar. Para ello escribimos el siguiente comando en la terminal, cambiando la ruta de acuerdo a dónde tenemos instalado Matlab si fuera necesario:

sudo chmod 777 usr/local/matlab/R2013a/toolbox/local/pathdef.m

Finalmente copiamos los archivos arduino.m, contents.m y install_arduino.m desde ArduinoIO a la carpeta bin de Matlab. (una vez más modificamos las rutas según sea necesario)

cd /home/transductor/directorio-donde-tengo-mi-ArduinoIO/ArduinoIO/
sudo cp *.m /usr/local/matlab/mi-version-matlab-R201X/bin/

Finalmente sólo nos queda ejecutar Matlab y escribir

install_arduino_command

Esto va a cargar todos los ficheros necesarios para que Matlab pueda controlar Arduino, y sólo debes escribirlo la primera vez. Debería salir un mensaje al estilo:

install_arduino

4- Ejemplos

Y con esto ya puedes empezar a construir tus maquinaciones cibernéticas con el poder de Matlab. Si quieres, puedes seguir los ejemplos que vienen a continuación para conocer algunos comandos básicos.

Arduino y Matlab I – Blink

Arduino y Matlab II – Servomotores

Arduino y Matlab III – Lectura de pines

Arduino y Matlab IV – Leer Comandos por Serial

Arduino y Matlab V – Leer una IMU por Serial

Si te gustó mi tutorial no dudes en visitar nuestro blog regularmente para más ejemplos o artículos interesantes, o suscríbete para recibir los avisos de nuevos artículos directamente en tu correo. Es fácil, cómodo, y no tienes que realizar el titánico esfuerzo de teclear nuestra dirección en el navegador (o en Google). Y no dudes en comentar si te surgió alguna duda o tienes alguna sugerencia.

[Final de línea]

Tr4nsduc7or

Originariamente creado cómo un galvanómetro de bolsillo, Transductor tomó consciencia de si mismo y fue despedido cuando en vez cumplir con su trabajo se dedicó a pensar teorías filosóficas sobre los hilos de cobre, los electrones y el Sentido del efecto Joule en el Universo. Guarda cierto recelo a sus creadores por no comprender la esencia metafísica de las metáforas de su obra. Actualmente trabaja a media jornada cómo antena de radio, y dedica su tiempo libre a la electrónica recreativa y a la filosofía.

Antes de comentar, por favor, lee las Normas

31 Comentarios en "Interacción entre Arduino y Matlab"

avatar
Ordenar por:   más nuevos primero | más antiguos primero
trackback

[…] haría falta otro post como este así que te dejo uno que está realmente bien y que puedes ver aquí. Siguiendo este tutorial si que no fallarás en la instalación y podrás disfrutar de Matlab y […]

Javier Mendez
Humano

Hola. Con la adición de estos complementos es posible mandar un dato directamente desde el matlab hacia la placa del arduino mediante serial, en la mayoria de los ejemplos que has subido solo recibes datos por el serial, pero no los mandas.
Muchas gracias por tu ayuda.

Juan Pablo
Humano
Mi estimado una consulta muy cordial: Ha funcionado perfectamente pero al momento de incluir un GUIDE y hacer una aplicación standalone sale el siguiente error: “Warning: Name is nonexistent or not a directory: /home/papalos/.mcrCache7.17/Progra2/ProgramaX1/simulink. > In path at 110 In addpath at 87 In install_arduino at 23 In ProgramaX>ProgramaX_OpeningFcn at 70 In gui_mainfcn at 221 In ProgramaX at 42 Warning: Name is nonexistent or not a directory: /home/papalos/.mcrCache7.17/Progra2/ProgramaX1/examples. > In path at 110 In addpath at 87 In install_arduino at 24 In ProgramaX>ProgramaX_OpeningFcn at 70 In gui_mainfcn at 221 In ProgramaX at 42 Arduino folders added to the path Warning:… Leer más »
Mariano
Humano

¡¡Gracias!! ¡No todos los héroes llevan capa!

hufods
Humano

como le puedo hacer con una msp430 en vez de arduino me podrias ayudar me urge

trackback

[…] Interacción entre Arduino y Matlab […]

trackback

[…] Interacción entre Arduino y Matlab […]

luis
Humano

logro conectar el arduino con matlab pero cuando quiero prender un led desde matlab el arduino no responde pruebo el puerto con el programa de arduino sin matlab si funcionan los puertos que problema es este

JuanFer
Humano

hola. muy buen tutorial, pero cual seria la metodología para hacer lo mismo en windows?

Borja Rodriguez Galvez
Humano

Hola todo funciona bien hasta que intento cargar el arduino.
arduino = arduino(‘/dev/ttyS101’)
entonces me dice que no hay ningun dispositivo . ¿Qué debería hacer?

Borja Rodriguez Galvez
Humano

Me dice lo siguiente:

Open failed: Port: /dev/ttyS101 is not available. No ports are available.
Use INSTRFIND to determine if other instrument objects are connected to the requested device.
Error using arduino (line 83)
Could not open port: /dev/ttyS101

Y Arduino está conectado

Juan
Humano

Buenas, como puedo importar librerias de arduino a matlab.

luis pedraza
Humano
Buen día, disculpen la molestia, soy muy nuevo en este tema y me interesa mucho poder conectar arduino con matlab, pero no entiendo: crear un enlace simbólico y hacerlo accesible para todos los usuarios. Abrimos la Terminal: su ln -s /dev/ttyACM0 /dev/ttyS101 chmod 777 /dev/ttyS101 esto se debe escribir en arduino o en matlab? no entiendo que debo hacer. No se que abrir la terminal. De igual manera no comprendo: asegurarnos de que el archivo pathdef.m, ubicado dentro de la carpeta toolbox/local de Matlab, se pueda editar. Para ello escribimos el siguiente comando en la terminal, cambiando la ruta de… Leer más »
N4n0
Admin

¡Buenas, Luís! No, no tienes que escribirlo ni en Matlab ni en Arduino, sino en la Terminal, la línea de comandos de Linux. Si utilizas Ubuntu tienes un icono en el escritorio que te permite abrirlo (https://help.ubuntu.com/community/UsingTheTerminal)

Gcesena
Humano

Que tal! excelente post como muchos otros que tienes.

Intenté instalar el programa “adioes” a arduino pero me lanza este error “avrdude stk500_recv() programmer is not responding”. ¿Sabes que podría ser? Tengo fedora 21 y he utilizado arduino uno anteriormente sin problemas.

Saludos.

Jander
Humano

Hola, soy usuario de mac y tengo un arduino uno r3 como tu y Matlab R2014b.

Siguiendo este tutorial he conseguido realizar todos los pasos hasta que finalemente en el paso donde debemos ejecutar install_arduino, me ha devuelto esto “Undefined function or variable ‘install_arduino’.”

Tampoco he conseguido crear el symbol link de /dev/ttyACM0 ya que no lo he encontrado en /dev.

Si que puedo decirte que el puerto serie por el que accedo a mi arduino es tty.usbmodem1411

¿Podrías echarme una mano?

Muchas gracias de antemano.

trackback

[…] Linux. Si eres nuevo, te recomiendo encarecidamente que veas los tutoriales anteriores. Hay tres: configurar Arduino y Matlab (esencial), encender y apagar un LED y mover un […]

trackback

[…] a enseñaros cómo controlar un Servomotor con Matlab a través de Arduino. Si eres nuevo deberás configurar primero tu Arduino para que pueda comunicarse con Matlab, y quizás quieras hacer el primer tutorial de ejemplo, un […]

trackback

[…] Si no lo has hecho ya, deberás configurar Matlab y Arduino para que puedan interaccionar. Descubre cómo en mi último tutorial. […]

wpDiscuz