Obsah:
- Krok 1: Diely a materiály
- Krok 2: Balíček podpory MATLAB Arduino
- Krok 3: Používanie dátových senzorov získaných z mobilného zariadenia
- Krok 4: Kód a porty zapojenia
Video: Riadený mikrokontrolér MATLAB (Arduino MKR1000): 4 kroky
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:59
Cieľom nášho projektu bolo čo najlepšie využiť MATLAB a Arduino MKR1000. Našim cieľom bolo vytvoriť skript, ktorý umožní určitým funkciám arduina dosiahnuť určitý výstup na základe konkrétneho vstupu. Použili sme mnoho slučiek a podmienených príkazov uvedených v programe MATLAB, ktoré to umožnili. Tiež sme použili MATLAB mobile pomocou údajov získaných z gyroskopu mobilného zariadenia, aby sme projekt čo najviac vylepšili.
Krok 1: Diely a materiály
MATLAB 2018a
-Verzia MATLABu pre rok 2018 je najpreferovanejšou verziou, väčšinou preto, že najlepšie funguje s kódom, ktorý sa pripája k mobilnému zariadeniu. Väčšinu nášho kódu však môže interpretovať väčšina verzií MATLAB.
Arduino MKR1000
-Toto je špecifické zariadenie, ktoré nám umožňuje zapojiť obvody do digitálnych aj analógových portov. Je nevyhnutné, aby ste k nemu mali aj chlebovú dosku.
Príslušenstvo
-Pri použití MKR1000 sme potrebovali príslušenstvo, aby sme mohli vykonávať potrebné funkcie.
Toto zahŕňa
- Servo
- Tlačidlo (6)
- Vymeniteľné LED svetlo RBG
- Jednoduché drôty
- doska na pečenie
- mini vypínač
- teplotný senzor
- Odpor 330 ohmov
- Rezistor 10K ohmov
- USB-microUSB kábel
- Notebook/stolný počítač
- Mobilné zariadenie
Je tiež potrebné poznamenať, že existuje mnoho, oveľa viac príslušenstva, ktoré je možné použiť s MKR1000
Krok 2: Balíček podpory MATLAB Arduino
Aby ste mohli správne používať Arduino MKR1000 prostredníctvom MATLAB, musíte si stiahnuť podporný balík MATLAB pre hardvér Arduino. Toto stiahnutie vám umožní prístup k určitým funkciám a príkazom priamo na dosku arduino.
Balíček si môžete stiahnuť pomocou nižšie uvedeného odkazu
www.mathworks.com/matlabcentral/fileexchange/47522-matlab-support-package-for-arduino-hardware
Krok 3: Používanie dátových senzorov získaných z mobilného zariadenia
Aplikácia MATLAB Mobile nám umožňuje používať mobilné zariadenie na streamovanie údajov pomocou jeho gyroskopu. Aby sme získali údaje prostredníctvom MATLABu, získavame údaje ich načítaním z orientačnej matice z MATLAB mobile. Vykonáme to tak, že pre každý stĺpec orientačnej matice (azimut, rozstup a zvitok) vytvoríme premennú a indexujeme konštantný tok hodnôt z mobilného zariadenia do počítača. To nám umožňuje vytvárať podmienené príkazy, ktoré vytvoria výstup, ak MATLAB vyzdvihne konkrétny vstup údajov z mobilného zariadenia. Na to budete potrebovať MATLAB mobile na svojom mobilnom zariadení a balík podpory mobilného zariadenia pre MATLAB na vašom počítači.
Súbor si môžete stiahnuť pomocou nižšie uvedeného odkazu
www.mathworks.com/matlabcentral/fileexchange/51235-matlab-support-package-for-apple-ios-sensors
Krok 4: Kód a porty zapojenia
Kód začína správou pri spustení, ktorá sa pýta, či chceme spustiť naše domáce bezpečnostné zariadenie. Ak odpovieme áno a zadáme správny prístupový kód, skript okamžite skočí do cyklu while. Odtiaľ začne zhromažďovať údaje z mobilného zariadenia. Existujú podmienky, ktoré čítajú tieto údaje. Systém môžeme odomknúť a uzamknúť z nášho mobilného zariadenia a kód v závislosti od daných údajov z mobilného zariadenia zapne servo a začne blikať LED diódu
startup = questdlg ('Chcete aktivovať energetický systém smart home ecoTECH?'); % Začína sa aktivačná sekvencia ecoTECHwaitfor (spustenie); ak je spustenie == "Áno" % Ak je zvolené "Áno", spustí sa aktivačná sekvencia a na konci vstúpi do slučky while power = "zapnuté"; m1 = msgbox ('Spustenie systému ecoTECH …'); pauza (2); vymazať (m1); m1_wait = čakacia lišta (0, 'Čakajte prosím …'); kroky = 25; pre i = 1: pauza krokov (.1); čakacia lišta (i/kroky); % Aktualizuje odstránenie konca čakacej lišty (m1_wait); PASSCODE = [0 0 0 0]; % Inicializuje prístupový kód ii = 0; % Inicializuje premennú použitú na vyradenie zo slučiek m2 = msgbox ('ecoTECH plne funkčný!'); pauza (2); vymazať (m2); elseif spustenie == "Nie" || startup == "Zrušiť" % Ak je zvolené "Nie" alebo "Zrušiť", aktivačná sekvencia sa nespustí a nevstúpi do napájacej slučky while = "vypnuté"; m3 = msgbox ('Dobre! Zbohom!'); pauza (2); vymazať (m3); koniec
% ecoTECH v akčnej sekcii, kým je pravdivé, kým je napájanie == "zapnuté" % je v sekcii mobilného kľúča, zatiaľ čo je pravda % % Zhromažďuje údaje o tlačidlách b2 = readDigitalPin (a, 'D2'); % Tlačidlo 2 (červené) b3 = readDigitalPin (a, 'D3'); % Tlačidlo 3 (biele), ak je KĽÚČ>> 35 % v stupňoch m4 = msgbox („vitajte doma!“); writeDigitalPin (a, 'D8', 1); % Zapne pauzu zeleného svetla (.5); writePosition (s, 1); % Otáča servomotorom, aby sa odomkla pauza dverí (2); writeDigitalPin (a, 'D8', 0); % Vypne vymazanie zeleného svetla (m4); elseif KĽÚČ <= -35 % v stupňoch m5 = msgbox ('Dvere zamknuté!'); writeDigitalPin (a, 'D7', 1); % Zapne pozastavenie červeného svetla (.5); writePosition (s, 0); % Otočí servomotor, aby zablokoval pozastavenie dverí (2); writeDigitalPin (a, 'D7', 0); % Vypína mazanie červeného svetla (m5); ii = 1; break % Odíde zo slučky obsahujúcej mobilný kľúč, ak sú dvere uzamknuté pomocou mobilného zariadenia elseif b2 == 0 && b3 == 0 % Odíde zo slučky obsahujúcej mobilný kľúč na zadanie prístupového kódu koniec sekcie koniec konca
Potom môže vstúpiť do ďalšej slučky while. Táto slučka zatiaľ kontroluje výsledky na základe vstupov z tlačidiel. Ak je prvá slučka while zanedbateľná alebo je požadované manuálne uzamknutie, vstúpi do ďalšej slučky while, kde je potrebné konkrétne heslo. Ak je heslo nesprávne, slučku reštartuje
pokiaľ je to pravda, ii == 1 % Ukončí slučku obsahujúcu prístupový kód, ak boli dvere odomknuté koncom prerušenia mobilného zariadenia % Zbiera údaje o tlačidlách b5 = readDigitalPin (a, 'D5'); % Tlačidlo 5 (modré) b1 = readDigitalPin (a, 'D1'); % Tlačidlo 1 (čierne) b4 = readDigitalPin (a, 'D4'); % Tlačidlo 4 (biele), ak b5 == 0 % Spustí zadávanie kódu zadaním sekcie pre b = 1: 5 m6 = msgbox („Stlačte a podržte tlačidlo A“); pauza (2); vymazať (m6); % Zhromažďuje údaje o tlačidlách b1 = readDigitalPin (a, 'D1'); % Tlačidlo 1 (čierne) b2 = readDigitalPin (a, 'D2'); % Tlačidlo 2 (červené) b3 = readDigitalPin (a, 'D3'); % Tlačidlo 3 (biele) b4 = readDigitalPin (a, 'D4'); % Tlačidlo 4 (žlté) b5 = readDigitalPin (a, 'D5'); Tlačidlo % 5 (modré) % Nahrádza hodnoty v počiatočnom prístupovom kóde jeden po druhom, ak 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)); % Otočí postupnosť tlačidiel stlačených na čísla a potom ich prevedie na koniec reťazca % Koniec cyklu pre zadávanie číslic pre prístupový kód, ak PASSCODE == "2314" % Ak sa zadaný prístupový kód zhoduje, dvere sa na niekoľko sekúnd odomknú a potom sa uzamknú m7 = msgbox ('Vitajte doma!'); writeDigitalPin (a, 'D8', 1); % Zapne pauzu zeleného svetla (.5); writePosition (s, 1); % Otáča servomotorom, aby sa odomkla pauza dverí (5); writeDigitalPin (a, 'D8', 0); % Vypne pauzu zeleného svetla (.1); writeDigitalPin (a, 'D7', 1); % Zapne pozastavenie červeného svetla (.5); writePosition (s, 0); % Otočí servomotor, aby zablokoval pozastavenie dverí (1); writeDigitalPin (a, 'D7', 0); % Vypne vymazanie červeného svetla (m7); ii = 1; break % Ukončí cyklus obsahujúci prístupový kód po zadaní správneho prístupového kódu elseif PASSCODE ~ = "2314" writeDigitalPin (a, 'D7', 1); % Zapne červené svetlo m8 = msgbox ('Nesprávny prístupový kód! Skúste to znova!'); čakať na (m8) writeDigitalPin (a, 'D7', 0); % Vypnúť červené svetlo pokračovať % Umožňuje vám znova zadať prístupový kód, inak b1 == 0 && b4 == 0 % Opustí slučku obsahujúcu sekciu s prístupovým kódom, ak nechcete zadať prístupový kód ii = 1; koniec konca konca
Ak je správny, okamžite vstúpi do slučky, ktorá ovláda snímač teploty. Ak je prepínač zapnutý, slučka bude pokračovať a vykresliť graf teploty oproti času, čo umožní trendu zobraziť. Ak stlačíte tlačidlo pripojené k snímaču teploty, odošle sa vám tiež e -mail s informáciou o teplote vo vašom „dome“. Ak je vypínač vypnutý, kód sa okamžite ukončí
t = 0; % Počiatočný čas = pauza 0 sekúnd (5) % Poskytuje používateľovi čas na zapnutie teplotného spínača SPÍNAČ = readDigitalPin (a, 'D11'); % Zhromažďuje údaje o prepínači na pine D11, zatiaľ čo SWITCH == 0 SWITCH = readDigitalPin (a, 'D11'); % Zhromažďuje údaje o prepínači v napätí na kolíku D11 = readVoltage (a, 'A1'); % Číta napätie z teplotného snímača teplota_C = (napätie.*1000 - 500)./ 10; % Konvertuje napätie na teplotu v ° C temp_F = (9/5).*Temp_C + 32; % Prevedie z grafu ° C na ° F (t, teplota_C, 'b.') Podržania titulu ('izbová teplota'); xlabel („Čas v sekundách“); ylabel („teplota“); os ([0, 180, 0, 100]); pozastavenie grafu (t, temp_F, 'r.') ('Teplota v ° C', 'Teplota v ° F') (1); t = t + 1; % Počítadlo času v sekundách % Časť e-mailu b_temp = readDigitalPin (a, 'D0'); % Zhromažďuje údaje (modrého) tlačidla teploty na kolíku D0, ak b_temp == 0 setpref ('Internet', 'SMTP_Server', 'smtp.gmail.com'); setpref ('Internet', 'E_mail', '[email protected]'); % Sender setpref ('Internet', 'SMTP_Username', '[email protected]'); % Používateľské meno odosielateľa setpref ('Internet', 'SMTP_Password', 'Integral_ecoTECH'); % Rekvizity hesla odosielateľa = 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] ',' izbová teplota ecoTECH ', sprintf (' aktuálna izbová teplota je %.1f ° C alebo %.1f ° F. ', temp_C, temp_F)); % Pošle príjemcovi e-mail s údajmi o aktuálnom fprintf aktuálnej izbovej teploty ('E-mail bol úspešne odoslaný! / N') koniec, ak temp_F> = 75 % Ak sa izbová teplota zvýši na 75 ° F … temp_AC = 65; % Zmení teplotu na termostate na 65 ° F elseif teplota_F <= 65 % Ak teplota v miestnosti klesne na 60 ° F … teplota_AC = 80; % Zmení teplotu na termostate na koncový koniec 80 ° F % Koniec „SPÍNAČA == 0“počas cyklu, ak je napájanie == „vypnuté“|| ii == 1 % Ukončí "napájanie == zapnuté" pri konci prerušenia slučky % Koniec "napájania == zapnuté" pri slučke, ak je napájanie == "vypnuté" || ii == 1 % Ukončí sa celý, kým sa skončí koniec slučky
Toto bol len stručný prehľad kódu a jeho funkčnosti. V prípade potreby sme priložili celý kód vo formáte pdf
Tu je zoznam portov, ku ktorým sú jednotlivé zariadenia zapojené
1. RGB LED: digitálne piny (7, 8, 9)
2. Servo: digitálny kolík 6
3. Tlačidlá: Digitálne piny (1, 2, 3, 4, 5)
4. Modré tlačidlo pre e -mail: Digital Pin 0
5. Snímač teploty: analógový kolík 1
6. Prepínač: digitálny kolík 11
Odporúča:
RC riadený RGB LED pás: 4 kroky (s obrázkami)
RC pásom riadený RGB LED pásik: Vytvorte si svoj vlastný LED riadený LED pásik pre osvetlenie jednotlivých miestností! Väčšina RGB-LED pásikov je ovládaná infračerveným diaľkovým ovládaním. Ak chcete vypnúť alebo zapnúť alebo zmeniť farbu, musíte zostať pred prijímačom. Je to nudné a už vôbec nie
Internetom riadený bublinový automat: 4 kroky (s obrázkami)
Internetom riadený bublinový stroj: Každý vie, že fúkanie bublín je veľa zábavy, ale môže to byť tvrdá práca. Tento problém môžeme vyriešiť jednoduchým vybudovaním internetového bublinového automatu, pričom delegovanie úsilia prinesie všetky odmeny. U hospitalizovaných si môžete skontrolovať
Potenciometer a servo: riadený pohyb s Arduino: 4 kroky
Potenciometer a servo: riadený pohyb s Arduino: Najprv musíte zhromaždiť príslušné materiály na zostavenie tohto obvodu
2 potenciometre a 2 serva: riadený pohyb s Arduino: 4 kroky
2 potenciometre a 2 serva: riadený pohyb s Arduino: Najprv musíte zhromaždiť príslušné materiály na zostavenie tohto obvodu
Shelly 1PM riadený napájací kábel / predlžovací kábel: 4 kroky
Riadiaci napájací / predlžovací kábel Shelly 1PM: Mám niekoľko základných napájacích káblov a chcel som ich urobiť o niečo múdrejšími bez veľkých nákladov. Zadajte modul Shelly 1 PM. Jedná sa o veľmi cenovo dostupný, malý prepínač založený na WIFI s certifikáciou CE. Skvelé na tom je, že má tiež veľmi presný výkon