Turinys:
- 1 žingsnis: dalys ir medžiagos
- 2 veiksmas: „MATLAB Arduino“palaikymo paketas
- 3 veiksmas: iš mobiliojo įrenginio įsigytų duomenų jutiklių naudojimas
- 4 žingsnis: kodas ir laidų prievadai
Video: MATLAB valdomas mikrovaldiklis („Arduino MKR1000“): 4 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:47
Mūsų projekto tikslas buvo kuo geriau panaudoti MATLAB ir „Arduino MKR1000“. Mūsų tikslas buvo sukurti scenarijų, kuris leistų tam tikroms arduino funkcijoms atlikti tam tikrą išvestį, pagrįstą konkrečia įvestimi. Mes panaudojome daug ciklų ir sąlyginių teiginių, pateiktų MATLAB. Mes taip pat naudojome „MATLAB mobile“, naudodamiesi duomenimis, gautais iš mobiliojo įrenginio giroskopo, kad kuo labiau pagerintume projektą.
1 žingsnis: dalys ir medžiagos
MATLAB 2018a
-2018 m. MATLAB versija yra labiausiai pageidaujama versija, daugiausia todėl, kad ji geriausiai veikia su kodu, jungiančiu prie mobiliojo įrenginio. Tačiau dauguma mūsų kodo gali būti interpretuojami daugumos MATLAB versijų.
„Arduino MKR1000“
-Tai yra specifinis įrenginys, leidžiantis prijungti grandines iki skaitmeninių ir analoginių prievadų. Labai svarbu, kad kartu turėtumėte ir duonos lentą.
Priedai
-Kartuodami MKR1000, mums reikėjo priedų, kad galėtume atlikti reikiamas funkcijas.
Tai įtraukia
- Servo
- Mygtukas (6)
- Keičiama RBG LED lemputė
- Paprasti laidai
- duonos lenta (-os)
- mini maitinimo jungiklis
- temperatūros jutiklis
- 330 omų rezistorius
- 10K omų rezistorius
- USB-microUSB laidas
- Nešiojamasis/stalinis kompiuteris
- Mobilusis įrenginys
Taip pat reikia pažymėti, kad yra daug daug priedų, kuriuos galima naudoti su MKR1000
2 veiksmas: „MATLAB Arduino“palaikymo paketas
Norėdami tinkamai naudoti „Arduino MKR1000“per MATLAB, turite atsisiųsti „Arduino“aparatinės įrangos „MATLAB“palaikymo paketą. Šis atsisiuntimas suteikia prieigą prie tam tikrų funkcijų ir komandų tiesiai į arduino plokštę.
Paketą galite atsisiųsti iš žemiau esančios nuorodos
www.mathworks.com/matlabcentral/fileexchange/47522-matlab-support-package-for-arduino-hardware
3 veiksmas: iš mobiliojo įrenginio įsigytų duomenų jutiklių naudojimas
„MATLAB Mobile“programa leidžia mums naudoti mobilųjį įrenginį duomenims transliuoti naudojant jo giroskopą. Norėdami gauti duomenis per MATLAB, mes gauname duomenis nuskaitę juos iš orientacinės matricos iš „MATLAB mobile“. Tai darome sukurdami kintamąjį kiekvienam orientacinės matricos stulpeliui („Azimutas“, „Pitch“ir „Roll“) ir indeksuodami pastovų verčių srautą iš mobiliojo įrenginio į kompiuterį. Tai leidžia mums sukurti sąlyginius teiginius, kurie iš anksto sudarys išvestį, jei MATLAB paims konkretų duomenų įvestį iš mobiliojo įrenginio. Norėdami tai padaryti, jums reikės mobiliojo įrenginio „MATLAB mobile“ir kompiuterio „MATLAB“palaikymo paketo.
Failą galite atsisiųsti žemiau esančioje nuorodoje
www.mathworks.com/matlabcentral/fileexchange/51235-matlab-support-package-for-apple-ios-sensors
4 žingsnis: kodas ir laidų prievadai
Kodas prasideda paleidimo pranešimu, kuriame klausiama, ar norime paleisti namų apsaugos įrenginį. Jei atsakysime „taip“ir pateiksime teisingą kodą, scenarijus iš karto pereis į laiko ciklą. Nuo tada jis pradeda rinkti duomenis iš mobiliojo įrenginio. Yra sąlyginių sąlygų, kurios skaito šiuos duomenis. Mes galime atrakinti ir užrakinti sistemą iš savo mobiliojo prietaiso, o kodas pasuks servo ir mirksės LED lemputę, priklausomai nuo pateiktų mobiliojo įrenginio duomenų
startup = questdlg ('Ar norėtumėte suaktyvinti „ecoTECH Smart Home Energy System“? “); % Prasideda „ecoTECHwaitfor“(paleidimo) aktyvinimo seka; jei paleidimas == "Taip" % Jei pasirenkama "Taip", prasideda aktyvinimo seka ir įeina į ciklo ciklą galinėje galioje = "įjungta"; m1 = msgbox ('ecoTECH paleidimas …'); pauzė (2); ištrinti (m1); m1_wait = laukimo juosta (0, 'Prašome palaukti …'); žingsniai = 25; i = 1: žingsnių pauzė (.1); laukimo juosta (i/žingsniai); % Atnaujina laukimo juostos pabaigos ištrynimą (m1_wait); PASSCODE = [0 0 0 0]; % Inicijuoja prieigos kodą ii = 0; % Inicijuoja kintamąjį, naudojamą išeiti iš kilpų m2 = msgbox ('ecoTECH visiškai veikia!'); pauzė (2); ištrinti (m2); elseif paleidimas == "Ne" || paleidimas == "Atšaukti" % Jei pasirinkta "Ne" arba "Atšaukti", aktyvinimo seka neprasideda ir neįeina, kol ciklo galia = "išjungta"; m3 = msgbox ('Gerai! Sudie!'); pauzė (2); ištrinti (m3); galas
% ecoTECH veiksmų sekcijoje, kol tiesa, o maitinimas == "on" % mobiliojo rakto skyrius, o tiesa % renka duomenis apie mobiliojo įrenginio sukimosi kryptį KEY = m. Orientation (3); % Renka duomenis apie mygtukus b2 = readDigitalPin (a, 'D2'); % Mygtukas 2 (raudona) b3 = readDigitalPin (a, 'D3'); % Mygtukas 3 (balta), jei KEY>> 35 % laipsniais m4 = msgbox ('Sveiki atvykę namo!'); writeDigitalPin (a, 'D8', 1); % Įjungia žalios šviesos pauzę (.5); writePosition (s, 1); % Pasuka servo, kad atrakintų durų pauzę (2); writeDigitalPin (a, 'D8', 0); % Išjungia žalios šviesos trynimą (m4); elseif KEY <= -35 % m5 laipsniais = msgbox ('Durys užrakintos!'); writeDigitalPin (a, 'D7', 1); % Įjungia raudonos šviesos pauzę (.5); writePosition (s, 0); % Pasuka servo, kad užrakintų durų pauzę (2); writeDigitalPin (a, 'D7', 0); % Išjungia raudonos šviesos trynimą (m5); ii = 1; pertrauka % Išeina, kai kilpa turi mobilųjį raktą, jei durys yra užrakintos naudojant mobilųjį įrenginį
Po to jis gali įvesti kitą ciklą. Tuo tarpu ciklas kontroliuoja rezultatus pagal mygtukų įvestį. Jei pirmoji ciklo ciklo dalis yra nereikšminga arba reikia užrakinti rankiniu būdu, ji įves kitą ciklo ciklą, kuriame reikia konkretaus slaptažodžio. Jei slaptažodis neteisingas, ciklas bus paleistas iš naujo
nors tiesa, jei ii == 1 % Išeina, kol kilpa, kurioje yra slaptažodis, jei durys buvo atrakintos naudojant mobiliojo prietaiso pertraukos pabaigą % renka duomenis apie mygtukus b5 = readDigitalPin (a, 'D5'); % Mygtukas 5 (mėlyna) b1 = readDigitalPin (a, 'D1'); % Mygtukas 1 (juodas) b4 = readDigitalPin (a, 'D4'); % Mygtukas 4 (balta), jei b5 == 0 % Pradeda slaptažodžio įvedimo skyrių, skirtą b = 1: 5 m6 = msgbox ('Prašome paspausti ir palaikyti mygtuką'); pauzė (2); ištrinti (m6); % Renka duomenis apie mygtukus b1 = readDigitalPin (a, 'D1'); % Mygtukas 1 (juodas) b2 = readDigitalPin (a, 'D2'); % Mygtukas 2 (raudona) b3 = readDigitalPin (a, 'D3'); % Mygtukas 3 (balta) b4 = readDigitalPin (a, 'D4'); % Mygtukas 4 (geltona) b5 = readDigitalPin (a, 'D5'); % Mygtukas 5 (mėlynas) % Pakeičia pradinio slaptažodžio reikšmes po vieną, jei 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)); % Paspaudžiamų mygtukų seka paverčiama skaičiais, o po to paverčiama eilutės pabaiga m7 = msgbox ('Sveiki atvykę namo!'); writeDigitalPin (a, 'D8', 1); % Įjungia žalios šviesos pauzę (.5); writePosition (s, 1); % Pasuka servo, kad atrakintų durų pauzę (5); writeDigitalPin (a, 'D8', 0); % Išjungia žalios šviesos pauzę (.1); writeDigitalPin (a, 'D7', 1); % Įjungia raudonos šviesos pauzę (.5); writePosition (s, 0); % Pasuka servo, kad užrakintų durų pauzę (1); writeDigitalPin (a, 'D7', 0); % Išjungia raudonos šviesos trynimą (m7); ii = 1; break % Išeina, kai ciklas turi slaptažodį, įvedus teisingą kodą elseif PASSCODE ~ = "2314" writeDigitalPin (a, 'D7', 1); % Įjungia raudoną lemputę m8 = msgbox ('Neteisingas slaptažodis! Bandykite dar kartą!'); laukti (m8) writeDigitalPin (a, 'D7', 0); % Išjungia raudoną šviesą ir tęsia % Leidžia iš naujo įvesti slaptažodžio pabaigą elseif b1 == 0 && b4 == 0 % Išeina, kol ciklas turi kodą, jei nenorite įvesti slaptažodžio ii = 1; pertrauka pabaigos pabaiga
Jei tai teisinga, jis iš karto pateks į laiko ciklą, valdantį temperatūros jutiklį. Jei jungiklis įjungtas, ciklas tęsis ir parodys temperatūros ir laiko grafiką, kad būtų galima matyti tendenciją. Jei paspaudžiamas mygtukas, prijungtas prie temperatūros jutiklio, jis taip pat išsiųs el. Laišką, kuriame bus nurodyta, kokia temperatūra yra jūsų „namuose“. Jei jungiklis yra išjungtas, kodas nedelsiant nutraukiamas
t = 0; % Pradinis laikas = 0 sekundžių pertrauka (5) % Suteikia vartotojui laiko įjungti temperatūros jungiklį SWITCH = readDigitalPin (a, 'D11'); % Renka duomenis apie jungiklį kaištyje D11, o SWITCH == 0 SWITCH = readDigitalPin (a, 'D11'); % Renka duomenis apie jungiklį D11 kaištyje įtampa = readVoltage (a, 'A1'); % Skaito įtampą iš temperatūros jutiklio temp_C = (įtampa.*1000 - 500)./ 10; % Konvertuoja įtampą į temperatūrą ° C temp_F = (9/5).*Temp_C + 32; % Konvertuoja iš ° C į ° F grafiką (t, temp_C, 'b.') Sulaikymas antraštėje ('Kambario temperatūra'); xlabel („Laikas sekundėmis“); ylabel („Temperatūra“); ašis ([0, 180, 0, 100]); sklypo (t, temp_F, 'r.') užrašas ('Temperatūra ° C', 'Temperatūra ° F') pauzė (1); t = t + 1; % Laiko skaitiklis sekundėmis % El. Pašto skyrius b_temp = readDigitalPin (a, 'D0'); % Renka (mėlynos) temperatūros mygtuko duomenis kaištyje D0, jei b_temp == 0 setpref ('Internetas', 'SMTP_Server', 'smtp.gmail.com'); setpref („Internetas“, „El. paštas“, „[email protected]“); % Sender setpref ('Internetas', 'SMTP_Username', '[email protected]'); % Siuntėjo vartotojo vardas setpref ('Internetas', 'SMTP_Password', 'Integral_ecoTECH'); % Siuntėjo slaptažodžių rekvizitai = 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 kambario temperatūra', sprintf ('Dabartinė kambario temperatūra yra %.1f ° C arba %.1f ° F.', temp_C, temp_F)); % Siunčia el. Laišką gavėjui, kuriame pateikiami duomenys apie esamą kambario temperatūrą fprintf ('El. Laiškas sėkmingai išsiųstas! / N') pabaiga, jei temp_F> = 75 % Jei kambario temperatūra pakyla iki 75 ° F… temp_AC = 65; % Pakeičia termostato temperatūrą į 65 ° F elseif temp_F <= 65 % Jei kambario temperatūra nukrenta iki 60 ° F… temp_AC = 80; % Pakeičia termostato temperatūrą iki 80 ° F pabaigos pabaigos % "SWITCH == 0" pabaiga, o ciklas, jei maitinimas == "išjungtas" || ii == 1 % Išeina iš „maitinimo == įjungta“, o ciklo pertraukos pabaiga % „Maitinimo == įjungta“pabaiga, o ciklas, jei maitinimas == "išjungtas“|| ii == 1 % Išeina visas, kol ciklo pertrauka baigiasi
Tai buvo tik trumpa kodo ir jo veikimo apžvalga. Prireikus pridėjome visą kodą kaip pdf
Čia yra sąrašas prie kurio prievado prijungtas kiekvienas įrenginys
1. RGB LED: skaitmeniniai kaiščiai (7, 8, 9)
2. Servo: skaitmeninis kaištis 6
3. Mygtukai: skaitmeniniai kaiščiai (1, 2, 3, 4, 5)
4. Mėlynas elektroninio pašto mygtukas: skaitmeninis kaištis 0
5. Temperatūros jutiklis: 1 analoginis kaištis
6. Jungiklis: skaitmeninis kaištis 11
Rekomenduojamas:
Nuotoliniu būdu valdomas automobilis - valdomas naudojant belaidį „Xbox 360“valdiklį: 5 žingsniai
Nuotoliniu būdu valdomas automobilis - valdomas naudojant belaidį „Xbox 360“valdiklį: tai instrukcijos, skirtos sukurti savo nuotoliniu būdu valdomą automobilį, valdomą naudojant belaidį „Xbox 360“valdiklį
AVR mikrovaldiklis. Ultragarsinis atstumo jutiklis. HC-SR04 LCD NOKIA 5110: 4 žingsniai
AVR mikrovaldiklis. Ultragarsinis atstumo jutiklis. HC-SR04 skystųjų kristalų ekrane NOKIA 5110: Sveiki visi! Šiame skyriuje aš sukuriu paprastą elektroninį prietaisą atstumui matuoti ir šie parametrai rodomi LCD NOKIA 5110. Parametrai rodomi kaip diagrama ir skaičiai. Prietaisas sukurtas naudojant mikrovaldiklį AVR ATMEG
AVR mikrovaldiklis. Perjunkite šviesos diodus naudodami mygtuko jungiklį. Paspaudimo mygtuko išjungimas .: 4 žingsniai
AVR mikrovaldiklis. Perjunkite šviesos diodus naudodami mygtuko jungiklį. Mygtuko išjungimas. Šiame skyriuje mes išmoksime, kaip padaryti ATMega328PU programos C kodą, kad būtų galima perjungti trijų šviesos diodų būseną pagal mygtuko jungiklio įvestį. Be to, mes ištyrėme problemos „Switch Bounce“sprendimo būdus. Kaip paprastai, mes
AVR mikrovaldiklis. Impulsų pločio moduliavimas. Nuolatinės srovės variklio ir LED šviesos intensyvumo valdiklis: 6 žingsniai
AVR mikrovaldiklis. Impulsų pločio moduliavimas. Nuolatinės srovės variklio ir šviesos diodų šviesos intensyvumo valdiklis .: Sveiki visi! Impulso pločio moduliacija (PWM) yra labai paplitusi telekomunikacijų ir galios valdymo technika. jis dažniausiai naudojamas valdyti elektros prietaisui tiekiamą galią, nesvarbu, ar tai būtų variklis, šviesos diodas, garsiakalbiai ir tt. Iš esmės tai yra modulis
AVR mikrovaldiklis. Šviesos diodai mirksi naudojant laikmatį. Laikmačiai pertraukia. Laikmačio CTC režimas: 6 žingsniai
AVR mikrovaldiklis. Šviesos diodai mirksi naudojant laikmatį. Laikmačiai pertraukia. Laikmačio CTC režimas: Sveiki visi! Laikmačiai yra svarbi sąvoka elektronikos srityje. Kiekvienas elektroninis komponentas veikia pagal laiką. Ši laiko bazė padeda sinchronizuoti visus darbus. Visi mikrovaldikliai veikia tam tikru iš anksto nustatytu laikrodžio dažniu