Satura rādītājs:

MATLAB kontrolēts mikrokontrolleris (Arduino MKR1000): 4 soļi
MATLAB kontrolēts mikrokontrolleris (Arduino MKR1000): 4 soļi

Video: MATLAB kontrolēts mikrokontrolleris (Arduino MKR1000): 4 soļi

Video: MATLAB kontrolēts mikrokontrolleris (Arduino MKR1000): 4 soļi
Video: Enciende y Apaga un Led con Arduino UNO 2024, Jūlijs
Anonim
MATLAB kontrolēts mikrokontrolleris (Arduino MKR1000)
MATLAB kontrolēts mikrokontrolleris (Arduino MKR1000)

Mūsu projekta mērķis bija pēc iespējas labāk izmantot MATLAB, kā arī Arduino MKR1000. Mūsu mērķis bija izveidot skriptu, kas ļautu noteiktām arduino funkcijām izpildīt noteiktu izvadi, pamatojoties uz konkrētu ievadi. Mēs izmantojām daudzas MATLAB piedāvātās cilpas un nosacījuma paziņojumus, kas to padarīja iespējamu. Mēs izmantojām arī mobilo ierīci MATLAB, izmantojot datus, kas iegūti no mobilās ierīces žiroskopa, lai pēc iespējas uzlabotu projektu.

1. darbība: detaļas un materiāli

Daļas un materiāli
Daļas un materiāli
Daļas un materiāli
Daļas un materiāli
Daļas un materiāli
Daļas un materiāli

MATLAB 2018a

-MATLAB 2018. gada versija ir vispiemērotākā versija, galvenokārt tāpēc, ka tā vislabāk darbojas ar kodu, kas savieno ar mobilo ierīci. Tomēr lielāko daļu mūsu koda var interpretēt lielākā daļa MATLAB versiju.

Arduino MKR1000

-Šī ir īpaša ierīce, kas ļauj mums pievienot ķēdes līdz digitālajām un analogajām pieslēgvietām. Ir ļoti svarīgi, lai jums būtu arī maizes dēlis.

Piederumi

-Lietojot MKR1000, mums bija nepieciešamas papildu detaļas, lai veiktu nepieciešamās funkcijas.

Tas iekļauj

  1. Servo
  2. Poga (6)
  3. Maināma RBG LED gaisma
  4. Vienkārši vadi
  5. maizes dēlis (-i)
  6. mini barošanas slēdzis
  7. temperatūras sensors
  8. 330 omu rezistors
  9. 10K omu rezistors
  10. USB-microUSB vads
  11. Klēpjdators/galddators
  12. Mobila ierīce

Jāatzīmē arī tas, ka ar MKR1000 var izmantot daudz, daudz vairāk piederumu

2. darbība: MATLAB Arduino atbalsta pakotne

Lai pareizi izmantotu Arduino MKR1000, izmantojot MATLAB, jums ir jālejupielādē MATLAB atbalsta pakotne Arduino aparatūrai. Šī lejupielāde nodrošina piekļuvi noteiktām funkcijām un komandām tieši arduino panelī.

Pakotni varat lejupielādēt zemāk esošajā saitē

www.mathworks.com/matlabcentral/fileexchange/47522-matlab-support-package-for-arduino-hardware

3. darbība. No mobilās ierīces iegūto datu sensoru izmantošana

Izmantojot no mobilās ierīces iegūtos datu sensorus
Izmantojot no mobilās ierīces iegūtos datu sensorus

MATLAB Mobile lietotne ļauj mums izmantot mobilo ierīci, lai straumētu datus, izmantojot žiroskopu. Lai iegūtu datus, izmantojot MATLAB, mēs iegūstam datus, izgūstot tos no orientācijas matricas no MATLAB mobile. Mēs to darām, izveidojot mainīgo katrai orientācijas matricas kolonnai (Azimuts, Pitch un Roll) un indeksējot pastāvīgo vērtību plūsmu no mobilās ierīces uz datoru. Tas ļauj mums izveidot nosacītus paziņojumus, kas sagatavos izvadi, ja MATLAB uztvers konkrētu datu ievadi no mobilās ierīces. Lai to izdarītu, mobilajā ierīcē būs nepieciešama mobilā ierīce MATLAB un datorā MATLAB mobilo ierīču atbalsta pakotne.

Jūs varat lejupielādēt failu zemāk esošajā saitē

www.mathworks.com/matlabcentral/fileexchange/51235-matlab-support-package-for-apple-ios-sensors

4. solis: kods un vadu porti

Kods sākas ar starta ziņojumu, kurā tiek jautāts, vai mēs vēlamies palaist mājas drošības ierīci. Ja atbildam “jā” un norādām pareizo piekļuves kodu, skripts uzreiz pāriet uz cikla ciklu. No turienes tā sāk vākt datus no mobilās ierīces. Ir nosacījumi, kas nolasa šos datus. Mēs varam atbloķēt un bloķēt sistēmu no mūsu mobilās ierīces, un kods pagriezīs servo un mirgos LED gaismu atkarībā no dotajiem datiem no mobilās ierīces

startup = questdlg ('Vai vēlaties aktivizēt ecoTECH viedās mājas enerģijas sistēmu?'); % Sāk ecoTECHwaitfor aktivizēšanas secību (startēšana); ja startēšana == "Jā" % Ja ir izvēlēta "Jā", sākas aktivizācijas secība un beigās tiek ievadīta cikla cilpa power = "on"; m1 = msgbox ('ecoTECH palaišana …'); pauze (2); dzēst (m1); m1_wait = gaidīšanas josla (0, 'Lūdzu, pagaidiet …'); soļi = 25; i = 1: soļi pauze (.1); gaidīšanas josla (i/soļi); % Atjaunina gaidīšanas joslas beigu dzēšanu (m1_wait); PASKODA = [0 0 0 0]; % Inicializē piekļuves kodu ii = 0; % Inicializē mainīgo, ko izmanto, lai izkļūtu no cilpām m2 = msgbox ('ecoTECH pilnībā darbojas!'); pauze (2); dzēst (m2); elseif startup == "Nē" || startup == "Atcelt" % Ja ir atlasīts "Nē" vai "Atcelt", aktivizācijas secība nesākas un netiek ievadīta, kamēr cilpas jauda = "izslēgta"; m3 = msgbox ('Labi! Uz redzēšanos!'); pauze (2); dzēst (m3); beigas

% ecoTECH darbības sadaļā, kamēr patiess, kamēr barošana == "ieslēgta" % mobilās atslēgas sadaļa, kamēr patiesa % Savāc datus par mobilās ierīces rullīša orientāciju KEY = m. Orientation (3); % Savāc datus par pogām b2 = readDigitalPin (a, 'D2'); % 2. poga (sarkana) b3 = readDigitalPin (a, 'D3'); % Poga 3 (balta), ja KEY> = 35 % grādos m4 = msgbox ('Laipni lūdzam mājās!'); writeDigitalPin (a, 'D8', 1); % Ieslēdz zaļās gaismas pauzi (.5); writePosition (s, 1); % Pagriež servo, lai atbloķētu durvju pauzi (2); writeDigitalPin (a, 'D8', 0); % Izslēdz zaļās gaismas dzēšanu (m4); elseif KEY <= -35 % grādos m5 = msgbox ('Durvis aizslēgtas!'); writeDigitalPin (a, 'D7', 1); % Ieslēdz sarkanās gaismas pauzi (.5); writePosition (s, 0); % Pagriež servo, lai bloķētu durvju pauzi (2); writeDigitalPin (a, 'D7', 0); % Izslēdz sarkanās gaismas dzēšanu (m5); ii = 1; pārtraukums % Iziet, kamēr cilpa satur mobilo atslēgu, ja durvis ir aizslēgtas, izmantojot mobilo ierīci.

Pēc tam tas var ievadīt citu cilpu. Kamēr cilpa kontrolē rezultātus, pamatojoties uz pogu ievadi. Ja pirmā cikla cilpa ir nenozīmīga vai ir nepieciešama manuāla bloķēšana, tā ievadīs citu cilpu, kur nepieciešama konkrēta parole. Ja parole nav pareiza, tā atsāks cilpu

kamēr taisnība, ja ii == 1 % Iziet, kamēr cilpa satur piekļuves kodu, ja durvis tika atslēgtas ar mobilās ierīces pārtraukuma beigām % Savāc datus par pogām b5 = readDigitalPin (a, 'D5'); % Poga 5 (zila) b1 = readDigitalPin (a, 'D1'); % Poga 1 (melna) b4 = readDigitalPin (a, 'D4'); % Poga 4 (balta), ja b5 == 0 % Sāk piekļuves koda ievadīšanas sadaļu b = 1: 5 m6 = msgbox ('Lūdzu, nospiediet un turiet pogu'); pauze (2); dzēst (m6); % Savāc datus par pogām b1 = readDigitalPin (a, 'D1'); % Poga 1 (melna) b2 = readDigitalPin (a, 'D2'); % 2. poga (sarkana) b3 = readDigitalPin (a, 'D3'); % Poga 3 (balta) b4 = readDigitalPin (a, 'D4'); % Poga 4 (dzeltena) b5 = readDigitalPin (a, 'D5'); % Poga 5 (zila) % Aizvieto sākotnējā piekļuves koda vērtības pa vienam, ja b1 == 0 PASSCODE (0+b) = 1; elseif b2 == 0 PASKODS (0+b) = 2; elseif b3 == 0 PASKODS (0+b) = 3; elseif b4 == 0 PASKODS (0+b) = 4; elseif b5 == 0 PASSCODE = sprintf ('%. 0f%.0f%.0f%.0f', PASSCODE (1), PASSCODE (2), PASSCODE (3), PASSCODE (4)); % Pārvērš nospiesto pogu secību skaitļos, pēc tam pārvērš to par virknes beigu galu % Cikla beigas, lai ievadītu ciparus piekļuves kodam, ja PASSCODE == "2314" % Ja ievadītais piekļuves kods sakrīt, durvis tiek atslēgtas uz dažām sekundēm un pēc tam tiek bloķētas m7 = msgbox ('Laipni lūdzam mājās!'); writeDigitalPin (a, 'D8', 1); % Ieslēdz zaļās gaismas pauzi (.5); writePosition (s, 1); % Pagriež servo, lai atbloķētu durvju pauzi (5); writeDigitalPin (a, 'D8', 0); % Izslēdz zaļās gaismas pauzi (.1); writeDigitalPin (a, 'D7', 1); % Ieslēdz sarkanās gaismas pauzi (.5); writePosition (s, 0); % Pagriež servo, lai bloķētu durvju pauzi (1); writeDigitalPin (a, 'D7', 0); % Izslēdz sarkanās gaismas dzēšanu (m7); ii = 1; pārtraukums % Iziet, kamēr cilpa satur piekļuves kodu pēc pareizas piekļuves koda ievadīšanas elseif PASSCODE ~ = "2314" writeDigitalPin (a, 'D7', 1); % Ieslēdz sarkano gaismu m8 = msgbox ('Nepareizs piekļuves kods! Mēģiniet vēlreiz!'); gaidīt (m8) writeDigitalPin (a, 'D7', 0); % Izslēdz sarkano gaismu turpināt % Ļauj atkārtoti ievadīt piekļuves koda beigas elseif b1 == 0 && b4 == 0 % Iziet, kamēr cilpa satur piekļuves kodu, ja nevēlaties ievadīt piekļuves kodu ii = 1; pārtraukt beigas beigas

Ja tas ir pareizi, tas nekavējoties ievadīs laika cilpu, kas kontrolē temperatūras sensoru. Ja slēdzis ir ieslēgts, cikls turpināsies un uzzīmēs temperatūras un laika grafiku, ļaujot aplūkot tendenci. Ja tiek nospiesta poga, kas savienota ar temperatūras sensoru, tā nosūtīs arī e -pastu, kurā tiks norādīta temperatūra jūsu mājās. Ja slēdzis ir izslēgts, tas nekavējoties pārtrauc kodu

t = 0; % Sākotnējais laiks = 0 sekunžu pauze (5) % Dod lietotājam laiku, lai ieslēgtu temperatūras slēdzi SWITCH = readDigitalPin (a, 'D11'); % Savāc datus par slēdzi tapā D11, kamēr SWITCH == 0 SWITCH = readDigitalPin (a, 'D11'); % Savāc datus par slēdzi tapā D11 spriegums = readVoltage (a, 'A1'); % Nolasa spriegumu no temperatūras sensora temp_C = (spriegums.*1000 - 500)./ 10; % Pārvērš spriegumu temperatūrā ° C temp_F = (9/5).*Temp_C + 32; % Pārvērš no ° C uz ° F grafiku (t, temp_C, 'b.') Aizturēt nosaukumu ('Istabas temperatūra'); xlabel ('Laiks sekundēs'); ylabel ('Temperatūra'); ass ([0, 180, 0, 100]); diagrammas (t, temp_F, 'r.') apzīmējums ('Temperatūra ° C', 'Temperatūra ° F') pauze (1); t = t + 1; % Laika skaitītājs sekundēs % E-pasta sadaļa b_temp = readDigitalPin (a, 'D0'); % Apkopo (zilās) temperatūras pogas datus tapā D0, ja b_temp == 0 setpref ('Internets', 'SMTP_Server', 'smtp.gmail.com'); setpref ('Internets', 'E_mail', '[email protected]'); % Sender setpref ('Internets', 'SMTP_Username', '[email protected]'); % Sūtītāja lietotājvārds setpref ('Internets', 'SMTP_Password', 'Integral_ecoTECH'); % Sūtītāja paroles rekvizīti = 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 Istabas temperatūra ', sprintf (' Pašreizējā istabas temperatūra ir %.1f ° C vai %.1f ° F. ', temp_C, temp_F)); % Nosūta adresātam e-pastu, sniedzot datus par pašreizējo istabas temperatūru fprintf ('E-pasts veiksmīgi nosūtīts! / N') beigas, ja temp_F> = 75 % Ja istabas temperatūra paaugstinās līdz 75 ° F… temp_AC = 65; % Maina termostata temperatūru uz 65 ° F elseif temp_F <= 65 % Ja istabas temperatūra pazeminās līdz 60 ° F… temp_AC = 80; % Maina termostata temperatūru uz 80 ° F beigu galu % "SWITCH == 0" beigas, kamēr cilpa, ja barošana ir == "izslēgta" || ii == 1 % Iziet "barošana == ieslēgta", kamēr cilpas pārtraukuma beigas % % "Jaudas == ieslēgta" beigas, kamēr cilpa, ja barošana == "izslēgta" || ii == 1 % Iziet pilnībā, kamēr beidzas cilpas pārtraukums

Tas bija tikai īss pārskats par kodu un tā funkcionalitāti. Ja nepieciešams, esam pievienojuši pilnu kodu kā pdf

Šeit ir saraksts ar portu, kurā katra ierīce ir pievienota

1. RGB LED: digitālās tapas (7, 8, 9)

2. Servo: digitālā tapa 6

3. Pogas: digitālās tapas (1, 2, 3, 4, 5)

4. Zilā poga e -pastam: digitālā tapa 0

5. Temperatūras sensors: 1. analogā tapa

6. Slēdzis: digitālā tapa 11

Ieteicams: