¿Cómo controlar los electrodomésticos con MATLAB?

La tecnología de redes de automatización del hogar se desarrolló a finales de los 90 y el protocolo de comunicación utilizado en ese momento fue X10 . Desde entonces el concepto de automatización está ganando popularidad y se han inventado los últimos protocolos que se encargan de la comunicación entre dispositivos electrónicos. Teniendo en cuenta el concepto de automatización pensé por qué no controlar todos los aparatos domésticos con el software más renombrado conocido como MATLAB. En este proyecto, diseñaremos un sistema de Automatización y luego lo controlaremos dando un comando Serial. El software que se utilizará para operar este sistema se llama MATLAB y después de completar este proyecto seremos capaces de controlar nuestros electrodomésticos con sólo sentarse en el sofá o acostarse en la cama.

Sistema de automatización

¿Cómo automatizar sus electrodomésticos usando la GUI de MATLAB?

Ahora pasemos a reunir los componentes, ensamblarlos para hacer un circuito, hacer una Interfaz Gráfica de Usuario (GUI) de MATLAB y escribir el código en MATLAB para automatizar sus electrodomésticos.

Paso 1: Componentes necesarios (Hardware)

Siempre es mejor conocer los componentes en detalle antes de comenzar el proyecto para evitar cualquier inconveniente en medio del proyecto. A continuación se muestra la lista de componentes que vamos a utilizar:

  • Arduino UNO
  • Relevo de 12V 4 canales
  • MAX232 IC
  • Módulo convertidor de RS232 a puerto serie TTL
  • Bombilla de 12V AC
  • Alambres de salto para Arduino
  • USB a RS232 Adaptador de cable macho DB9 serial
  • Tablero de anuncios

Aquí, estamos usando un módulo de 8 relevos porque sólo controlaremos ocho aparatos. Si quieres automatizar un número de aparatos que tienes, puedes usar un módulo de relé diferente. Hay muchos módulos de relés disponibles en el mercado, por ejemplo, sencillo, de 8 relés, de 12 relés, etc.

Paso 2: Componentes necesarios (Software)

Después de arreglar los componentes de hardware buscaremos el software que se utilizará en el proyecto. Instalaremos la última versión de MATLAB en nuestro portátil o PC en el que estemos trabajando. MATLAB 2019 es el último software, así que es mejor descargar MATLAB 2019. El enlace a la página web oficial de Mathworks está disponible más abajo para descargar el software. Los paquetes de soporte de hardware están disponibles en MATLAB 2019 para Windows y Linux de 32 bits y 64 bits.

  • Proteus 8 Professional (Puede ser descargado desde aquí)
  • MATLAB 2019 (Puede ser descargado desde aquí)

Después de descargar el Proteus 8 Professional, diseñe el circuito en él. He incluido aquí simulaciones de software para que sea conveniente para los principiantes diseñar el circuito y hacer las conexiones apropiadas en el hardware.

Paso 3: Estudiar los componentes

Ahora, como hemos hecho una lista de todos los componentes que vamos a utilizar en este proyecto. Demos un paso más y hagamos un breve estudio de todos los principales componentes de hardware.

Arduino UNO: El Arduino UNO es una placa microcontroladora que consta de un microchip ATMega 328P y es desarrollada por Arduino.cc. Esta placa tiene un conjunto de pines de datos digitales y analógicos que se pueden interconectar con otras placas o circuitos de expansión. Esta placa tiene 14 pines digitales, 6 pines analógicos y es programable con el IDE (Entorno de Desarrollo Integrado) de Arduino a través de un cable USB tipo B. Requiere 5V para encenderse ON y un Código C para funcionar.

Arduino ONU

Módulo de relevo de 12V: Un módulo de relés es un dispositivo de conmutación. Recibe una señal y conmuta cualquier dispositivo o aparato electrónico de acuerdo con la señal de entrada. Funciona en dos modos, Normalmente Abierto (NO) y Normalmente Cerrado (NC). En el modo Normalmente Abierto, el circuito se rompe inicialmente cuando la señal de entrada al relé es BAJA. En el modo Normalmente Cerrado, el circuito se completa inicialmente cuando la señal de entrada es BAJA.

12V Módulo de Relevo

Módulo convertidor de RS232 a puerto serie TTL: Este módulo se utiliza para la comunicación en serie. Nuestra placa Arduino UNO tiene un puerto de comunicación serial llamado UART o USART. Hay dos pines en la placa Arduino que son responsables de la comunicación serial TX y RX (Pin 0 y pin 1). Estos dos pines también están presentes en el módulo RS232. Este módulo es alimentado por 5V de Arduino y convierte 5V a 12V para operar diferentes aparatos que funcionan con 12V. Utilizamos este módulo porque los aparatos electrónicos no funcionan con 5V.

También te puede interesar:  Creando una estación meteorológica basada en la web usando el ESP32

Tablero RS232

Paso 4: Comprensión del principio de funcionamiento

Después de completar este proyecto podremos controlar los aparatos a distancia dando el comando en serie. La placa Arduino se utiliza para la comunicación en serie con el RS232. Los aparatos se conectan al módulo de relés y el RS232 se conecta a los pines TX y RX del Arduino y cuando se presiona un botón en MATLAB se genera un comando en serie y se envía al puerto serie del RS232 que a su vez enciende o apaga el aparato. En primer lugar, MATLAB se interconecta con la placa Arduino y luego el circuito se implementa en el hardware. Si alguien tiene un problema con la interfase de MATLAB con Arduino puede consultar mi artículo titulado ¿CÓMO INTERFACETAR ARDUINO CON MATLAB? y entonces podrá implementar este proyecto en el hardware. Después de completar este proyecto instalarlo en un lugar adecuado, la ubicación preferida es cerca de la toma donde se coloca el cableado de los aparatos para que el módulo de relé pueda ser instalado fácilmente allí.

Paso 5: Diagrama de circuito

El diagrama de circuito del proteus del proyecto se verá así. Conecta los componentes de hardware de acuerdo con este circuito más adelante.

Diagrama de circuito

Paso 6: Empezar a usar MATLAB

Después de diseñar el circuito en el Proteus, abra MATLAB y escriba ” guía ” en la ventana de comandos. Se abrirá un cuadro de diálogo y desde ese cuadro seleccione Blank GUI. Aparecerá una paleta de componentes a la izquierda y en ella se listarán los componentes que desee colocar en su GUI.

Paleta de componentes

Selecciona el pulsador y coloca 16 pulsadores en el panel. En primer lugar, coloque el botón de encendido y luego coloque el botón de apagado en paralelo a él. Los colores y nombres de los botones pueden ser modificados haciendo doble clic en los botones. Después de hacer clic en los pulsadores se abrirá la ventana del inspector y algunas propiedades del botón pueden ser modificadas allí. Para cambiar el nombre del botón busque la opción cadena escriba ON en él.

Cambiando el nombre del botón

Después de cambiar el nombre del botón cambia el color de fondo. ( Nota: Este paso es opcional y puedes omitirlo si no quieres cambiar el color de fondo)

Cambiando el color de fondo

Coloque 16 pulsadores y haga los cambios anteriores en la ventana del inspector. Para nombrar los relés se utiliza la opción de texto estático situada en la barra de la izquierda. El aspecto final de mi GUI se muestra a continuación:

GUI final

Después de hacer el GUI abrir el código GUI que se crea en el backend y hacer algunas alteraciones en el código que se indican como bajo.

Paso 7: Código MATLAB de GUI:

función varargout = final(varargin)
Código FINAL MATLAB para final.fig
El FINAL, por sí mismo, crea un nuevo FINAL o eleva el existente
% singleton*.
%
H = FINAL devuelve el mango a un nuevo FINAL o el mango a
el singleton existente*.
%
FINAL ($0027CALLBACK$0027,hObject,eventData,handles,...) llama al local
función llamada CALLBACK en FINAL.M con los argumentos de entrada dados.
%
% FINAL ($0027Propiedad$0027,$0027Valor$0027,...) crea un nuevo FINAL o eleva el
% de monotonía existente*. Empezando por la izquierda, los pares de valor de la propiedad son
aplicado a la interfaz gráfica de usuario antes de que se llame a final_OpeningFcn. Un
El nombre de la propiedad no reconocido o el valor inválido hace que la propiedad se aplique
% de parada. Todas las entradas se pasan a final_OpeningFcn vía varargin.
%
% *Ver las opciones de la GUI en el menú de herramientas de la GUIA. Elija "GUI permite sólo una
% instancia a ejecutar (singleton)".
%
% Véase también: GUÍA, GUIDATA, GUIAS
Edita el texto anterior para modificar la respuesta de la ayuda final.
% Última modificación por GUIDE v2.5 25-Ago-2019 13:10:11
% Begin código de inicialización - NO EDITAR
gui_Singleton = 1;
gui_State = struct($0027gui_Name$0027, mfilename, ...
 $0027gui_Singleton$0027, gui_Singleton, ...
 $0027gui_OpeningFcn$0027, @final_OpeningFcn, ...
 $0027gui_OutputFcn$0027, @final_OutputFcn, ...
 $0027gui_LayoutFcn$0027, [] , ...
 $0027gui_Callback$0027, []);
si nargin && ischar(varargin{1})
 gui_State.gui_Callback = str2func(varargin{1});
end
si nargout
 [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
 gui_mainfcn(gui_State, varargin{:});
end
Código de inicialización final - NO EDITAR
Se ejecuta justo antes de que el final se haga visible.
function final_OpeningFcn(hObject, eventdata, handles, varargin)
% Esta función no tiene arcos de salida, ver OutputFcn.
% hObjeto manejar para figurar
% eventdata reservado - a ser definido en una futura versión de MATLAB
% maneja la estructura con los mangos y los datos del usuario (ver GUIDATA)
% de argumentos de línea de comando de varargin al final (ver VARARGIN)
Elija la salida de la línea de comando predeterminada para la última
handles.output = hObject;
Actualizar la estructura de los controles
guidata(hObjeto, manijas);
UIWAIT hace la espera final para la respuesta del usuario (ver UIRESUME)
% uiwait(handles.figure1);
% --- Las salidas de esta función se devuelven a la línea de comando.
function varargout = final_OutputFcn(hObject, eventdata, handles)
% varargout cell array para devolver los arcos de salida (ver VARARGOUT);
% hObjeto a la figura
% eventdata reservado - a ser definido en una futura versión de MATLAB
% maneja la estructura con los mangos y los datos del usuario (ver GUIDATA)
Obtener la salida de la línea de comandos por defecto de la estructura de los mangos
varargout{1} = handles.output;
borrar todo;
a global;
a = arduino;
% --- Se ejecuta al pulsar el botón en el pulsador1.
function pushbutton1_Callback(hObjeto, eventdata, handles)
% hObjeto mango del pulsador1 (ver GCBO)
% eventdata reservado - a ser definido en una futura versión de MATLAB
% maneja la estructura con los mangos y los datos del usuario (ver GUIDATA)
a. global
escribeDigitalPin(a,$0027D6$0027,0);
% --- Se ejecuta al pulsar el botón en el pulsador2.
function pushbutton2_Callback(hObjeto, eventdata, maneja)
% hObjeto mango del pulsador2 (ver GCBO)
% eventdata reservado - a ser definido en una futura versión de MATLAB
% maneja la estructura con los mangos y los datos del usuario (ver GUIDATA)
a. global
escribeDigitalPin(a,$0027D6$0027,1);
% --- Se ejecuta al pulsar el botón en el pulsador3.
función pulsador3_Callback(hObjeto, eventdata, maneja)
% hObjeto mango del pulsador3 (ver GCBO)
% eventdata reservado - a ser definido en una futura versión de MATLAB
% maneja la estructura con los mangos y los datos del usuario (ver GUIDATA)
a. global
escribeDigitalPin(a,$0027D7$0027,0);
% --- Se ejecuta al pulsar el botón en el pulsador4.
función pulsador4_Callback(hObjeto, eventdata, maneja)
% hObjeto mango del pulsador4 (ver GCBO)
% eventdata reservado - a ser definido en una futura versión de MATLAB
% maneja la estructura con los mangos y los datos del usuario (ver GUIDATA)
a. global
Escriba "Digital Pin" (a, "D7", 1).
Se ejecuta al pulsar el botón en el botón 5.
función pulsador5_Callback(hObjeto, eventdata, maneja)
% hObjeto mango del pulsador5 (ver GCBO)
% eventdata reservado - a ser definido en una futura versión de MATLAB
% maneja la estructura con los mangos y los datos del usuario (ver GUIDATA)
a. global
escribeDigitalPin(a,$0027D8$0027,0);
% --- Se ejecuta al pulsar el botón en el pulsador6.
función pulsador6_Callback(hObjeto, eventdata, maneja)
% hObjeto mango del pulsador6 (ver GCBO)
% eventdata reservado - a ser definido en una futura versión de MATLAB
% maneja la estructura con los mangos y los datos del usuario (ver GUIDATA)
a. global
escribeDigitalPin(a,$0027D8$0027,1);
% --- Se ejecuta al pulsar el botón7.
función pulsador7_Callback(hObjeto, eventdata, maneja)
% hObjeto mango del pulsador7 (ver GCBO)
% eventdata reservado - a ser definido en una futura versión de MATLAB
% maneja la estructura con los mangos y los datos del usuario (ver GUIDATA)
a. global
escribeDigitalPin(a,$0027D9$0027,0);
% --- Se ejecuta al pulsar el botón en el pulsador8.
función pulsador8_Callback(hObjeto, eventdata, maneja)
% hObjeto mango del pulsador8 (ver GCBO)
% eventdata reservado - a ser definido en una futura versión de MATLAB
% maneja la estructura con los mangos y los datos del usuario (ver GUIDATA)
a. global
escribeDigitalPin(a,$0027D9$0027,1);
% --- Se ejecuta al pulsar el botón en el pulsador9.
función pulsador9_Callback(hObjeto, eventdata, maneja)
% hObjeto mango del pulsador9 (ver GCBO)
% eventdata reservado - a ser definido en una futura versión de MATLAB
% maneja la estructura con los mangos y los datos del usuario (ver GUIDATA)
a. global
escribeDigitalPin(a,$0027D10$0027,0);
% --- Se ejecuta al pulsar el botón en el pulsador10.
función pulsador10_Callback(hObjeto, eventdata, maneja)
% hObjeto mango del pulsador10 (ver GCBO)
% eventdata reservado - a ser definido en una futura versión de MATLAB
% maneja la estructura con los mangos y los datos del usuario (ver GUIDATA)
a. global
escribeDigitalPin(a,$0027D10$0027,1);
% --- Se ejecuta al pulsar el botón en el pulsador11.
función pulsador11_Callback(hObjeto, eventdata, maneja)
% hObjeto mango del pulsador11 (ver GCBO)
% eventdata reservado - a ser definido en una futura versión de MATLAB
% maneja la estructura con los mangos y los datos del usuario (ver GUIDATA)
a. global
escribeDigitalPin(a,$0027D11$0027,0);
% --- Se ejecuta al pulsar el botón en el pulsador12.
función pulsador12_Callback(hObjeto, eventdata, maneja)
% hObjeto mango del pulsador12 (ver GCBO)
% eventdata reservado - a ser definido en una futura versión de MATLAB
% maneja la estructura con los mangos y los datos del usuario (ver GUIDATA)
a. global
escribeDigitalPin(a,$0027D11$0027,1);
% --- Se ejecuta al pulsar el botón en el pulsador13.
función pulsador13_Callback(hObjeto, eventdata, maneja)
% hObjeto mango del pulsador13 (ver GCBO)
% eventdata reservado - a ser definido en una futura versión de MATLAB
% maneja la estructura con los mangos y los datos del usuario (ver GUIDATA)
a. global
escribeDigitalPin(a,$0027D12$0027,0);
% --- Se ejecuta al pulsar el botón en el pulsador14.
función pulsador14_Callback(hObjeto, eventdata, maneja)
% hObjeto mango al pulsador14 (ver GCBO)
% eventdata reservado - a ser definido en una futura versión de MATLAB
% maneja la estructura con los mangos y los datos del usuario (ver GUIDATA)
a. global
escribeDigitalPin(a,$0027D12$0027,1);
% --- Se ejecuta al pulsar el botón en el pulsador15.
función pulsador15_Callback(hObjeto, eventdata, maneja)
% hObjeto mango del pulsador15 (ver GCBO)
% eventdata reservado - a ser definido en una futura versión de MATLAB
% maneja la estructura con los mangos y los datos del usuario (ver GUIDATA)
a. global
escribeDigitalPin(a,$0027D13$0027,0);
% --- Se ejecuta al pulsar el botón en el pulsador16.
función pulsador16_Callback(hObjeto, eventdata, maneja)
% hObjeto mango al pulsador16 (ver GCBO)
% eventdata reservado - a ser definido en una futura versión de MATLAB
% maneja la estructura con los mangos y los datos del usuario (ver GUIDATA)
a. global
escribeDigitalPin(a,$0027D13$0027,1);

El archivo m junto con el código GUI puede ser descargado desde aquí.

También te puede interesar:  ¿Cómo hacer que el robot de evasión de obstáculos usando Arduino?

Paso 8: Explicación del código

Cuando creamos el código GUI de MATLAB se genera automáticamente en el backend y sólo necesitamos hacer algunas alteraciones en el código. Hay un total de 16 funciones en el código. Ocho son para encender ON los relés y ocho son para apagar los relés. En primer lugar, creamos una variable global llamada $0027a$0027 se declara fuera de las funciones y luego se utiliza en todas las condiciones porque es útil cuando varias funciones acceden a los mismos datos. Luego escribimos a=arduino en el Código porque estamos interconectando el Arduino con MATLAB. Todas las 16 funciones que están diseñadas para pulsadores en el Código fueron modificadas y escribimos $00270$0027 para apagar el relé y $00271$0027 para encender el relé en esas funciones. Tendrás que añadir estas dos líneas al final de cada función y modificarlas en consecuencia:

global a;
 escribeDigitalPin(a,$0027D13$0027,1);

Paso 9: Ensamblar el hardware

Después de escribir el código, empezaremos a ensamblar los componentes de hardware. En primer lugar, necesitamos saber la conectividad del módulo de relé. Coge el cable positivo del aparato y córtalo. Conecta un extremo al puerto NO y el otro extremo al puerto COM del módulo de relé. Vea la imagen de abajo y conecte los cuatro aparatos al módulo de relé como se muestra. Asegúrese de apretar los tornillos del módulo del relé para que la conexión no se rompa más tarde.

Ensamblando el circuito del módulo de relés

Después de conectar los pines NO y COM de los ocho módulos de relé con ocho aparatos conectaremos los pines OUT del módulo. Los pines 6-13 de Arduino se utilizan para conectar los pines OUT del módulo de relé. Enchufar el pin OUT del relé 1 al pin 6 de Arduino y luego hacer todas las conexiones de acuerdo al Código. Usar la placa de circuitos impresos para hacer conexiones comunes de Vcc y Tierra y luego poner los cables de estos dos pines del módulo de relé en esas conexiones. Después de hacer las conexiones del relé, conecte el Vcc y la tierra del RS232 a los 5V y la tierra del Arduino respectivamente. Conecte el pin Tx del RS232 al pin RX del Arduino y conecte el pin Rx del RS232 al pin Tx del Arduino. Tome el adaptador macho Serial DB9 y conéctelo por un lado al módulo convertidor del Puerto Serie y por el otro lado a la computadora portátil o PC que esté usando.

También te puede interesar:  ¿Cómo controlar tus aparatos electrónicos usando la aplicación universal de control remoto?

¡Eso es! Hemos completado nuestro proyecto de automatización y ahora podemos controlar nuestros aparatos usando MATLAB. No hay necesidad de levantarse y encender los aparatos, podemos encenderlos y apagarlos a distancia. Se puede implementar en los hogares y también en las oficinas, etc.

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.