Բովանդակություն:
- Քայլ 1: Մասեր և նյութեր
- Քայլ 2. MATLAB Arduino աջակցության փաթեթ
- Քայլ 3. Բջջային սարքից ձեռք բերված տվյալների տվիչների օգտագործումը
- Քայլ 4: Կոդ և էլեկտրագծերի նավահանգիստներ
Video: MATLAB վերահսկվող միկրոկառավարիչ (Arduino MKR1000) ՝ 4 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:48
Մեր նախագծի նպատակն էր օգտագործել MATLAB- ը, ինչպես նաև Arduino MKR1000- ը մեր հնարավորությունների սահմաններում: Մեր նպատակն էր ստեղծել մի սցենար, որը թույլ կտար arduino- ի որոշ առանձնահատկություններին կատարել որոշակի ելք `ելնելով որոշակի մուտքագրումից: Մենք օգտագործել ենք բազմաթիվ հանգույցներ և պայմանական հայտարարություններ, որոնք ներկայացված են MATLAB- ում, ինչը հնարավոր դարձրեց դա: Մենք նաև օգտվեցինք MATLAB բջջայինից ՝ օգտագործելով բջջային սարքի գիրոսկոպից ստացված տվյալները `հնարավորինս բարձրացնելու նախագիծը:
Քայլ 1: Մասեր և նյութեր
MATLAB 2018 ա
-MATLAB- ի 2018 -ի տարբերակը առավել նախընտրելի տարբերակն է, հիմնականում այն պատճառով, որ այն լավագույնս աշխատում է բջջային սարքին միացվող կոդի հետ: Այնուամենայնիվ, մեր ծածկագրի մեծ մասը կարող է մեկնաբանվել MATLAB- ի տարբերակների մեծամասնության կողմից:
Arduino 1000 դրամ
-Սա հատուկ սարք է, որը թույլ է տալիս մեզ միացնել սխեմաներ մինչև թվային և անալոգային նավահանգիստներ: Շատ կարևոր է, որ դուք նաև ունենաք տախտակ ՝ դրա հետ միասին անցնելու համար:
Պարագաներ
-MKR1000- ի օգտագործման ժամանակ մեզ անհրաժեշտ էին լրացուցիչ պարագաներ `անհրաժեշտ գործառույթները կատարելու համար:
Սա ներառում է
- Սերվո
- Կոճակ (6)
- Փոխարինելի RBG LED լույս
- Պարզ լարեր
- տախտակ (ներ)
- մինի հոսանքի անջատիչ
- ջերմաստիճանի տվիչ
- 330 օմ դիմադրություն
- 10 Կ Օմ դիմադրություն
- USB-microUSB լարը
- Նոթբուք/աշխատասեղան
- Շարժական սարքը
Հարկ է նաև նշել, որ կան շատ և շատ այլ աքսեսուարներ, որոնք կարող են օգտագործվել 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
Խորհուրդ ենք տալիս:
Թվային ժամացույց ՝ օգտագործելով միկրոկառավարիչ (AT89S52 առանց RTC- ի միացում). 4 քայլ (նկարներով)
Թվային ժամացույց ՝ օգտագործելով միկրոկառավարիչ (AT89S52 Առանց RTC- ի միացում). Թույլ տվեք նկարագրել ժամացույցը … " ockամացույցը սարք է, որը հաշվում է և ցույց է տալիս ժամանակը (հարաբերական) " !!! Գուշակիր, որ ես ճիշտ ասացի, որպեսզի թույլ տանք ARԱՄԱՈՅ AL ALԱՐԳԱՄԱՆ հատկությամբ . Ո NOTՇԱԴՐՈԹՅՈՆ. Ընթերցանության համար կպահանջվի 2-3 րոպե: Կարդացեք ամբողջ նախագիծը, հակառակ դեպքում ես չեմ
Հաճախականության հաշվիչ `օգտագործելով միկրոկառավարիչ` 8 քայլ
Հաճախականության հաշվիչ `օգտագործելով միկրոկառավարիչ. Այս ձեռնարկը պարզապես նշում է, թե ինչպես կարելի է հաշվարկել զարկերակային աղբյուրի հաճախականությունը` օգտագործելով միկրոկոնտրոլերը: Իմպուլսի աղբյուրի բարձր լարման մակարդակը 3.3 Վ է, իսկ ցածրը `0 Վ: Ես օգտագործել եմ STM32L476, Tiva launpad, 16x2 այբբենական թվային LCD որոշ լարեր տախտակ և 1K ռեզի
Հետևող ռոբոտ, որն օգտագործում է TIVA միկրոկառավարիչ TM4C1233H6PM ՝ 3 քայլ
Հետևող ռոբոտ, որն օգտագործում է TIVA միկրոկառավարիչ TM4C1233H6PM. Հետևող ռոբոտը բազմակողմանի մեքենա է, որն օգտագործվում է սպիտակ մակերևույթի վրա գծված մուգ գծերը հայտնաբերելու և հեռացնելու համար: Քանի որ այս ռոբոտը արտադրվում է տախտակի միջոցով, այն կառուցելը չափազանց հեշտ կլինի: Այս համակարգը կարող է միաձուլվել
Ձայնով կառավարվող ռոբոտ ՝ օգտագործելով 8051 միկրոկառավարիչ. 4 քայլ (նկարներով)
Ձայնով կառավարվող ռոբոտ ՝ օգտագործելով 8051 միկրոկոնտրոլեր. Ձայնով կառավարվող ռոբոտը կատարում է նշված հրամանը ձայնի տեսքով: Ինչ էլ որ հրամանը տրվի ձայնային մոդուլի կամ Bluetooth մոդուլի միջոցով, այն վերծանվում է առկա վերահսկիչի կողմից և, հետևաբար, տրված հրամանը կատարվում է: Այստեղ այս նախագծում ես
Capacitive Touch With PIC16F886 միկրոկառավարիչ ՝ 3 քայլ
Capacitive Touch With PIC16F886 Microcontroller: Այս ձեռնարկում մենք կանդրադառնանք, թե ինչպես կարող եք օգտագործել PIC16F886 միկրոկառավարիչ `տարողունակության տարբերությունները հայտնաբերելու համար, որը հետագայում կարող է օգտագործվել ՝ հպման բարձիկի սեղմման դեպքում: Լավ է ծանոթ լինել լուսանկարների միկրոկառավարիչների հետ, նախքան դրանք պատրաստելը