Kazalo:
- 1. korak: Deli in materiali
- 2. korak: Podporni paket MATLAB Arduino
- 3. korak: Uporaba podatkovnih senzorjev, pridobljenih iz mobilne naprave
- 4. korak: Koda in priključki za ožičenje
Video: Krmiljeni mikrokrmilnik MATLAB (Arduino MKR1000): 4 koraki
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:05
Cilj našega projekta je bil po svojih najboljših močeh uporabiti MATLAB in Arduino MKR1000. Naš cilj je bil ustvariti skript, ki je nekaterim funkcijam arduina omogočil izvajanje določenega izida na podlagi določenega vnosa. Uporabili smo številne zanke in pogojne izjave, predstavljene v MATLAB -u, ki so to omogočile. Uporabili smo tudi MATLAB mobile z uporabo podatkov, pridobljenih z žiroskopa mobilne naprave, da bi projekt čim bolj izboljšali.
1. korak: Deli in materiali
MATLAB 2018a
-Različica MATLAB za leto 2018 je najbolj priljubljena različica, predvsem zato, ker najbolje deluje s kodo, ki se poveže z mobilno napravo. Večino naše kode pa lahko razlaga večina različic MATLAB.
Arduino MKR1000
-To je posebna naprava, ki nam omogoča, da povežemo vezja do digitalnih in analognih vrat. Pomembno je, da si privoščite tudi načrt.
Dodatki
-Ko smo uporabljali MKR1000, smo za opravljanje potrebnih funkcij potrebovali dodatne dele.
To vključuje
- Servo
- Gumb (6)
- Zamenljiva RBG LED luč
- Preproste žice
- mizica
- mini stikalo za vklop
- temperaturni senzor
- 330 ohmski upor
- 10K ohmski upor
- USB-microUSB kabel
- Prenosni računalnik/namizni računalnik
- Mobilna naprava
Opozoriti je treba tudi, da je z MKR1000 mogoče uporabiti veliko, veliko več dodatkov
2. korak: Podporni paket MATLAB Arduino
Če želite pravilno uporabljati Arduino MKR1000 prek MATLAB -a, morate prenesti podporni paket MATLAB za strojno opremo Arduino. Ta prenos vam omogoča dostop do določenih funkcij in ukazov neposredno na ploščo arduino.
Paket lahko prenesete na spodnji povezavi
www.mathworks.com/matlabcentral/fileexchange/47522-matlab-support-package-for-arduino-hardware
3. korak: Uporaba podatkovnih senzorjev, pridobljenih iz mobilne naprave
Mobilna aplikacija MATLAB nam omogoča uporabo mobilne naprave za pretakanje podatkov z uporabo njenega žiroskopa. Za pridobivanje podatkov prek MATLAB -a jih pridobimo tako, da jih pridobimo iz orientacijske matrice iz MATLAB mobile. To naredimo tako, da za vsak stolpec orientacijske matrike (Azimut, Pitch in Roll) ustvarimo spremenljivko in indeksiramo stalen tok vrednosti iz mobilne naprave v računalnik. To nam omogoča, da ustvarimo pogojne izjave, ki bodo vnaprej oblikovale izhod, če MATLAB pobere določen vnos podatkov iz mobilne naprave. Če želite to narediti, potrebujete MATLAB mobile v mobilni napravi in paket podpore za mobilne naprave za MATLAB v računalniku.
Datoteko lahko prenesete na spodnji povezavi
www.mathworks.com/matlabcentral/fileexchange/51235-matlab-support-package-for-apple-ios-sensors
4. korak: Koda in priključki za ožičenje
Koda se začne z zagonskim sporočilom, ki vpraša, ali želimo zagnati svojo domačo varnostno napravo. Če odgovorimo pritrdilno in podamo pravilno geslo, skript takoj skoči v zanko while. Od tam začne zbirati podatke iz mobilne naprave. Obstajajo pogojniki, ki berejo te podatke. Sistem lahko odklenemo in zaklenemo z mobilne naprave, koda pa obrne servo in utripa LED lučko, odvisno od danih podatkov iz mobilne naprave
startup = questdlg ('Ali želite aktivirati ecoTECH Smart Home Energy System?'); % Začne aktivacijsko zaporedje ecoTECHwaitfor (zagon); če je zagon == "Da" % Če je izbrano "Da", se začne aktivacijsko zaporedje in vstopi v zanko while na koncu power = "on"; m1 = msgbox ('Zagon ecoTECH …'); premor (2); izbriši (m1); m1_wait = čakalna vrstica (0, 'Prosim počakajte …'); koraki = 25; za i = 1: premor korakov (.1); čakalna vrstica (i/koraki); % Posodobi izbris čakalne vrstice (m1_wait); PASSCODE = [0 0 0 0]; % Inicializira geslo ii = 0; % Inicializira spremenljivko, ki se uporablja za prekinitev zank m2 = msgbox ('ecoTECH popolnoma delujoč!'); premor (2); izbriši (m2); elseif zagon == "Ne" || startup == "Prekliči" % Če izberete "Ne" ali "Prekliči", se aktivacijsko zaporedje ne zažene in ne vnese napajanja zanke while = "izklopljeno"; m3 = msgbox ('V redu! Nasvidenje!'); premor (2); črtati (m3); konec
% ecoTECH v odseku v akciji, medtem ko je res, medtem ko je moč == "vklopljeno" % Odsek mobilnega ključa, medtem ko je res % Zbira podatke o usmerjenosti premika mobilne naprave KEY = m. Orientation (3); % Zbira podatke o gumbih b2 = readDigitalPin (a, 'D2'); % Gumb 2 (rdeča) b3 = readDigitalPin (a, 'D3'); % Gumb 3 (bela), če je KLJUČ>> 35 % v stopinjah m4 = msgbox ('Dobrodošli domov!'); writeDigitalPin (a, 'D8', 1); % Vklopi premor zelene luči (.5); writePosition (s, 1); % Obrne servo za odklepanje premora vrat (2); writeDigitalPin (a, 'D8', 0); % Izklopi brisanje zelene luči (m4); elseif KEY <= -35 % v stopinjah m5 = msgbox ('Door Locked!'); writeDigitalPin (a, 'D7', 1); % Vklopi premor pri rdeči luči (.5); writePosition (s, 0); % Obrne servo, da zaklene pavzo vrat (2); writeDigitalPin (a, 'D7', 0); % Izklopi brisanje rdeče luči (m5); ii = 1; break % Izstopi med zanko, ki vsebuje mobilni ključ, če so vrata zaklenjena z mobilno napravo.
Po tem lahko vstopi v drugo zanko while. Ta zanka while nadzoruje rezultate na podlagi vhodov iz gumbov. Če je prva zanka while zanemarljiva ali je potrebna ročna zapora, bo vstopila v drugo zanko while, kjer je potrebno določeno geslo. Če geslo ni pravilno, se bo zanka znova zagnala
medtem ko je true, če je ii == 1 % Izstopi iz zanke, ki vsebuje geslo, če so bila vrata odklenjena s prelomom mobilne naprave % Zbira podatke o gumbih b5 = readDigitalPin (a, 'D5'); % Gumb 5 (modra) b1 = readDigitalPin (a, 'D1'); % Gumb 1 (črna) b4 = readDigitalPin (a, 'D4'); % Gumb 4 (bela), če je b5 == 0 % Začne vnos gesla za b = 1: 5 m6 = msgbox ('Pritisnite in držite gumb A'); premor (2); izbriši (m6); % Zbira podatke o gumbih b1 = readDigitalPin (a, 'D1'); % Gumb 1 (črna) b2 = readDigitalPin (a, 'D2'); % Gumb 2 (rdeča) b3 = readDigitalPin (a, 'D3'); % Gumb 3 (bela) b4 = readDigitalPin (a, 'D4'); % Gumb 4 (rumen) b5 = readDigitalPin (a, 'D5'); % Gumb 5 (modra) % Zamenja vrednosti v začetni gesli eno za drugo, če je 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)); % Pretvori zaporedje pritisnjenih gumbov v številke in ga nato pretvori v konec konca niza % Konec for zanke za vnos številk za geslo, če PASSCODE == "2314" % Če se vneseno geslo ujema, se vrata odklenejo za nekaj sekund in se zaklenejo m7 = msgbox ('Dobrodošli domov!'); writeDigitalPin (a, 'D8', 1); % Vklopi premor zelene luči (.5); writePosition (s, 1); % Obrne servo za odklepanje premora vrat (5); writeDigitalPin (a, 'D8', 0); % Izklopi premor zelene luči (.1); writeDigitalPin (a, 'D7', 1); % Vklopi premor pri rdeči luči (.5); writePosition (s, 0); % Obrne servo, da zaklene pavzo vrat (1); writeDigitalPin (a, 'D7', 0); % Izklopi brisanje rdeče luči (m7); ii = 1; break % Izstopi, medtem ko zanka vsebuje geslo, potem ko vnesete pravilno geslo elseif PASSCODE ~ = "2314" writeDigitalPin (a, 'D7', 1); % Vklopi rdečo luč m8 = msgbox ('Nepravilna geslo! Poskusite znova!'); waitfor (m8) writeDigitalPin (a, 'D7', 0); % Izklopi rdečo luč nadaljevanje % Omogoča ponovni vnos konca gesla elseif b1 == 0 && b4 == 0 % Izstopi, medtem ko zanka vsebuje razdelek gesla, če ne želite vnesti gesla ii = 1; konec konca preloma
Če je pravilno, takoj vstopi v zanko while, ki nadzoruje temperaturni senzor. Če je stikalo vklopljeno, se bo zanka nadaljevala in prikazala grafikon temperature v primerjavi s časom, kar omogoča ogled trenda. Če pritisnete gumb, priključen na temperaturni senzor, bo poslal tudi e -poštno sporočilo, v katerem je temperatura v vašem "domu". Če je stikalo izklopljeno, bo koda takoj končana
t = 0; % Začetni čas = 0 sekund premora (5) % Daje uporabniku čas, da vklopi temperaturno stikalo SWITCH = readDigitalPin (a, 'D11'); % Zbira podatke o stikalu v zatiču D11, medtem ko SWITCH == 0 SWITCH = readDigitalPin (a, 'D11'); % Zbira podatke o stikalu v zatiču D11 napetost = readVoltage (a, 'A1'); % Odčita napetost iz temperaturnega tipala temp_C = (napetost.*1000 - 500)./ 10; % Pretvori napetost v temperaturo v ° C temp_F = (9/5).*Temp_C + 32; % Pretvori iz ° C v ° F ploskev (t, temp_C, 'b.') Drži na naslovu ('sobna temperatura'); xlabel ('Čas v sekundah'); ylabel („temperatura“); os ([0, 180, 0, 100]); plot (t, temp_F, 'r.') legend ('Temperatura v ° C', 'Temperatura v ° F') premor (1); t = t + 1; % Števec časa v sekundah % E-poštni odsek b_temp = readDigitalPin (a, 'D0'); % Zbira podatke (modrega) temperaturnega gumba na pin D0, če je b_temp == 0 setpref ('Internet', 'SMTP_Server', 'smtp.gmail.com'); setpref ('Internet', 'E_mail', '[email protected]'); % Pošiljatelja setpref ('Internet', 'SMTP_Username', '[email protected]'); % Uporabniško ime pošiljatelja setpref ('Internet', 'SMTP_Password', 'Integral_ecoTECH'); % Podporniki gesla pošiljatelja = 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 sobna temperatura', sprintf ('Trenutna sobna temperatura je %.1f ° C ali %.1f ° F.', temp_C, temp_F)); % Prejemniku pošlje e-poštno sporočilo s podatki o trenutni sobni temperaturi. % Spremeni temperaturo na termostatu na 65 ° F, sicer temp_F <= 65 % Če se sobna temperatura zniža na 60 ° F … temp_AC = 80; % Spremeni temperaturo na termostatu na 80 ° F konec konca % Konec "SWITCH == 0" medtem ko je zanka, če je napajanje == "izklopljeno" || ii == 1 % Zapre "power == on" medtem ko konec prekinitve zanke % End "power == on" while loop če je power == "off" || ii == 1 % Zapušča celoten konec prekinitve zanke
To je bil le kratek pregled kode in njene funkcionalnosti. Po potrebi smo priložili celotno kodo kot pdf
Tu je seznam, v katera vrata je priključena vsaka naprava
1. LED RGB: digitalni zatiči (7, 8, 9)
2. Servo: digitalni pin 6
3. Gumbi: digitalni zatiči (1, 2, 3, 4, 5)
4. Modri gumb za e -pošto: digitalni pin 0
5. Temperaturni senzor: analogni pin 1
6. Stikalo: digitalni pin 11
Priporočena:
CV-krmiljeni mono-stereo stereo-format Eurorack: 3 koraki
Mono-stereo stereo CV-format v obliki zapisa Eurorack: Revolucija v modularnih in pol-modularnih sintetizatorjih je ustvarila čudovito paleto novih mono-sintetičnih možnosti za elektronsko glasbo in uporabo hrupa, vendar eno vprašanje pri mono-sintetizatorjih (in večina modulov Eurorack in /ali tokov signalov) je, da niso samo
Uvod v mikrokrmilnik CloudX: 3 koraki
Uvod v mikrokrmilnik CloudX: mikrokrmilnik CloudX je mikro računalnik strojne in programske opreme odprtega izvora, ki vam omogoča ustvarjanje lastnih interaktivnih projektov. CloudX je majhna iverna plošča, ki uporabnikom omogoča, da pred vsakim dejanjem povedo, kaj naj storijo, sprejema različne k
Mikrokrmilnik AVR. Ultrazvočni senzor razdalje. HC-SR04 na LCD NOKIA 5110: 4 koraki
Mikrokrmilnik AVR. Ultrazvočni senzor razdalje. HC-SR04 na LCD NOKIA 5110: Pozdravljeni vsi! V tem razdelku naredim preprosto elektronsko napravo za zaznavanje razdalje, ti parametri pa so prikazani na LCD NOKIA 5110. Parametri so prikazani kot diagram in številke. Naprava temelji na mikrokrmilniku AVR ATMEG
Mikrokrmilnik AVR. Preklopite LED z gumbom. Odstranitev pritiska na gumb: 4 koraki
Mikrokrmilnik AVR. Preklopite LED z gumbom. Odstranitev potisne tipke. V tem razdelku se bomo naučili, kako narediti programsko kodo C za ATMega328PU za preklop stanja treh LED v skladu z vhodom iz stikala na gumbu. Prav tako smo raziskali rešitve problema "Switch Bounce". Kot ponavadi bomo
AT Majhen mikrokrmilnik z LED in RGB: 4 koraki
AT Tiny Microcontroller with LEDS and RGB: Vezje uporablja mikrokrmilnik AT TINY. Vsebuje uro na pin 5, ki se lahko izklopi in prižge LED (svetleča dioda) ali RGB (rdeča, zeleno modra LED) pri določeni frekvenci. Arduino zagotavlja vir 5 V. Upori omejujejo tok