Sisällysluettelo:
- Vaihe 1: Osat ja materiaalit
- Vaihe 2: MATLAB Arduino -tukipaketti
- Vaihe 3: Mobiililaitteelta hankittujen data -antureiden käyttäminen
- Vaihe 4: Koodi ja johdotusportit
Video: MATLAB -ohjattu mikro -ohjain (Arduino MKR1000): 4 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:02
Hankkeemme tavoitteena oli hyödyntää MATLABia ja Arduino MKR1000: ta parhaan kykymme mukaan. Tavoitteenamme oli luoda käsikirjoitus, jonka avulla arduinon tietyt ominaisuudet voivat suorittaa tietyn tuloksen tietyn syötteen perusteella. Käytimme monia MATLABissa olevia silmukoita ja ehdollisia lausuntoja, jotka mahdollistivat tämän. Käytimme myös MATLAB mobilea käyttämällä mobiililaitteen gyroskoopista saatuja tietoja tehostaaksemme projektia mahdollisimman paljon.
Vaihe 1: Osat ja materiaalit
MATLAB 2018a
-MATLABin vuoden 2018 versio on suosituin versio, lähinnä siksi, että se toimii parhaiten mobiililaitteeseen yhdistettävän koodin kanssa. Suurin osa koodistamme voidaan kuitenkin tulkita useimmilla MATLAB -versioilla.
Arduino MKR1000
-Tämä on erityinen laite, jonka avulla voimme kytkeä piirit sekä digitaalisiin että analogisiin portteihin. On tärkeää, että sinulla on myös leipälauta sen mukana.
Lisätarvikkeet
-Kun käytimme MKR1000 -laitetta, tarvitsimme tarvikkeita tarvittavien toimintojen suorittamiseen.
Tämä sisältää
- Servo
- Painike (6)
- Vaihdettava RBG LED -valo
- Yksinkertaiset johdot
- leipälauta (t)
- mini virtakytkin
- lämpösensori
- 330 ohmin vastus
- 10K ohmin vastus
- USB-microUSB-johto
- Kannettava/pöytäkone
- Mobiililaite
On myös huomattava, että MKR1000: n kanssa voidaan käyttää monia muita lisävarusteita
Vaihe 2: MATLAB Arduino -tukipaketti
Jotta voit käyttää Arduino MKR1000 -laitetta oikein MATLABin kautta, sinun on ladattava Arduino -laitteiston MATLAB -tukipaketti. Tämä lataus antaa sinulle pääsyn tiettyihin toimintoihin ja komentoihin suoraan arduino -kortille.
Voit ladata paketin alla olevasta linkistä
www.mathworks.com/matlabcentral/fileexchange/47522-matlab-support-package-for-arduino-hardware
Vaihe 3: Mobiililaitteelta hankittujen data -antureiden käyttäminen
MATLAB -mobiilisovelluksen avulla voimme käyttää mobiililaitetta datan suoratoistoon sen gyroskoopin avulla. Saadaksemme tiedot MATLABin kautta, saamme tiedot hakemalla ne MATLAB -mobiililaitteen orientointimatriisista. Teemme tämän luomalla muuttujan jokaiselle orientaatiomatriisin sarakkeelle (Azimuth, Pitch ja Roll) ja indeksoimalla jatkuvan arvovirran mobiililaitteesta tietokoneeseen. Tämän avulla voimme luoda ehdollisia lausuntoja, jotka muodostavat lähdön, jos MATLAB poimii tietyn datatulon mobiililaitteesta. Tätä varten tarvitset mobiililaitteellasi MATLAB -mobiililaitteen ja tietokoneellasi MATLAB -mobiililaitteiden tukipaketin.
Voit ladata tiedoston alla olevasta linkistä
www.mathworks.com/matlabcentral/fileexchange/51235-matlab-support-package-for-apple-ios-sensors
Vaihe 4: Koodi ja johdotusportit
Koodi alkaa käynnistysviestillä, jossa kysytään, haluammeko käynnistää kodin turvalaitteen. Jos vastaamme kyllä ja annamme oikean salasanan, komentosarja hyppää heti hetken silmukkaan. Sieltä se alkaa kerätä tietoja mobiililaitteesta. On ehtoja, jotka lukevat nämä tiedot. Voimme avata ja lukita järjestelmän mobiililaitteeltamme, ja koodi kääntää servon ja vilkuttaa LED -valoa mobiililaitteesta saatujen tietojen mukaan
startup = questdlg ('Haluatko aktivoida ecoTECH Smart Home Energy System -järjestelmän?'); % Aloittaa ecoTECHwaitforin (käynnistyksen) aktivointisekvenssin; jos käynnistys == "Kyllä" % Jos "Kyllä" on valittu, aktivointisekvenssi alkaa ja tulee samalla kun silmukka lopussa power = "on"; m1 = msgbox ('ecoTECHin käynnistäminen …'); tauko (2); poista (m1); m1_wait = odotuspalkki (0, 'Odota …'); vaiheet = 25; i = 1: askeleet tauko (.1); odotuspalkki (i/vaiheet); % Päivittää odotuspalkin poiston (m1_wait); PASSCODE = [0 0 0 0]; % Alustaa salasanan ii = 0; % Alustaa muuttujan, jota käytetään murtumaan silmukoista m2 = msgbox ('ecoTECH täysin toiminnassa!'); tauko (2); poista (m2); elseif käynnistys == "Ei" || startup == "Peruuta" % Jos "Ei" tai "Peruuta" on valittu, aktivointisekvenssi ei käynnisty eikä tule samalla kun silmukka power = "off"; m3 = msgbox ('Okei! Hyvästi!'); tauko (2); poista (m3); loppuun
% ecoTECH toiminnassa -osa, kun taas totta, kun virta == "päällä" % Mobile Key -osa, kun taas true % Kerää tietoja mobiililaitteen rullaussuuntaan KEY = m. Orientation (3); % Kerää tietoja painikkeista b2 = readDigitalPin (a, 'D2'); % -Painike 2 (punainen) b3 = readDigitalPin (a, 'D3'); % -Painike 3 (valkoinen), jos AVAIN> = 35 % asteina m4 = msgbox ('Tervetuloa kotiin!'); writeDigitalPin (a, 'D8', 1); % Kytkee vihreän valon tauon (.5) päälle; writePosition (s, 1); % Kääntää servon avaamaan oven tauon (2); writeDigitalPin (a, 'D8', 0); % Sammuttaa vihreän valon poiston (m4); elseif AVAIN <= -35 % asteina m5 = msgbox ('Ovi lukittu!'); writeDigitalPin (a, 'D7', 1); % Kytkee punaisen valon tauon (.5) päälle; writePosition (s, 0); % Kääntää servon lukitsemaan oven tauon (2); writeDigitalPin (a, 'D7', 0); % Sammuttaa punaisen valon poiston (m5); ii = 1; tauko % Poistu, kun silmukka sisältää mobiiliavaimen, jos ovi on lukittu mobiililaitteella elseif b2 == 0 && b3 == 0 % Poistuu, kun silmukka sisältää mobiiliavaimen salasanan syöttämiseksi tauko loppu
Tämän jälkeen se voi siirtyä toiseen while -silmukkaan. Tämä kun silmukka ohjaa tuloksia painikkeiden tulojen perusteella. Jos ensimmäisen olon silmukka on vähäinen tai jos manuaalinen lukitus vaaditaan, se syöttää toisen samalla silmukan, jossa tarvitaan tietty salasana. Jos salasana on väärä, se käynnistää silmukan uudelleen
vaikka totta, jos ii == 1 % Poistuu, kun silmukka sisältää pääsykoodin, jos ovi avattiin mobiililaitteen taukopäällä % Kerää tietoja painikkeista b5 = readDigitalPin (a, 'D5'); % -Painike 5 (sininen) b1 = readDigitalPin (a, 'D1'); % -Painike 1 (musta) b4 = readDigitalPin (a, 'D4'); % -Painike 4 (valkoinen), jos b5 == 0 % Käynnistää salasanan syöttöosion b = 1: 5 m6 = msgbox ('Paina ja pidä painike painettuna'); tauko (2); poista (m6); % Kerää tietoja painikkeista b1 = readDigitalPin (a, 'D1'); % -Painike 1 (musta) b2 = readDigitalPin (a, 'D2'); % -Painike 2 (punainen) b3 = readDigitalPin (a, 'D3'); % -Painike 3 (valkoinen) b4 = readDigitalPin (a, 'D4'); % -Painike 4 (keltainen) b5 = readDigitalPin (a, 'D5'); % -Painike 5 (sininen) % Korvaa alkuperäisen salasanan arvot yksi kerrallaan, jos 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)); % Muuttaa painettujen painikkeiden sarjan numeroiksi ja muuntaa sen merkkijonon päätteeksi % Silmukan loppu salasanan numeroiden syöttämiseksi, jos PASSCODE == "2314" % Jos syötetty salasana täsmää, oven lukitus avautuu muutaman sekunnin ja sitten lukittuu m7 = msgbox ('Tervetuloa kotiin!'); writeDigitalPin (a, 'D8', 1); % Kytkee vihreän valon tauon (.5) päälle; writePosition (s, 1); % Kääntää servon avaamaan oven tauon (5); writeDigitalPin (a, 'D8', 0); % Sammuttaa vihreän valon tauon (.1); writeDigitalPin (a, 'D7', 1); % Kytkee punaisen valon tauon (.5) päälle; writePosition (s, 0); % Kääntää servon lukitsemaan oven tauon (1); writeDigitalPin (a, 'D7', 0); % Sammuttaa punaisen valon poiston (m7); ii = 1; break % Poistu, kun silmukka sisältää salasanan oikean salasanan syöttämisen jälkeen elseif PASSCODE ~ = "2314" writeDigitalPin (a, 'D7', 1); % Kytkee punaisen valon päälle m8 = msgbox ('Virheellinen salasana! Yritä uudelleen!'); odottaa (m8) kirjoittaa Digitaalinen Pin (a, 'D7', 0); % Sammuttaa punaisen valon jatkamisen % Salli salasanan lopun syöttämisen uudelleen elseif b1 == 0 && b4 == 0 % Poistuu, kun silmukka sisältää pääsykoodiosan, jos et halua syöttää salasanaa ii = 1; katkaise loppu
Jos se on oikein, se siirtyy välittömästi hetken silmukkaan, joka ohjaa lämpötila -anturia. Jos kytkin on päällä, silmukka jatkuu läpi ja piirtää lämpötilan ja ajan kuvaajan, jolloin trendi voidaan nähdä. Jos lämpötila -anturiin liitettyä painiketta painetaan, se lähettää myös sähköpostiviestin, jossa kerrotaan, mikä on kotisi lämpötila. Jos kytkin on pois päältä, se lopettaa koodin välittömästi
t = 0; % Alkuaika = 0 sekunnin tauko (5) % Antaa käyttäjälle aikaa kytkeä lämpötilakytkin päälle SWITCH = readDigitalPin (a, 'D11'); % Kerää tietoja kytkimestä nastassa D11, kun SWITCH == 0 SWITCH = readDigitalPin (a, 'D11'); % Kerää tietoja kytkimestä nastassa D11 jännite = lukuVoltage (a, 'A1'); % Lue jännite lämpötila -anturista temp_C = (jännite.*1000 - 500)./10; % Muuntaa jännitteen lämpötilaksi ° C temp_F = (9/5).*Temp_C + 32; % Muuntaa ° C: sta ° F kuvaajaksi (t, temp_C, 'b.') Hold on title ('Huoneen lämpötila'); xlabel ('Aika sekunneissa'); ylabel ('Lämpötila'); akseli ([0, 180, 0, 100]); kaavio (t, temp_F, 'r.') selite ('Lämpötila ° C', 'Lämpötila ° F') tauko (1); t = t + 1; % Aikalaskuri sekunneissa % Sähköpostiosio b_temp = readDigitalPin (a, 'D0'); % Kerää (sinisen) lämpötilapainikkeen tiedot nastaan D0, jos b_temp == 0 setpref ('Internet', 'SMTP_Server', 'smtp.gmail.com'); setpref ('Internet', 'Sähköposti', '[email protected]'); % Sender setpref ('Internet', 'SMTP_Username', '[email protected]'); % Lähettäjän käyttäjätunnus setpref ('Internet', 'SMTP_Password', 'Integral_ecoTECH'); % Lähettäjän salasanatarvikkeet = 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 ('Nykyinen huonelämpötila on %.1f ° C tai %.1f ° F.', temp_C, temp_F)); % Lähettää vastaanottajalle sähköpostiviestin, joka antaa tietoja nykyisestä huonelämpötilasta fprintf ('Sähköposti lähetetty onnistuneesti! / N') loppu, jos temp_F> = 75 % Jos huonelämpötila nousee 75 ° F… temp_AC = 65; % Muuttaa termostaatin lämpötilan arvoon 65 ° F elseif temp_F <= 65 % Jos huonelämpötila laskee 60 ° F… temp_AC = 80; % Muuttaa termostaatin lämpötilan 80 ° F: n päähän % "KYTKIMEN == 0" loppu, kun silmukka, jos virta == "pois" || ii == 1 % Poistuu "virta == päällä", kun silmukkatko päättyy loppuun % "Virta == päällä", kun silmukka, jos virta == "pois" || ii == 1 % Poistu kokonaan, kun silmukkatko päättyy
Tämä oli vain lyhyt katsaus koodiin ja sen toimivuuteen. Olemme liittäneet koko koodin pdf -tiedostona tarvittaessa
Tässä on luettelo siitä, mihin porttiin kukin laite on kytketty
1. RGB -LED: digitaaliset nastat (7, 8, 9)
2. Servo: Digitaalinen nasta 6
3. Painikkeet: Digitaaliset nastat (1, 2, 3, 4, 5)
4. Sininen painike sähköpostille: Digitaalinen nasta 0
5. Lämpötila -anturi: analoginen nasta 1
6. Kytkin: Digitaalinen nasta 11
Suositeltava:
IoT Halloween -kurpitsa - Ohjaa LED -valoja Arduino MKR1000- ja Blynk -sovelluksella ???: 4 vaihetta (kuvilla)
IoT Halloween -kurpitsa | Ohjaa LED -valoja Arduino MKR1000- ja Blynk -sovelluksella ???: Hei kaikki, Muutama viikko sitten oli Halloween ja perinteen mukaisesti veistin mukavan kurpitsan parvekkeelleni. Mutta kun kurpitsani oli ulkona, tajusin, että oli melko ärsyttävää mennä ulos joka ilta sytyttämään kynttilä. Ja minä
Mikro: Bot - Mikro: Bitti: 20 vaihetta
Micro: Bot - Micro: Bit: Rakenna itsellesi Micro: Bot! Se on Micro: Bit -ohjattu robotti, jossa on sisäänrakennettu kaikuluotain itsenäiseen ajamiseen, tai jos sinulla on kaksi Micro: bittiä, radio -ohjattava ajo
Älykäs koti Arduinolla MKR1000 ja M.I.T. Android -sovellus: 4 vaihetta
Älykäs koti Arduinolla MKR1000 ja M.I.T. Android -sovellus: Tässä opetusohjelmassa kuvailen, miten voit parantaa älykästä kotiasi vain muutamilla komponenteilla. (Massachusettsin instituutti
MKR1000 IoT Client/Server Viestintä: 4 vaihetta
MKR1000 IoT Client/Server Communications: Tässä projektissa kuvataan, kuinka kaksi Arduino/Genuino MKR1000 -laitetta asetetaan palvelimeksi ja asiakkaaksi. MKR1000 -asiakas muodostaa yhteyden paikalliseen wifi -verkkoon ja kuuntelee kahta tuloa, jotka on fyysisesti kytketty asiakkaaseen. toinen napista ja toinen vibasta
Vedenlaadun valvonta MKR1000: n ja ARTIK Cloudin avulla: 13 vaihetta (kuvien kanssa)
Vedenlaadun seuranta MKR1000: n ja ARTIK Cloudin avulla: Johdanto Tämän projektin ensisijainen tavoite on käyttää MKR1000: ta ja Samsung ARTIK Cloudia uima -altaiden pH: n ja lämpötilan valvontaan. emäksisyys