Sadržaj:
- Korak 1: Dijelovi i materijali
- Korak 2: MATLAB Arduino paket podrške
- Korak 3: Korištenje senzora podataka nabavljenih s mobilnog uređaja
- Korak 4: Kôd i priključci ožičenja
Video: MATLAB kontrolirani mikrokontroler (Arduino MKR1000): 4 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:07
Cilj našeg projekta bio je upotrijebiti MATLAB kao i Arduino MKR1000 koliko smo mogli. Naš cilj je bio stvoriti skriptu koja je omogućila određenim značajkama arduina da izvedu određeni izlaz na osnovu određenog unosa. Koristili smo mnoge petlje i uvjetne naredbe predstavljene u MATLAB -u koje su to omogućile. Koristili smo i MATLAB mobile koristeći podatke prikupljene sa žiroskopa mobilnog uređaja za poboljšanje projekta što je više moguće.
Korak 1: Dijelovi i materijali
MATLAB 2018a
-Verzija MATLAB -a za 2018. je najpoželjnija verzija, uglavnom zato što najbolje funkcionira s kodom koji se povezuje s mobilnim uređajem. Međutim, većina našeg koda može se tumačiti u većini verzija MATLAB -a.
Arduino MKR1000
-Ovo je poseban uređaj koji nam omogućuje povezivanje krugova do digitalnih i analognih portova. Od vitalnog je značaja da uz to imate i osnovnu ploču.
Dodaci
-Kada smo koristili MKR1000, bili su nam potrebni dodatni dijelovi kako bismo izvršili potrebne funkcije.
Ovo uključuje
- Servo
- Dugme (6)
- Izmjenjivo RBG LED svjetlo
- Jednostavne žice
- matična ploča
- mini prekidač za napajanje
- senzor temperature
- Otpornik od 330 ohma
- 10K ohm otpornik
- USB-microUSB kabel
- Laptop/desktop
- Mobilni uređaj
Također treba napomenuti da postoji mnogo, mnogo više dodatne opreme koja se može koristiti s MKR1000
Korak 2: MATLAB Arduino paket podrške
Da biste pravilno koristili Arduino MKR1000 putem MATLAB -a, morate preuzeti MATLAB paket podrške za Arduino hardver. Ovo preuzimanje omogućuje vam pristup određenim funkcijama i naredbama izravno na arduino ploču.
Paket možete preuzeti na donjem linku
www.mathworks.com/matlabcentral/fileexchange/47522-matlab-support-package-for-arduino-hardware
Korak 3: Korištenje senzora podataka nabavljenih s mobilnog uređaja
Mobilna aplikacija MATLAB omogućuje nam korištenje mobilnog uređaja za prijenos podataka pomoću njegovog žiroskopa. Da bismo pribavili podatke putem MATLAB -a, podatke prikupljamo preuzimanjem iz orijentacijske matrice s MATLAB mobile. To činimo stvaranjem varijable za svaki stupac orijentacijske matrice (Azimut, Pitch i Roll) i indeksiranjem konstantnog niza vrijednosti s mobilnog uređaja na računalo. To nam omogućuje stvaranje uvjetnih izraza koji će unaprijed oblikovati izlaz ako MATLAB pokupi određeni unos podataka s mobilnog uređaja. Da biste to učinili, trebat će vam MATLAB mobile na mobilnom uređaju i paket podrške za mobilne uređaje za MATLAB na vašem računaru.
Datoteku možete preuzeti na donjem linku
www.mathworks.com/matlabcentral/fileexchange/51235-matlab-support-package-for-apple-ios-sensors
Korak 4: Kôd i priključci ožičenja
Kôd počinje porukom pri pokretanju koja nas pita želimo li pokrenuti kućni sigurnosni uređaj. Ako odgovorimo potvrdno i damo tačan pristupni kôd, skripta odmah uskače u while petlju. Odatle počinje prikupljanje podataka s mobilnog uređaja. Postoje uvjeti koji čitaju ove podatke. S mobilnog uređaja možemo otključati i zaključati sistem, a kod će okrenuti servo i treptati LED svjetlo ovisno o danim podacima s mobilnog uređaja
startup = questdlg ('Želite li aktivirati ecoTECH energetski sistem pametne kuće?'); % Počinje redoslijed aktivacije ecoTECHwaitfor (pokretanje); ako je pokretanje == "Da" % Ako je odabrano "Da", započinje niz aktivacije i ulazi u while petlju na kraju power = "uključeno"; m1 = msgbox ('Pokretanje ecoTECH …'); pauza (2); delete (m1); m1_wait = čekanje (0, 'Molimo pričekajte …'); koraci = 25; za i = 1: koraci pauze (.1); traka čekanja (i/koraci); % Ažurira brisanje kraja trake čekanja (m1_wait); PASSCODE = [0 0 0 0]; % Pokreće šifru ii = 0; % Pokreće varijablu koja se koristi za probijanje petlji m2 = msgbox ('ecoTECH potpuno operativan!'); pauza (2); brisati (m2); elseif startup == "Ne" || startup == "Cancel" % Ako je odabrano "No" ili "Cancel", tada sekvenca aktivacije ne počinje i ne ulazi u power loop = "off"; m3 = msgbox ('U redu! Zbogom!'); pauza (2); brisanje (m3); kraj
% ecoTECH u odjeljku Akcija dok je istinito dok je napajanje == "uključeno" % Odjeljak mobilnog ključa dok je istinito % Prikuplja podatke o orijentaciji mobilnog uređaja prema roli KEY = m. Orijentacija (3); % Prikuplja podatke o tipkama b2 = readDigitalPin (a, 'D2'); % Dugme 2 (crveno) b3 = readDigitalPin (a, 'D3'); % Dugme 3 (belo) ako je KEY> = 35 % u stepenima m4 = msgbox ('Welcome Home!'); writeDigitalPin (a, 'D8', 1); % Uključuje pauzu zelenog svjetla (.5); writePosition (s, 1); % Okreće servo za otključavanje pauze vrata (2); writeDigitalPin (a, 'D8', 0); % Isključuje brisanje zelenog svjetla (m4); elseif KEY <= -35 % u stupnjevima m5 = msgbox ('Vrata zaključana!'); writeDigitalPin (a, 'D7', 1); % Uključuje pauzu crvenog svetla (.5); writePosition (s, 0); % Okreće servo za zaključavanje pauze vrata (2); writeDigitalPin (a, 'D7', 0); % Isključuje brisanje crvenog svetla (m5); ii = 1; break % Izlazi dok petlja sadrži mobilni ključ ako su vrata zaključana pomoću mobilnog uređaja elseif b2 == 0 && b3 == 0 % Izlazi dok petlja sadrži mobilni ključ za unos završetka odjeljka lozinke
Nakon toga može ući u drugu while petlju. Ova while petlja kontroliše ishode na osnovu unosa sa dugmadi. Ako je prva while petlja zanemariva ili je potrebno ručno zaključavanje, ući će u drugu while petlju gdje je potrebna određena lozinka. Ako je lozinka netačna, petlja će se ponovo pokrenuti
dok je istina ako je ii == 1 % Izlazi iz petlje koja sadrži šifru ako su vrata bila otključana prekidačem mobilnog uređaja % Prikuplja podatke o gumbima b5 = readDigitalPin (a, 'D5'); % Dugme 5 (plavo) b1 = readDigitalPin (a, 'D1'); % Dugme 1 (crno) b4 = readDigitalPin (a, 'D4'); % Dugme 4 (belo) ako je b5 == 0 % Pokreće odeljak za unos lozinke za b = 1: 5 m6 = msgbox ('Molimo pritisnite i držite dugme A'); pauza (2); delete (m6); % Prikuplja podatke o tipkama b1 = readDigitalPin (a, 'D1'); % Dugme 1 (crno) b2 = readDigitalPin (a, 'D2'); % Dugme 2 (crveno) b3 = readDigitalPin (a, 'D3'); % Dugme 3 (belo) b4 = readDigitalPin (a, 'D4'); % Dugme 4 (žuto) b5 = readDigitalPin (a, 'D5'); % Dugme 5 (plavo) % Zamenjuje vrednosti u početnoj šifri jednu po jednu ako 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)); % Pretvara niz tipki pritisnutih u brojeve, a zatim ih pretvara u kraj kraja niza % Kraj for petlje za unos cifara za šifru ako PASSCODE == "2314" % Ako se unesena šifra podudara, vrata se otključavaju na nekoliko sekundi, pa se zaključavaju m7 = msgbox ('Dobro došli kući!'); writeDigitalPin (a, 'D8', 1); % Uključuje pauzu zelenog svjetla (.5); writePosition (s, 1); % Okreće servo za otključavanje pauze vrata (5); writeDigitalPin (a, 'D8', 0); % Isključuje pauzu zelenog svjetla (.1); writeDigitalPin (a, 'D7', 1); % Uključuje pauzu crvenog svetla (.5); writePosition (s, 0); % Okreće servo za zaključavanje pauze vrata (1); writeDigitalPin (a, 'D7', 0); % Isključuje brisanje crvenog svetla (m7); ii = 1; break % Izlazi dok petlja sadrži lozinku nakon unosa ispravne lozinke elseif PASSCODE ~ = "2314" writeDigitalPin (a, 'D7', 1); % Uključuje crveno svjetlo m8 = msgbox ('Neispravna lozinka! Pokušajte ponovo!'); waitfor (m8) writeDigitalPin (a, 'D7', 0); % Isključuje crveno svjetlo nastavlja se % Omogućava vam da ponovo unesete kraj šifre elseif b1 == 0 && b4 == 0 % Izlazi dok petlja sadrži odjeljak lozinke ako ne želite unijeti šifru ii = 1; break end end
Ako je ispravno, odmah će ući u while petlju koja kontrolira senzor temperature. Ako je prekidač uključen, petlja će se nastaviti i iscrtavati grafikon temperature u odnosu na vrijeme, omogućavajući vam da vidite trend. Ako pritisnete dugme spojeno na temperaturni senzor, poslaće vam i poruku e -pošte koja vam kaže koja je temperatura u vašem "domu". Ako je prekidač isključen, kôd će se odmah prekinuti
t = 0; % Početno vreme = 0 sekundi pauze (5) % Daje korisniku vreme da uključi temperaturni prekidač SWITCH = readDigitalPin (a, 'D11'); % Prikuplja podatke o prekidaču na pinu D11 dok je SWITCH == 0 SWITCH = readDigitalPin (a, 'D11'); % Prikuplja podatke o prekidaču na pinu D11 napon = readVoltage (a, 'A1'); % Očitava napon sa senzora temperature temp_C = (napon.*1000 - 500)./ 10; % Pretvara napon u temperaturu u ° C temp_F = (9/5).*Temp_C + 32; % Pretvara iz ° C u ° F grafika (t, temp_C, 'b.') Držanje naslova ('Sobna temperatura'); xlabel ('Vrijeme u sekundama'); ylabel ('Temperatura'); os ([0, 180, 0, 100]); plot (t, temp_F, 'r.') legenda ('Temperatura u ° C', 'Temperatura u ° F') pauza (1); t = t + 1; % Brojač vremena u sekundama % Odsek e-pošte b_temp = readDigitalPin (a, 'D0'); % Prikuplja podatke (plavog) dugmeta za temperaturu na pinu D0 ako je b_temp == 0 setpref ('Internet', 'SMTP_Server', 'smtp.gmail.com'); setpref ('Internet', 'E_mail', '[email protected]'); % Sender setpref ('Internet', 'SMTP_Korisničko ime', '[email protected]'); % Korisničko ime pošiljaoca setpref ('Internet', 'SMTP_Password', 'Integral_ecoTECH'); % Rekviziti lozinke pošiljaoca = 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 ili %.1f ° F.', temp_C, temp_F)); % Šalje e-poruku primatelju s podacima o trenutnoj sobnoj temperaturi fprintf ('E-pošta je uspješno poslana! / N') kraj ako je temp_F> = 75 % Ako se sobna temperatura poveća na 75 ° F … temp_AC = 65; % Menja temperaturu na termostatu na 65 ° F, inače temp_F <= 65 % Ako se sobna temperatura smanji na 60 ° F… temp_AC = 80; % Mijenja temperaturu na termostatu na 80 ° F kraj kraja % Kraj "SWITCH == 0" while petlje ako je napajanje == "isključeno" || ii == 1 % Izlazi iz "napajanja == uključeno" dok kraj prekida petlje završava % Kraj "napajanja == uključeno" dok je petlja ako je napajanje == "isključeno" || ii == 1 % Izlazi iz cijelog prekida stanke petlje
Ovo je bio samo kratak pregled koda i njegove funkcionalnosti. Po potrebi smo priložili cijeli kôd u pdf formatu
Ovdje je lista u koji port je priključen svaki uređaj
1. RGB LED: Digitalni pinovi (7, 8, 9)
2. Servo: Digitalni pin 6
3. Dugmad: Digitalni pinovi (1, 2, 3, 4, 5)
4. Plavo dugme za e -poštu: digitalni pin 0
5. Senzor temperature: analogni pin 1
6. Prekidač: Digitalni pin 11
Preporučuje se:
Arduino kontrolirani robotski dvonožac: 13 koraka (sa slikama)
Arduino kontrolirani robotski dvonožac: Oduvijek su me zanimali roboti, posebno oni koji pokušavaju oponašati ljudske radnje. Taj interes me je naveo da pokušam dizajnirati i razviti robotskog dvonošca koji bi mogao imitirati ljudsko hodanje i trčanje. U ovom Instructable -u ću vam pokazati t
Uradi sam Arduino Bluetooth kontrolirani robot!: 5 koraka
Uradi sam Arduino Bluetooth kontrolirani robot!: Pozdrav svima! U ovom članku izrađujem robota kontroliranog bluetoothom s arduinom. Ako više volite gledati videozapise, evo video vodiča koji sam napravio !:
Laptop Touchpad kontrolirani model željeznice - PS/2 Arduino sučelje: 14 koraka
Laptop Touchpad kontrolirani model željeznice | PS/2 Arduino sučelje: Touchpad prijenosnog računala jedan je od odličnih uređaja koji se može koristiti kao ulaz za projekte mikrokontrolera. Zato danas, implementirajmo ovaj uređaj s Arduino mikrokontrolerom za upravljanje modelom željeznice. Pomoću dodirne podloge PS/2 moći ćemo kontrolirati 3 t
MIDI/Arduino kontrolirani 8-bitni generator zvuka (AY-3-8910): 5 koraka
MIDI/Arduino kontrolirani 8-bitni generator zvuka (AY-3-8910): Izradite 8-bitni generator zvuka retro zvuka i kontrolirajte ga putem MIDI-ja. Ovaj dizajn djelomično je inspiriran entuzijastima kompanije Chiptune koji grade Arduino kola za reprodukciju datoteka Chiptune i nekih od moje ideje za integriranje zvuka ranih nedostataka video igara
Arduino kontrolirani mini automat: 9 koraka
Arduino kontrolirani mini automat za prodaju: Ovo je naš automat za prodaju, prodaje tri slatkiša sa slatkišima zabavne veličine. Ukupne dimenzije su oko 12 " x 6 " x 8 ". Ovim automatom upravlja arduino, sa matičnom pločom i servo motorom