Orodha ya maudhui:
- Hatua ya 1: Sehemu na Vifaa
- Hatua ya 2: MATLAB Arduino Kifurushi cha Usaidizi
- Hatua ya 3: Kutumia Sensorer za Takwimu zilizopatikana kutoka kwa Kifaa cha rununu
- Hatua ya 4: Kanuni na Bandari za Wiring
Video: Mdhibiti Mdogo wa MATLAB (Arduino MKR1000): Hatua 4
2024 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2024-01-30 12:52
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
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
- Servo
- Kitufe (6)
- Nuru ya LED ya RBG inayobadilika
- Waya rahisi
- ubao wa mkate
- kubadili nguvu mini
- sensor ya joto
- 330 ohm kupinga
- Kinzani ya 10K ohm
- Kamba ya USB-microUSB
- Laptop / desktop
- 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
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:
Mpangaji Mdogo wa Watawala Mdogo wa ATTINY Na Arduino UNO: Hatua 7
Mpangaji Mdogo wa Watawala Wadhibiti Wadogo Na Arduino UNO: Kwa sasa inafurahisha kutumia wadhibiti wa mfululizo wa ATTINY kwa sababu ya utofautishaji wao, bei ya chini lakini pia ukweli kwamba wanaweza kusanidiwa kwa urahisi katika mazingira kama Arduino IDE. kuhamisha kwa urahisi
Dispenser ya Msaada wa Usaidizi wa Usaidizi wa Msaada wa DIY Bila Arduino au Mdhibiti Mdogo: Hatua 17 (na Picha)
Dispenser ya Msaada wa Msaada wa Msaada wa DIY bila Arduino au Mdhibiti Mdogo: Kama tunavyojua, mlipuko wa COVID-19 uligonga ulimwengu na kubadilisha mtindo wetu wa maisha. Katika hali hii, Pombe na vifaa vya kusafisha mikono ni maji muhimu, hata hivyo, lazima zitumiwe vizuri. Kugusa vyombo vya pombe au dawa ya kusafisha mikono na mikono iliyoambukizwa c
Sensor ya Kizuizi cha IR Bila Kutumia Arduino au Mdhibiti wowote Mdogo: Hatua 6
Sensor ya Kizuizi cha IR Bila Kutumia Arduino au Mdhibiti Mdogo wowote: Katika mradi huu tutafanya sensorer ya kikwazo bila kutumia microcontroller yoyote
Mdhibiti mdogo wa AVR. Pulse Modulation Upana. Mdhibiti wa DC Motor na Mwangaza wa Mwanga wa LED.: 6 Hatua
Mdhibiti mdogo wa AVR. Pulse Modulation Upana. Mdhibiti wa DC Motor na Uzito wa Mwanga wa LED. Halo kila mtu! Pulse Modding Width (PWM) ni mbinu ya kawaida sana katika mawasiliano ya simu na udhibiti wa nguvu. ni kawaida kutumika kudhibiti nguvu inayolishwa kwa kifaa cha umeme, iwe ni motor, LED, spika, n.k kimsingi ni modu
Mradi Mdogo wa Mdhibiti Mdogo wa Chini ya Dola 2: Hatua 11
Mradi Mdogo wa Mdhibiti Mdogo wa Chini ya $ 2 Bucks: Kuna mengi kwenye mtandao kuhusu kuanza na watawala wa Micro. Kuna chaguo nyingi huko nje, njia nyingi za kuzipanga ikiwa unaanza au sio na chip yenyewe, bodi za maendeleo au SOC kamili (System On Chip)