Satura rādītājs:
- 1. darbība: detaļas un materiāli
- 2. darbība: MATLAB Arduino atbalsta pakotne
- 3. darbība. No mobilās ierīces iegūto datu sensoru izmantošana
- 4. solis: kods un vadu porti
Video: MATLAB kontrolēts mikrokontrolleris (Arduino MKR1000): 4 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:56
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
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
- Servo
- Poga (6)
- Maināma RBG LED gaisma
- Vienkārši vadi
- maizes dēlis (-i)
- mini barošanas slēdzis
- temperatūras sensors
- 330 omu rezistors
- 10K omu rezistors
- USB-microUSB vads
- Klēpjdators/galddators
- 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
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:
Saskarnes Atmega16 mikrokontrolleris ar punktu matricas LED displeju: 5 soļi
Atmega16 mikrokontrollera saskarne ar punktmatricas LED displeju: Šajā projektā mēs sasaistīsim viena punktmatricas LED displeju ar AVR (Atmega16) mikrokontrolleri. Šeit mēs parādīsim simulāciju proteusā, jūs varat lietot to pašu savā aparatūrā. Tātad šeit mēs vispirms izdrukāsim vienu rakstzīmi, teiksim “A” t
Kā izveidot līnijas sekotāju robotu, neizmantojot Arduino (mikrokontrolleris): 5 soļi
Kā izveidot līnijas sekotāja robotu, neizmantojot Arduino (mikrokontrolleru): Šajā pamācībā es iemācīšu, kā izveidot līniju pēc robota, neizmantojot Arduino. Es izmantošu ļoti vienkāršas darbības, lai izskaidrotu. Šis robots izmantos IR tuvuma sensoru, lai sekojiet līnijai. Jums nebūs nepieciešama nekāda programmēšanas pieredze, lai
AVR mikrokontrolleris. Ultraskaņas attāluma sensors. HC-SR04 uz LCD NOKIA 5110: 4 soļi
AVR mikrokontrolleris. Ultraskaņas attāluma sensors. HC-SR04 uz LCD NOKIA 5110: Sveiki visiem! Šajā sadaļā es izveidoju vienkāršu elektronisku ierīci attāluma noteikšanai, un šie parametri tiek parādīti LCD NOKIA 5110. Parametri tiek parādīti kā diagramma un skaitļi. Ierīces pamatā ir mikrokontrolleris AVR ATMEG
AVR mikrokontrolleris. Pārslēdziet gaismas diodes, izmantojot spiedpogu slēdzi. Spiedpogas atcelšana: 4 soļi
AVR mikrokontrolleris. Pārslēdziet gaismas diodes, izmantojot spiedpogu slēdzi. Spiedpogas atcelšana. Šajā sadaļā mēs uzzināsim, kā izveidot programmas C kodu ATMega328PU, lai mainītu trīs gaismas diodes statusu atbilstoši pogas slēdža ievadam. Mēs esam arī izpētījuši risinājumus problēmai “Switch Bounce”. Kā parasti, mēs
AVR mikrokontrolleris. Pulsa platuma modulācija. Līdzstrāvas motora un LED gaismas intensitātes kontrolieris: 6 soļi
AVR mikrokontrolleris. Pulsa platuma modulācija. Līdzstrāvas motora un LED gaismas intensitātes kontrolieris: Sveiki visiem! Pulsa platuma modulācija (PWM) ir ļoti izplatīta tehnika telekomunikāciju un jaudas kontroles jomā. to parasti izmanto, lai kontrolētu elektroierīcei piegādāto jaudu, neatkarīgi no tā, vai tas ir motors, LED, skaļruņi utt. Būtībā tas ir modulis