Tabla de contenido:

Sistema Arduino Smart Home: 7 pasos
Sistema Arduino Smart Home: 7 pasos

Video: Sistema Arduino Smart Home: 7 pasos

Video: Sistema Arduino Smart Home: 7 pasos
Video: Умный дом на Arduino 2024, Mes de julio
Anonim
Sistema de hogar inteligente Arduino
Sistema de hogar inteligente Arduino
Sistema de hogar inteligente Arduino
Sistema de hogar inteligente Arduino

En este Instructable, le mostraremos cómo crear su propio sistema de hogar inteligente con el Diseñador de aplicaciones de MATLAB con una placa Sparkfun Red. Este Instructable se puede usar para ayudar a obtener una comprensión básica del Diseñador de aplicaciones de MATLAB, así como para usar un fotorresistor, un servomotor y un sensor de movimiento PIR.

Paso 1: Para comenzar: Materiales

Este proyecto requiere los siguientes materiales:

- Arduino Uno (Para este proyecto usamos una placa Sparkfun Red)

- Una fotorresistencia

- Un mini servomotor

- Un servomotor continuo

- Un sensor de movimiento PIR

- Un sensor de temperatura

- 2 LED

- Cables y resistencias según sea necesario

Paso 2: Paso 2: Abordar el problema a resolver

El objetivo principal de este proyecto era crear un sistema doméstico inteligente fácil de usar mediante la codificación de una placa Arduino Uno con MATLAB. Primero pensamos en trabajar con un sensor de temperatura y humedad, sin embargo, si nos quedáramos con esos dos sensores, nuestro sistema de hogar inteligente no sería fácilmente comercializable para una audiencia general. Decidimos que queríamos crear un sistema de energía doméstico inteligente general que funcionara como un termostato inteligente y un sistema de seguridad. Por último, queríamos trabajar con AppDesigner de MATLAB para que el usuario pueda modificar fácilmente la casa inteligente a su gusto.

Paso 3: Paso 3: Configuración de la GUI y el flujo de código básico

Paso 3: configurar la GUI y el flujo de código básico
Paso 3: configurar la GUI y el flujo de código básico

Para comenzar, deberá abrir MATLABs AppDesigner y colocar lo siguiente:

Dos campos de edición numéricos para una entrada de umbral caliente y frío

Un botón para desbloquear la puerta.

Y cuatro lámparas indicadoras para la chimenea, la puerta, el ventilador y el reflector.

Dos etiquetas para comunicarse con el usuario.

Para este proyecto, nos resultó más fácil trabajar con variables globales y la función de inicio dentro del diseñador. Necesitará estas variables dentro de la función de inicio:

global a

a = arduino ('COM3', 'uno', 'Bibliotecas', 'Servo'); global s global p global hotUI global coldUI global desbloqueo global temp global curr_temp global int_light

En este momento solo tenemos una asignación para la variable a para que su computadora pueda leer el arduino. COM3 puede diferir dependiendo del puerto que esté usando su computadora.

Cuando ejecute el código, se iniciará dentro de la función de inicio creando las variables globales y calibrando el sistema. Al final de esta función habrá una función de temporizador que llama a una propiedad que llamamos Timer. Dentro de esta propiedad del temporizador, colocamos el código que ejecuta el sistema doméstico para que el temporizador no vuelva a ejecutar el código de calibración.

Nota: No proporcionamos instrucciones de cableado para el sistema. Nos referimos al manual que viene con la placa SparkFun Red.

Paso 4: Paso 3: Configuración del sistema de termostato

Paso 3: Configuración del sistema de termostato
Paso 3: Configuración del sistema de termostato
Paso 3: Configuración del sistema de termostato
Paso 3: Configuración del sistema de termostato

La función del termostato funciona de la siguiente manera:

El usuario ingresará qué temperatura considera que es demasiado caliente o demasiado fría. Una vez que el termómetro toma una lectura, si la casa está demasiado fría, la "chimenea" (un LED rojo) se encenderá y calentará la casa. Si la casa hace demasiado calor, un "ventilador" (servomotor continuo) se encenderá para enfriar la casa.

Para codificar el sistema de termostato:

Comenzaremos dentro de la función de inicio para mostrar la temperatura actual y dejar que el usuario ingrese sus umbrales de frío y calor.

p = 'A0'% Pin fotorresistor

volt = readVoltage (a, temp); celc = (voltio-0,5). * 100; curr_temp = celc * 9/5 + 32; app. Label_4. Text = num2str (curr_temp); % El número de etiqueta puede cambiar la pausa (10); % Puede querer cambiar !!!!!

Luego completaremos el sistema de termostato dentro de la propiedad Timer.

curr_temp global

coldUI global global a hotUI global if curr_temp hotUI app. FanStateLamp. Color = [0.47 0.67 0.19]; % Enciende la lámpara GUI en verde writePWMDutyCycle (a, 'D11',.9)% Las siguientes tres líneas de código ejecutan la pausa del servo ventilador (10) writePWMDutyCycle (a, 'D11',.0) else app. FireplaceStateLamp. Color = [0,90 0,90 0,90]; % Esto apaga todas las lámparas GUI y la aplicación de chimenea. FanStateLamp. Color = [0.9 0.9 0.9]; writeDigitalPin (a, 'D13', 0); fin

Paso 5: Paso 4: Configuración del sistema de puerta

Paso 4: Configuración del sistema de puerta
Paso 4: Configuración del sistema de puerta

La función de la puerta funciona de la siguiente manera:

Cuando ejecute su código MATLAB por primera vez, la aplicación le pedirá que abra la puerta para que el fotorresistor pueda tomar una lectura de luz inicial. Una vez que se haya completado, el temporizador se activará y la fotorresistencia tomará lecturas de luz secundarias. Si la lectura de la luz secundaria es más ligera que la inicial, un servomotor bloqueará la puerta. Si el usuario quiere que la puerta se desbloquee, puede presionar un botón en la aplicación que abrirá la puerta.

Para configurar el servomotor y la fotorresistencia:

Para codificar el sistema de la puerta:

Comenzaremos dentro de la función de inicio para tomar las lecturas de luz iniciales.

s = servo (a, 'D9')% El pin puede cambiar según el cableado

app. Label_4. Text = 'Abra la puerta para calibrar el sistema'; pausa (15); % Esto le da tiempo al usuario para abrir la puerta int_light = readVoltage (a, p); app. Label_4. Text = 'Puede quitar el dedo';

A continuación, completaremos el código dentro de la propiedad Timer.

desbloqueo global

global int_light global s global a% Obtener una lectura de luz actual para comparar curr_light = readVoltage (a, p); % - Bloquear puerta - si int_light <curr_light writePosition (s, 1)% Las posiciones del servo pueden diferir según la pausa del motor (0.5); app. DoorStateLamp. Color = [0.47 0.67 0.19]; end% - Desbloquear puerta - si desbloquear == 1234 pausa (0.5); writePosition (s,.52) app. DoorStateLamp. Color = [0.85 0.33 0.10]; fin

Finalmente crearemos la devolución de llamada del botón de desbloqueo. Una vez que el usuario presiona el botón de desbloqueo, al desbloqueo de la variable global se le asignará un número que puede completar la declaración if final en la propiedad Timer.

desbloqueo global

desbloquear = 1234;

Paso 6: Paso 6: Configuración del sistema de iluminación de inundación

Paso 6: Configuración del sistema de iluminación de inundación
Paso 6: Configuración del sistema de iluminación de inundación

La función de la luz de inundación funciona de la siguiente manera:

Cuando inicie el código MATLAB, el sensor de movimiento PIR comenzará a detectar movimiento. Una vez que detecta algún tipo de movimiento, cortará una señal de energía. Una vez que se corta esa señal, se encenderá una luz de inundación fuera de la casa.

Para configurar el sistema de iluminación de inundación:

Para codificar el sistema de iluminación de inundación:

Esta vez podemos saltar a la propiedad Timer porque no necesitamos escribir ninguna variable adicional.

humano_detected = readDigitalPin (a, 'D2'); % Pin puede cambiar según la configuración si human_detected == 0 writeDigitalPin (a, 'D7', 1)% Pin puede cambiar app. FloodLightStateLamp. Color = [0.47 0.67 0.19]; elseif human_detected == 1 app. FloodLightStateLamp. Color = [0.9 0.9 0.9]; writeDigitalPin (a, 'D7', 0) final

Paso 7: Conclusión

Ahora que tiene un borrador de su GUI con el Diseñador de aplicaciones y su código para Arduino, ¡está listo para hacer sus propias ediciones o conectar su Arduino y listo!

Recomendado: