0% encontró este documento útil (0 votos)
238 vistas

Comunicación Serial Entre MATLAB y Arduino

Este documento describe dos métodos para establecer comunicación serial entre MATLAB y Arduino. El primer método utiliza la ventana de comandos de MATLAB para enviar datos serialmente a Arduino, el cual controla un LED. El segundo método usa una interfaz gráfica de MATLAB con botones para encender y apagar el LED conectado a Arduino a través de comunicación serial. El documento también incluye el código requerido para ambos métodos.

Cargado por

Anonymous e3XZzQ
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
238 vistas

Comunicación Serial Entre MATLAB y Arduino

Este documento describe dos métodos para establecer comunicación serial entre MATLAB y Arduino. El primer método utiliza la ventana de comandos de MATLAB para enviar datos serialmente a Arduino, el cual controla un LED. El segundo método usa una interfaz gráfica de MATLAB con botones para encender y apagar el LED conectado a Arduino a través de comunicación serial. El documento también incluye el código requerido para ambos métodos.

Cargado por

Anonymous e3XZzQ
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 5

Comunicación serial entre MATLAB y Arduino

Por Pankaj Khatri 12 de octubre de 2018 1

Comunicación serial entre MATLAB y Arduino

MATLAB es un software versátil que se puede utilizar para una amplia variedad de aplicaciones. En tutoriales anteriores de MATLAB, hemos explicado cómo usar MATLAB para controlar motores de
CC , servomotores y electrodomésticos . Aquí en este tutorial, aprenderemos cómo usar MATLAB para la comunicación en serie . Para el extremo receptor de la comunicación en serie, estamos aquí usando Arduino .

Hay dos formas de configurar la comunicación en serie entre MATLAB y Arduino , una está usando la ventana de comandos y otra está usando la GUI de MATLAB. El código Arduino para ambos métodos seguirá siendo el
mismo. Si es nuevo en MATLAB, le recomendamos comenzar con un simple programa de parpadeo de LED con MATLAB y aprender la terminología básica utilizada en MATLAB.

Componentes requeridos
Laptop instalada de MATLAB (Preferencia: R2016a o versiones superiores)
Arduino UNO
LED (cualquier color)
Resistencia (330 ohmios)

Diagrama de circuito

El diagrama de circuito anterior seguirá siendo el mismo para ambas formas de establecer comunicación en serie entre MATLAB y Arduino.

Comunicación en serie utilizando la ventana de comandos de MATLAB


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 en
serie entrantes. Luego, estos datos transmitidos en serie se pueden usar para controlar cualquier cosa conectada al Arduino. Aquí hemos conectado un LED a Arduino, que se encenderá y apagará de acuerdo con los datos recibidos en
serie por Arduino.

Primero, cargue el código Arduino dado en Arduino UNO y luego comience a codificar en la Ventana del Editor de MATLAB. Para abrir un nuevo script de editor, haga clic en ' Nuevo script' como se muestra en la imagen a continuación:

Luego, copie y pegue el siguiente código completo de MATLAB en la ventana del editor para la comunicación en serie entre MATLAB y Arduino.

% Código MATLAB para comunicación en serie entre Arduino y MATLAB

x = serial ('COM18', 'BAUD', 9600);

fopen (x);
ir = verdadero;

mientras vaya
a = input ('Presione 1 para encender el LED y 0 para apagar:'); fprintf (x, a);

if (a == 2)
go = false;
fin
fin

En el código dado, el siguiente comando se utiliza para definir la comunicación en serie en MATLAB. Asegúrese de que el número de puerto com es el número de puerto en el que está conectado Arduino y que la velocidad en baudios
debe establecerse igual en los códigos de Arduino y MATLAB .

x = serial ('COM18', 'BAUD', 9600);

Para abrir el puerto serie, use el siguiente comando,

fopen (x);

El siguiente comando se utiliza para enviar datos desde MATLAB a Arduino en serie, donde x es para llamar en serie y a es el valor ingresado por el usuario.

fprintf (x, a);

Tenemos la función while para crear un bucle infinito y cada vez que el usuario ingresa el número '2', el bucle se romperá.

mientras ve

a = entrada ('Presione 1 para encender el LED y 0 para apagar:');

fprintf (x, a);


if (a == 2)
go = false;
fin
fin

Después de completar la codificación del script del editor de MATLAB, haga clic en ' EJECUTAR ' para ejecutar su programa como se muestra en la imagen a continuación,

MATLAB tarda unos segundos en procesar el código e iniciar la comunicación en serie, espere hasta que MATLAB muestre el mensaje 'OCUPADO' en la esquina inferior izquierda de la pantalla del software, como se muestra en la
imagen a continuación.

Ahora, verá la ventana de comando para enviar la entrada del usuario, hemos configurado el mensaje predeterminado,

'Presione 1 para encender el LED y 0 para apagar:'

Envíe '1' para encender el LED, '0' para apagar el LED y '2' para interrumpir la operación. Puede establecer cualquier número para cualquier tarea, todo lo que tiene que hacer es cambiar el código Arduino en consecuencia. El
código completo de Arduino se da al final.

Puede ver el video a continuación para comprender el proceso completo de envío de datos en serie de MATLAB a Arduino mediante la ventana de comandos .

Comunicación en serie utilizando la GUI de MATLAB


Para demostrar la comunicación en serie usando la GUI de MATLAB, crearemos dos botones gráficos usando MATLAB para encender y apagar el LED conectado al Arduino. Los datos se enviarán en serie desde MATLAB a Arduino
al hacer clic en estos botones para encender y apagar el LED. Arduino contendrá el código para recibir datos en serie de MATLAB y controlar el LED de acuerdo con los datos en serie recibidos. El código Arduino seguirá siendo el
mismo que el anterior, la única diferencia es que, anteriormente, estábamos enviando datos en serie '1' y '0' a través de la ventana de comandos de MATLAB, y ahora los mismos datos se enviarán al hacer clic en dos botones gráficos.
Para iniciar la GUI, escriba el siguiente comando en la ventana de comandos

guía

Se abrirá una ventana emergente, luego seleccione una nueva GUI en blanco como se muestra en la imagen a continuación,

Ahora elija dos botones para ENCENDER y APAGAR el LED, como se muestra a continuación,

Para cambiar el tamaño o cambiar la forma de los botones, simplemente haga clic en él y podrá arrastrar las esquinas del botón. Al hacer doble clic en el botón, puede cambiar el color, la cadena y la etiqueta de ese botón en
particular. Hemos personalizado dos botones como se muestra en la imagen de abajo.

Puede personalizar los botones según su elección. Ahora, cuando guarde esto, se generará un código en la ventana Editor de MATLAB. Edite este código de acuerdo con la tarea que desea realizar con su Arduino utilizando la GUI de
MATLAB. A continuación, hemos editado el código MATLAB. Puede obtener más información sobre la ventana de comandos, la ventana del editor, etc. en el tutorial de introducción a MATLAB.

El código completo de MATLAB, para establecer la comunicación en serie entre MATLAB y Arduino, se proporciona al final de este proyecto. Además, incluimos el archivo GUI (.fig) y el archivo de código (.m) aquí para
descargar (haga clic con el botón derecho en el enlace y luego seleccione 'Guardar enlace como ...'), mediante el cual puede personalizar los botones según sus necesidades. A continuación hay algunos ajustes que hicimos para
controlar el LED conectado con Arduino.

Copie y pegue el siguiente código en la línea no. 74 para configurar el puerto serie y la velocidad en baudios.

limpiar todo;
x global;
x = serial ('COM18', 'BAUD', 9600); % Asegúrese de que la velocidad en baudios y el puerto COM sean
% iguales que en Arduino IDE
fopen (x);
donde, fopen (x) se utiliza para abrir el puerto serie para la comunicación en serie.

Cuando se desplace hacia abajo, verá que hay dos funciones creadas para ambos Botones en la GUI. Ahora escriba el código en ambas funciones de acuerdo con la tarea que desea realizar al hacer clic.

En la función del botón LED-ON , copie y pegue el siguiente código justo antes del final de la función para encender el LED. Como puede ver en el siguiente código, fprintf (x, 1) se usa para enviar datos en serie desde MATLAB a
Arduino en serie. Aquí estamos enviando '1' a la serie de Arduino y si verifica el código de Arduino, encontrará que Arduino encenderá el LED al hacer su 13 ° pin ALTO, cuando reciba '1' en su puerto serie.

x global;
fprintf (x, 1);

En la función del botón LED-OFF , copie y pegue el siguiente código justo antes del final de la función para apagar el LED. Como puede ver en el siguiente código, fprintf (x, 0) se usa para enviar datos en serie desde MATLAB a
Arduino en serie. En esta parte, estamos enviando '0' a la serie de Arduino y si verifica el código de Arduino, encontrará que Arduino apagará el LED al hacer su 13 ° pin BAJO, cuando reciba '0' en su puerto serie .

x global;
fprintf (x, 0);

Después de completar con la codificación GUI de MATLAB y configurar el hardware de acuerdo con el diagrama de circuito, simplemente haga clic en el botón Ejecutar para ejecutar el código editado en el archivo .m.

MATLAB puede tardar unos segundos en responder, no haga clic en ningún botón GUI hasta que MATLAB muestre la indicación OCUPADO, que puede ver en la esquina inferior izquierda de la pantalla como se muestra a continuación,

Cuando todo esté listo, haga clic en el botón LED-ON y LED-OFF para encender y apagar el LED. Cuando presiona el botón LED-ON , el 13 ° pin de Arduino se ALTA y el LED conectado a este PIN comienza a brillar, y cuando presiona
el botón LED-OFF , el 13 ° pin de Arduino se BAJA, lo que hace que el LED se apague.

Puede ver el video a continuación para comprender el proceso completo de envío de datos en serie de MATLAB a Arduino utilizando la GUI de MATLAB .

Código
Código Arduino para la comunicación en serie entre MATLAB y Arduino

valor int;

configuración nula ()
{
Serial.begin (9600);
pinMode (13, SALIDA);
}

void loop ()
{
if (Serial.available ()> 0)
{
value = Serial.read ();

if (valor == 1)
{
digitalWrite (13, ALTO);
}
if (valor == 0)
{
digitalWrite (13, BAJO);
}
}
}

Código de MATLAB para la comunicación en serie utilizando la GUI de MATLAB

función varargout = final (varargin)

gui_Singleton = 1;
gui_State = struct ('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @final_OpeningFcn, ...
'gui_OutputFcn', @final_OutputFcn, ...
'gui_LayoutFcn', [],. ..
'gui_Callback', []);
if nargin && ischar (varargin {1})
gui_State.gui_Callback = str2func (varargin {1});
final

if nargout
[varargout {1: nargout}] = gui_mainfcn (gui_State, varargin {:});
de lo contrario
gui_mainfcn (gui_State, varargin {:});
final

handle.output = hObject;

guidata (objeto, asas);

función varargout = final_OutputFcn (hObject, eventdata, handle)

varargout {1} = maneja.salida;


limpiar todo;
x global;
x = serial ('COM18', 'BAUD', 9600); % Asegúrese de que la velocidad en baudios y el puerto COM sean
% iguales que en Arduino IDE
fopen (x);

función turnonled_Callback (hObject, eventdata, handle)


x global;
fprintf (x, 1);

función turnoffled_Callback (hObject, eventdata, handle)

x global;
fprintf (x, 0);

Vídeo

También podría gustarte