Arduino Smart Home համակարգ ՝ 7 քայլ
Arduino Smart Home համակարգ ՝ 7 քայլ
Anonim
Arduino Smart Home համակարգ
Arduino Smart Home համակարգ
Arduino Smart Home համակարգ
Arduino Smart Home համակարգ

Այս Instructable- ում մենք ձեզ ցույց կտանք, թե ինչպես ստեղծել ձեր սեփական խելացի տան համակարգը MATLAB- ի App Designer- ի միջոցով Sparkfun Red տախտակով: Այս Instructable- ը կարող է օգտագործվել MATLAB- ի App Designer- ի վերաբերյալ հիմնական պատկերացում ձեռք բերելու, ինչպես նաև ֆոտոընդդիմադիր, սերվոմոտորային և PIR շարժման տվիչ օգտագործելու համար:

Քայլ 1: Սկսելու համար. Նյութեր

Այս նախագիծը պահանջում է հետևյալ նյութերը.

- Arduino Uno (այս նախագծի համար մենք օգտագործեցինք Sparkfun Red տախտակ)

- Մեկ ֆոտոընդդիմադիր

- Մեկ մինի-սերվո շարժիչ

- Մեկ անընդհատ servo շարժիչ

- Մեկ PIR շարժման տվիչ

- Մեկ ջերմաստիճանի տվիչ

- 2 լուսադիոդ

- Հաղորդալարեր և ռեզիստորներ ըստ անհրաժեշտության

Քայլ 2: Քայլ 2. Մոտենալով լուծման խնդրին

Այս նախագծի հիմնական նպատակն էր ստեղծել հեշտ օգտագործման խելացի տան համակարգ `Arduino Uno տախտակի ծածկագրմամբ MATLAB- ով: Մենք սկզբում մտածում էինք միայն ջերմաստիճանի և խոնավության տվիչի հետ աշխատելու մասին, սակայն եթե այդ երկու սենսորների հետ մնայինք, մեր խելացի տան համակարգը հեշտ շուկայահանելի չէր լինի ընդհանուր լսարանի համար: Մենք որոշեցինք, որ ցանկանում ենք ստեղծել ընդհանուր խելացի տան էներգետիկ համակարգ, որը կաշխատի որպես խելացի թերմոստատ և անվտանգության համակարգ: Ի վերջո, մենք ցանկանում էինք աշխատել MATLAB- ի AppDesigner- ի հետ, որպեսզի օգտվողը կարողանա հեշտությամբ փոխել խելացի տունը, ինչպես ցանկանում է:

Քայլ 3. Քայլ 3. Կարգավորեք GUI- ն և հիմնական կոդի հոսքը

Քայլ 3. Կարգավորեք GUI- ն և հիմնական ծածկագրի հոսքը
Քայլ 3. Կարգավորեք GUI- ն և հիմնական ծածկագրի հոսքը

Սկսելու համար հարկավոր է բացել MATLABs AppDesigner և տեղադրել հետևյալը.

Երկու թվային խմբագրման դաշտ ՝ տաք և սառը շեմի մուտքագրման համար

Կոճակ դուռը բացելու համար

Եվ չորս ցուցիչ լամպեր բուխարիի, դռան, օդափոխիչի և ջրհեղեղի համար:

Երկու պիտակ օգտագործողի հետ շփվելու համար:

Այս նախագծի համար մենք ավելի հեշտ գտանք աշխատել գլոբալ փոփոխականների և դիզայների ներսում գործարկման գործառույթի հետ: Գործարկման գործառույթում ձեզ անհրաժեշտ կլինեն այս փոփոխականները.

գլոբալ ա

a = arduino («COM3», «uno», «Գրադարաններ», «Servo»); global s global p global hotUI global coldUI global unlock global temp global curr_temp global int_light

Այս պահին մենք ունենք միայն փոփոխականի առաջադրանք, որպեսզի ձեր համակարգիչը կարողանա կարդալ arduino- ն: COM3- ը կարող է տարբեր լինել `կախված այն բանից, թե ձեր համակարգիչն ինչ պորտից կարող է օգտվել:

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

Նշում. Մենք համակարգի համար միացման ցուցումներ չենք տվել: Մենք վկայակոչեցինք ձեռնարկը, որն ուղեկցվում է SparkFun Red տախտակով:

Քայլ 4: Քայլ 3. Թերմոստատի համակարգի կարգավորում

Քայլ 3: Թերմոստատի համակարգի տեղադրում
Քայլ 3: Թերմոստատի համակարգի տեղադրում
Քայլ 3: Թերմոստատի համակարգի տեղադրում
Քայլ 3: Թերմոստատի համակարգի տեղադրում

Թերմոստատի գործառույթը հետևյալն է.

Օգտվողը մուտքագրելու է այն ջերմաստիճանը, որը նա համարում է չափազանց տաք կամ շատ ցուրտ: Theերմաչափը կարդալուց հետո, եթե տունը շատ ցուրտ է, ապա «բուխարին» (կարմիր LED) կբացվի և կջերմացնի տունը: Եթե տունը շատ տաք է, ապա «օդափոխիչը» (շարունակական servo շարժիչ) միացնում է տան հովացումը:

Թերմոստատ համակարգը կոդավորելու համար.

Մենք կսկսենք գործարկման գործառույթի շրջանակներում `ներկայիս ջերմաստիճանը ցուցադրելու համար և թույլ կտանք օգտվողին մուտքագրել իր սառը և տաք շեմերը:

p = 'A0' %Photoresistor pin

volt = readVoltage (a, temp); celc = (վոլտ -0.5):*100; curr_temp = celc*9/5+32; app. Label_4. Text = num2str (curr_temp); %Պիտակի համարը կարող է փոխել դադարը (10); %Կարող է փոխվել !!!!!

Այնուհետև մենք կավարտենք Թերմոստատի համակարգը Timer հատկության սահմաններում:

գլոբալ curr_temp

global coldUI global a global hotUI if curr_temp hotUI app. FanStateLamp. Color = [0.47 0.67 0.19]; %Ստացվում է GUI լամպը կանաչ գրելու համար PWMDutyCycle (a, 'D11',.9) %Կոդի հաջորդ երեք տողերը գործարկում են servo fan pause (10) writePWMDutyCycle (a, 'D11',.0) else app. FireplaceStateLamp. Color = [0,90 0,90 0,90]; %Սա անջատում է բոլոր GUI լամպերը և բուխարիի հավելվածը: fanStateLamp. Color = [0.9 0.9 0.9]; writeDigitalPin (a, 'D13', 0); վերջ

Քայլ 5: Քայլ 4. Դռների համակարգի կարգավորում

Քայլ 4: Դռների համակարգի կարգավորում
Քայլ 4: Դռների համակարգի կարգավորում

Դռան գործառույթը գործում է հետևյալ կերպ.

Երբ դուք առաջին անգամ գործարկեք ձեր MATLAB ծածկագիրը, ծրագիրը կխնդրի ձեզ բացել դուռը, որպեսզի ֆոտոընդդիմադիրը կարողանա լույսի նախնական ընթերցում կատարել: Երբ դա ավարտվի, ժմչփը կակտիվանա, և ֆոտոռեզիստորը կիրականացնի երկրորդային լուսային ընթերցումներ: Եթե երկրորդային լույսի ընթերցումը ավելի թեթև է, քան նախնականը, ապա servo շարժիչը կողպելու է դուռը: Եթե օգտվողը ցանկանում է, որ դուռն ապակողպված լինի, կարող է սեղմել հավելվածի կոճակը, որը կբացի դուռը:

Servo շարժիչը և ֆոտոընդդիմադիրը կազմաձևելու համար.

Դռների համակարգը կոդավորելու համար.

Մենք կսկսենք գործարկման ֆունկցիայի շրջանակում ՝ սկզբնական լուսաչափերը վերցնելու համար:

s = servo (a, 'D9') %Pin- ը կարող է փոխվել `հիմնված էլեկտրագծերի վրա

app. Label_4. Text = 'Խնդրում ենք բացել դուռը համակարգը չափագրելու համար'; դադար (15); %Սա ժամանակ է տալիս օգտվողին բացել դուռը int_light = readVoltage (a, p); app. Label_4. Text = 'Դուք կարող եք հեռացնել ձեր մատը';

Հաջորդը, մենք կավելացնենք ծածկագիրը Timer հատկության սահմաններում

գլոբալ ապակողպում

global int_light global s global a %Ստացեք ընթացիկ լուսային ընթերցում `համեմատելու համար curr_light = readVoltage (a, p); % - Կողպեք դուռը - եթե int_light <curr_light writePosition (s, 1) % Servo դիրքերը կարող են տարբերվել մեկ շարժիչային դադարից (0.5); app. DoorStateLamp. Color = [0.47 0.67 0.19]; վերջ % - Բացել դուռը - եթե բացել == 1234 դադար (0.5); writePosition (ներ,.52) app. DoorStateLamp. Color = [0.85 0.33 0.10]; վերջ

Վերջապես մենք կստեղծենք ապակողպման կոճակի հետադարձ կապ: Երբ օգտվողը սեղմում է ապակողպման կոճակը, գլոբալ փոփոխականին բացելու համար կտրվի մի թիվ, որը կարող է լրացնել ifամաչափի հատկության վերջնական if հայտարարությունը:

գլոբալ ապակողպում

բացել = 1234;

Քայլ 6: Քայլ 6. Loodրհեղեղի լույսի համակարգի կարգավորում

Քայլ 6. Loodրհեղեղի լույսի համակարգի կարգավորում
Քայլ 6. Loodրհեղեղի լույսի համակարգի կարգավորում

Theրհեղեղի լույսի գործառույթը գործում է հետևյալ կերպ.

Երբ սկսում եք MATLAB ծածկագիրը, PIR շարժման տվիչը կսկսի հայտնաբերել շարժումը: Երբ որևէ տեսակի շարժում է հայտնաբերում, այն կկտրի էներգիայի ազդանշանը: Երբ այդ ազդանշանը կտրվի, ջրհեղեղի լույսը կվառվի տնից դուրս:

Theրհեղեղի լուսային համակարգը կազմաձևելու համար.

Theրհեղեղի լույսի համակարգը կոդավորելու համար.

Այս անգամ մենք կարող ենք անցնել erամաչափի հատկությանը, քանի որ լրացուցիչ փոփոխականներ գրելու կարիք չունենք:

human_detected = կարդալDigitalPin (a, 'D2'); %Pin- ը կարող է փոխվել ՝ կազմաձևման հիման վրա, եթե human_detected == 0 writeDigitalPin (a, 'D7', 1) %Pin- ը կարող է փոխել app. FloodLightStateLamp. Color = [0.47 0.67 0.19]; elseif human_detected == 1 app. FloodLightStateLamp. Color = [0.9 0.9 0.9]; writeDigitalPin (a, 'D7', 0) վերջ

Քայլ 7: Եզրակացություն

Այժմ, երբ ունեք ձեր GUI- ի նախագիծը App Designer- ի և ձեր Arduino- ի ծածկագրի հետ, պատրաստ եք կատարել ձեր սեփական խմբագրումները կամ միացնել ձեր Arduino- ն և գնալ:

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