Tabla de contenido:

Proyecto de hogar inteligente EF230: 7 pasos
Proyecto de hogar inteligente EF230: 7 pasos

Video: Proyecto de hogar inteligente EF230: 7 pasos

Video: Proyecto de hogar inteligente EF230: 7 pasos
Video: 🔴 DOMÓTICA EN 2023 - Cómo empezar tu CASA INTELIGENTE - MATTER 2024, Noviembre
Anonim
Proyecto de hogar inteligente EF230
Proyecto de hogar inteligente EF230

Piezas y materiales necesarios:

  • 1 Arduino MKR 1000
  • 3 placas de prueba
  • 2 Mini fotocélulas
  • 1 transistores NPN
  • 1 mini interruptor de encendido
  • 1 LED - RGB (4 clavijas)
  • 1 LED (color de su elección)
  • 1 diodo 1N4148
  • 1 resistencias de 10K ohmios
  • 5 Resistencia de 100 ohmios
  • 1 sensor de temperatura TMP36
  • 1 motorreductor de relación 48: 1 DAGU
  • 25 cables de puente
  • Cable USB
  • Programa MATLAB
  • Guía de experimentos SIK para la placa Arduino 101 / Genuino 101 - Enlace de la guía de experimentos SIK

Este proyecto detalla el diseño conceptual de un sistema de hogar inteligente que usaría datos para ayudar a los propietarios a optimizar su uso de energía y seguridad. Incluye un sensor de luz para encender las luces exteriores por la noche, un sensor de luz para la seguridad y un sensor de temperatura y ventilador para el control de la temperatura interior.

Paso 1: LED sensible a la luz

  • La configuración de LED sensibles a la luz está destinada a representar las luces exteriores de una casa que se encienden por la noche.
  • Cuando la mini fotocélula detecta una cantidad reducida de luz, el LED se encenderá.
  • Para una casa inteligente, esto tiene implicaciones energéticas y de seguridad. Ahorrará energía al dejar las luces apagadas durante el día y brindará mayor seguridad durante la noche.
  • El cableado y la configuración exactos para esta parte del proyecto se pueden encontrar en el experimento 7 en la Guía de experimentos de SIK.

Paso 2: Mini interruptor de encendido

  • El interruptor es el primer paso en el proceso de seguridad de la casa inteligente.
  • Cuando se enciende, el interruptor iniciará una respuesta preguntando al usuario si desea ingresar al modo 'En casa' o al modo 'Ausente'.
  • Si se selecciona el modo 'En casa', la seguridad se considera desarmada, pero si se selecciona el modo 'Ausente', se armará el sistema de seguridad.
  • El cableado para esta parte del proyecto se puede encontrar en el experimento 6 en la Guía de experimentos. Para los propósitos de la casa inteligente, no es necesario incluir los LED y sus cables de conexión que se encuentran en el experimento 6.

Paso 3: Segunda fotocélula

Segunda fotocélula
Segunda fotocélula
  • La segunda fotocélula sirve como sensor de movimiento para el sistema de seguridad de la casa inteligente.
  • El sensor solo se utiliza cuando el sistema se pone en modo 'Ausente' como se describe en el paso anterior.
  • Si la fotocélula experimenta una disminución en la cantidad de luz que recibe, reconoce esto como movimiento dentro de la casa.
  • La configuración para esta parte del proyecto se puede encontrar en el experimento 7 en la Guía de experimentos SIK. Sin embargo, solo la fotocélula y sus cables de conexión deben incluirse en el cableado.

Paso 4: LED RGB

  • El LED RGB se utiliza junto con el mini interruptor de encendido y la segunda fotocélula para el sistema de seguridad de la casa inteligente.
  • Los tres colores diferentes se utilizan como indicadores para el residente de una casa inteligente.
  • Cuando el sistema se coloca en el modo 'Inicio', el LED se vuelve azul. Cuando el sistema se coloca en modo 'Ausente', el LED se vuelve verde. Cuando se dispara la fotocélula utilizada como sensor de movimiento, la luz parpadea en rojo.
  • El cableado para el LED RGB se puede encontrar en el experimento 3 de la Guía de experimentos SIK.

Paso 5: sensor de temperatura

  • El sensor de temperatura es una parte importante de la conservación de energía en el hogar inteligente.
  • El residente puede ingresar la temperatura deseada para su hogar cuando la casa inteligente está en uso.
  • El sensor de temperatura es la forma en que el sistema sabe qué tan lejos está la temperatura real de la temperatura deseada.
  • La configuración del sensor de temperatura se puede encontrar en el experimento 9 de la Guía de experimentos SIK.

Paso 6: Motorreductor DAGU

Motorreductor DAGU
Motorreductor DAGU
  • El motor permite que la casa inteligente regule la temperatura en la casa en función de la temperatura deseada y las lecturas del sensor de temperatura.
  • Actuando como la unidad de aire acondicionado en el hogar, el motor girará a diferentes velocidades en función de cuánto más alta sea la temperatura real que la temperatura deseada. Cuanto mayor sea la diferencia, más rápido gira el motor.
  • El cableado del motor se puede encontrar en la Guía de experimentos en el experimento 11.

Paso 7: Código

  • El código para la casa inteligente incluye múltiples interfaces de usuario que permiten al residente comprender fácilmente cómo funciona y cambiar fácilmente la configuración.
  • Con el sistema de casa inteligente, el residente recibirá una alerta por correo electrónico si el sensor de movimiento se activa mientras está fuera.
  • El único cambio que debe realizarse es insertar la información del correo electrónico del remitente y la dirección de correo electrónico del destinatario.

claro a; claro s; claro m; clc; cierra todo; % Limpiar las variables arduino y servo para que puedan redefinirse cada vez para que el código se ejecute de manera eficaz ("clear m" es necesario para que uno de los bucles while funcione correctamente) a = arduino (); % Establecer la variable arduino

s = servo (a, 'D6'); % Establecer la servovariable

% Inicializar las variables de correo electrónico para el correo electrónico de advertencia del sistema de seguridad

emails = {'insertar dirección del destinatario'}; % Matriz de correos electrónicos a los que se enviará el correo electrónico de seguridad

% Configuración de preferencias de correo electrónico necesaria para usar Gmail para enviar correo desde

setpref ('Internet', 'E_mail', 'dirección de correo electrónico del remitente');

setpref ('Internet', 'SMTP_Username', 'nombre de usuario del remitente');

setpref ('Internet', 'SMTP_Password', 'contraseña del remitente');

props = java.lang. System.getProperties;

props.setProperty ('mail.smtp.auth', 'verdadero');

props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.port', '465');

% Asunto del correo electrónico y variables de texto

subj = 'Alerta de intrusos en su hogar';

text = 'Hola, Este es el sistema de seguridad de su hogar inteligente que le informa que se ha detectado movimiento fuera de su hogar. Hemos tomado las medidas necesarias y nos hemos puesto en contacto con las autoridades por usted. Mantenerse a salvo.';

si bien es cierto

prompt = {'Ingrese la temperatura deseada en el hogar (entre 65F y 85F):'}; % Solicitud del menú de entrada del usuario

dlgtitle = 'Selección de temperatura'; % Título del menú de entrada del usuario

dim = [1 30]; % Dimensiones para el menú de entrada del usuario

definput = {'72'}; % Entrada predeterminada que aparece cuando se abre el menú por primera vez

tempsel_array = inputdlg (indicador, dlgtitle, dims, definput); % Menú de entrada de usuario emergente que guardará el número introducido en una matriz

if ~ isempty (tempsel_array)% Si la matriz NO está vacía

tempsel_char = cell2mat (tempsel_array); % Convierte la matriz en una cadena de caracteres

tempsel = str2double (tempsel_char); % Convierte la cadena de caracteres en números

thingSpeakWrite (chID, tempsel, 'WriteKey', writeKey, 'Campos', 1); % Escribe la temperatura seleccionada en tu canal ThingSpeak

break% Rompe el ciclo while para que el menú no aparezca varias veces

else% Si el usuario hace clic en cancelar en lugar de ingresar una temperatura

msg1 = msgbox ('No se seleccionó temperatura, el valor predeterminado es 85F', '¡Advertencia!'); % Mensaje mostrado al usuario después de hacer clic en cancelar

esperar (msg1); % Espere a que se cierre el cuadro de mensaje antes de continuar

tempsel = 85; % Establezca la temperatura a lo que se indicó en el cuadro de mensaje

thingSpeakWrite (chID, tempsel, 'WriteKey', writeKey, 'Campos', 1); % Escribe la temperatura seleccionada en tu canal ThingSpeak

break% Rompe el ciclo while para que el menú no aparezca varias veces

fin

fin

si bien es cierto

chID = 745517; % ID de canal ThingSpeak

writeKey = 'G9XOQTP8KOVSCT0N'; % Clave para acceder al canal ThingSpeak

% Inicializar sensores para recuperar datos

tempread = readVoltage (a, 'A3'); % Leer el voltaje del sensor de temperatura

lightl1 = readVoltage (a, 'A2'); % Nivel de luz para el fotoresistor que va al LED rojo

lightl2 = readVoltage (a, 'A5'); % Nivel de luz para el fotorresistor que va al sistema de seguridad

switchv = readVoltage (a, 'A0'); % Valor para el interruptor

% Convierta los datos de temperatura de voltaje a grados Fahrenheit

tempC = (tempread - 0,5) * 100; % Convertir voltaje a temperatura en grados Celsius

tempF = (tempC * 9/5) + 32; % Convertir temperatura en grados Celsius a temperatura en Fahrenheit

% Inicializar los números de pin para el LED multicolor

redp = 'D9'; % Pin para luz roja de LED

greenp = 'D10'; % Pin para luz verde de LED

bluep = 'D11'; % Pin para luz azul de LED

si tempsel <tempF% Si la temperatura seleccionada es mayor que la temperatura ambiente

writePosition (s, 1); % Servo comenzará a moverse

pause (10)% El servo seguirá girando durante 10 segundos para representar que el aire acondicionado se apagará después de un período de tiempo específico

writePosition (s, 0); % Apague el ventilador con el propósito de continuar con el código sin el ventilador encendido

tempsel = 150; % Cambie el valor de temperatura para salir del bucle después de que el ventilador se haya apagado, nuevamente solo con el propósito de continuar con el código.

fin

if lightl1 <= 3% Si el primer fotorresistor detecta un nivel de luz bajo

writeDigitalPin (a, 'A1', 1); % Enciende el LED rojo que representa las luces exteriores

else% Si el nivel de luz es alto de nuevo

writeDigitalPin (a, 'A1', 0); % Apague el LED rojo cuando el nivel de luz sea lo suficientemente alto nuevamente

fin

if switchv> 3% Si el interruptor está encendido

A = existe ('m', 'var'); % Verifique la existencia de la variable 'm', esto se inicializará para el ciclo while y permitirá que se rompa cuando se seleccione un elemento del menú (es por eso que se debe borrar m al comienzo del código)

mientras que A == 0% Loop se ejecutará hasta que exista la variable 'm'

menutext = '¿A qué modo de seguridad le gustaría ingresar?'; % Texto para el menú emergente de seguridad

opciones = {'Casa', 'Ausente'}; % Opciones para el menú emergente de seguridad

m = menú (texto del menú, opciones); % Menú emergente para los modos del sistema de seguridad

break% Asegura que el ciclo while esté roto para que el menú no aparezca varias veces

fin

si m == 1% Si se selecciona el modo 'Inicio'

writeDigitalPin (a, bluep, 1); % Enciende solo la luz azul en el LED que cambia de color

writeDigitalPin (a, redp, 0);

writeDigitalPin (a, greenp, 0);

elseif m == 2% Si se selecciona el modo 'Ausente'

writeDigitalPin (a, bluep, 0);

writeDigitalPin (a, redp, 0);

writeDigitalPin (a, greenp, 1); % Enciende solo la luz verde en el LED que cambia de color

if lightl2 <= 3% Si el nivel de luz en el segundo fotorresistor es bajo, representa el movimiento detectado por el sistema de seguridad

sendmail (correos electrónicos, asunto, texto); % Enviar un correo electrónico con las propiedades de correo electrónico definidas previamente writeDigitalPin (a, greenp, 0); % Intermitente de color rojo encendido y apagado 2 veces

writeDigitalPin (a, redp, 1);

pausa (0,3)

writeDigitalPin (a, redp, 0);

pausa (0,3)

writeDigitalPin (a, redp, 1);

pausa (0.3)

writeDigitalPin (a, redp, 0);

pausa (0.3)

writeDigitalPin (a, redp, 1); % Termine con rojo sólido después de parpadear para mostrar que hay movimiento hasta que el nivel de luz vuelva a subir

msg2 = msgbox ('Intruso detectado por el sistema de seguridad, se ha enviado un correo electrónico a los propietarios para informarles.', '¡ADVERTENCIA!'); % Cuadro de mensaje para informar al usuario del movimiento y para informar sobre el correo electrónico enviado waitfor (msg2)% Espere a que se cierre el cuadro de mensaje antes de continuar

demás

writeDigitalPin (a, greenp, 1); % Una vez que el nivel de luz ha subido de nuevo, volverá a ponerse verde

fin

fin

elseif switchv <3.3% Si el interruptor está apagado

writeDigitalPin (a, bluep, 0); % Apague el LED por completo para mostrar que el sistema de seguridad está apagado

writeDigitalPin (a, redp, 0);

writeDigitalPin (a, greenp, 0);

fin

fin

Recomendado: