Мазмұны:

MATLAB басқарылатын микроконтроллер (Arduino MKR1000): 4 қадам
MATLAB басқарылатын микроконтроллер (Arduino MKR1000): 4 қадам

Бейне: MATLAB басқарылатын микроконтроллер (Arduino MKR1000): 4 қадам

Бейне: MATLAB басқарылатын микроконтроллер (Arduino MKR1000): 4 қадам
Бейне: Arduino Interface With MATLAB | Dept of ECE, AITS, Hyderabad | Pantech eLearning 2024, Қараша
Anonim
MATLAB басқарылатын микроконтроллер (Arduino MKR1000)
MATLAB басқарылатын микроконтроллер (Arduino MKR1000)

Біздің жобаның мақсаты - MATLAB пен Arduino MKR1000 мүмкіндігін мүмкіндігінше пайдалану. Біздің мақсат - arduino -ның белгілі бір мүмкіндіктеріне белгілі бір кіріс негізінде белгілі бір шығуды орындауға мүмкіндік беретін сценарий құру. Біз бұған мүмкіндік беретін MATLAB -те ұсынылған көптеген ілмектер мен шартты мәлімдемелерді қолдандық. Біз жобаны мүмкіндігінше жақсарту үшін мобильді құрылғы гироскопынан алынған деректерді пайдалана отырып, MATLAB mobile қолдандық.

1 -қадам: Бөлшектер мен материалдар

Бөлшектер мен материалдар
Бөлшектер мен материалдар
Бөлшектер мен материалдар
Бөлшектер мен материалдар
Бөлшектер мен материалдар
Бөлшектер мен материалдар

MATLAB 2018а

-MATLAB -тың 2018 нұсқасы -бұл ең қолайлы нұсқа, себебі ол мобильді құрылғыға қосылатын кодпен жақсы жұмыс істейді. Алайда, біздің кодтың көп бөлігін MATLAB нұсқаларының көпшілігі түсіндіре алады.

Arduino MKR1000

-Бұл цифрлық және аналогтық порттарға дейінгі тізбектерді қосуға мүмкіндік беретін арнайы құрылғы. Онымен бірге жүруге арналған тақтаның болуы өте маңызды.

Керек -жарақтар

-MKR1000 қолданған кезде бізге қажетті функцияларды орындау үшін қосалқы бөлшектер қажет болды.

Бұған кіреді

  1. Серво
  2. Түйме (6)
  3. Айнымалы RBG жарықдиодты шам
  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 -қадам: код және сымдар порттары

Код үйдегі қауіпсіздік құрылғысын іске қосқымыз келетінін сұрайтын іске қосу хабарламасынан басталады. Егер біз иә деп жауап берсек және рұқсат кодын дұрыс берсек, сценарий бірден уақытша циклге өтеді. Ол жерден мобильді құрылғыдан мәлімет жинай бастайды. Бұл деректерді оқитын шартты шарттар бар. Біз мобильді құрылғыдан жүйені құлыптан босатып, құлыптай аламыз, ал мобильді құрылғыдан алынған деректерге байланысты код сервоға айналады және жарық диодты шамды жыпылықтайды

startup = questdlg ('ecoTECH Smart Home Energy System жүйесін қосқыңыз келе ме?'); % EcoTECHwaitfor (іске қосу) активтендіру ретін бастайды; егер іске қосылу == «Иә» % Егер «Иә» таңдалса, активтендіру реттілігі басталады және уақыт циклінің соңына кіреді = «қосылады»; m1 = msgbox ('ecoTECH қосылуда …'); үзіліс (2); жою (m1); m1_wait = күту тақтасы (0, 'Күте тұрыңыз…'); қадамдар = 25; i = 1 үшін: қадамдар кідірту (.1); күту тақтасы (i/қадамдар); % Күту жолағын жоюды жаңартады (m1_wait); PASSCODE = [0 0 0 0]; % Ii = 0 рұқсат кодын инициализациялайды; % M2 = msgbox ('ecoTECH толық жұмыс істейді!') Ілмектерінен шығу үшін қолданылатын айнымалыны инициализациялайды; үзіліс (2); жою (м2); elseif іске қосу == «Жоқ» || іске қосу == «Болдырмау» % Егер «Жоқ» немесе «Болдырмау» таңдалса, онда активтендіру реттілігі іске қосылмайды және циклдің күшіне кірмейді = «өшірулі»; m3 = msgbox ('Жарайды! Қош бол!'); үзіліс (2); жою (м3); Соңы

% ecoTECH әрекет бөлімінде шын күйінде болғанда қуат == «қосулы» % мобильді кілт бөлімі, ал шын % мобильді құрылғының 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); % Серваны есіктің кідірісін ашу үшін бұрады (2); writeDigitalPin (a, 'D8', 0); % Жасыл шамды өшіруді өшіреді (m4); elseif KEY <= -35 % градуспен m5 = msgbox ('Есік құлыпталды!'); writeDigitalPin (a, 'D7', 1); % Қызыл жарық кідірісін қосады (.5); writePosition (лар, 0); % Серваны есікті кідіртуге бұрады (2); writeDigitalPin (a, 'D7', 0); % Қызыл шамды өшіруді өшіреді (m5); ii = 1; break % Егер ұялы құрылғы арқылы есік құлыпталған болса, мобильді кілт бар цикл бар кезде шығады, егер b2 == 0 && b3 == 0 % рұқсат кодының бөліміне кіру үшін ұялы кілті бар циклдан шығады

Осыдан кейін ол басқа циклды енгізе алады. Бұл while циклы түймелерді енгізуге негізделген нәтижелерді басқарады. Егер бірінші цикл мәнсіз болса немесе қолмен құлыптау қажет болса, ол басқа құпия сөз қажет болатын басқа циклды енгізеді. Егер құпия сөз дұрыс болмаса, ол циклды қайта бастайды

while true if ii == 1 % Егер мобильді құрылғының есігі құлыптан босатылған болса, рұқсат кодын қамтитын цикл кезінде шығады % b5 = readDigitalPin (a, 'D5') түймелері туралы деректерді жинайды; % 5 түймесі (көк) b1 = readDigitalPin (a, 'D1'); % Түйме 1 (Қара) b4 = readDigitalPin (a, 'D4'); % Button 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 = readDigitalPin (a, 'D4'); % 4 түймесі (сары) b5 = readDigitalPin (a, 'D5'); % Түйме 5 (Көк) % Бастапқы рұқсат кодындағы мәндерді кезекпен ауыстырады, егер b1 == 0 PASSCODE (0+b) = 1; elseif b2 == 0 PASSCODE (0+b) = 2; elseif b3 == 0 PASSCODE (0+b) = 3; elseif b4 == 0 PASSCODE (0+b) = 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); % Серваны есіктің кідірісін ашу үшін бұрады (5); writeDigitalPin (a, 'D8', 0); % Жасыл жарық кідірісін өшіреді (.1); writeDigitalPin (a, 'D7', 1); % Қызыл жарық кідірісін қосады (.5); writePosition (лар, 0); % Серваны есікті кідіртуге бұрады (1); writeDigitalPin (a, 'D7', 0); % Қызыл шамды өшіруді өшіреді (m7); ii = 1; break % PASSCODE ~ = «2314» writeDigitalPin (a, 'D7', 1) басқа рұқсат кодын енгізгеннен кейін рұқсат кодын қамтитын цикл кезінде шығады; % Қызыл шамды қосады m8 = msgbox ('Құпия код дұрыс емес! Қайталап көріңіз!'); waitfor (m8) writeDigitalPin (a, 'D7', 0); % Қызыл шамды өшіреді жалғастыру % рұқсат кодының соңын қайта енгізуге мүмкіндік береді, әйтпесе b1 == 0 && b4 == 0 % Егер рұқсат кодын енгізуді қаламасаңыз, рұқсат кодын қамтитын цикл бар кезде шығады; үзіліс соңы

Егер ол дұрыс болса, ол температура сенсорын басқаратын уақытша циклге бірден енеді. Егер қосқыш қосулы болса, онда цикл жалғасады және трендті көруге мүмкіндік беретін температура мен уақытты салыстырады. Егер температура сенсорына қосылған түйме басылса, ол сіздің «үйіңізде» температура қандай екендігі туралы электрондық поштаны жібереді. Егер қосқыш өшірілсе, ол кодты бірден тоқтатады

t = 0; % Бастапқы уақыт = 0 секунд үзіліс (5) % Пайдаланушыға 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 ('Уақыт секундпен'); ylabel ('Температура'); ось ([0, 180, 0, 100]); сюжет (t, temp_F, 'r.') легенда ('Температура ° С', 'Температура ° F') үзіліс (1); t = t + 1; % Уақыт санауышы секундпен % Электрондық пошта Бөлімі b_temp = readDigitalPin (a, 'D0'); % B_temp == 0 setpref ('Интернет', 'SMTP_Server', 'smtp.gmail.com') болса, D0 түйреуішіндегі (көк) температура түймесінің деректерін жинайды; 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 ('E-mail сәтті жіберілді! / N') end if temp_F> = 75 % Егер бөлме температурасы 75 ° F дейін көтерілсе… temp_AC = 65; % Термостаттағы температураны 65 ° F дейін өзгертеді, егер temp_F <= 65 % Егер бөлме температурасы 60 ° F дейін төмендесе… temp_AC = 80; % Термостаттағы температураны 80 ° F соңына дейін өзгертеді % «SWITCH == 0» соңы, егер қуат == «өшірулі» болса, цикл || ii == 1 % «power == on» күйінен цикл үзілісінің соңы % end «power == on» соңы, егер loop == «off» болса, цикл || ii == 1 % цикл үзілісінің аяқталуынан толық шығады

Бұл код пен оның функционалдығына қысқаша шолу болды. Қажет болса, біз толық кодты pdf ретінде тіркедік

Міне, әрбір құрылғы сыммен қосылатын порттың тізімі

1. RGB жарық диоды: сандық түйреуіштер (7, 8, 9)

2. Серво: цифрлық түйреуіш 6

3. Түймелер: сандық түйреуіштер (1, 2, 3, 4, 5)

4. Электрондық поштаның көк түймесі: Сандық түйреуіш 0

5. Температура сенсоры: Аналогты түйреуіш 1

6. Ауыстырғыш: Сандық түйреуіш 11

Ұсынылған: