Sisukord:
- Samm: osad ja materjalid
- Samm: MATLAB Arduino tugipakett
- Samm: mobiilseadmest hangitud andurite kasutamine
- Samm: kood ja juhtmestiku pordid
Video: MATLAB -i juhitav mikrokontroller (Arduino MKR1000): 4 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:48
Meie projekti eesmärk oli kasutada nii hästi kui võimalik nii MATLAB -i kui ka Arduino MKR1000. Meie eesmärk oli luua skript, mis võimaldas arduino teatud funktsioonidel konkreetse sisendi põhjal teatud väljundit esitada. Kasutasime seda MATLABis palju silmuseid ja tingimuslauseid. Kasutasime ka mobiiltelefoni MATLAB, kasutades projekti võimalikult täiustamiseks mobiilseadme güroskoobist saadud andmeid.
Samm: osad ja materjalid
MATLAB 2018a
-MATLABi 2018. aasta versioon on kõige eelistatum versioon, enamasti seetõttu, et see töötab kõige paremini mobiilseadmega ühendatava koodiga. Enamikku meie koodidest saab siiski tõlgendada enamiku MATLAB -i versioonidega.
Arduino MKR1000
-See on spetsiifiline seade, mis võimaldab meil ühendada vooluahelaid nii digitaalsete kui ka analoogsete portidega. On ülioluline, et teil oleks kaasas ka leivalaud.
Tarvikud
-MKR1000 kasutamisel vajasime vajalike funktsioonide täitmiseks tarvikuid.
See sisaldab
- Servo
- Nupp (6)
- Vahetatav RBG LED -tuli
- Lihtsad juhtmed
- leivaplaat (id)
- mini toitelüliti
- temperatuuriandur
- 330 oomi takisti
- 10K oomi takisti
- USB-microUSB juhe
- Sülearvuti/lauaarvuti
- Mobiilseade
Samuti tuleb märkida, et koos MKR1000 -ga saab kasutada palju -palju lisatarvikuid
Samm: MATLAB Arduino tugipakett
Arduino MKR1000 nõuetekohaseks kasutamiseks MATLAB -i kaudu peate alla laadima Arduino riistvara jaoks mõeldud MATLAB -i tugipaketi. See allalaadimine annab teile juurdepääsu teatud funktsioonidele ja käskudele otse arduino tahvlile.
Paketi saate alla laadida allolevalt lingilt
www.mathworks.com/matlabcentral/fileexchange/47522-matlab-support-package-for-arduino-hardware
Samm: mobiilseadmest hangitud andurite kasutamine
Mobiilirakendus MATLAB võimaldab meil kasutada güroskoobi abil andmete voogesitamiseks mobiilseadet. Andmete hankimiseks MATLAB -i kaudu saame andmed MATLAB -mobiililt orienteerumismaatriksilt toomisega. Selleks loome orientatsioonimaatriksi iga veeru jaoks (Azimuth, Pitch ja Roll) muutuja ning indekseerime mobiilseadmest arvutisse püsiva väärtuste voo. See võimaldab meil luua tingimuslauseid, mis koostavad väljundi, kui MATLAB võtab mobiilseadmest konkreetse andmesisendi. Selleks vajate oma mobiilseadmes mobiili MATLAB ja arvutis mobiilseadme tugipaketti MATLAB.
Faili saate alla laadida allolevalt lingilt
www.mathworks.com/matlabcentral/fileexchange/51235-matlab-support-package-for-apple-ios-sensors
Samm: kood ja juhtmestiku pordid
Kood algab käivitamisteatega, milles küsitakse, kas soovime oma koduvalveseadet käivitada. Kui vastame jaatavalt ja anname õige pääsukoodi, hüppab skript kohe mõnda aega. Sealt hakkab ta mobiilseadmest andmeid koguma. On tingimusi, mis loevad neid andmeid. Saame süsteemi avada ja lukustada oma mobiilseadmest ning kood pöörab servo ja vilgutab LED -tule, sõltuvalt mobiilseadmest saadud andmetest
startup = questdlg ('Kas soovite aktiveerida ecoTECH Smart Home Energy System?'); % Alustab ecoTECHwaitfor (käivitamine) aktiveerimisjärjestust; kui käivitamine == "Jah" % Kui valite "Jah", algab aktiveerimisjärjestus ja siseneb samasilmusesse lõpus power = "on"; m1 = msgbox ('ecoTECH käivitamine …'); paus (2); kustutada (m1); m1_wait = ooteriba (0, 'Palun oota …'); sammud = 25; i = 1: sammude paus (.1); ooteriba (i/sammud); % Värskendab ooteliba kustutamist (m1_wait); PASSCODE = [0 0 0 0]; % Initsialiseerib pääsukoodi ii = 0; % Initsialiseerib muutuja, mida kasutatakse silmustest väljamurdmiseks m2 = msgbox ('ecoTECH täielikult töökorras!'); paus (2); kustuta (m2); elseif käivitamine == "Ei" || startup == "Tühista" % Kui valite "Ei" või "Tühista", siis aktiveerimisjärjestus ei käivitu ja ei sisene samasilmusvõimsusele = "välja"; m3 = msgbox ('Okei! Hüvasti!'); paus (2); kustutada (m3); lõpp
% ecoTECH tegevussektsioonis, kuigi tõene, samas kui toide == "on" % mobiilivõtme sektsioon, samas kui tõsi % Kogub andmeid mobiilseadme rull -orientatsiooni kohta KEY = m. Orientation (3); % Kogub andmeid nuppude kohta b2 = readDigitalPin (a, 'D2'); % Nupp 2 (punane) b3 = readDigitalPin (a, 'D3'); % Nupp 3 (valge), kui KEY> = 35 % kraadides m4 = msgbox ('Tere tulemast koju!'); writeDigitalPin (a, 'D8', 1); % Lülitab rohelise tule pausi (.5) sisse; writePosition (s, 1); % Keerab servo, et avada uksepaus (2); writeDigitalPin (a, 'D8', 0); % Lülitab rohelise tule kustutamise välja (m4); elseif KEY <= -35 % kraadides m5 = msgbox ('Uks lukus!'); writeDigitalPin (a, 'D7', 1); % Lülitab sisse punase tule pausi (.5); writePosition (s, 0); % Pöörab servo ukse pausi lukustamiseks (2); writeDigitalPin (a, 'D7', 0); % Lülitab punase tule kustutamise välja (m5); ii = 1; break % Väljub, kui silmus sisaldab mobiilivõtit, kui uks on lukustatud mobiilseadme abil
Pärast seda võib see siseneda teise samasse ahelasse. See tsükkel kontrollib tulemusi nuppude sisendite põhjal. Kui esimese aja tsükkel on tühine või on vaja käsitsi lukustada, sisestab see teise ajalise tsükli, kus on vaja konkreetset parooli. Kui parool on vale, käivitab see ahela uuesti
kuigi tõene, kui ii == 1 % Väljub, kui pääsukoodi sisaldav silmus avatakse, kui uks avatakse mobiilseadme katkestamise lõpus % Kogub andmeid nuppude kohta b5 = readDigitalPin (a, 'D5'); % Nupp 5 (sinine) b1 = readDigitalPin (a, 'D1'); % Nupp 1 (must) b4 = readDigitalPin (a, 'D4'); % Nupp 4 (valge), kui b5 == 0 % Alustab parooli sisestamise sektsiooni b = 1: 5 m6 = msgbox ('Palun vajutage ja hoidke nuppu'); paus (2); kustutada (m6); % Kogub andmeid nuppude kohta b1 = readDigitalPin (a, 'D1'); % Nupp 1 (must) b2 = readDigitalPin (a, 'D2'); % Nupp 2 (punane) b3 = readDigitalPin (a, 'D3'); % Nupp 3 (valge) b4 = readDigitalPin (a, 'D4'); % Nupp 4 (kollane) b5 = readDigitalPin (a, 'D5'); % Nupp 5 (sinine) % Asendab algse pääsukoodi väärtused ükshaaval, kui 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)); % Muudab vajutatud nuppude jada numbriteks ja teisendab need stringide lõppu % Lõpu lõpuks pääsukoodi numbrite sisestamiseks, kui PASSCODE == "2314" % Kui sisestatud parool sobib, avaneb uks mõneks sekundiks ja seejärel lukustub m7 = msgbox ('Tere koju!'); writeDigitalPin (a, 'D8', 1); % Lülitab rohelise tule pausi (.5) sisse; writePosition (s, 1); % Keerab servo, et avada uksepaus (5); writeDigitalPin (a, 'D8', 0); % Lülitab rohelise tule pausi (.1) välja; writeDigitalPin (a, 'D7', 1); % Lülitab sisse punase tule pausi (.5); writePosition (s, 0); % Pöörab servo ukse pausi lukustamiseks (1); writeDigitalPin (a, 'D7', 0); % Lülitab punase tule kustutamise välja (m7); ii = 1; break % Väljub samas, kui tsükkel sisaldab pääsukoodi pärast õige pääsukoodi sisestamist elseif PASSCODE ~ = "2314" writeDigitalPin (a, 'D7', 1); % Lülitab punase tule sisse m8 = msgbox ('Vale pääsukood! Proovi uuesti!'); oota (m8) writeDigitalPin (a, 'D7', 0); % Lülitab punase tule välja jätkuvalt % Võimaldab teil pääsukoodi uuesti sisestada katkesta lõpp
Kui see on õige, siseneb see kohe temperatuuriandurit juhtivale ajaringile. Kui lüliti on sisse lülitatud, jätkub tsükkel ja joonistatakse temperatuuri ja aja graafik, võimaldades trendi vaadata. Kui vajutate temperatuurianduriga ühendatud nuppu, saadab see teile ka e -kirja, mis ütleb teile, milline temperatuur on teie kodus. Kui lüliti on välja lülitatud, lõpetab see koodi kohe
t = 0; % Esialgne aeg = 0 sekundit pausi (5) % Annab kasutajale aega temperatuurilüliti sisselülitamiseks SWITCH = readDigitalPin (a, 'D11'); % Kogub andmeid lüliti kohta tihvtis D11, samal ajal kui SWITCH == 0 SWITCH = readDigitalPin (a, 'D11'); % Kogub andmeid lüliti kohta tihvti D11 pinges = readVoltage (a, 'A1'); % Loeb pinge temperatuuriandurilt temp_C = (pinge.*1000 - 500)./ 10; % Teisendab pinge temperatuuriks ° C temp_F = (9/5).*Temp_C + 32; % Teisendab ° C -st ° F graafikuks (t, temp_C, 'b.'), Hoidke pealkirja ('Ruumi temperatuur'); xlabel ('Aeg sekundites'); ylabel ('Temperatuur'); telg ([0, 180, 0, 100]); graafiku (t, temp_F, 'r.') legend ('Temperatuur ° C', 'Temperatuur ° F') paus (1); t = t + 1; % Aja loendur sekundites % E-posti jaotis b_temp = readDigitalPin (a, 'D0'); % Kogub pinge D0 (sinise) temperatuuri nupu andmed, kui b_temp == 0 setpref ('Internet', 'SMTP_Server', 'smtp.gmail.com'); setpref ('Internet', 'E_mail', '[email protected]'); % Saatja setpref ('Internet', 'SMTP_Username', '[email protected]'); % Saatja kasutajanimi setpref ('Internet', 'SMTP_Password', 'Integral_ecoTECH'); % Saatja parooli rekvisiidid = 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 Room Temperature', sprintf ('Praegune toatemperatuur on %.1f ° C või %.1f ° F.', temp_C, temp_F)); % Saadab e-kirja saajale, andes andmed hetke toatemperatuuri kohta fprintf ('E-kiri edukalt saadetud! / N') lõpp, kui temp_F> = 75 % Kui toatemperatuur tõuseb 75 ° F… temp_AC = 65; % Muudab termostaadi temperatuuri 65 ° F muidu temp_F <= 65 % Kui toatemperatuur langeb temperatuurini 60 ° F… temp_AC = 80; % Muudab termostaadi temperatuuri 80 ° F lõpp -otsa % "SWITCH == 0" lõpp, samas kui silmus, kui toide == "väljas" || ii == 1 % Väljub "toide == sisselülitatud", samal ajal kui silmus katkeb lõppu % "Toide == sisse", kui tsükkel on toide == "väljas" || ii == 1 % Väljub täielikult, samal ajal kui silmuskatkestus lõpeb
See oli vaid lühike ülevaade koodist ja selle toimivusest. Vajadusel oleme lisanud täieliku koodi pdf -failina
Siin on nimekiri sellest, millisesse pessa iga seade on ühendatud
1. RGB LED: digitaalsed tihvtid (7, 8, 9)
2. Servo: digitaalne tihvt 6
3. Nupud: digitaalsed tihvtid (1, 2, 3, 4, 5)
4. Sinine nupp e -posti jaoks: digitaalne pin 0
5. Temperatuuriandur: analoogtapp 1
6. Lüliti: digitaalne tihvt 11
Soovitan:
IoT Halloweeni kõrvits - Juhtige LED -e Arduino MKR1000 ja Blynk rakendusega ???: 4 sammu (piltidega)
IoT Halloweeni kõrvits | Juhtige LED -e Arduino MKR1000 ja rakendusega Blynk ???: Tere kõigile! Paar nädalat tagasi oli Halloween ja traditsiooni järgides nikerdasin oma rõdule kena kõrvitsa. Aga kui ma sain kõrvitsa õues, mõistsin, et päris tüütu oli igal õhtul küünla süütamiseks väljas käia. Ja mina
DIY Arduino Bluetooth -juhitav auto: 6 sammu (piltidega)
DIY Arduino Bluetooth -juhitav auto: Tere sõbrad! Minu nimi on Nikolas, olen 15 -aastane ja elan Kreekas Ateenas. Täna näitan teile, kuidas teha kaherattalist Bluetooth-juhitavat autot, kasutades Arduino Nano, 3D-printerit ja mõningaid lihtsaid elektroonilisi komponente! Vaadake kindlasti minu
Žestidega juhitav robot Arduino abil: 7 sammu
Žestidega juhitav robot Arduino abil: Roboteid kasutatakse paljudes sektorites, nagu ehitus, sõjavägi, tootmine, kokkupanek jne. Robotid võivad olla autonoomsed või poolautonoomsed. Autonoomsed robotid ei vaja inimeste sekkumist ja võivad vastavalt olukorrale iseseisvalt tegutseda. Näe
Nutikas kodu Arduino MKR1000 ja M.I.T. Androidi rakendus: 4 sammu
Nutikas kodu Arduino MKR1000 ja M.I.T. Androidi rakendus: selles õpetuses kirjeldan, kuidas oma nutikat kodu vaid mõne komponendiga täiustada. Selle nutika kodu disaini süda on rakendusega juhitav Arduino MKR1000 tahvel, mis on loodud M.I.T. (Massachusettsi Instituut
Kuidas teha liinijälgija robotit ilma Arduino kasutamata (mikrokontroller): 5 sammu
Kuidas teha liinijälgija robotit ilma Arduino kasutamata (mikrokontroller) järgige joont. Te ei vaja programmeerimiskogemust