Comunicación Serial Entre MATLAB y Arduino
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.
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.
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 .
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.
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
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,
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 .
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);
}
}
}
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;
x global;
fprintf (x, 0);
Vídeo