Cuprins:

Proiect EF230 Smart Home: 7 pași
Proiect EF230 Smart Home: 7 pași

Video: Proiect EF230 Smart Home: 7 pași

Video: Proiect EF230 Smart Home: 7 pași
Video: Python Rover EF230 Project 2024, Noiembrie
Anonim
Proiectul EF230 Smart Home
Proiectul EF230 Smart Home

Piese și materiale necesare:

  • 1 Arduino MKR 1000
  • 3 panouri de prăjitură
  • 2 mini fotocelule
  • 1 tranzistoare NPN
  • 1 mini comutator de alimentare
  • 1 LED - RGB (4 direcții)
  • 1 LED (culoarea la alegere)
  • 1 diodă 1N4148
  • 1 rezistențe 10K Ohm
  • 5 100 Ohm rezistor
  • 1 senzor de temperatură TMP36
  • 1 DAGU 48: 1 Ratomotoare
  • 25 fire jumper
  • Cablu USB
  • Programul MATLAB
  • SIK Experiment Guide pentru placa Arduino 101 / Genuino 101 - SIK Experiment Guide Link

Acest proiect detaliază proiectarea conceptuală a unui sistem inteligent de casă care ar folosi datele pentru a-i ajuta pe proprietari să își optimizeze consumul de energie și securitatea. Include un senzor de lumină pentru a aprinde luminile exterioare noaptea, un senzor de lumină pentru securitate și un senzor de temperatură și ventilator pentru controlul temperaturii interioare.

Pasul 1: LED sensibil la lumină

  • Configurarea LED sensibilă la lumină este menită să reprezinte luminile exterioare ale unei case care se aprind noaptea.
  • Când mini-fotocelula detectează o cantitate redusă de lumină, LED-ul se va aprinde.
  • Pentru o casă inteligentă, aceasta are implicații energetice și de securitate. Acesta va economisi energie lăsând luminile stinse în timpul zilei și va oferi o securitate sporită pe timp de noapte.
  • Cablajul și configurarea exacte pentru această parte a proiectului pot fi găsite în experimentul 7 din Ghidul experimentului SIK.

Pasul 2: Mini comutator de alimentare

  • Comutatorul este primul pas în procesul de securitate al casei inteligente.
  • Când este activat, comutatorul va iniția un răspuns care îi va solicita utilizatorului dacă dorește să intre în modul „Acasă” sau „Plecat”.
  • Dacă este selectat modul „Acasă”, securitatea este considerată dezarmată, dar selectarea modului „În deplasare” va înarma sistemul de securitate.
  • Cablajul pentru această porțiune a proiectului poate fi găsit în experimentul 6 din Ghidul experimentului. În scopul casei inteligente, LED-urile și firele lor de conectare găsite în experimentul 6 nu trebuie incluse.

Pasul 3: A doua fotocelula

A doua fotocelula
A doua fotocelula
  • A doua fotocelula servește ca senzor de mișcare pentru sistemul de securitate al casei inteligente.
  • Senzorul este utilizat numai atunci când sistemul este pus în modul „Depărtare” așa cum este descris în pasul anterior.
  • Dacă fotocelula se confruntă cu o scădere a cantității de lumină pe care o primește, aceasta o recunoaște ca mișcare în interiorul casei.
  • Configurarea pentru această parte a proiectului poate fi găsită în experimentul 7 din Ghidul experimentului SIK. Cu toate acestea, numai fotocelula și firele sale de conectare trebuie să fie incluse în cablare.

Pasul 4: LED RGB

  • LED-ul RGB este utilizat împreună cu mini întrerupătorul de alimentare și a doua fotocelula pentru sistemul de securitate al casei inteligente.
  • Cele trei culori diferite sunt utilizate ca indicatori pentru locuitorul inteligent.
  • Când sistemul este plasat în modul „Acasă”, LED-ul devine albastru. Când sistemul este plasat în modul „Departe”, LED-ul devine verde. Când fotocelula utilizată ca senzor de mișcare este declanșată, lumina clipește în roșu.
  • Cablarea LED-ului RGB poate fi găsită în experimentul 3 din Ghidul de experiment SIK.

Pasul 5: senzor de temperatură

  • Senzorul de temperatură este o parte majoră a conservării energiei în casa inteligentă.
  • Rezidentul este capabil să introducă temperatura dorită pentru casa lor atunci când este folosită casa inteligentă.
  • Senzorul de temperatură este modul în care sistemul știe cât de departe este temperatura reală de temperatura dorită.
  • Configurarea senzorului de temperatură poate fi găsită în experimentul 9 din Ghidul de experiment SIK.

Pasul 6: DAGU Gearmotor

Motor de viteze DAGU
Motor de viteze DAGU
  • Motorul permite locuinței inteligente să regleze temperatura din casă pe baza temperaturii dorite și a citirilor senzorului de temperatură.
  • Acționând ca unitatea de curent alternativ în casă, motorul se va roti la viteze diferite în funcție de cât de mult este mai mare temperatura reală decât temperatura dorită. Cu cât diferența este mai mare, cu atât motorul se rotește mai repede.
  • Cablajul motorului poate fi găsit în Ghidul experimentului din experimentul 11.

Pasul 7: Cod

  • Codul pentru casa inteligentă include mai multe interfețe utilizator care permit rezidentului să înțeleagă cu ușurință cum funcționează și să schimbe cu ușurință setările.
  • Cu sistemul de acasă inteligent, rezidentul va primi și avertiza prin e-mail dacă senzorul de mișcare este activat în timp ce sunt plecați.
  • Singura modificare care trebuie făcută este inserarea informațiilor pentru e-mailul expeditorului și adresa de e-mail a destinatarului.

clar a; clar s; clar m; clc; inchide tot; % Ștergeți variabilele arduino și servo, astfel încât să poată fi redefinite de fiecare dată, astfel încât codul să ruleze eficient ("clear m" este necesar pentru ca unul dintre buclele while să funcționeze corect) a = arduino (); % Setați variabila arduino

s = servo (a, 'D6'); % Setați variabila servo

% Inițializați variabilele de e-mail pentru e-mailul de avertizare al sistemului de securitate

e-mailuri = {'inserează adresa destinatarului'}; % Matrice de e-mailuri pentru a primi e-mailul de securitate

% Setări de preferință pentru e-mail necesare pentru utilizarea unui Gmail pentru a trimite e-mailuri de la

setpref („Internet”, „E-mail”, „adresa de e-mail a expeditorului”);

setpref ('Internet', 'SMTP_Username', 'numele de utilizator al expeditorului');

setpref ('Internet', 'SMTP_Password', 'parola expeditorului');

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

% Subiect de e-mail și variabile text

subj = 'Alertă de intruși la tine acasă';

text = 'Bună ziua, acesta este sistemul dvs. de securitate Smart Home care vă informează că a fost detectată mișcare în afara casei dvs. Am luat măsurile necesare și am contactat autoritățile pentru dvs. Stai in siguranta.';

în timp ce este adevărat

prompt = {'Introduceți temperatura dorită de acasă (între 65F și 85F):'}; % Solicitați meniul de introducere a utilizatorului

dlgtitle = 'Selectare temperatură'; % Titlu pentru meniul de introducere a utilizatorului

dims = [1 30]; % Dimensiuni pentru meniul de introducere a utilizatorului

definput = {'72'}; % Intrare implicită care apare la deschiderea meniului

tempsel_array = inputdlg (prompt, dlgtitle, dims, definput); % Popup meniu de introducere a utilizatorului care va salva numărul introdus într-o matrice

if ~ isempty (tempsel_array)% Dacă matricea NU este goală

tempsel_char = cell2mat (tempsel_array); % Convertiți tabloul într-un șir de caractere

tempsel = str2double (tempsel_char); % Convertiți șirul de caractere în numere

thingSpeakWrite (chID, tempsel, 'WriteKey', writeKey, 'Fields', 1); % Scrieți temperatura selectată pe canalul dvs. ThingSpeak

break% Break din bucla while, astfel încât meniul să nu apară de mai multe ori

else% Dacă utilizatorul face clic pe anulează în loc să introducă o temperatură

msg1 = msgbox ('Fără temperatură selectată, implicit la 85F', 'Atenție!'); % Mesaj afișat utilizatorului după ce a făcut clic pe anulare

waitfor (msg1); % Așteptați ca caseta de mesaje să se închidă înainte de a continua

tempsel = 85; % Setați temperatura la ceea ce a fost menționat în caseta de mesaje

thingSpeakWrite (chID, tempsel, 'WriteKey', writeKey, 'Fields', 1); % Scrieți temperatura selectată pe canalul dvs. ThingSpeak

break% Break din bucla while, astfel încât meniul să nu apară de mai multe ori

Sfârșit

Sfârșit

în timp ce este adevărat

chID = 745517; % ID-ul canalului ThingSpeak

writeKey = 'G9XOQTP8KOVSCT0N'; % Cheie pentru acces la canalul ThingSpeak

% Inițializați senzorii pentru a prelua date

tempread = readVoltage (a, 'A3'); % Citiți tensiunea senzorului de temperatură

lightl1 = readVoltage (a, 'A2'); % Nivel de lumină pentru fotorezistor care merge la LED-ul roșu

lightl2 = readVoltage (a, 'A5'); % Nivel de lumină pentru fotorezistor care merge la sistemul de securitate

switchv = readVoltage (a, 'A0'); Valoare% pentru comutator

% Convertiți datele de temperatură de la tensiune la grade Fahrenheit

tempC = (tempread - 0,5) * 100; % Convertiți tensiunea în temperatură în grade Celsius

tempF = (tempC * 9/5) + 32; % Conversia temperaturii în grade Celsius la temperatura în grade Fahrenheit

% Inițializați numerele de pin pentru LED-ul multicolor

redp = 'D9'; % Pin pentru lumina roșie de la LED

greenp = 'D10'; % Pin pentru lumina verde de la LED

bluep = 'D11'; % Pin pentru lumina albastră de la LED

dacă tempsel <tempF% Dacă temperatura selectată este mai mare decât temperatura camerei

writePosition (s, 1); % Servo va începe să se miște

pauză (10)% Servo va continua să se rotească timp de 10 secunde pentru a indica faptul că AC-ul se va opri după o perioadă de timp specificată

writePosition (s, 0); % Opriți ventilatorul pentru a continua codul fără ventilator pornit

tempsel = 150; % Modificați valoarea temperaturii pentru a ieși din buclă după ce ventilatorul s-a oprit, din nou doar în scopul continuării codului

Sfârșit

dacă lightl1 <= 3% Dacă primul fotorezistor detectează un nivel scăzut de lumină

writeDigitalPin (a, 'A1', 1); % Porniți LED-ul roșu care reprezintă luminile exterioare

else% Dacă nivelul de lumină este din nou ridicat

writeDigitalPin (a, 'A1', 0); % Opriți LED-ul roșu când nivelul de lumină este din nou suficient de ridicat

Sfârșit

dacă comutatorulv> 3% Dacă comutatorul este pornit

A = exista ('m', 'var'); % Verificați existența variabilei „m”, aceasta se va inițializa pentru bucla while și va permite să fie întreruptă atunci când este selectat un element de meniu (acesta este motivul pentru care trebuie să ștergeți m la începutul codului)

în timp ce A == 0% Bucla se va executa până când variabila 'm' există

menutext = 'În ce mod de securitate doriți să intrați?'; % Text pentru meniul popup de securitate

choix = {'Acasă', 'În deplasare'}; % Alegeri pentru meniul pop-up de securitate

m = meniu (menutext, alegeri); % Meniu pop-up pentru modurile sistemului de securitate

break% Asigură că bucla while este ruptă, astfel încât meniul să nu apară de mai multe ori

Sfârșit

dacă m == 1% Dacă este selectat modul „Acasă”

writeDigitalPin (a, bluep, 1); % Porniți doar lumina albastră la LED-ul care schimbă culoarea

writeDigitalPin (a, redp, 0);

writeDigitalPin (a, greenp, 0);

elseif m == 2% Dacă este selectat modul „Departe”

writeDigitalPin (a, bluep, 0);

writeDigitalPin (a, redp, 0);

writeDigitalPin (a, greenp, 1); % Porniți doar lumina verde în LED-ul care schimbă culoarea

dacă lightl2 <= 3% Dacă nivelul de lumină din al doilea fotorezistor este scăzut, reprezentând mișcarea detectată de sistemul de securitate

sendmail (e-mailuri, sub, text); % Trimiteți un e-mail cu proprietățile de e-mail definite anterior writeDigitalPin (a, greenp, 0); % Culoare roșie intermitentă activată și dezactivată de 2 ori

writeDigitalPin (a, redp, 1);

pauză (0,3)

writeDigitalPin (a, redp, 0);

pauză (0,3)

writeDigitalPin (a, redp, 1);

pauză (0,3)

writeDigitalPin (a, redp, 0);

pauză (0,3)

writeDigitalPin (a, redp, 1); % Terminați cu roșu continuu după ce clipiți pentru a arăta că există mișcare până când nivelul luminii revine

msg2 = msgbox („Intrus detectat de sistemul de securitate, a fost trimis un e-mail proprietarilor pentru a-i informa.”, „AVERTISMENT!”); % Casetă de mesaje pentru a informa utilizatorul despre mișcare și pentru a informa despre e-mailul trimis waitfor (msg2)% Așteptați ca caseta de mesaje să se închidă înainte de a continua

altceva

writeDigitalPin (a, greenp, 1); % Odată ce nivelul de lumină a crescut din nou, acesta va reveni la verde

Sfârșit

Sfârșit

elseif switchv <3,3% Dacă comutatorul este oprit

writeDigitalPin (a, bluep, 0); % Opriți complet LED-ul pentru a arăta că sistemul de securitate este oprit

writeDigitalPin (a, redp, 0);

writeDigitalPin (a, greenp, 0);

Sfârșit

Sfârșit

Recomandat: