Taula de continguts:

Projecte EF230 Smart Home: 7 passos
Projecte EF230 Smart Home: 7 passos

Vídeo: Projecte EF230 Smart Home: 7 passos

Vídeo: Projecte EF230 Smart Home: 7 passos
Vídeo: 10 ГАДЖЕТОВ, КОТОРЫЕ ИЗМЕНЯТ ВАШУ ЖИЗНЬ 2024, De novembre
Anonim
Projecte EF230 Smart Home
Projecte EF230 Smart Home

Peces i materials necessaris:

  • 1 Arduino MKR 1000
  • 3 taules de pa
  • 2 mini fotocèl·lules
  • 1 transistors NPN
  • 1 mini interruptor d’alimentació
  • 1 LED - RGB (4 puntes)
  • 1 LED (color que trieu)
  • 1 díode 1N4148
  • 1 resistències de 10K Ohm
  • Resistència de 5 100 Ohm
  • 1 sensor de temperatura TMP36
  • 1 motor DAGU 48: 1 Ratio Gearmotor
  • 25 cables de pont
  • Cable USB
  • Programa MATLAB
  • Guia d'experimentació SIK per a la placa Arduino 101 / Genuino 101 - Enllaç Guia d'experimentació SIK

Aquest projecte detalla el disseny conceptual d’un sistema de llar intel·ligent que utilitza les dades per ajudar els propietaris a optimitzar el seu ús i seguretat d’energia. Inclou un sensor de llum per encendre llums exteriors a la nit, un sensor de llum per a seguretat i un sensor de temperatura i ventilador per al control de temperatura interior.

Pas 1: LED sensible a la llum

  • La configuració LED sensible a la llum està dissenyada per representar les llums exteriors d’una casa que s’encén a la nit.
  • Quan la mini fotocèl·lula detecta una quantitat reduïda de llum, el LED s’encendrà.
  • Per a una llar intel·ligent, això té implicacions energètiques i de seguretat. Estalviarà energia deixant els llums apagats durant el dia i proporcionarà més seguretat a la nit.
  • El cablejat i la configuració exactes d’aquesta part del projecte es poden trobar a l’experiment 7 de la Guia d’experiments SIK.

Pas 2: Mini interruptor d’alimentació

  • El canvi és el primer pas del procés de seguretat de la casa intel·ligent.
  • Quan estigui activat, el commutador iniciarà una resposta preguntant a l'usuari si vol entrar al mode "Inici" o "Aus".
  • Si se selecciona el mode "Inici", la seguretat es considerarà desarmada, però si seleccioneu el mode "Fora" s'armarà el sistema de seguretat.
  • El cablejat d'aquesta part del projecte es pot trobar a l'experiment 6 de la Guia de l'experiment. Als efectes de la casa intel·ligent, no cal incloure els LED i els seus cables de connexió que es troben a l’experiment 6.

Pas 3: segona fotocèl·lula

Segon fotocèl·lula
Segon fotocèl·lula
  • La segona fotocèl·lula serveix com a sensor de moviment per al sistema de seguretat de la casa intel·ligent.
  • El sensor només s'utilitza quan el sistema es posa en mode "Away", tal com es descriu al pas anterior.
  • Si la fotocèl·lula experimenta una disminució de la quantitat de llum que rep, ho reconeix com a moviment a l'interior de la casa.
  • La configuració d'aquesta part del projecte es troba a l'experiment 7 de la Guia d'experimentació SIK. Tot i això, només cal incloure la fotocèl·lula i els seus cables de connexió al cablejat.

Pas 4: LED RGB

  • El LED RGB s’utilitza conjuntament amb el mini interruptor d’alimentació i la segona fotocèl·lula per al sistema de seguretat de la casa intel·ligent.
  • Els tres colors diferents s’utilitzen com a indicadors per al resident de la casa intel·ligent.
  • Quan el sistema es posa en mode "Inici", el LED es torna blau. Quan el sistema es col·loca en mode "Away", el LED es posa de color verd. Quan s’activa la fotocèl·lula que s’utilitza com a sensor de moviment, la llum parpelleja de vermell.
  • El cablejat del LED RGB es pot trobar a l’experiment 3 de la Guia de l’experiment SIK.

Pas 5: sensor de temperatura

  • El sensor de temperatura és una part important de la conservació de l’energia a la casa intel·ligent.
  • El resident pot introduir la temperatura desitjada per a la seva llar quan s’utilitza la llar intel·ligent.
  • El sensor de temperatura és com el sistema sap a quina distància es troba la temperatura real de la temperatura desitjada.
  • La configuració del sensor de temperatura es troba a l’experiment 9 de la Guia de l’experiment SIK.

Pas 6: Motorreductor DAGU

Motor d’engranatges DAGU
Motor d’engranatges DAGU
  • El motor permet a la casa intel·ligent regular la temperatura de la casa en funció de la temperatura desitjada i de les lectures del sensor de temperatura.
  • Actuant com a unitat de corrent altern a la llar, el motor gira a diferents velocitats en funció de quant sigui més alta la temperatura real que la temperatura desitjada. Com més gran sigui la diferència, més ràpid gira el motor.
  • El cablejat del motor es troba a la Guia de l’experiment de l’experiment 11.

Pas 7: Codi

  • El codi de la casa intel·ligent inclou diverses interfícies d’usuari que permeten al resident entendre fàcilment el seu funcionament i canviar fàcilment la configuració.
  • Amb el sistema de casa intel·ligent, el resident rebrà un avís per correu electrònic si el sensor de moviment s’activa mentre estan fora.
  • L'únic canvi que cal fer és inserir la informació per al correu electrònic del remitent i l'adreça de correu electrònic del destinatari.

netejar a; clar s; clar m; clc; tancar-ho tot; % Esborreu les variables arduino i servo perquè es puguin redefinir cada vegada perquè el codi s'executi de manera eficaç ("clear m" és necessari perquè un dels bucles while funcioni correctament) a = arduino (); % Estableix la variable arduino

s = servo (a, 'D6'); % Estableix la variable servo

% Inicialitzeu les variables de correu electrònic per al correu electrònic d'advertència del sistema de seguretat

correus electrònics = {'insereix l'adreça del destinatari'}; % Matriu de correus electrònics als quals s'envia el correu electrònic de seguretat

% Configuració de les preferències de correu electrònic necessàries per utilitzar Gmail per enviar missatges des de

setpref ('Internet', 'E_mail', 'adreça de correu electrònic del remitent');

setpref ('Internet', 'SMTP_Username', 'nom d'usuari del remitent');

setpref ('Internet', 'SMTP_Password', 'contrasenya del remitent');

atrezzo = java.lang. System.getProperties;

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

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

% Assumpte del correu electrònic i variables de text

subj = 'Alerta d'intrusos a casa vostra';

text = 'Hola, aquest és el vostre sistema de seguretat Smart Home que us informa que s'ha detectat moviment fora de casa vostra. Hem pres les mesures necessàries i ens hem posat en contacte amb les autoritats. Cuidat.';

tot i que és cert

prompt = {'Introduïu la temperatura de casa desitjada (entre 65F i 85F):'}; % Sol·licita el menú d'entrada de l'usuari

dlgtitle = 'Selecció de temperatura'; % Títol per al menú d'entrada de l'usuari

dims = [1 30]; % Dimensions del menú d'entrada de l'usuari

definput = {'72'}; % Entrada per defecte que apareix quan s'obre el menú per primera vegada

tempsel_array = inputdlg (prompt, dlgtitle, dims, definput); % Menú emergent d'entrada d'usuari que desarà el número introduït en una matriu

if ~ isempty (tempsel_array)% Si la matriu NO està buida

tempsel_char = cell2mat (tempsel_array); % Converteix la matriu en una cadena de caràcters

tempsel = str2double (tempsel_char); % Converteix la cadena de caràcters en números

thingSpeakWrite (chID, tempsel, 'WriteKey', writeKey, 'Camps', 1); % Escriviu la temperatura seleccionada al vostre canal ThingSpeak

break% Trenca del bucle while perquè el menú no aparegui diverses vegades

else% Si l'usuari fa clic a cancel·la en lloc d'introduir una temperatura

msg1 = msgbox ('No s'ha seleccionat cap temperatura, per defecte a 85F', 'Atenció!'); % Missatge que es mostra a l'usuari després de fer clic a cancel·la

waitfor (msg1); % Espereu que el quadre de missatges es tanqui abans de continuar

tempsel = 85; % Estableix la temperatura a l'establerta al quadre de missatges

thingSpeakWrite (chID, tempsel, 'WriteKey', writeKey, 'Camps', 1); % Escriviu la temperatura seleccionada al vostre canal ThingSpeak

break% Trenca del bucle while perquè el menú no aparegui diverses vegades

final

final

tot i que és cert

chID = 745517; % Identificador de canal ThingSpeak

writeKey = 'G9XOQTP8KOVSCT0N'; % Clau per accedir al canal ThingSpeak

% Inicialitzeu els sensors per obtenir dades

tempread = readVoltage (a, 'A3'); % Llegiu la tensió del sensor de temperatura

lightl1 = readVoltage (a, 'A2'); % Nivell de llum per al fotoresistor que va al LED vermell

lightl2 = readVoltage (a, 'A5'); Nivell de llum per al fotoresistor que va al sistema de seguretat

switchv = readVoltage (a, 'A0'); % Del valor del commutador

% Converteix les dades de temperatura de tensió a graus Fahrenheit

tempC = (tempread - 0,5) * 100; % Converteix el voltatge en temperatura en centígrads

tempF = (tempC * 9/5) + 32; % Converteix la temperatura en centígrads a Fahrenheit

% Inicialitzeu els números de pin del LED multicolor

redp = 'D9'; % Pin per a llum vermella del LED

greenp = 'D10'; % Pin per a llum verda del LED

bluep = 'D11'; % Pin per a llum blava del LED

si tempsel <tempF% Si la temperatura seleccionada és superior a la temperatura ambient

writePosition (s, 1); % Servo començarà a moure's

pausa (10)% Servo continuarà girant durant 10 segons per indicar que la CA s'apagaria després d'un temps especificat

writePosition (s, 0); % Apagueu el ventilador per continuar el codi sense activar-lo

tempsel = 150; % Canvieu el valor de la temperatura per sortir del bucle després que el ventilador s'hagi apagat, de nou només per continuar el codi

final

si lightl1 <= 3% Si el primer fotoresistor detecta un nivell de llum baix

writeDigitalPin (a, 'A1', 1); % Enceneu el LED vermell que representa llums exteriors

else% Si el nivell de llum torna a ser alt

writeDigitalPin (a, 'A1', 0); Apagueu el LED vermell quan el nivell de llum sigui prou alt

final

si switchv> 3% Si l'interruptor està activat

A = existir ('m', 'var'); % Comproveu l'existència de la variable 'm', això s'inicialitzarà per al bucle while i permetrà que es trenqui quan se selecciona un element de menú (per això s'ha de fer l'esborrat m al començament del codi)

mentre que A == 0% Loop s'executarà fins que existeix la variable 'm'

menutext = 'Quin mode de seguretat voleu introduir?'; % Text del menú emergent de seguretat

decisions = {'Inici', 'Fora'}; % Opcions per al menú emergent de seguretat

m = menú (menú text, opcions); % Menú emergent per als modes del sistema de seguretat

break% Assegura que el bucle while està trencat de manera que el menú no apareixerà diverses vegades

final

si m == 1% Si està seleccionat el mode "Inici"

writeDigitalPin (a, bluep, 1); % Enceneu només la llum blava al LED que canvia de color

writeDigitalPin (a, redp, 0);

writeDigitalPin (a, greenp, 0);

elseif m == 2% Si està seleccionat el mode 'Fora'

writeDigitalPin (a, bluep, 0);

writeDigitalPin (a, redp, 0);

writeDigitalPin (a, greenp, 1); % Enceneu només la llum verda del LED que canvia de color

si lightl2 <= 3% Si el nivell de llum del segon fotoresistor és baix, representant el moviment detectat pel sistema de seguretat

sendmail (correus electrònics, subj, text); % Envia un correu electrònic amb les propietats de correu electrònic definides prèviament writeDigitalPin (a, greenp, 0); % Color vermell intermitent activat i desactivat 2 vegades

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); % Acabeu amb vermell continu després de parpellejar per mostrar que hi ha moviment fins que el nivell de llum torni a pujar

msg2 = msgbox ('Intrús detectat pel sistema de seguretat, s'ha enviat un correu electrònic als propietaris per informar-los.', 'AVÍS!'); % Quadre de missatges per informar l'usuari del moviment i per informar sobre el correu electrònic enviat waitfor (msg2)% Espereu que el quadre de missatges es tanqui abans de continuar

en cas contrari

writeDigitalPin (a, greenp, 1); % Un cop el nivell de llum hagi tornat a pujar, tornarà a ser verd

final

final

elseif switchv <3,3% Si l'interruptor està desactivat

writeDigitalPin (a, bluep, 0); % Apagueu el LED completament per mostrar que el sistema de seguretat està apagat

writeDigitalPin (a, redp, 0);

writeDigitalPin (a, greenp, 0);

final

final

Recomanat: