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

MATLAB վերահսկվող միկրոկառավարիչ (Arduino MKR1000) ՝ 4 քայլ
MATLAB վերահսկվող միկրոկառավարիչ (Arduino MKR1000) ՝ 4 քայլ

Video: MATLAB վերահսկվող միկրոկառավարիչ (Arduino MKR1000) ՝ 4 քայլ

Video: MATLAB վերահսկվող միկրոկառավարիչ (Arduino MKR1000) ՝ 4 քայլ
Video: ЭКСКЛЮЗИВ! Идет охота на «криминальных генералов» 2024, Նոյեմբեր
Anonim
MATLAB վերահսկվող միկրոկառավարիչ (Arduino MKR1000)
MATLAB վերահսկվող միկրոկառավարիչ (Arduino MKR1000)

Մեր նախագծի նպատակն էր օգտագործել MATLAB- ը, ինչպես նաև Arduino MKR1000- ը մեր հնարավորությունների սահմաններում: Մեր նպատակն էր ստեղծել մի սցենար, որը թույլ կտար arduino- ի որոշ առանձնահատկություններին կատարել որոշակի ելք `ելնելով որոշակի մուտքագրումից: Մենք օգտագործել ենք բազմաթիվ հանգույցներ և պայմանական հայտարարություններ, որոնք ներկայացված են MATLAB- ում, ինչը հնարավոր դարձրեց դա: Մենք նաև օգտվեցինք MATLAB բջջայինից ՝ օգտագործելով բջջային սարքի գիրոսկոպից ստացված տվյալները `հնարավորինս բարձրացնելու նախագիծը:

Քայլ 1: Մասեր և նյութեր

Մասեր և նյութեր
Մասեր և նյութեր
Մասեր և նյութեր
Մասեր և նյութեր
Մասեր և նյութեր
Մասեր և նյութեր

MATLAB 2018 ա

-MATLAB- ի 2018 -ի տարբերակը առավել նախընտրելի տարբերակն է, հիմնականում այն պատճառով, որ այն լավագույնս աշխատում է բջջային սարքին միացվող կոդի հետ: Այնուամենայնիվ, մեր ծածկագրի մեծ մասը կարող է մեկնաբանվել MATLAB- ի տարբերակների մեծամասնության կողմից:

Arduino 1000 դրամ

-Սա հատուկ սարք է, որը թույլ է տալիս մեզ միացնել սխեմաներ մինչև թվային և անալոգային նավահանգիստներ: Շատ կարևոր է, որ դուք նաև ունենաք տախտակ ՝ դրա հետ միասին անցնելու համար:

Պարագաներ

-MKR1000- ի օգտագործման ժամանակ մեզ անհրաժեշտ էին լրացուցիչ պարագաներ `անհրաժեշտ գործառույթները կատարելու համար:

Սա ներառում է

  1. Սերվո
  2. Կոճակ (6)
  3. Փոխարինելի RBG LED լույս
  4. Պարզ լարեր
  5. տախտակ (ներ)
  6. մինի հոսանքի անջատիչ
  7. ջերմաստիճանի տվիչ
  8. 330 օմ դիմադրություն
  9. 10 Կ Օմ դիմադրություն
  10. USB-microUSB լարը
  11. Նոթբուք/աշխատասեղան
  12. Շարժական սարքը

Հարկ է նաև նշել, որ կան շատ և շատ այլ աքսեսուարներ, որոնք կարող են օգտագործվել MKR1000- ի հետ

Քայլ 2. MATLAB Arduino աջակցության փաթեթ

Arduino MKR1000- ը MATLAB- ի միջոցով ճիշտ օգտագործելու համար դուք պետք է ներբեռնեք Arduino սարքավորման MATLAB- ի աջակցության փաթեթը: Այս ներլցումը ձեզ հնարավորություն է տալիս մուտք գործել որոշակի գործառույթներ և հրամաններ անմիջապես arduino տախտակին:

Փաթեթը կարող եք ներբեռնել ստորև նշված հղումով

www.mathworks.com/matlabcentral/fileexchange/47522-matlab-support-package-for-arduino-hardware

Քայլ 3. Բջջային սարքից ձեռք բերված տվյալների տվիչների օգտագործումը

Բջջային սարքից ձեռք բերված տվյալների տվիչների օգտագործումը
Բջջային սարքից ձեռք բերված տվյալների տվիչների օգտագործումը

MATLAB Mobile ծրագիրը թույլ է տալիս մեզ օգտագործել բջջային սարք `տվյալների գիրք ուղարկելու համար` օգտագործելով իր գիրոսկոպը: Տվյալները MATLAB- ի միջոցով ձեռք բերելու համար մենք ստանում ենք տվյալները ՝ դրանք առնելով MATLAB բջջայինից կողմնորոշման մատրիցից: Մենք դա անում ենք ՝ ստեղծելով փոփոխական կողմնորոշման մատրիցի յուրաքանչյուր սյունակի համար (Ազիմութ, քայլ և ռոլ) և ինդեքսավորելով բջջային սարքից դեպի համակարգիչ արժեքների մշտական հոսքը: Սա թույլ է տալիս մեզ ստեղծել պայմանական հայտարարություններ, որոնք նախապես կստեղծեն ելք, եթե MATLAB- ը բջջային սարքից վերցնի տվյալների որոշակի մուտքագրում: Դա անելու համար ձեզ հարկավոր կլինի բջջային սարքում MATLAB բջջային հեռախոս, իսկ ձեր համակարգչում ՝ MATLAB- ի համար շարժական սարքերի աջակցության փաթեթ:

Ֆայլը կարող եք ներբեռնել ստորև բերված հղումից

www.mathworks.com/matlabcentral/fileexchange/51235-matlab-support-package-for-apple-ios-sensors

Քայլ 4: Կոդ և էլեկտրագծերի նավահանգիստներ

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

startup = questdlg ('Wouldանկանու՞մ եք ակտիվացնել ecoTECH Smart Home էներգետիկ համակարգը'); % Սկսում է ecoTECHwaitfor- ի ակտիվացման հաջորդականությունը (գործարկման); եթե գործարկում է == "Այո" % Եթե "Այո" -ն ընտրված է, ապա ակտիվացման հաջորդականությունը սկսվում է և մտնում while հանգույցի վերջնական հզորության մեջ = "միացված"; m1 = msgbox ('EcoTECH գործարկում …'); դադար (2); ջնջել (m1); m1_wait = waitbar (0, 'Խնդրում ենք սպասել …'); քայլեր = 25; i = 1 համար. քայլերի դադար (.1); waitbar (i/քայլեր); % Թարմացնում է սպասման տողի ավարտի ջնջումը (m1_wait); ԱՆՎԱՐ ծածկագիր = [0 0 0 0]; % Նախնականացնում է գաղտնաբառ ii = 0; % Initializes մի փոփոխական, որն օգտագործվում է օղակներից դուրս գալու համար m2 = msgbox ('ecoTECH լիովին գործում է!'); դադար (2); ջնջել (m2); elseif գործարկում == "Ոչ" || գործարկում == "Չեղարկել" % Եթե ընտրված է "Ոչ" կամ "Չեղարկել", ապա ակտիվացման հաջորդականությունը չի սկսվում և չի մտնում while loop power = "off"; m3 = msgbox ('Okay! Goodbye!'); դադար (2); ջնջել (m3); վերջ

% ecoTECH in Action Section while true while power == "on" % Mobile Key Section while true % Հավաքում է տվյալներ բջջային սարքի Roll կողմնորոշման մասին KEY = m. Orientation (3); % Հավաքում է տվյալներ կոճակների մասին b2 = readDigitalPin (a, 'D2'); % Կոճակ 2 (կարմիր) b3 = readDigitalPin (a, 'D3'); % Կոճակ 3 (Սպիտակ) եթե KEY> = 35 % աստիճաններով m4 = msgbox ('Բարի գալուստ տուն!'); writeDigitalPin (a, 'D8', 1); % Միացնում է կանաչ լույսը դադար (.5); writePosition (ներ, 1); Դարձնում է servo- ն ՝ դռան դադարն ապակողպելու համար (2); writeDigitalPin (a, 'D8', 0); % Անջատում է կանաչ լույսը ջնջելը (m4); elseif KEY <= -35 % աստիճաններով m5 = msgbox ('Door Locked!'); writeDigitalPin (a, 'D7', 1); % Միացնում է կարմիր լույսի դադարը (.5); writePosition (ներ, 0); % Դարձնում է servo- ն ՝ դռան դադարն արգելափակելու համար (2); writeDigitalPin (a, 'D7', 0); % Անջատում է կարմիր լույսի ջնջումը (m5); ii = 1; break % Դուրս է գալիս բջջային բանալին պարունակող հանգույցի դեպքում, եթե դուռը կողպված է բջջային սարքի միջոցով elseif b2 == 0 &&3

Դրանից հետո այն կարող է մուտքագրել մեկ այլ, իսկ օղակ: Սա while loop- ը վերահսկում է արդյունքները ՝ հիմնվելով կոճակներից մուտքերի վրա: Եթե առաջին իսկ loop- ը աննշան է, կամ ձեռքով արգելափակում է պահանջվում, այն մուտքագրելու է մեկ այլ հանգույց, որտեղ անհրաժեշտ է որոշակի գաղտնաբառ: Եթե գաղտնաբառը սխալ է, այն կվերագործարկի հանգույցը:

իսկական, եթե ii == 1 % Դուրս է գալիս գաղտնաբառ պարունակող հանգույցի դեպքում, եթե դուռը կողպված էր բջջային սարքի ընդմիջման վերջ % հավաքում է կոճակների մասին տվյալներ b5 = readDigitalPin (a, 'D5'); % Կոճակ 5 (կապույտ) b1 = կարդալDigitalPin (a, 'D1'); % Կոճակ 1 (Սև) b4 = readDigitalPin (a, 'D4'); % Կոճակ 4 (Սպիտակ), եթե b5 == 0 % Սկսում է գաղտնաբառի մուտքագրման բաժինը b = 1: 5 m6 = msgbox ('Խնդրում ենք սեղմել և պահել կոճակը'); դադար (2); ջնջել (m6); % Հավաքում է տվյալներ կոճակների մասին b1 = readDigitalPin (a, 'D1'); % Կոճակ 1 (Սև) b2 = readDigitalPin (a, 'D2'); % Կոճակ 2 (կարմիր) b3 = readDigitalPin (a, 'D3'); % Կոճակ 3 (Սպիտակ) b4 = կարդալDigitalPin (a, 'D4'); % Կոճակ 4 (դեղին) b5 = կարդալDigitalPin (a, 'D5'); % Կոճակ 5 (Կապույտ) % Փոխարինում է սկզբնական գաղտնաբառի արժեքները մեկ առ մեկ, եթե b1 == 0 PASSCODE (0+b) = 1; elseif b2 == 0 ԱՆՏԱՍԻՆ (0+բ) = 2; elseif b3 == 0 ԱՆՏԱՍԻՆ (0+բ) = 3; elseif b4 == 0 ԱՆՏԱՍԱԿԱՆ ԿՈԴ (0+բ) = 4; elseif b5 == 0 PASSCODE = sprintf ('%. 0f%.0f%.0f%.0f', PASSCODE (1), PASSCODE (2), PASSCODE (3), PASSCODE (4)); % Դարձնում է թվերի սեղմված կոճակների հաջորդականությունը, այն վերածում է տողի վերջի վերջի % Անցակալի հանգույց `գաղտնաբառի համար թվանշաններ մուտքագրելու համար, եթե PASSCODE ==" 2314 " % Եթե գաղտնաբառ մուտքագրված համընկնում է, ապա դուռը մի քանի վայրկյան կողպվում է, ապա կողպվում m7 = msgbox ('Բարի գալուստ տուն'); writeDigitalPin (a, 'D8', 1); % Միացնում է կանաչ լույսը դադար (.5); writePosition (ներ, 1); Դարձնում է servo- ն ՝ դռան դադարն ապակողպելու համար (5); writeDigitalPin (a, 'D8', 0); % Անջատում է կանաչ լույսի դադարը (.1); writeDigitalPin (a, 'D7', 1); % Միացնում է կարմիր լույսի դադարը (.5); writePosition (ներ, 0); % Դարձնում է servo- ն ՝ դռան դադարն արգելափակելու համար (1); writeDigitalPin (a, 'D7', 0); % Անջատում է կարմիր լույսի ջնջումը (m7); ii = 1; break % Ելք, իսկ ծածկագիրը պարունակող օղակը ճիշտ գաղտնաբառ մուտքագրելուց հետո elseif PASSCODE ~ = "2314" writeDigitalPin (a, 'D7', 1); % Միացնում է կարմիր լույսը m8 = msgbox ('Incorrect Passcode! Try again!'); սպասեք (m8) writeDigitalPin (a, 'D7', 0); % Անջատում է կարմիր լույսը շարունակել % Թույլ է տալիս նորից մուտքագրել գաղտնաբառի վերջը elseif b1 == 0 && b4 == 0 % Ելք, երբ գաղտնաբառ պարունակող հանգույցը պարունակում է, եթե չեք ցանկանում մուտքագրել գաղտնաբառ ii = 1; ընդմիջում վերջ վերջ

Եթե դա ճիշտ է, այն անմիջապես կմտնի մի որոշ ժամանակաշրջան, որը վերահսկում է ջերմաստիճանի տվիչը: Եթե անջատիչը միացված է, օղակը կշարունակվի և գծապատկեր ջերմաստիճանը ընդդեմ ժամանակի գծապատկերին, ինչը թույլ կտա դիտել միտումը: Եթե սեղմված է ջերմաստիճանի տվիչին միացված կոճակը, այն նաև նամակ կուղարկի ՝ տեղեկացնելով, թե ինչ ջերմաստիճան է ձեր «տանը»: Եթե անջատիչն անջատված է, այն անմիջապես կավարտի ծածկագիրը:

t = 0; % Սկզբնական ժամանակը = 0 վայրկյան դադար (5) % Gամանակ է տալիս օգտվողին միացնել ջերմաստիճանի անջատիչը SWITCH = readDigitalPin (a, 'D11'); % Հավաքում է տվյալներ D11 կապում անջատիչի մասին, մինչդեռ SWITCH == 0 SWITCH = readDigitalPin (a, 'D11'); % Հավաքում է տվյալներ D11 լարման անջատիչի մասին = readVoltage (a, 'A1'); % Կարդում է լարումը ջերմաստիճանի տվիչից temp_C = (լարում.*1000 - 500)./ 10; % Փոփոխում է լարումը ջերմաստիճանի ° C temp_F = (9/5):*temp_C + 32; % Փոխակերպում է ° C- ից ° F գծապատկեր (t, temp_C, 'b.') Վերնագրում ('սենյակի ջերմաստիճան'); xlabel («Secondամանակը վայրկյաններում»); ylabel («Temերմաստիճանը»); առանցք ([0, 180, 0, 100]); գծապատկեր (t, temp_F, 'r.') լեգենդ ('°երմաստիճանը ° C', 'peratերմաստիճանը ° F') դադար (1); t = t + 1; % Counterամանակի հաշվիչ վայրկյաններում % Էլ. Փոստի բաժին b_temp = readDigitalPin (a, 'D0'); % Հավաքում է (կապույտ) ջերմաստիճանի կոճակի տվյալները D0 կապում, եթե b_temp == 0 setpref ('Ինտերնետ', 'SMTP_Server', 'smtp.gmail.com'); setpref («Ինտերնետ», «E_mail», «[email protected]»); % Ուղարկողի setpref («Ինտերնետ», «SMTP_Username», «[email protected]»); % Ուղարկողի օգտանվան setpref ('ինտերնետ', 'SMTP_Password', 'Integral_ecoTECH'); % Ուղարկողի գաղտնաբառերը = 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'); sendmail ('[email protected] ',' ecoTECH Սենյակի ջերմաստիճան ', sprintf (' Սենյակի ներկայիս ջերմաստիճանը %.1f ° C կամ %.1f ° F. ', temp_C, temp_F)); % Էլփոստ է ուղարկում հասցեատիրոջը ՝ տալով տվյալ սենյակի ներկա ջերմաստիճանի fprintf («Էլ. Փոստը հաջողությամբ ուղարկվեց! / N») ավարտը, եթե temp_F> = 75 % Եթե սենյակի ջերմաստիճանը բարձրանա մինչև 75 ° F… temp_AC = 65; % Փոփոխում է ջերմաստիճանը ջերմաստիճանի վրա մինչև 65 ° F այլ ջերմաստիճան <= 65 % Եթե սենյակի ջերմաստիճանը նվազում է մինչև 60 ° F… temp_AC = 80; % Փոխում է ջերմաստիճանը թերմոստատի վրա մինչև 80 ° F վերջնակետ % % «SWITCH == 0» - ի ավարտ, իսկ օղակը, եթե հոսանքը == "անջատված է" || ii == 1 % Ելք "power == on" while loop break end end end % End of "power == on" while loop if power == "off" || ii == 1 % Դուրս է գալիս ամբողջությունից, մինչ հանգույցի ընդմիջումն ավարտվում է

Սա ընդամենը կոդի և դրա գործունակության համառոտ ակնարկ էր: Անհրաժեշտության դեպքում մենք կցել ենք ամբողջական կոդը որպես pdf:

Ահա այն ցանկը, թե որ պորտին է միացված յուրաքանչյուր սարք:

1. RGB LED. Թվային կապում (7, 8, 9)

2. voառայություն ՝ թվային կապ 6

3. Կոճակներ. Թվային կապում (1, 2, 3, 4, 5)

4. Կապույտ կոճակ էլ. Փոստի համար. Թվային Pin 0

5. peratերմաստիճանի տվիչ `անալոգային կապիչ 1

6. Անջատիչ `թվային կապիչ 11

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