Բովանդակություն:

EF230 Smart Home նախագիծ. 7 քայլ
EF230 Smart Home նախագիծ. 7 քայլ

Video: EF230 Smart Home նախագիծ. 7 քայլ

Video: EF230 Smart Home նախագիծ. 7 քայլ
Video: EF 230 Roomba Project 2024, Հուլիսի
Anonim
EF230 Smart Home նախագիծ
EF230 Smart Home նախագիծ

Պահանջվող մասեր և նյութեր

  • 1 Arduino 1000 դրամ
  • 3 Breadboards
  • 2 մինի ֆոտոցել
  • 1 NPN տրանզիստորներ
  • 1 Mini Power անջատիչ
  • 1 LED - RGB (4 ոտնակ)
  • 1 LED (ձեր ընտրած գույնը)
  • 1 դիոդ 1N4148
  • 1 10K Օմ դիմադրիչներ
  • 5 100 Օմ դիմադրություն
  • 1 MPերմաստիճանի տվիչ TMP36
  • 1 DAGU 48: 1 հարաբերություն Gearmotor
  • 25 Jumper լարերը
  • USB լարը
  • MATLAB ծրագիր
  • SIK փորձի ուղեցույց Arduino 101/Genuino 101 տախտակի համար - SIK փորձի ուղեցույցի հղում

Այս նախագիծը մանրամասն ներկայացնում է խելացի տան համակարգի հայեցակարգային դիզայնը, որը կօգտագործի տվյալներ ՝ տանտերերին օգնելու օպտիմալացնել իրենց էներգիայի սպառումը և անվտանգությունը: Այն ներառում է լուսային սենսոր ՝ գիշերը արտաքին լույսերը միացնելու համար, լուսավորության տվիչ ՝ անվտանգության համար, և ջերմաստիճանի տվիչ և օդափոխիչ ՝ ներքին ջերմաստիճանի վերահսկման համար:

Քայլ 1: Լույսի զգայուն LED

  • Լույսի նկատմամբ զգայուն լուսադիոդների տեղադրումը նախատեսված է ներկայացնել գիշերային լույսերով բացվող տան արտաքին լույսերը:
  • Երբ մինի ֆոտոէլեկտրակայանը զգում է նվազված քանակությամբ լույս, LED լուսավորվում է:
  • Խելացի տան համար սա էներգիա և անվտանգություն ունի: Այն կխնայի էներգիան ՝ ցերեկը լույսերը անջատած թողնելով, իսկ գիշերը կապահովի անվտանգության բարձրացում:
  • Partրագրի այս մասի ճշգրիտ էլեկտրագծերը և տեղադրումը կարելի է գտնել 7 -րդ փորձի ներքո `SIK Experiment Guide- ում:

Քայլ 2: Mini Power անջատիչ

  • Անջատիչը խելացի տան անվտանգության գործընթացի առաջին քայլն է:
  • Երբ միացված է, անջատիչը կսկսի պատասխան ՝ օգտվողին հարցնելով, արդյոք նա ցանկանում է մտնել «Տուն» ռեժիմ կամ «Հեռու» ռեժիմ:
  • Եթե ընտրվի «Տուն» ռեժիմը, անվտանգությունը համարվում է զինաթափված, սակայն «Հեռու» ռեժիմի ընտրությունը զինելու է անվտանգության համակարգը:
  • Thisրագրի այս հատվածի էլեկտրագծերը կարելի է գտնել Փորձի ուղեցույց 6 -րդ փորձի ներքո: Խելացի տան նպատակների համար 6 -րդ փորձի մեջ հայտնաբերված LED- ները և դրանց միացնող լարերը պետք չէ ներառել:

Քայլ 3: Երկրորդ ֆոտոցել

Երկրորդ Ֆոտոցել
Երկրորդ Ֆոտոցել
  • Երկրորդ լուսաբջիջը ծառայում է որպես շարժման սենսոր խելացի տան անվտանգության համակարգի համար:
  • Սենսորը օգտագործվում է միայն այն դեպքում, երբ համակարգը դրված է «Հեռու» ռեժիմում, ինչպես նկարագրված է նախորդ քայլին:
  • Եթե լուսաբջջում նկատվում է ստացած լույսի քանակի նվազում, այն ճանաչում է որպես շարժում տան ներսում:
  • Partրագրի այս մասի կարգավորումները կարելի է գտնել SIK Experiment Guide- ի 7 -րդ փորձի ներքո: Այնուամենայնիվ, էլեկտրագծերի մեջ անհրաժեշտ է ներառել միայն լուսաբջիջը և դրա միացնող լարերը:

Քայլ 4: RGB LED

  • RGB LED- ն օգտագործվում է մինի հոսանքի անջատիչի և խելացի տան անվտանգության համակարգի երկրորդ ֆոտոխցիկի հետ համատեղ:
  • Երեք տարբեր գույներն օգտագործվում են որպես ցուցանիշներ խելացի տան բնակչի համար:
  • Երբ համակարգը տեղադրվում է «Տուն» ռեժիմում, LED- ն դառնում է կապույտ: Երբ համակարգը տեղադրվում է «Հեռու» ռեժիմում, LED- ը դառնում է կանաչ: Երբ շարժման սենսոր օգտագործվող լուսաբջիջը խափանում է, լույսը կարմիր գույն է տալիս:
  • RGB LED- ի էլեկտրագծերը կարելի է գտնել SIK Experiment Guide- ի 3 -րդ փորձի մեջ:

Քայլ 5: Temերմաստիճանի ցուցիչ

  • Theերմաստիճանի տվիչը խելացի տան էներգիայի պահպանման հիմնական մասն է:
  • Բնակիչն ի վիճակի է մուտքագրել իր տան համար անհրաժեշտ ջերմաստիճանը, երբ խելացի տունն օգտագործվում է:
  • Երմաստիճանի ցուցիչն այն է, թե ինչպես համակարգը գիտի, թե որքանով է իրական ջերմաստիճանը ցանկալի ջերմաստիճանից հեռու:
  • Temperatureերմաստիճանի տվիչի կարգավորումը կարելի է գտնել SIK փորձի ուղեցույցի 9 -րդ փորձարկումում:

Քայլ 6: DAGU Gearmotor

DAGU Gearmotor
DAGU Gearmotor
  • Շարժիչը թույլ է տալիս խելացի տանը կարգավորել ջերմաստիճանը տանը `հիմնվելով ցանկալի ջերմաստիճանի և ջերմաստիճանի տվիչի ցուցմունքների վրա:
  • Գործելով որպես AC- ի միավոր տան մեջ, շարժիչը պտտվելու է տարբեր արագություններով `հիմնվելով այն բանի վրա, թե իրականում որքան ավելի բարձր է ցանկալի ջերմաստիճանից: Որքան մեծ է տարբերությունը, նա ավելի արագ է պտտում շարժիչը:
  • Շարժիչի էլեկտրագծերը կարելի է գտնել Փորձի ուղեցույցում ՝ 11 -րդ փորձի ներքո:

Քայլ 7: Կոդ

  • Խելացի տան ծածկագիրը ներառում է բազմաթիվ ինտերֆեյսեր, որոնք թույլ են տալիս բնակչին հեշտությամբ հասկանալ, թե ինչպես է այն աշխատում և հեշտությամբ փոխել կարգավորումները:
  • Խելացի տան համակարգով բնակիչը էլեկտրոնային փոստով ահազանգ կստանա, եթե շարժման սենսորը միացված լինի, երբ նրանք հեռու են:
  • Միակ փոփոխությունը, որը պետք է կատարվի, ուղարկողի էլփոստի և ստացողի էլ. Հասցեի տեղեկատվության տեղադրումն է:

մաքրել a; հստակ s; պարզ m; clc; փակել բոլորը; % Մաքրել arduino և servo փոփոխականները, որպեսզի դրանք կարողանան վերաիմաստավորվել ամեն անգամ, որպեսզի ծածկագիրը արդյունավետ գործարկվի («հստակ m» - ն անհրաժեշտ է, որպեսզի loops- ներից մեկը ճիշտ գործի) a = arduino (); % Սահմանել arduino փոփոխականը

s = servo (a, 'D6'); % Սահմանել servo փոփոխականը

% Նախաստորագրեք էլփոստի փոփոխականները անվտանգության համակարգի նախազգուշացման էլ

նամակներ = {'տեղադրեք ստացողի հասցեն'}; % Էլփոստերի զանգված, որոնց պետք է ուղարկվի անվտանգության էլ

% Էլփոստի նախընտրելի կարգավորումներ, որոնք անհրաժեշտ են Gmail- ից նամակ ուղարկելու համար

setpref («Ինտերնետ», «E_mail», «ուղարկողի էլ. փոստի հասցեն»);

setpref («Ինտերնետ», «SMTP_Username», «ուղարկողի օգտվողի անուն»);

setpref («Ինտերնետ», «SMTP_Password», «ուղարկողի գաղտնաբառ»);

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

% Էլփոստի թեմայի և տեքստի փոփոխականներ

subj = 'Intruder Alert at Your Home';

text = 'Բարև, սա ձեր Smart Home անվտանգության համակարգն է, որը տեղեկացնում է ձեզ, որ ձեր տնից դուրս շարժումներ են նկատվել: Մենք ձեռնարկել ենք անհրաժեշտ միջոցները և կապ հաստատել ձեզ համար: Մնացեք ապահով: ';

մինչդեռ ճշմարիտ է

հուշում = {'Մուտքագրեք տան ցանկալի ջերմաստիճանը (65F- ից մինչև 85F):'}; % Հուշում օգտվողի մուտքագրման ընտրացանկի համար

dlgtitle = 'Selectերմաստիճանի ընտրություն'; % Վերնագիր օգտվողի մուտքագրման ընտրացանկի համար

dims = [1 30]; % Չափերը օգտվողի մուտքագրման ընտրացանկի համար

definput = {'72'}; % Լռելյայն մուտքագրում, որը հայտնվում է ընտրացանկի առաջին բացման ժամանակ

tempsel_array = inputdlg (հուշում, dlgtitle, dims, definput); % Օգտագործողի մուտքագրման թռուցիկ ընտրացանկ, որը կպահի մուտքագրված թիվը զանգվածի մեջ

եթե ~ դատարկ է (tempsel_array) % Եթե զանգվածը դատարկ չէ

tempsel_char = cell2mat (tempsel_array); % Conանգվածը փոխակերպեք բնույթի տողի

tempsel = str2 կրկնակի (tempsel_char); % Փոխարկել բնույթի տողը թվերի

thingSpeakWrite (chID, tempsel, 'WriteKey', writeKey, 'Fields', 1); % Գրեք ընտրված ջերմաստիճանը ձեր ThingSpeak ալիքին

break % Break from the time loop- ից, որպեսզի ընտրացանկը մի քանի անգամ չբացվի

else % Եթե օգտագործողը կտտացնում է ջերմաստիճանը մուտքագրելու փոխարեն ՝ չեղարկել

msg1 = msgbox («temperatureերմաստիճանը ընտրված չէ, կանխադրվածը 85F է», «arnգուշացում»); % Հաղորդագրությունը ցուցադրվում է օգտվողին չեղարկելուց սեղմելուց հետո

սպասել (msg1); % Շարունակելուց առաջ սպասեք հաղորդագրությունների տուփի փակմանը

tempsel = 85; % Setերմաստիճանը սահմանեք այն, ինչ նշված էր հաղորդագրությունների վանդակում

thingSpeakWrite (chID, tempsel, 'WriteKey', writeKey, 'Fields', 1); % Գրեք ընտրված ջերմաստիճանը ձեր ThingSpeak ալիքին

break % Break from the time loop- ից, որպեսզի ընտրացանկը մի քանի անգամ չբացվի

վերջ

վերջ

մինչդեռ ճշմարիտ է

chID = 745517; % ThingSpeak ալիքի ID

writeKey = 'G9XOQTP8KOVSCT0N'; % Բանալի ThingSpeak ալիքին մուտք գործելու համար

% Տվյալների ստացման համար նախնականացնել սենսորները

tempread = readVoltage (a, 'A3'); % Կարդացեք ջերմաստիճանի տվիչի լարումը

lightl1 = կարդալՎոլտաժ (a, 'A2'); % Լույսի մակարդակը ֆոտոընդդիմադրիչի համար, որը անցնում է կարմիր LED- ին

lightl2 = readVoltage (a, 'A5'); % Անվտանգության համակարգ անցնող ֆոտոընդդիմադիրի լուսավորության մակարդակը

switchv = readVoltage (a, 'A0'); % Անջատիչի արժեքը

% Փոխարկեք ջերմաստիճանի տվյալները լարման աստիճանից Ֆարենհայտ աստիճան

tempC = (tempread - 0.5) * 100; % Փոխարկեք լարումը ջերմաստիճանի ջերմաստիճանում

tempF = (tempC * 9/5) + 32; % Փոխակերպել ջերմաստիճանը elsելսիուսի ջերմաստիճանում Ֆարենհեյթում

% Նախաձեռնել կապի համարները բազմագույն LED- ի համար

redp = 'D9'; % LED լուսադիոդից կարմիր լույսի համար

greenp = 'D10'; % LED լուսադիոդից կանաչ լույսի համար

bluep = 'D11'; % LED կապույտ լույսի կապում

եթե tempsel <tempF % Եթե ընտրված ջերմաստիճանը ավելի մեծ է, քան սենյակի ջերմաստիճանը

writePosition (ներ, 1); Servo- ն կսկսի շարժվել

դադար (10) % Servo- ն կշարունակի պտտվել 10 վայրկյան ՝ ցույց տալու համար, որ AC- ն անջատված կլինի որոշակի ժամանակ անց

writePosition (ներ, 0); % Անջատեք օդափոխիչը `առանց կոդի միացման շարունակելու նպատակով

tempsel = 150; % Փոխեք ջերմաստիճանի արժեքը, որպեսզի այն դուրս գա օղակից, օդափոխիչի անջատումից հետո, կրկին պարզապես ծածկագիրը շարունակելու նպատակով

վերջ

եթե lightl1 <= 3 % Եթե առաջին ֆոտոռեզիստորը հայտնաբերում է ցածր լուսավորության մակարդակ

writeDigitalPin (a, 'A1', 1); Միացրեք կարմիր LED- ը, որը ներկայացնում է արտաքին լույսերը

else % Եթե լույսի մակարդակը կրկին բարձր է

writeDigitalPin (a, 'A1', 0); % Անջատեք կարմիր LED- ը, երբ լույսի մակարդակը կրկին բավական բարձր լինի

վերջ

եթե switchv> 3 % Եթե անջատիչը միացված է

A = գոյություն ('m', 'var'); % Ստուգեք 'm' փոփոխականի առկայությունը, սա կսկսի սկզբնական շրջանում հանգույցը և թույլ կտա այն կոտրվել, երբ ընտրվում է ընտրացանկի տարրը (այդ պատճառով կոդի սկզբում պետք է կատարվի հստակ m)

մինչդեռ A == 0 % Loop- ը կգործի մինչև «m» փոփոխականի գոյությունը

menutext = 'Անվտանգության ո՞ր ռեժիմը կցանկանայիք մտնել:'; % Անվտանգության թռուցիկ ընտրացանկի տեքստ

ընտրություններ = {'Տուն', 'Հեռու'}; % Անվտանգության թռուցիկ ընտրացանկի ընտրանքներ

m = մենյու (menutext, ընտրանքներ); % Բացվող ընտրացանկ անվտանգության համակարգի ռեժիմների համար

break % Ապահովում է, որ while օղակը կոտրված է, որպեսզի ընտրացանկը մի քանի անգամ չբացվի

վերջ

եթե m == 1 % Եթե ընտրված է «Տուն» ռեժիմը

writeDigitalPin (a, bluep, 1); Միացրեք միայն կապույտ լույսը գույնի փոփոխվող LED- ում

writeDigitalPin (a, redp, 0);

writeDigitalPin (a, greenp, 0);

elseif m == 2 % Եթե ընտրված է «Հեռու» ռեժիմը

writeDigitalPin (a, bluep, 0);

writeDigitalPin (a, redp, 0);

writeDigitalPin (a, greenp, 1); Միացրեք միայն կանաչ լույսը գույնի փոփոխվող LED- ում

եթե lightl2 <= 3 % Եթե երկրորդ ֆոտոդիմադրիչի լուսավորության մակարդակը ցածր է, ներկայացնում է անվտանգության համակարգի կողմից հայտնաբերված շարժումը

sendmail (էլ. նամակներ, subj, տեքստ); % Ուղարկել նամակ նախկինում սահմանված էլփոստի հատկություններով writeDigitalPin (a, greenp, 0); Ֆլեշ կարմիր գույնը միացված և անջատված է 2 անգամ

writeDigitalPin (a, redp, 1);

դադար (0.3)

writeDigitalPin (a, redp, 0);

դադար (0.3)

writeDigitalPin (a, redp, 1);

դադար (0.3)

writeDigitalPin (a, redp, 0);

դադար (0.3)

writeDigitalPin (a, redp, 1); % Ingրամեկուսացումից հետո ավարտեք պինդ կարմիր գույնով `ցույց տալով, որ շարժում կա, մինչև լուսավորության մակարդակը նորից բարձրանա

msg2 = msgbox ('Անվտանգության համակարգի կողմից հայտնաբերվել է ներխուժող անձ, տան սեփականատերերին էլ. նամակ է ուղարկվել `նրանց տեղեկացնելու համար': ' % Հաղորդագրության տուփ ՝ շարժման մասին օգտագործողին տեղեկացնելու և ուղարկված էլ.

ուրիշ

writeDigitalPin (a, greenp, 1); Երբ լույսի մակարդակը նորից բարձրանա, այն նորից կդառնա կանաչ

վերջ

վերջ

elseif switchv <3.3 % Եթե անջատիչն անջատված է

writeDigitalPin (a, bluep, 0); % Անջատեք լուսադիոդն ամբողջությամբ ՝ անվտանգության համակարգը անջատված լինելու համար

writeDigitalPin (a, redp, 0);

writeDigitalPin (a, greenp, 0);

վերջ

վերջ

Խորհուրդ ենք տալիս: