Orodha ya maudhui:

Mdhibiti Mdogo wa MATLAB (Arduino MKR1000): Hatua 4
Mdhibiti Mdogo wa MATLAB (Arduino MKR1000): Hatua 4

Video: Mdhibiti Mdogo wa MATLAB (Arduino MKR1000): Hatua 4

Video: Mdhibiti Mdogo wa MATLAB (Arduino MKR1000): Hatua 4
Video: Japanese secret to whitening 10 degrées that eliminates pigmentation and dark spots 2024, Julai
Anonim
Mdhibiti Mdogo wa MATLAB (Arduino MKR1000)
Mdhibiti Mdogo wa MATLAB (Arduino MKR1000)

Lengo la mradi wetu lilikuwa kutumia MATLAB pamoja na Arduino MKR1000 kwa uwezo wetu wote. Lengo letu lilikuwa kuunda hati ambayo iliruhusu vipengee kadhaa vya arduino kupaka pato fulani kulingana na pembejeo maalum. Tulitumia vitanzi vingi na taarifa za masharti zilizoonyeshwa kwenye MATLAB ambazo zilifanya hii iwezekane. Tulitumia pia rununu ya MATLAB kwa kutumia data iliyopatikana kutoka kwa gyroscope ya kifaa cha rununu ili kuongeza mradi iwezekanavyo.

Hatua ya 1: Sehemu na Vifaa

Sehemu na Vifaa
Sehemu na Vifaa
Sehemu na Vifaa
Sehemu na Vifaa
Sehemu na Vifaa
Sehemu na Vifaa

MATLAB 2018a

-Toleo la 2018 la MATLAB ndio toleo linalopendwa zaidi, haswa kwa sababu inafanya kazi vizuri na nambari inayounganisha na kifaa cha rununu. Walakini, nambari zetu nyingi zinaweza kutafsiriwa na matoleo mengi ya MATLAB.

Arduino MKR1000

-Hiki ni kifaa maalum ambacho kinaturuhusu kuweka nyaya za waya hadi bandari zote za dijiti na sawa. Ni muhimu kwamba pia uwe na ubao wa mkate wa kwenda nayo.

Vifaa

-Wakati wa kutumia MKR1000, tulihitaji vifaa vya nyongeza ili kufanya kazi muhimu.

Hii ni pamoja na

  1. Servo
  2. Kitufe (6)
  3. Nuru ya LED ya RBG inayobadilika
  4. Waya rahisi
  5. ubao wa mkate
  6. kubadili nguvu mini
  7. sensor ya joto
  8. 330 ohm kupinga
  9. Kinzani ya 10K ohm
  10. Kamba ya USB-microUSB
  11. Laptop / desktop
  12. Kifaa cha rununu

Ikumbukwe pia kuwa kuna vifaa vingi, vingi zaidi ambavyo vinaweza kutumiwa na MKR1000

Hatua ya 2: MATLAB Arduino Kifurushi cha Usaidizi

Ili kutumia vizuri Arduino MKR1000 kupitia MATLAB, lazima upakue kifurushi cha MATLAB Support cha Arduino Hardware. Upakuaji huu hukupa ufikiaji wa kazi na maagizo fulani moja kwa moja kwa bodi ya arduino.

Unaweza kupakua kifurushi kwenye kiunga hapa chini

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

Hatua ya 3: Kutumia Sensorer za Takwimu zilizopatikana kutoka kwa Kifaa cha rununu

Kutumia Sensorer za Takwimu Zinazopatikana Kwenye Kifaa cha Mkononi
Kutumia Sensorer za Takwimu Zinazopatikana Kwenye Kifaa cha Mkononi

Programu ya rununu ya MATLAB inaturuhusu kutumia kifaa cha rununu kutiririsha data kwa kutumia gyroscope yake. Ili kupata data kupitia MATLAB, tunapata data kwa kuipata kutoka kwa matrix ya mwelekeo kutoka kwa rununu ya MATLAB. Tunafanya hivyo kwa kuunda kutofautisha kwa kila safu ya tumbo la mwelekeo (Azimuth, Pitch, na Roll), na kuorodhesha mkondo wa maadili wa kila wakati kutoka kwa kifaa cha rununu kwenda kwa kompyuta. Hii inatuwezesha kuunda matamko ya masharti ambayo yatatanguliza pato ikiwa MATLAB itachukua data maalum kutoka kwa kifaa cha rununu. Ili kufanya hivyo, utahitaji simu ya MATLAB kwenye kifaa chako cha rununu, na kifurushi cha msaada wa kifaa cha rununu cha MATLAB kwenye kompyuta yako.

Unaweza kupakua faili kwenye kiunga hapa chini

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

Hatua ya 4: Kanuni na Bandari za Wiring

Nambari huanza na ujumbe wa kuanza ambao unauliza ikiwa tunataka kuanzisha kifaa chetu cha usalama wa nyumbani. Ikiwa tunajibu ndio, na kutoa nambari sahihi ya kupitisha, hati hiyo mara moja inaruka kwenye kitanzi cha muda. Kutoka hapo, huanza kukusanya data kutoka kwa kifaa cha rununu. Kuna hali ambazo zinasoma data hii. Tunaweza kufungua na kufunga mfumo kutoka kwa kifaa chetu cha rununu, na nambari hiyo itageuza servo na kupepesa taa ya LED kulingana na data iliyotolewa kutoka kwa kifaa cha rununu

startup = questdlg ('Je! ungependa kuamilisha ecoTECH Smart Home Energy System?'); Huanza mlolongo wa uanzishaji wa ecoTECHwaitfor (startup); ikiwa kuanza == "Ndio" ikiwa "Ndio" imechaguliwa mlolongo wa uanzishaji huanza na kuingia kitanzi wakati wa mwisho wa nguvu = "kwenye"; m1 = msgbox ('Kuanzisha ecoTECH…'); pause (2); kufuta (m1); m1_wait = upau (0, 'Tafadhali subiri …'); hatua = 25; kwa i = 1: hatua pause (.1); kusubiri (i / hatua); Inasasisha kufuta mwisho wa kusubiri (m1_wait); PASSCODE = [0 0 0 0]; Inazindua nambari ya siri ii = 0; Inazindua ubadilishaji uliotumika kuvunja matanzi m2 = msgbox ('ecoTECH inafanya kazi kikamilifu!'); pause (2); kufuta (m2); kuanza mwingine == "Hapana" || startup == "Cancel"% Ikiwa "Hapana" au "Ghairi" imechaguliwa basi mlolongo wa uanzishaji hauanza na hauingii wakati wa nguvu ya kitanzi = "off"; m3 = msgbox ('Sawa! Kwaheri!'); pause (2); kufuta (m3); mwisho

% ecoTECH katika Sehemu ya Vitendo wakati kweli wakati nguvu == "kwenye"% Sehemu ya Ufunguo wa Simu wakati kweli% Inakusanya data kuhusu mwelekeo wa Roll wa kifaa cha rununu KEY = m. Orientation (3); Inakusanya data kuhusu vifungo b2 = readDigitalPin (a, 'D2'); Kifungo 2 (Nyekundu) b3 = somaDigitalPin (a, 'D3'); Kifungo 3 (Nyeupe) ikiwa MUHIMU> = 35% kwa digrii m4 = msgbox ('Karibu Nyumbani!'); andikaDigitalPin (a, 'D8', 1); Inawasha pause ya taa ya kijani kibichi (.5); nafasi ya kuandika (s, 1); Inageuza servo kufungua mlango wa pause (2); andikaDigitalPin (a, 'D8', 0); Inazima kufuta taa ya kijani kibichi (m4); vinginevyo ikiwa KEY <= -35% kwa digrii m5 = msgbox ('Mlango Umefungwa!'); andikaDigitalPin (a, 'D7', 1); Inawasha pause nyekundu ya taa (.5); nafasi ya kuandika (s, 0); Inageuza servo kufunga mlango wa pause (2); andikaDigitalPin (a, 'D7', 0); Inazima kufuta taa nyekundu (m5); ii = 1; mapumziko% hutoka wakati kitanzi kilicho na ufunguo wa rununu ikiwa mlango umefungwa kwa kutumia kifaa kingine ikiwa b2 == 0 && b3 == 0% Inatoka wakati kitanzi kilicho na kitufe cha rununu kuingia mwisho wa sehemu ya nambari ya siri

Baada ya hii, inaweza kuingia wakati mwingine kitanzi. Wakati huu kitanzi kinadhibiti matokeo kulingana na pembejeo kutoka kwa vifungo. Ikiwa kitanzi cha kwanza wakati kidogo ni kidogo, au kufungwa kwa mwongozo kunahitajika, itaingia kitanzi kingine wakati nywila maalum inahitajika. Ikiwa nenosiri si sahihi, itaanza tena kitanzi

wakati ni kweli ikiwa ii == 1% Inatoka wakati kitanzi kilicho na nenosiri ikiwa mlango ulifunguliwa na mwisho wa kifaa kuvunja% Inakusanya data kuhusu vifungo b5 = readDigitalPin (a, 'D5'); Kifungo 5 (Bluu) b1 = somaDigitalPin (a, 'D1'); Kifungo 1 (Nyeusi) b4 = somaDigitalPin (a, 'D4'); % Kitufe 4 (Nyeupe) ikiwa b5 == 0% Huanzisha nambari ya siri ya kuingia kwa b = 1: 5 m6 = msgbox ('Tafadhali Bonyeza Na Shikilia Kitufe'); pause (2); kufuta (m6); Inakusanya data kuhusu vifungo b1 = somaDigitalPin (a, 'D1'); Kifungo 1 (Nyeusi) b2 = somaDigitalPin (a, 'D2'); Kifungo 2 (Nyekundu) b3 = somaDigitalPin (a, 'D3'); Kifungo 3 (Nyeupe) b4 = somaDigitalPin (a, 'D4'); Kifungo 4 (Njano) b5 = somaDigitalPin (a, 'D5'); Kitufe cha 5 (Bluu)% Inabadilisha maadili katika nambari ya siri ya kwanza moja kwa moja ikiwa b1 == 0 PASSCODE (0 + b) = 1; mwingineif b2 == 0 PASSCODE (0 + b) = 2; mwingineif b3 == 0 PASSCODE (0 + b) = 3; mwingineif b4 == 0 PASSCODE (0 + b) = 4; mwingineif b5 == 0 PASSCODE = sprintf ('%. 0f%.0f%.0f%.0f', PASSCODE (1), PASSCODE (2), PASSCODE (3), PASSCODE (4)); % Inabadilisha mlolongo wa vitufe vilivyobanwa kuwa nambari kisha kuibadilisha kuwa mwisho wa kamba% Mwisho wa kitanzi cha kuingiza nambari za nambari za siri ikiwa PASSCODE == "2314"% Ikiwa nambari ya siri imeingia sawa basi mlango unafungua kwa sekunde chache kisha kufuli m7 = msgbox ('Karibu Nyumbani!'); andikaDigitalPin (a, 'D8', 1); Inawasha pause ya taa ya kijani kibichi (.5); nafasi ya kuandika (s, 1); Inageuza servo kufungua mlango wa pause (5); andikaDigitalPin (a, 'D8', 0); Huzima pause ya taa ya kijani kibichi (.1); andikaDigitalPin (a, 'D7', 1); Inawasha pause nyekundu ya taa (.5); nafasi ya kuandika (s, 0); Inageuza servo kufunga mlango wa pause (1); andikaDigitalPin (a, 'D7', 0); Inazima kufuta taa nyekundu (m7); ii = 1; mapumziko% hutoka wakati kitanzi kilicho na nambari ya siri baada ya kuingiza nambari nyingine sahihi ikiwa PASSCODE ~ = "2314" writeDigitalPin (a, 'D7', 1); % Inawasha taa nyekundu m8 = msgbox ('Nambari ya siri isiyo sahihi! Jaribu tena!'); subiri (m8) andikaDigitalPin (a, 'D7', 0); % Inazima taa nyekundu endelea Inakuwezesha kuweka tena nambari ya siri mwisho mwingine b1 == 0 && b4 == 0% Inatoka wakati kitanzi kikiwa na sehemu ya nambari ya siri ikiwa hautaki kuingiza nambari ya siri ii = 1; mwisho mwisho

Ikiwa ni sahihi, itaingia kitanzi mara moja ambayo inadhibiti sensa ya joto. Ikiwa swichi imewashwa, kitanzi kitaendelea kupitia na kupanga joto dhidi ya wakati, ikiruhusu mtu atazame mwenendo. Ikiwa kitufe kilichounganishwa na sensor ya joto kimeshinikizwa, pia itatuma barua pepe kukuambia hali ya joto iko katika "nyumba" yako. Ikiwa swichi imezimwa, itamaliza nambari hiyo mara moja

t = 0; % Wakati wa mwanzo = sekunde 0 pause (5)% Inampa wakati mtumiaji kuwasha swichi ya joto SWITCH = readDigitalPin (a, 'D11'); Inakusanya data juu ya kubadili kwenye pini D11 wakati SWITCH == 0 SWITCH = readDigitalPin (a, 'D11'); Inakusanya data juu ya kubadili kwenye pini D11 voltage = soma Voltage (a, 'A1'); Inasoma voltage kutoka kwa sensorer ya joto temp_C = (voltage. * 1000 - 500)./ 10; % Inabadilisha voltage kuwa joto katika ° C temp_F = (9/5). * Temp_C + 32; % Hubadilisha kutoka ° C hadi ° F kiwanja (t, temp_C, 'b.') Shikilia jina ('Joto la Chumba'); xlabel ('Wakati katika Sekunde'); ylabel ('Joto'); mhimili ([0, 180, 0, 100]); kiwanja (t, temp_F, 'r.') hadithi ('Joto katika ° C', 'Joto katika ° F') pause (1); t = t + 1; Muda wa kukabiliana na sekunde% Sehemu ya Barua pepe b_temp = readDigitalPin (a, 'D0'); Inakusanya data ya kitufe cha joto (bluu) kwenye pini D0 ikiwa b_temp == 0 setpref ('Internet', 'SMTP_Server', 'smtp.gmail.com'); setpref ('Mtandao', 'E_mail', '[email protected]'); Sender setpref ('Mtandao', 'SMTP_Username', '[email protected]'); % Setpref ya jina la mtumiaji wa Sender ('Internet', 'SMTP_Password', 'Integral_ecoTECH'); Maneno ya nywila ya Sender = java.lang. System.getProperties; props.setProperty ('mail.smtp.auth', 'kweli'); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); prop.setProperty ('mail.smtp.socketFactory.port', '465'); sendmail ('[email protected] ',' ecoTECH Joto la chumba ', sprintf (' Joto la sasa la chumba ni%.1f ° C au%.1f ° F. ', temp_C, temp_F)); Hutuma barua-pepe kwa mpokeaji akitoa data juu ya joto la sasa la chumba fprintf ('Barua pepe imefanikiwa kutumwa! / N') mwisho ikiwa temp_F> = 75% Ikiwa joto la chumba linaongezeka hadi 75 ° F… temp_AC = 65; % Inabadilisha joto kwenye thermostat hadi 65 ° F mwingineif temp_F <= 65% Ikiwa joto la chumba hupungua hadi 60 ° F… temp_AC = 80; % Inabadilisha joto kwenye thermostat hadi mwisho wa 80 ° F Mwisho wa "SWITCH == 0" wakati kitanzi ikiwa nguvu == "imezimwa" || ii == 1% Anaondoka "power == on" wakati mwisho wa mapumziko ya mwisho% End of "power == on" wakati kitanzi ikiwa nguvu == "off" || ii == 1% Inatoka kabisa wakati mwisho wa kuvunja kitanzi

Hii ilikuwa muhtasari mfupi tu wa nambari na utendaji wake. Tumeambatanisha nambari kamili kama pdf ikiwa inahitajika

Hapa kuna orodha ya bandari ambayo kila kifaa kina waya

1. RGB LED: Pini za Dijiti (7, 8, 9)

2. Servo: Pini ya Dijitali 6

Vifungo: Pini za Dijitali (1, 2, 3, 4, 5)

4. Kitufe cha Bluu kwa barua pepe: Dijiti ya Dijiti 0

5. Sensorer ya Joto: Pin ya Analog 1

6. Kubadili: Pini ya dijiti 11

Ilipendekeza: