Përmbajtje:
- Hapi 1: Pjesët dhe materialet
- Hapi 2: Paketa Mbështetëse MATLAB Arduino
- Hapi 3: Përdorimi i sensorëve të të dhënave të marra nga pajisja celulare
- Hapi 4: Kodi dhe Portet e Telave
Video: Mikrokontrolluesi i kontrolluar MATLAB (Arduino MKR1000): 4 hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:20
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
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
- Servo
- Butoni (6)
- Drita LED e këmbyeshme RBG
- Tela të thjeshta
- dërrasë buke
- mini ndërprerës i energjisë
- sensor temperature
- Rezistencë 330 ohm
- Rezistencë 10K Ohm
- Kabllo USB-microUSB
- Laptop/desktop
- 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
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:
Si të merrni të dhëna nga mikrokontrolluesi i bazuar në STM32 në kompjuter: 5 hapa
Si të merrni të dhëna nga mikrokontrolluesi i bazuar në STM32 në kompjuter: Këtu në këtë tutorial ne kemi transmetuar të dhëna nga mikrokontrolluesi në kompjuter duke përdorur një nga UART të STM32l100 mcu
Mikrokontrolluesi AVR. Sensori i distancës tejzanor. HC-SR04 në LCD NOKIA 5110: 4 hapa
Mikrokontrolluesi AVR. Sensori i distancës tejzanor. HC-SR04 në LCD NOKIA 5110: Përshëndetje të gjithëve! Në këtë pjesë unë bëj një pajisje të thjeshtë elektronike për të matur distancën dhe këto parametra shfaqen në LCD NOKIA 5110. Parametrat shfaqen si një diagram dhe numra. Pajisja bazohet në mikrokontrolluesin AVR ATMEG
Mikrokontrolluesi AVR. Ndryshoni LED -të duke përdorur një çelës butoni me shtytje. Butoni i Shtypjes Debouncing .: 4 Hapa
Mikrokontrolluesi AVR. Ndryshoni LED -të duke përdorur një çelës butoni me shtytje. Butoni i Shtypjes Debouncing .: Në këtë pjesë, ne do të mësojmë Si të bëjmë programin C kodin për ATMega328PU për të ndryshuar statusin e tre LED -ve sipas hyrjes nga një çelës butoni. Gjithashtu, ne kemi eksploruar një zgjidhje për problemin e "Switch Bounce". Si zakonisht, ne duam
Mikrokontrolluesi AVR. Modulimi i Gjerësisë së Pulsit. Kontrolluesi i DC Motor dhe intensiteti i dritës LED .: 6 hapa
Mikrokontrolluesi AVR. Modulimi i Gjerësisë së Pulsit. Kontrolluesi i DC Motor dhe Intensiteti i Dritës LED .: Përshëndetje të gjithëve! Modulimi i Gjerësisë së Pulsit (PWM) është një teknikë shumë e zakonshme në telekomunikacionin dhe kontrollin e fuqisë. zakonisht përdoret për të kontrolluar fuqinë e furnizuar me një pajisje elektrike, qoftë një motor, një LED, altoparlantë, etj. isshtë në thelb një modul
Mikrokontrolluesi AVR. LEDs Flasher Duke përdorur Timer. Kohëmatësit ndërpret. Kohëmatësi Mënyra CTC: 6 hapa
Mikrokontrolluesi AVR. LED ndezës duke përdorur kohëmatës. Kohëmatësit ndërpret. Mënyra CTC e kohëmatësit: Përshëndetje të gjithëve! Kohëmatësit janë një koncept i rëndësishëm në fushën e elektronikës. Çdo komponent elektronik funksionon në një bazë kohore. Kjo bazë kohore ndihmon për të mbajtur të gjithë punën të sinkronizuar. Të gjithë mikrokontrolluesit punojnë në një frekuencë të paracaktuar orësh,