INHOUDSOPGAWE:
- Stap 1: Onderdele en materiaal
- Stap 2: MATLAB Arduino -ondersteuningspakket
- Stap 3: Die gebruik van datasensors verkry vanaf 'n mobiele toestel
- Stap 4: Die kode en bedrading hawens
Video: MATLAB -beheerde mikrobeheerder (Arduino MKR1000): 4 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:26
Die doel van ons projek was om MATLAB sowel as die Arduino MKR1000 na die beste van ons vermoë te gebruik. Ons doel was om 'n script te skep waarmee sekere kenmerke van die arduino 'n sekere uitset kan lewer, gebaseer op 'n spesifieke invoer. Ons het baie lusse en voorwaardelike stellings in MATLAB gebruik wat dit moontlik gemaak het. Ons het ook MATLAB mobile gebruik deur data te gebruik wat verkry is uit die gyroscoop van 'n mobiele toestel om die projek soveel as moontlik te verbeter.
Stap 1: Onderdele en materiaal
MATLAB 2018a
-Die 2018 -weergawe van MATLAB is die mees gewilde weergawe, meestal omdat dit die beste werk met die kode wat met die mobiele toestel verbind word. Die meeste van ons kode kan egter deur die meerderheid MATLAB -weergawes geïnterpreteer word.
Arduino MKR1000
-Dit is 'n spesifieke toestel waarmee ons stroombane na beide digitale en analoge poorte kan dra. Dit is uiters belangrik dat u ook 'n broodbord het om daarmee saam te werk.
Toebehore
By die gebruik van die MKR1000 het ons bykomstige onderdele nodig om die nodige funksies uit te voer.
Dit sluit in
- Servo
- Knoppie (6)
- Verwisselbare RBG LED -lig
- Eenvoudige drade
- broodbord (e)
- mini -skakelaar
- Temperatuur sensor
- 330 ohm weerstand
- 10K ohm weerstand
- USB-mikroUSB-koord
- Skootrekenaar/lessenaar
- Mobiele toestel
Daar moet ook op gelet word dat daar baie meer bykomstighede is wat saam met die MKR1000 gebruik kan word
Stap 2: MATLAB Arduino -ondersteuningspakket
Om die Arduino MKR1000 deur MATLAB behoorlik te gebruik, moet u die MATLAB -ondersteuningspakket vir Arduino -hardeware aflaai. Hierdie aflaai gee u toegang tot sekere funksies en opdragte direk na die arduino -bord.
U kan die pakket aflaai op die onderstaande skakel
www.mathworks.com/matlabcentral/fileexchange/47522-matlab-support-package-for-arduino-hardware
Stap 3: Die gebruik van datasensors verkry vanaf 'n mobiele toestel
Met die MATLAB Mobile -app kan ons 'n mobiele toestel gebruik om data te stroom met behulp van die gyroscoop. Om die data deur MATLAB te verkry, verkry ons die data deur dit op te haal uit die oriëntasiematriks van MATLAB mobile. Ons doen dit deur 'n veranderlike vir elke kolom van die oriëntasiematriks (Azimuth, Pitch en Roll) te skep en die konstante stroom waardes van die mobiele toestel na die rekenaar te indekseer. Dit stel ons in staat om voorwaardelike stellings te skep wat 'n uitset sal vorm as MATLAB 'n spesifieke data -invoer vanaf die mobiele toestel opneem. Om dit te kan doen, benodig u MATLAB -selfoon op u mobiele toestel en die ondersteuningspakket vir mobiele toestelle vir MATLAB op u rekenaar.
U kan die lêer aflaai op die onderstaande skakel
www.mathworks.com/matlabcentral/fileexchange/51235-matlab-support-package-for-apple-ios-sensors
Stap 4: Die kode en bedrading hawens
Die kode begin met 'n opstartboodskap wat vra of ons ons tuisveiligheidstoestel wil begin. As ons ja antwoord en die korrekte wagwoord gee, spring die skrif onmiddellik in 'n rukkie. Van daar af begin dit data versamel vanaf die mobiele toestel. Daar is voorwaardes wat hierdie data lees. Ons kan die stelsel van ons mobiele toestel ontsluit en sluit, en die kode draai die servo en knip die LED -lig, afhangende van die gegewe data van die mobiele toestel
opstart = questdlg ('Wil u ecoTECH Smart Home Energy System aktiveer?'); % Begin met die aktiveringsvolgorde van ecoTECHwaitfor (opstart); as opstart == "Ja" % As "Ja" gekies word, begin 'n aktiveringsvolgorde en betree die terwyl -lus aan die einde krag = "aan"; m1 = msgbox ('Begin met ecoTECH …'); pouse (2); skrap (m1); m1_wait = wagbalk (0, 'Wag asseblief …'); stappe = 25; vir i = 1: stappe pouse (.1); wagbalk (i/stappe); % Werk die einde van die wagbalk -einde (m1_wait) op; PASSCODE = [0 0 0 0]; % Initialiseer wagwoord ii = 0; % Initialiseer 'n veranderlike wat gebruik word om uit lusse te breek m2 = msgbox ('ecoTECH volledig in werking!'); pouse (2); skrap (m2); elseif opstart == "Nee" || opstart == "Kanselleer" % As "Nee" of "Kanselleer" gekies word, dan begin die aktiveringsvolgorde nie en voer nie die while -lus in nie = "af"; m3 = msgbox ('Goed! totsiens!'); pouse (2); skrap (m3); einde
% ecoTECH in aksie afdeling terwyl dit waar is terwyl power == "on" % Mobile Key Section terwyl true % Versamel data oor die roloriëntasie van die mobiele toestel KEY = m. Orientation (3); % Versamel data oor die knoppies b2 = readDigitalPin (a, 'D2'); % Knoppie 2 (rooi) b3 = readDigitalPin (a, 'D3'); % Knoppie 3 (Wit) as KEY> = 35 % in grade m4 = msgbox ('Welcome Home!'); writeDigitalPin (a, 'D8', 1); % Skakel die groen ligpouse aan (.5); skryfPosisie (s, 1); % Draai die servo om die deurpouse (2) te ontsluit; writeDigitalPin (a, 'D8', 0); % Skakel die groen lig verwyder (m4) uit; elseif SLEUTEL <= -35 % in grade m5 = msgbox ('Deur gesluit!'); writeDigitalPin (a, 'D7', 1); % Skakel die rooi lig pouse (.5) aan; skryfPosisie (s, 0); % Draai die servo om die pouse van die deur te sluit (2); writeDigitalPin (a, 'D7', 0); % Skakel die rooi lig verwyder (m5) uit; ii = 1; breek % verlaat terwyl lus met mobiele sleutel bevat as die deur gesluit is met die mobiele toestel anders as b2 == 0 && b3 == 0 % Verlaat terwyl lus met mobiele sleutel bevat om die einde van die wagwoordseksie in te sluit
Hierna kan dit nog 'n while -lus invoer. Dit terwyl lus die uitkomste beheer op grond van die insette van die knoppies. As die lus vir die eerste keer onbeduidend is, of as 'n handmatige sluiting nodig is, sal dit 'n ander lus inskryf waar 'n spesifieke wagwoord nodig is. As die wagwoord verkeerd is, sal die lus weer begin
terwyl dit waar is as ii == 1 % Verlaat terwyl lus met wagwoord bevat as die deur oopgemaak is met die einde van die mobiele toestel % Versamel data oor die knoppies b5 = readDigitalPin (a, 'D5'); % Knoppie 5 (blou) b1 = readDigitalPin (a, 'D1'); % Knoppie 1 (Swart) b4 = readDigitalPin (a, 'D4'); % Knoppie 4 (Wit) as b5 == 0 % Begin met die invoer van wagwoordkode vir b = 1: 5 m6 = msgbox ('Druk en hou 'n knoppie ingedruk'); pouse (2); skrap (m6); % Versamel data oor die knoppies b1 = readDigitalPin (a, 'D1'); % Knoppie 1 (Swart) b2 = readDigitalPin (a, 'D2'); % Knoppie 2 (rooi) b3 = readDigitalPin (a, 'D3'); % Knoppie 3 (Wit) b4 = readDigitalPin (a, 'D4'); % Knoppie 4 (geel) b5 = readDigitalPin (a, 'D5'); % Knoppie 5 (blou) % Vervang die waardes in die aanvanklike wagwoord een vir een as 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)); % Draai die volgorde van knoppies wat in getalle ingedruk word, om en skakel dit om na 'n string -einde % m7 = msgbox ('Welkom tuis!'); writeDigitalPin (a, 'D8', 1); % Skakel die groen ligpouse aan (.5); skryfPosisie (s, 1); % Draai die servo om die pouse van die deur te ontsluit (5); writeDigitalPin (a, 'D8', 0); % Skakel die groen lig pouse (.1) af; writeDigitalPin (a, 'D7', 1); % Skakel die rooi lig pouse (.5) aan; skryfPosisie (s, 0); % Draai die servo om die deurpouse te sluit (1); writeDigitalPin (a, 'D7', 0); % Skakel die rooi lig verwyder (m7) uit; ii = 1; break % Verlaat terwyl lus met wagwoord bevat nadat die regte wagwoord ingevoer is anders as PASSCODE ~ = "2314" writeDigitalPin (a, 'D7', 1); % Skakel die rooi lig aan m8 = msgbox ('Verkeerde wagwoord! Probeer weer!'); wag vir (m8) writeDigitalPin (a, 'D7', 0); % Skakel die rooi lig voort % Laat u toe om weer 'n wagwoord in te voer, anders if b1 == 0 && b4 == 0 % Verlaat terwyl die lus met 'n wagwoordafdeling bevat as u nie 'n wagwoord wil invoer nie ii = 1; einde eindig
As dit korrek is, sal dit onmiddellik 'n while -lus binnegaan wat die temperatuursensor beheer. As die skakelaar aan is, gaan die lus deur en teken die temperatuur teenoor tydtelling, sodat 'n mens die neiging kan sien. As u op die knoppie wat met die temperatuursensor gekoppel is, ingedruk word, stuur dit ook 'n e -pos waarin u kan sien wat die temperatuur in u 'huis' is. As die skakelaar afgeskakel is, word die kode onmiddellik beëindig
t = 0; % Aanvanklike tyd = 0 sekondes pouse (5) % Gee tyd vir die gebruiker om die temperatuurskakelaar SWITCH = readDigitalPin (a, 'D11') aan te skakel; % Versamel data oor die skakelaar in pen D11 terwyl SWITCH == 0 SWITCH = readDigitalPin (a, 'D11'); % Versamel data oor die skakelaar in pen D11 spanning = readVoltage (a, 'A1'); % Lees die spanning van die temperatuursensor temp_C = (spanning.*1000 - 500)./ 10; % Skakel die spanning om in temperatuur in ° C temp_F = (9/5).*Temp_C + 32; % Omskakel van ° C na ° F plot (t, temp_C, 'b.') Hou titel ('Kamertemperatuur'); xlabel ('Tyd in sekondes'); ylabel ('temperatuur'); as ([0, 180, 0, 100]); plot (t, temp_F, 'r.') legende ('Temperatuur in ° C', 'Temperatuur in ° F') pouse (1); t = t + 1; % Tydteller in sekondes % E-posafdeling b_temp = readDigitalPin (a, 'D0'); % Versamel die data van die (blou) temperatuurknoppie in pen D0 as b_temp == 0 setpref ('Internet', 'SMTP_Server', 'smtp.gmail.com'); setpref ('Internet', 'E_mail', '[email protected]'); % Sender setpref ('Internet', 'SMTP_Username', '[email protected]'); % Afsender se gebruikersnaam setpref ('Internet', 'SMTP_Password', 'Integral_ecoTECH'); % Sender se wagwoord rekwisiete = 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 kamertemperatuur ', sprintf (' Die huidige kamertemperatuur is %.1f ° C of %.1f ° F. ', temp_C, temp_F)); % Stuur 'n e-pos aan die ontvanger met gegewens oor die huidige kamertemperatuur fprintf ('E-pos suksesvol gestuur! / N') eindig as temp_F> = 75 % As die kamertemperatuur styg tot 75 ° F … temp_AC = 65; % Verander die temperatuur op die termostaat na 65 ° F anders as temp_F <= 65 % As die kamertemperatuur daal tot 60 ° F … temp_AC = 80; % Verander die temperatuur op die termostaat na 80 ° F einde einde % Einde van "SWITCH == 0" terwyl lus as power == "off" || ii == 1 % verlaat "power == aan" terwyl lusbreuk einde einde % einde van "power == aan" terwyl lus as power == "af" || ii == 1 % Verlaat heeltemal terwyl die lus onderbreek word
Dit was slegs 'n kort oorsig van die kode en die funksionaliteit daarvan. Ons het die volledige kode as 'n pdf aangeheg indien nodig
Hier is die lys van watter poort elke toestel aangesluit is
1. RGB LED: Digitale penne (7, 8, 9)
2. Servo: Digitale pen 6
3. Knoppies: Digitale penne (1, 2, 3, 4, 5)
4. Blou knoppie vir e -pos: Digitale pen 0
5. Temperatuursensor: analoog pen 1
6. Skakelaar: Digitale pen 11
Aanbeveel:
N LED-klok sonder 'n mikrobeheerder: 12 stappe
N LED-horlosie sonder 'n mikrobeheerder: Soos dit lyk, hou ek daarvan om verskillende horlosies te maak. Ek het talle elektroniese en meganiese horlosies gebou en ontwerp, en hierdie een is nog een. My eerste elektroniese horlosie het verskeie herhalings vereis en ek het baie geleer. Die ontwerp wat aangebied word, is verbeter
DIY nie -kontak handreiniger sonder 'n Arduino of 'n mikrobeheerder: 17 stappe (met foto's)
DIY nie-kontak handreiniger sonder 'n Arduino of 'n mikrobeheerder: Soos ons almal weet, het die COVID-19-uitbraak die wêreld getref en ons leefstyl verander. In hierdie toestand is alkohol en handontsmettings noodsaaklike vloeistowwe, maar dit moet behoorlik gebruik word. Raak alkoholhouers of ontsmettingsmiddels met besmette hande aan
Hindernis om robot te vermy met behulp van mikrobeheerder (Arduino): 5 stappe
Hindernis om robot te vermy deur mikrokontroller (Arduino) te gebruik: in hierdie instruksies sal ek u leer hoe u 'n hindernis kan vermy om 'n robot wat met Arduino werk, te vermy. U moet vertroud wees met Arduino. Arduino is 'n beheerbord wat die atmega -mikrobeheerder gebruik. U kan enige weergawe van Arduino gebruik, maar ek het
Hoe om 'n lynvolgrobot te maak sonder om Arduino (mikrobeheerder) te gebruik: 5 stappe
Hoe om 'n lynvolgrobot te maak sonder om Arduino (mikrobeheerder) te gebruik: in hierdie instruksies sal ek u leer hoe om 'n lyn te volg wat die robot volg sonder om Arduino te gebruik. Ek sal baie eenvoudige stappe gebruik om te verduidelik. volg die reël. U het geen programmeerervaring nodig om
IR -obstakelsensor sonder om Arduino of enige mikrobeheerder te gebruik: 6 stappe
IR -obstakelsensor sonder om Arduino of enige mikrobeheerder te gebruik: in hierdie projek gaan ons 'n eenvoudige hindernisensor maak sonder om 'n mikrobeheerder te gebruik