Përmbajtje:

Mikrokontrolluesi i kontrolluar MATLAB (Arduino MKR1000): 4 hapa
Mikrokontrolluesi i kontrolluar MATLAB (Arduino MKR1000): 4 hapa

Video: Mikrokontrolluesi i kontrolluar MATLAB (Arduino MKR1000): 4 hapa

Video: Mikrokontrolluesi i kontrolluar MATLAB (Arduino MKR1000): 4 hapa
Video: Enciende y Apaga un Led con Arduino UNO 2024, Nëntor
Anonim
Mikrokontrollues i kontrolluar MATLAB (Arduino MKR1000)
Mikrokontrollues i kontrolluar MATLAB (Arduino MKR1000)

Qëllimi i projektit tonë ishte të përdorim MATLAB si dhe Arduino MKR1000 në maksimumin e aftësive tona. Qëllimi ynë ishte të krijonim një skenar që lejonte veçori të caktuara të arduino të përfundonin një dalje të caktuar bazuar në një input specifik. Ne përdorëm shumë sythe dhe deklarata të kushtëzuara të paraqitura në MATLAB që e bënë këtë të mundur. Ne gjithashtu përdorëm MATLAB celular duke përdorur të dhënat e marra nga xhiroskopi i një pajisjeje celulare për të përmirësuar projektin sa më shumë që të jetë e mundur.

Hapi 1: Pjesët dhe materialet

Pjesët dhe materialet
Pjesët dhe materialet
Pjesët dhe materialet
Pjesët dhe materialet
Pjesët dhe materialet
Pjesët dhe materialet

MATLAB 2018a

-Variacioni 2018 i MATLAB është versioni më i preferuar, kryesisht sepse punon më së miri me kodin që lidhet me pajisjen celulare. Sidoqoftë, shumica e kodit tonë mund të interpretohet nga shumica e versioneve të MATLAB.

Arduino MKR1000

-Kjo është një pajisje specifike që na lejon të lidhim qarqe deri në portet dixhitale dhe analoge. Vitalshtë me rëndësi jetike që të keni edhe një dërrasë buke për të shkuar së bashku me të.

Aksesorë

-Kur përdorim MKR1000, na duheshin pjesë shtesë për të kryer funksionet e nevojshme.

Kjo perfshin

  1. Servo
  2. Butoni (6)
  3. Drita LED e këmbyeshme RBG
  4. Tela të thjeshta
  5. dërrasë buke
  6. mini ndërprerës i energjisë
  7. sensor temperature
  8. Rezistencë 330 ohm
  9. Rezistencë 10K Ohm
  10. Kabllo USB-microUSB
  11. Laptop/desktop
  12. Pajisje celulare

Duhet gjithashtu të theksohet se ka shumë, shumë më tepër pajisje shtesë që mund të përdoren me MKR1000

Hapi 2: Paketa Mbështetëse MATLAB Arduino

Në mënyrë që të përdorni siç duhet Arduino MKR1000 përmes MATLAB, duhet të shkarkoni Paketën Mbështetëse MATLAB për Arduino Hardware. Ky shkarkim ju jep akses në funksione dhe komanda të caktuara direkt në bordin arduino.

Ju mund ta shkarkoni paketën në lidhjen më poshtë

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

Hapi 3: Përdorimi i sensorëve të të dhënave të marra nga pajisja celulare

Përdorimi i sensorëve të të dhënave të marra nga pajisja celulare
Përdorimi i sensorëve të të dhënave të marra nga pajisja celulare

Aplikacioni MATLAB Mobile na lejon të përdorim një pajisje celulare për të transmetuar të dhëna duke përdorur xhiroskopin e saj. Për të marrë të dhënat përmes MATLAB, i marrim të dhënat duke i marrë nga matrica e orientimit nga celulari MATLAB. Ne e bëjmë këtë duke krijuar një ndryshore për secilën kolonë të matricës së orientimit (Azimuth, Pitch dhe Roll), dhe duke indeksuar rrjedhën konstante të vlerave nga pajisja celulare në kompjuter. Kjo na lejon të krijojmë deklarata të kushtëzuara që do të formojnë një dalje nëse MATLAB merr një hyrje specifike të të dhënave nga pajisja celulare. Për ta bërë këtë, do t'ju duhet MATLAB celular në pajisjen tuaj celular dhe paketën mbështetëse të pajisjes celulare për MATLAB në kompjuterin tuaj.

Ju mund ta shkarkoni skedarin në lidhjen më poshtë

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

Hapi 4: Kodi dhe Portet e Telave

Kodi fillon me një mesazh fillimi që pyet nëse duam të fillojmë pajisjen tonë të sigurisë në shtëpi. Nëse përgjigjemi po, dhe japim kodkalimin e duhur, skenari hidhet menjëherë në një lak ndërkohë. Nga atje, fillon mbledhjen e të dhënave nga pajisja celulare. Ka kushte që i lexojnë këto të dhëna. Ne mund të zhbllokojmë dhe kyçim sistemin nga pajisja jonë celulare, dhe kodi do të kthejë servo -n dhe do të ndezë dritën LED në varësi të të dhënave të dhëna nga pajisja celulare

startup = questdlg ('Dëshironi të aktivizoni sistemin energjetik ekoTECH Smart Home?'); % Fillon sekuenca e aktivizimit të ecoTECHwaitfor (fillimi); nëse fillimi == "Po" % Nëse zgjidhet "Po" fillon një sekuencë aktivizimi dhe hyn në lakin while në fuqinë përfundimtare = "on"; m1 = msgbox ('Fillimi i ecoTECH…'); pauzë (2); fshini (m1); m1_wait = shirit pritjeje (0, 'Ju lutemi prisni…'); hapa = 25; për i = 1: hapa pauzë (.1); shirit pritjeje (i/hapa); % Përditëson fshirjen e fundit të shiritit të pritjes (m1_wait); KOD KALIMI = [0 0 0 0]; % Fillon kodkalimin ii = 0; % Fillon një ndryshore të përdorur për të dalë nga sythe m2 = msgbox ('ekoTECH plotësisht funksionale!'); pauzë (2); fshini (m2); elseif fillimi == "Jo" || fillimi == "Anulo" % Nëse zgjidhet "Jo" ose "Anulo" atëherë sekuenca e aktivizimit nuk fillon dhe nuk hyn në fuqinë e lakut while = "off"; m3 = msgbox ('Mirë! Mirupafshim!'); pauzë (2); fshini (m3); fund

% ecoTECH në Seksionin e Veprimit ndërsa është e vërtetë ndërsa fuqia == "në" % Seksioni i Çelësit të celularit ndërsa i vërtetë % Mbledh të dhëna në lidhje me orientimin Roll të pajisjes celulare KEY = m. Orientimi (3); % Mbledh të dhëna në lidhje me butonat b2 = readDigitalPin (a, 'D2'); % Butoni 2 (E kuqe) b3 = lexoDigitalPin (a, 'D3'); % Butoni 3 (E Bardhë) nëse KELEY>> 35 % në gradë m4 = msgbox ('Mirësevini në shtëpi!'); writeDigitalPin (a, 'D8', 1); % Ndiz pauzën e dritës jeshile (.5); writePosition (s, 1); % Kthehet servo për të zhbllokuar pauzën e derës (2); writeDigitalPin (a, 'D8', 0); % Fik fshirjen e dritës jeshile (m4); elseif KRYESORE <= -35 % në gradë m5 = msgbox ('Dera e Bllokuar!'); writeDigitalPin (a, 'D7', 1); % Ndiz pauzën e dritës së kuqe (.5); writePosition (s, 0); % Kthen servon për të bllokuar pauzën e derës (2); writeDigitalPin (a, 'D7', 0); % Fik fshirjen e dritës së kuqe (m5); ii = 1; prishja % Dil kur laku që përmban çelësin celular nëse dera është e kyçur duke përdorur pajisjen celulare

Pas kësaj, ai mund të hyjë në një lak while. Kjo ndërsa loop kontrollon rezultatet bazuar në hyrjet nga butonat. Nëse laku i parë ndërkohë është i papërfillshëm, ose kërkohet një bllokim manual, ai do të hyjë në një lak tjetër ndërsa kërkon një fjalëkalim specifik. Nëse fjalëkalimi është i pasaktë, do të rifillojë lakin

ndërsa e vërtetë nëse ii == 1 % Dil kur laku që përmban kodkalim nëse dera ishte e hapur me fundin e prishjes së pajisjes celulare % Mbledh të dhëna në lidhje me butonat b5 = readDigitalPin (a, 'D5'); % Butoni 5 (Blu) b1 = lexoDigitalPin (a, 'D1'); % Butoni 1 (E Zezë) b4 = lexoDigitalPin (a, 'D4'); % Button 4 (E Bardhë) nëse b5 == 0 % Fillon seksionin e hyrjes së kodkalimit për b = 1: 5 m6 = msgbox ('Ju lutemi Shtypni Dhe Mbani Një Buton'); pauzë (2); fshini (m6); % Mbledh të dhëna në lidhje me butonat b1 = readDigitalPin (a, 'D1'); % Butoni 1 (E zezë) b2 = lexoDigitalPin (a, 'D2'); % Butoni 2 (E kuqe) b3 = lexoDigitalPin (a, 'D3'); % Butoni 3 (E Bardhë) b4 = lexoDigitalPin (a, 'D4'); % Butoni 4 (E verdhë) b5 = lexoDigitalPin (a, 'D5'); % Butoni 5 (Blu) % Zëvendëson vlerat në kodin fillestar një nga një nëse b1 == 0 0 Kodi i kalimit (0+b) = 1; elseif b2 == 0 0 KODIN E KALIMIT (0+b) = 2; elseif b3 == 0 0 KODIN E KALIMIT (0+b) = 3; elseif b4 == 0 0 KODIN E KALIMIT (0+b) = 4; elseif b5 == 0 PASSCODE = sprintf ('%. 0f%.0f%.0f%.0f', PASSCODE (1), PASSCODE (2), PASSCODE (3), PASSCODE (4)); % Kthen sekuencën e butonave të shtypur në numra pastaj e shndërron atë në një fund përfundimtar të vargut % Fundi i lakut për futjen e shifrave për kodkalim nëse PASSCODE == "2314" % Nëse kodi i futur përputhet atëherë dera zhbllokohet për disa sekonda pastaj bllokohet m7 = msgbox ('Mirësevini në shtëpi!'); writeDigitalPin (a, 'D8', 1); % Ndiz pauzën e dritës jeshile (.5); writePosition (s, 1); % Kthehet servo për të zhbllokuar pauzën e derës (5); writeDigitalPin (a, 'D8', 0); % Fik pauzën e dritës jeshile (.1); writeDigitalPin (a, 'D7', 1); % Ndiz pauzën e dritës së kuqe (.5); writePosition (s, 0); % Kthen servon për të bllokuar pauzën e derës (1); writeDigitalPin (a, 'D7', 0); % Fik fshirjen e dritës së kuqe (m7); ii = 1; pushim % Dalja ndërsa laku që përmban kodkalim pasi të keni futur kodkalimin e saktë elseif PASSCODE ~ = "2314" writeDigitalPin (a, 'D7', 1); % Ndiz dritën e kuqe m8 = msgbox ('Fjalëkalimi i pasaktë! Provo përsëri!'); prisni (m8) shkruaniDigitalPin (a, 'D7', 0); % Fik vazhdimin e dritës së kuqe % Ju lejon të futni përsëri një fund të kodkalimit elseif b1 == 0 && b4 == 0 % Dil kur laku që përmban seksionin e kodkalimit nëse nuk doni të futni një kodkalim ii = 1; pushim fund fund

Nëse është e saktë, menjëherë do të hyjë në një lak, i cili kontrollon sensorin e temperaturës. Nëse çelësi është i ndezur, lak do të vazhdojë dhe do të vizatojë temperaturën kundrejt grafikut të kohës, duke e lejuar atë të shikojë trendin. Nëse shtypet butoni i lidhur me sensorin e temperaturës, ai gjithashtu do të dërgojë një email duke ju treguar se sa është temperatura në "shtëpinë" tuaj. Nëse çelësi është i fikur, ai menjëherë do të përfundojë kodin

t = 0; % Koha fillestare = 0 sekonda pauzë (5) % I jep kohë përdoruesit të ndezë çelësin e temperaturës SWITCH = readDigitalPin (a, 'D11'); % Mbledh të dhëna në lidhje me kalimin në pin D11 ndërsa SWITCH == 0 SWITCH = readDigitalPin (a, 'D11'); % Mbledh të dhëna në lidhje me ndërprerësin në tensionin D11 = leximi i tensionit (a, 'A1'); % Lexon tensionin nga sensori i temperaturës temp_C = (tension.*1000 - 500)./ 10; % Shndërron tensionin në temperaturë në ° C temp_F = (9/5).*Temp_C + 32; % Konverton nga ° C në ° F komplot (t, temp_C, 'b.') Mbaj titullin ('Temperatura e dhomës'); xlabel ('Koha në sekonda'); ylabel ('Temperatura'); boshti ([0, 180, 0, 100]); komplot (t, temp_F, 'r.') legjenda ('Temperatura në ° C', 'Temperatura në ° F') pauzë (1); t = t + 1; % Numëruesi i kohës në sekonda % E-mail Seksioni b_temp = readDigitalPin (a, 'D0'); % Mbledh të dhënat e butonit të temperaturës (blu) në pin D0 nëse b_temp == 0 setpref ('Internet', 'SMTP_Server', 'smtp.gmail.com'); setpref ('Internet', 'E_mail', '[email protected]'); % Dërguesi i setpref ('Internet', 'SMTP_Username', '[email protected]'); % Setpref i emrit të përdoruesit të dërguesit ('Internet', 'SMTP_Password', 'Integral_ecoTECH'); % Regjistrimi i fjalëkalimit të dërguesit = 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] ',' ekoTECH Temperatura e Dhomës ', sprintf (' Temperatura aktuale e dhomës është %.1f ° C ose %.1f ° F. ', temp_C, temp_F)); % I dërgon një e-mail marrësit duke dhënë të dhëna për temperaturën aktuale të dhomës fprintf ('E-mail u dërgua me sukses! / N') përfundon nëse temp_F> = 75 % Nëse temperatura e dhomës rritet në 75 ° F… temp_AC = 65; % Ndryshon temperaturën në termostat në 65 ° F elseif temp_F <= 65 % Nëse temperatura e dhomës zbret në 60 ° F… temp_AC = 80; % Ndryshon temperaturën në termostat në fund 80 ° F fund % Fundi i "SWITCH == 0" ndërsa lak nëse fuqia == "off" || ii == 1 % Del "power == on" ndërsa fundi i pushimit të ciklit fund % Fundi i "power == on" ndërsa loop nëse fuqia == "off" || ii == 1 % Dalja e plotë ndërsa përfundimi i lakut përfundon

Ky ishte vetëm një përmbledhje e shkurtër e kodit dhe funksionueshmërisë së tij. Ne kemi bashkangjitur kodin e plotë si pdf nëse është e nevojshme

Këtu është lista e portës në të cilën lidhet secila pajisje

1. LED RGB: Kunjat dixhitale (7, 8, 9)

2. Servo: Pin Pin 6

3. Butonat: Kunjat dixhitale (1, 2, 3, 4, 5)

4. Butoni Blu për email: Pin dixhital 0

5. Sensori i temperaturës: Kunja analoge 1

6. Ndërprerësi: Pin dixhital 11

Recommended: