Está en la página 1de 4

COMUNICACION ENTRE MATLAB

ARDUINO
R. Yungan,
richardth794@hotmail.com
Ingeniería en Electrónica y Telecomunicaciones
Universidad Nacional de Chimborazo

Abstract — MATLAB is versatile software that can be


used for wide variety of applications. In previous tutorials
of MATLAB, we have explained how to use MATLAB to
control DC motor, Servo motor and Home appliances.
There are two ways to setup serial communication between
MATLAB and Arduino, one is using command window and
other is using MATLAB
This communication will be utilized for switching the states
of digital outputs in Arduino UNO. This is a pretty generic
method and will work for other micro controllers of the
same family. Arduino UNO has only one port for serial
communication.

Resumen:

MATLAB es un software versátil que se puede utilizar para Arduino Communicating with MATLAB
una amplia variedad de aplicaciones. En tutoriales anteriores
de MATLAB, explicamos cómo usar MATLAB para II. METODOLOGÍA
controlar motores de CC, servomotores y electrodomésticos.
Esta comunicación se utilizará para cambiar los estados de A. ¿Puedo controlar las entradas digitales en un Arduino
las salidas digitales en Arduino UNO. Este es un método usando MATLAB?
bastante genérico y funcionará para otros microcontroladores
de la misma familia. Arduino UNO tiene solo un puerto para Aquí hay una comunicación entre MATLAB y Arduino. Esta
la comunicación en serie. comunicación se utilizará para cambiar los estados de las
salidas digitales en Arduino UNO. Este es un método
bastante genérico y funcionará para otros microcontroladores
de la misma familia. Arduino UNO tiene un solo puerto para
I.INTRODUCCIÓN la comunicación en serie
La idea general que uno debe tener en cuenta cuando se trata
de conectar Arduino a Matlab es que deben comunicarse hello world
utilizando el mismo lenguaje y protocolo. Esa es la
comunicación serie a través del puerto USB. Tanto en el a) Puerto Serie
entorno de codificación Arduino como en El entorno de Un puerto serie es un canal de comunicación de datos donde
codificación Matlab tenemos comandos específicos que se transfiere 1 bit a la vez.
permiten la comunicación en serie, pero el núcleo detrás de
su funcionamiento se basa en los mismos principios:

1. Arduino y Matlab deben conocer la velocidad


(BAUD RATE) a la que comparten información y el
puerto serie físico por el que están hablando, de lo
contrario no se van a entender;
2. Ambos tienen comandos para enviar (WRITE) datos
a la otra parte a través del puerto serie.
3. Los comandos para recibir y leer datos desde el
búfer serie, que es un espacio de almacenamiento
temporal en el que los datos escritos se mantienen a Envío del carácter S a través del puerto serie
la espera de ser recogidos y eliminados (READ).
b) ¿Por qué necesitamos puertos serie? comunicación en serie ha comenzado sin problemas. En
realidad, puedes excluirlo.
El puerto serie gestiona la comunicación entre dispositivos Simplemente para no dejar nada poco claro, con el apretón
conectados. Hoy en día casi todos los IoT funcionan debido a de manos, Arduino enviar el carácter 'a' al búfer de serie, y
los puertos serie. cuando Matlab lo leerá visualizando

c) ¿Cómo funciona? "mensaje ok"

Sabremos que están hablando entre sí correctamente.


En la comunicación en serie, el receptor envía un carácter
Ahora vamos al bucle principal. Arduino siempre tiene que
(digamos 's') convirtiendo el carácter a su código binario
mantener un ojo abierto en lo que está sucediendo en el
( 01110011 ). El carácter convertido se transmite a través del
puerto serie! Así que con la línea
puerto serie del transmisor al receptor a través de
fluctuaciones en la tensión.
III. DESARROLLO

B. Conocimientos previos antes de ilustrar los códigos en A. Componentes requeridos


detalle 1. Portátil instalado en MATLAB
2. Arduino UNO
El concepto esbozando todo en la placa Arduino vamos a 3. LED
cargar un programa que, cuando se le pregunte por un 4. Resistencia
comando serial (¡medios serie que pasa a través del puerto
serie), hará que la placa recuperar la lectura de temperatura
del sensor, y posteriormente copiarlo en el búfer de serie.

Matlab, en el otro lado, hará el resto del trabajo: se ejecutará


un script, y a una frecuencia fija, enviará la cadena de
solicitud de lectura de temperatura a Arduino, y leerá el valor
de temperatura enviado al búfer serie que lo traza en tiempo
real gráfico Temperatura vs Tiempo.
Diagrama de circuito

Este es el método simple para configurar la comunicación en


serie entre Arduino y MATLAB. Aquí simplemente
enviaremos los datos de MATLAB al Arduino en serie
usando la ventana de comandos y luego Arduino leerá los
datos seriales entrantes. A continuación, estos datos
transmitidos en serie se pueden utilizar para controlar
cualquier cosa conectada al Arduino. Aquí hemos conectado
hand-to-hand un LED a Arduino, que se encenderá y apagará de acuerdo
con los datos recibidos en serie por el Arduino.

C. El código Arduino IV. CODIGOS

A. MATLAB
En el área de configuración tenemos que incluir el jugador
real del juego: inicializador de comunicación en serie. más
información aquí: a) Crearemos una función
function Matlab_Arduino(numero_muestras)
>> Arduino Serial.
close all;
Así que escribimos: clc;
Serial.begin(9600) y=zeros(1,1000);

donde 9600 es la velocidad en baudios, a saber, la velocidad


a la que nos gustaría que los dos chicos hablaran entre sí delete(instrfind({'Port'},{'COM4'}));
(estableceremos la misma velocidad cuando nos ocuparemos puerto_serial=serial('COM4');
del objeto serial Matlab). Las pocas líneas de código que puerto_serial.BaudRate=9600;
siguen son sólo un simple apretón de manos para saber si la warning('off','MATLAB:serial:fscanf:unsucc
essfulRead');
fopen(puerto_serial);

contador_muestras=1; V.RESULTADOS

A. Valores obtenidos en Arduino mediante Serial port


figure('Name','Serial comunication: Matlab
+ Arduino');
title('SERIAL COMUNICATION MATLAB +
ARDUINO');
xlabel('Numero de muetras');
ylabel('Voltaje');
grid on;
hold on;

while contador_muestras<=numero_muestras
ylim([0 5.1]);
xlim([contador_muestras-20
contador_muestras+5]); B. Valores obtenidos en Matlab
valor_pot=fscanf(puerto_serial,
'%d')';

y(contador_muestras)=(valor_pot(1))*(5/102
4);

plot(contador_muestras,y(contador_muestras
),'X-r');
drawnow

contador_muestras=contador_muestras+1;
end

fclose(puerto_serial);
delete(puerto_serial);

end

b) Para ejecutar digitartemos


VI. CONCLUSIONES
>> Matlab_Arduino(500) Tener cuidado cuando esté utilizando la comunicación en
serie. Es posible que no desee crear conflictos enviando
comandos a través del puerto serie, mientras que está en su
B. ARDUINO lugar por algún otro objeto serie, por este motivo, asegúrese
de que, una vez satisfecho con la medición, cierre el objeto
int potenciometro_pin=0; serie escribiendo en el espacio de trabajo de Matlab fclose
int valor_pot=0; (Arduino).

void setup(){ Personalmente, creo que esta configuración es una de las más
Serial.begin(9600); eficaces para permitir la comunicación entre las dos partes.
} No obstruye su PC con bibliotecas inútiles y le deja libre para
intervenir en scripts delgados personalizándolos tanto como
void loop(){ desee, manteniendo constante un montón de comandos
valor_pot=analogRead(potenciometro_pin); principales.
Serial.println(valor_pot);
delay(100);
}
VII. REFERENCIAS
[1] https://medium.com/@hasisyed/arduino-serial-communication-with-
matlab-6268957233d2

[2] https://la.mathworks.com/matlabcentral/answers/17355-matlab-arduino-
serial-communication

[3] http://wpd.ugr.es/~marubio/wp-
content/uploads/2014/07/guionArduino_Matlab.pdf

VIII. BIOGRAFÍA

Richar Arturo Yungan Guaman


tengo 25 años, estudio en la
Universidad Nacional de
Chimborazo en la carrera de
Ingeniería en Electrónica y
Telecomunicaciones, mi
aspiración ser un buen
profesional

También podría gustarte