Sommario:

Progetto casa intelligente EF230: 7 passaggi
Progetto casa intelligente EF230: 7 passaggi

Video: Progetto casa intelligente EF230: 7 passaggi

Video: Progetto casa intelligente EF230: 7 passaggi
Video: LA MIA NUOVA CASA che DOMOTICA HO INSTALLATO e QUANTO COSTA 2024, Dicembre
Anonim
Progetto Casa Intelligente EF230
Progetto Casa Intelligente EF230

Parti e materiali necessari:

  • 1 Arduino MKR 1000
  • 3 taglieri
  • 2 Mini Fotocellule
  • 1 transistor NPN
  • 1 mini interruttore di alimentazione
  • 1 LED – RGB (4 poli)
  • 1 LED (colore a scelta)
  • 1 Diodo 1N4148
  • 1 resistori da 10K Ohm
  • Resistenza da 5 100 Ohm
  • 1 Sensore di temperatura TMP36
  • 1 motoriduttore rapporto DAGU 48:1
  • 25 fili di ponticello
  • Cavo USB
  • Programma MATLAB
  • Guida agli esperimenti SIK per la scheda Arduino 101/Genuino 101 - Collegamento alla guida agli esperimenti SIK

Questo progetto descrive in dettaglio la progettazione concettuale di un sistema di casa intelligente che utilizzerebbe i dati per aiutare i proprietari di case a ottimizzare l'utilizzo di energia e la sicurezza. Include un sensore di luce per accendere le luci esterne di notte, un sensore di luce per la sicurezza e un sensore di temperatura e una ventola per il controllo della temperatura interna.

Passaggio 1: LED sensibile alla luce

  • La configurazione del LED sensibile alla luce è pensata per rappresentare le luci esterne di una casa che si accende di notte.
  • Quando la mini fotocellula rileva una quantità di luce ridotta, il LED si accende.
  • Per una casa intelligente questo ha implicazioni energetiche e di sicurezza. Risparmierà energia lasciando le luci spente durante il giorno e fornirà una maggiore sicurezza durante la notte.
  • Il cablaggio e la configurazione esatti per questa parte del progetto possono essere trovati nell'esperimento 7 nella Guida all'esperimento SIK.

Passaggio 2: mini interruttore di alimentazione

  • L'interruttore è il primo passo nel processo di sicurezza della casa intelligente.
  • Quando è acceso, l'interruttore avvierà una risposta chiedendo all'utente se desidera accedere alla modalità "Casa" o "Fuori casa".
  • Se viene selezionata la modalità "Casa", la sicurezza è considerata disattivata, ma selezionando la modalità "Fuori casa" si attiverà il sistema di sicurezza.
  • Il cablaggio per questa parte del progetto può essere trovato nell'esperimento 6 nella Guida all'esperimento. Ai fini della casa intelligente, i LED e i loro cavi di collegamento trovati nell'esperimento 6 non devono essere inclusi.

Passaggio 3: seconda fotocellula

Seconda Fotocellula
Seconda Fotocellula
  • La seconda fotocellula funge da sensore di movimento per il sistema di sicurezza della casa intelligente.
  • Il sensore viene utilizzato solo quando il sistema è in modalità 'Away' come descritto nel passaggio precedente.
  • Se la fotocellula avverte una diminuzione della quantità di luce che riceve, la riconosce come movimento all'interno della casa.
  • La configurazione per questa parte del progetto può essere trovata nell'esperimento 7 nella Guida all'esperimento SIK. Tuttavia, nel cablaggio è necessario includere solo la fotocellula e i relativi cavi di collegamento.

Passaggio 4: LED RGB

  • Il LED RGB viene utilizzato in combinazione con il mini interruttore di alimentazione e la seconda fotocellula per il sistema di sicurezza della casa intelligente.
  • I tre diversi colori vengono utilizzati come indicatori per il residente della casa intelligente.
  • Quando il sistema è in modalità 'Home', il LED diventa blu. Quando il sistema è in modalità 'Away' il LED diventa verde. Quando interviene la fotocellula utilizzata come sensore di movimento, la luce lampeggia in rosso.
  • Il cablaggio per il LED RGB può essere trovato nell'esperimento 3 della SIK Experiment Guide.

Passaggio 5: sensore di temperatura

  • Il sensore di temperatura è una parte importante del risparmio energetico nella casa intelligente.
  • Il residente è in grado di inserire una temperatura desiderata per la propria casa quando la casa intelligente è in uso.
  • Il sensore di temperatura è il modo in cui il sistema sa quanto la temperatura effettiva è lontana dalla temperatura desiderata.
  • L'impostazione per il sensore di temperatura può essere trovata nell'esperimento 9 della Guida all'esperimento SIK.

Passaggio 6: motoriduttore DAGU

Motoriduttore DAGU
Motoriduttore DAGU
  • Il motore consente alla smart home di regolare la temperatura in casa in base alla temperatura desiderata e alle letture del sensore di temperatura.
  • Agendo come l'unità CA in casa, il motore girerà a velocità diverse in base a quanto è più alta la temperatura effettiva rispetto alla temperatura desiderata. Maggiore è la differenza, più velocemente il motore gira.
  • Il cablaggio per il motore può essere trovato nella Guida agli esperimenti nell'esperimento 11.

Passaggio 7: codice

  • Il codice per la casa intelligente include più interfacce utente che consentono al residente di capire facilmente come funziona e di modificare facilmente le impostazioni.
  • Con il sistema di casa intelligente, il residente riceverà un avviso via e-mail se il sensore di movimento viene attivato mentre sono assenti.
  • L'unica modifica da fare è inserire le informazioni per l'e-mail del mittente e l'indirizzo e-mail del destinatario.

chiaro un; chiara s; chiaro m; clc; chiudi tutto; % Cancella le variabili arduino e servo in modo che possano essere ridefinite ogni volta in modo che il codice venga eseguito in modo efficace ("clear m" è necessario affinché uno dei cicli while funzioni correttamente)a = arduino(); % Imposta la variabile arduino

s = servo(a, 'D6'); % Imposta la variabile servo

% Inizializza le variabili e-mail per l'e-mail di avviso del sistema di sicurezza

emails = {'inserire l'indirizzo del destinatario'}; % Array di e-mail a cui inviare l'e-mail di sicurezza

% Impostazioni delle preferenze di posta elettronica necessarie per utilizzare un Gmail per inviare la posta da

setpref('Internet', 'E_mail', 'indirizzo email del mittente');

setpref('Internet', 'Nome utente_SMTP', 'nome utente del mittente');

setpref('Internet', 'SMTP_Password', 'password del mittente');

props = 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');

% oggetto dell'email e variabili di testo

subj = 'Allarme intruso a casa tua';

text = 'Ciao, questo è il tuo sistema di sicurezza Smart Home che ti informa che è stato rilevato un movimento fuori casa. Abbiamo preso le misure necessarie e contattato le autorità per te. Rimani al sicuro.';

mentre vero

prompt = {'Inserisci la temperatura domestica desiderata (tra 65F e 85F):'}; % Richiedi il menu di input dell'utente

dlgtitle = 'Selezione temperatura'; % Titolo per il menu di input dell'utente

dim = [1 30]; % Dimensioni per il menu di input dell'utente

definput = {'72'}; % Input predefinito che viene visualizzato quando il menu viene aperto per la prima volta

tempsel_array = inputdlg(prompt, dlgtitle, dims, definput); % Menu di input utente popup che salverà il numero inserito in un array

if ~isempty(tempsel_array) % Se l'array NON è vuoto

tempsel_char = cell2mat(tempsel_array); % Converti l'array in una stringa di caratteri

tempsel = str2double(tempsel_char); % Converti la stringa di caratteri in numeri

thingSpeakWrite(chID, tempsel, 'WriteKey', writeKey, 'Fields', 1); % Scrivi la temperatura selezionata sul tuo canale ThingSpeak

break % Interrompere il ciclo while in modo che il menu non venga visualizzato più volte

else % Se l'utente fa clic su Annulla invece di inserire una temperatura

msg1 = msgbox('Nessuna temperatura selezionata, il valore predefinito è 85F', 'Attenzione!'); % Messaggio visualizzato all'utente dopo aver fatto clic su Annulla

waitfor(msg1); % Attendi che la finestra di messaggio si chiuda prima di continuare

tempsel = 85; % Impostare la temperatura su quanto indicato nella finestra del messaggio

thingSpeakWrite(chID, tempsel, 'WriteKey', writeKey, 'Fields', 1); % Scrivi la temperatura selezionata sul tuo canale ThingSpeak

break % Interrompere il ciclo while in modo che il menu non venga visualizzato più volte

fine

fine

mentre vero

ID bambino = 745517; % ID canale ThingSpeak

writeKey = 'G9XOQTP8KOVSCT0N'; Tasto % per l'accesso al canale ThingSpeak

% Inizializza i sensori per recuperare i dati

tempread = readVoltage(a, 'A3'); % Leggere la tensione del sensore di temperatura

lightl1 = readVoltage(a, 'A2'); % Livello di luce per la fotoresistenza che va al LED rosso

lightl2 = readVoltage(a, 'A5'); % Livello di luce per la fotoresistenza che va al sistema di sicurezza

switchv = readVoltage(a, 'A0'); Valore % per l'interruttore

% Converti i dati della temperatura dalla tensione in gradi Fahrenheit

tempC = (tempread - 0,5) * 100; % Converti la tensione in temperatura in gradi Celsius

tempF = (tempC * 9/5) + 32; % Converti la temperatura in gradi Celsius in temperatura in Fahrenheit

% Inizializzare i numeri dei pin per il LED multicolore

redp = 'D9'; % Pin per luce rossa da LED

greenp = 'D10'; % Pin per luce verde da LED

bluep = 'D11'; % Pin per luce blu da LED

se tempsel < tempF % Se la temperatura selezionata è maggiore della temperatura ambiente

writePosition(s, 1); % Il servo inizierà a muoversi

pause(10) % Il servo continuerà a girare per 10 secondi per indicare che l'AC si spegnerà dopo un determinato periodo di tempo

writePosition(s, 0); % Spegnere la ventola allo scopo di continuare il codice senza ventola accesa

tempsel = 150; % Modificare il valore della temperatura per uscire dal ciclo dopo che la ventola si è spenta, di nuovo solo allo scopo di continuare il codice

fine

if lightl1 <= 3 % Se la prima fotoresistenza rileva un basso livello di luce

writeDigitalPin(a, 'A1', 1); % Accendere il LED rosso che rappresenta le luci esterne

altrimenti % Se il livello di luce è di nuovo alto

writeDigitalPin(a, 'A1', 0); % Spegnere il LED rosso quando il livello di luce è di nuovo abbastanza alto

fine

se interruttorev > 3 % Se l'interruttore è acceso

A = esiste('m', 'var'); % Verifica l'esistenza della variabile 'm', questo verrà inizializzato per il ciclo while e consentirà di interromperlo quando viene selezionata una voce di menu (questo è il motivo per cui clear m deve essere eseguito all'inizio del codice)

mentre A==0 % Il ciclo verrà eseguito finché non esiste la variabile 'm'

menutext = 'In quale modalità di sicurezza vuoi entrare?'; % Testo per il menu a comparsa di sicurezza

scelte = {'Casa', 'Fuori'}; % Scelte per il menu a comparsa di sicurezza

m = menu(testomenu, scelte); % Menu a comparsa per le modalità del sistema di sicurezza

break % Assicura che il ciclo while sia interrotto in modo che il menu non venga visualizzato più volte

fine

if m == 1 % Se è selezionata la modalità 'Home'

writeDigitalPin(a, bluep, 1); % Accendere solo la luce blu nel LED che cambia colore

writeDigitalPin(a, redp, 0);

writeDigitalPin(a, greenp, 0);

elseif m == 2 % Se è selezionata la modalità 'Away'

writeDigitalPin(a, bluep, 0);

writeDigitalPin(a, redp, 0);

writeDigitalPin(a, greenp, 1); % Accendere solo la luce verde nel LED che cambia colore

if lightl2 <= 3 % Se il livello di luce nella seconda fotoresistenza è basso, rappresentando un movimento rilevato dal sistema di sicurezza

sendmail (e-mail, oggetto, testo); % Invia un messaggio di posta elettronica con le proprietà di posta elettronica precedentemente definite writeDigitalPin(a, greenp, 0); % Flash rosso acceso e spento 2 volte

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); % Termina con un rosso fisso dopo aver lampeggiato per mostrare che c'è movimento fino a quando il livello della luce non torna su

msg2 = msgbox('Intruso rilevato dal sistema di sicurezza, è stata inviata un'e-mail ai proprietari della casa per informarli.', 'ATTENZIONE!'); % Finestra di messaggio per informare l'utente del movimento e per informare sull'e-mail inviata waitfor(msg2) % Attendi che la finestra di messaggio si chiuda prima di continuare

altro

writeDigitalPin(a, greenp, 1); % Una volta che il livello di luce è aumentato di nuovo, tornerà al verde

fine

fine

elseif switchv < 3,3 % Se l'interruttore è spento

writeDigitalPin(a, bluep, 0); % Spegnere completamente il LED per mostrare che il sistema di sicurezza è spento

writeDigitalPin(a, redp, 0);

writeDigitalPin(a, greenp, 0);

fine

fine

Consigliato: