Obsah:

Mikrokontrolér řízený MATLAB (Arduino MKR1000): 4 kroky
Mikrokontrolér řízený MATLAB (Arduino MKR1000): 4 kroky

Video: Mikrokontrolér řízený MATLAB (Arduino MKR1000): 4 kroky

Video: Mikrokontrolér řízený MATLAB (Arduino MKR1000): 4 kroky
Video: Part 2 - Arduino MKR1000 - Getting Started to Programming 2024, Listopad
Anonim
MATLAB řízený mikrokontrolér (Arduino MKR1000)
MATLAB řízený mikrokontrolér (Arduino MKR1000)

Cílem našeho projektu bylo co nejlépe využít MATLAB a Arduino MKR1000. Naším cílem bylo vytvořit skript, který umožní určitým funkcím arduina dosáhnout určitého výstupu na základě konkrétního vstupu. Použili jsme mnoho smyček a podmíněných příkazů uvedených v MATLABu, které to umožnily. Také jsme použili MATLAB mobile pomocí dat získaných z gyroskopu mobilního zařízení, abychom projekt co nejvíce vylepšili.

Krok 1: Díly a materiály

Díly a materiály
Díly a materiály
Díly a materiály
Díly a materiály
Díly a materiály
Díly a materiály

MATLAB 2018a

-Verze MATLAB pro rok 2018 je nejpreferovanější verzí, většinou proto, že nejlépe funguje s kódem, který se připojuje k mobilnímu zařízení. Většinu našeho kódu však lze interpretovat většinou verzí MATLABu.

Arduino MKR1000

-Jedná se o specifické zařízení, které nám umožňuje zapojit obvody do digitálních i analogových portů. Je důležité, abyste k tomu měli také prkénko.

Příslušenství

-Při používání MKR1000 jsme potřebovali příslušenství, abychom mohli provádět potřebné funkce.

To zahrnuje

  1. Servo
  2. Tlačítko (6)
  3. Vyměnitelné RBG LED světlo
  4. Jednoduché dráty
  5. prkénko (y)
  6. mini vypínač
  7. senzor teploty
  8. Rezistor 330 ohmů
  9. Rezistor 10K ohmů
  10. USB-microUSB kabel
  11. Notebook/stolní počítač
  12. Mobilní zařízení

Je také třeba poznamenat, že existuje mnoho, mnoho dalšího příslušenství, které lze použít s MKR1000

Krok 2: Balíček podpory MATLAB Arduino

Abyste mohli správně používat Arduino MKR1000 přes MATLAB, musíte si stáhnout balíček podpory MATLAB pro hardware Arduino. Toto stažení vám poskytuje přístup k určitým funkcím a příkazům přímo na desce arduino.

Balíček si můžete stáhnout na níže uvedeném odkazu

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

Krok 3: Použití senzorů dat získaných z mobilního zařízení

Použití senzorů dat získaných z mobilního zařízení
Použití senzorů dat získaných z mobilního zařízení

Mobilní aplikace MATLAB nám umožňuje pomocí mobilního zařízení streamovat data pomocí gyroskopu. K získání dat prostřednictvím MATLABu získáváme data jejich získáním z orientační matice z MATLAB mobile. To provedeme vytvořením proměnné pro každý sloupec orientační matice (Azimuth, Pitch a Roll) a indexováním konstantního proudu hodnot z mobilního zařízení do počítače. To nám umožňuje vytvářet podmíněné příkazy, které vytvoří výstup, pokud MATLAB vyzvedne konkrétní datový vstup z mobilního zařízení. K tomu budete potřebovat MATLAB mobile na vašem mobilním zařízení a balíček podpory mobilního zařízení pro MATLAB na vašem počítači.

Soubor si můžete stáhnout na níže uvedeném odkazu

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

Krok 4: Kód a porty zapojení

Kód začíná spouštěcí zprávou s dotazem, zda chceme spustit naše domácí zabezpečovací zařízení. Pokud odpovíme ano a zadáme správný přístupový kód, skript okamžitě skočí do smyčky while. Odtud začne shromažďovat data z mobilního zařízení. Existují podmínky, které čtou tato data. Můžeme odemknout a zamknout systém z našeho mobilního zařízení a kód otočí servo a bliká LED dioda v závislosti na daných datech z mobilního zařízení

startup = questdlg ('Chcete aktivovat ecoTECH Smart Home Energy System?'); % Zahájí aktivační sekvenci ecoTECHwaitfor (spuštění); pokud je spuštění == "Ano" % Je -li vybráno "Ano", aktivační sekvence začíná a vstupuje do smyčky while na konci power = "on"; m1 = msgbox ('Spouštění ecoTECH …'); pauza (2); vymazat (m1); m1_wait = waitbar (0, 'Počkejte prosím …'); kroky = 25; pro i = 1: pauza kroků (.1); čekací lišta (i/kroky); % Aktualizuje odstranění konce čekárny (m1_wait); PASSCODE = [0 0 0 0]; % Inicializuje přístupový kód ii = 0; % Inicializuje proměnnou používanou k vyřazení ze smyček m2 = msgbox ('ecoTECH plně funkční!'); pauza (2); odstranit (m2); elseif spuštění == "Ne" || startup == "Zrušit" % Pokud je vybráno "Ne" nebo "Zrušit", pak se aktivační sekvence nespustí a nevstoupí do smyčky while = "vypnuto"; m3 = msgbox ('Dobře! Sbohem!'); pauza (2); vymazat (m3); konec

% ecoTECH v sekci Action, zatímco true při napájení == "on" % sekce mobilního klíče, zatímco true % Sbírá data o orientaci rolí mobilního zařízení KEY = m. Orientation (3); % Sbírá data o tlačítkách b2 = readDigitalPin (a, 'D2'); % Tlačítko 2 (červené) b3 = readDigitalPin (a, 'D3'); % Tlačítko 3 (bílé), pokud KEY> = 35 % ve stupních m4 = msgbox ('Welcome Home!'); writeDigitalPin (a, 'D8', 1); % Zapne pauzu zeleného světla (.5); writePosition (s, 1); % Otočí servo, aby odemklo pozastavení dveří (2); writeDigitalPin (a, 'D8', 0); % Vypne zelené odstranění (m4); elseif KLÍČ <= -35 % ve stupních m5 = msgbox ('Dveře zamčené!'); writeDigitalPin (a, 'D7', 1); % Zapne pauzu červeného světla (.5); writePosition (s, 0); % Otočí servopohon, aby zamkl pozastavení dveří (2); writeDigitalPin (a, 'D7', 0); % Vypne smazání červeného světla (m5); ii = 1; break % Ukončí smyčku obsahující mobilní klíč, pokud jsou dveře uzamčeny pomocí mobilního zařízení elseif b2 == 0 && b3 == 0 % Ukončí, když smyčka obsahující mobilní klíč pro zadání hesla sekce konec konce konec

Poté může vstoupit do další smyčky while. To while smyčka řídí výsledky na základě vstupů z tlačítek. Pokud je první smyčka while zanedbatelná nebo je vyžadováno ruční uzamčení, vstoupí do další smyčky while, kde je potřeba konkrétní heslo. Pokud je heslo nesprávné, smyčku restartuje

while true if ii == 1 % Exits while loop containing passcode if the door was unlocked with the mobile device break end % Shromažďuje data about the buttons b5 = readDigitalPin (a, 'D5'); % Tlačítko 5 (modré) b1 = readDigitalPin (a, 'D1'); % Tlačítko 1 (černé) b4 = readDigitalPin (a, 'D4'); % Tlačítko 4 (bílé), pokud b5 == 0 % Spustí sekci zadávání hesla pro b = 1: 5 m6 = msgbox ('Stiskněte a podržte tlačítko A'); pauza (2); vymazat (m6); % Sbírá data o tlačítkách b1 = readDigitalPin (a, 'D1'); % Tlačítko 1 (černé) b2 = readDigitalPin (a, 'D2'); % Tlačítko 2 (červené) b3 = readDigitalPin (a, 'D3'); % Tlačítko 3 (bílé) b4 = readDigitalPin (a, 'D4'); % Tlačítko 4 (žluté) b5 = readDigitalPin (a, 'D5'); % Tlačítko 5 (modré) % Nahrazuje hodnoty v počátečním přístupovém kódu jednu po druhé, pokud 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čí posloupnost stisknutých tlačítek na čísla a poté je převede na konec řetězce % Konec smyčky pro zadávání číslic pro přístupový kód, pokud PASSCODE == "2314" % Pokud se zadaný přístupový kód shoduje, dveře se na několik sekund odemknou a poté zamknou m7 = msgbox ('Vítejte doma!'); writeDigitalPin (a, 'D8', 1); % Zapne pauzu zeleného světla (.5); writePosition (s, 1); % Otočí servo, aby odemklo pozastavení dveří (5); writeDigitalPin (a, 'D8', 0); % Vypne pauzu zeleného světla (.1); writeDigitalPin (a, 'D7', 1); % Zapne pauzu červeného světla (.5); writePosition (s, 0); % Otočí servo, aby zamklo pozastavení dveří (1); writeDigitalPin (a, 'D7', 0); % Vypne smazání červeného světla (m7); ii = 1; break % Ukončí smyčku obsahující heslo po zadání správného hesla elseif PASSCODE ~ = "2314" writeDigitalPin (a, 'D7', 1); % Zapne červené světlo m8 = msgbox ('Nesprávný přístupový kód! Zkuste to znovu!'); počkejte (m8) writeDigitalPin (a, 'D7', 0); % Vypnutí červeného světla pokračovat % Umožňuje vám znovu zadat konec hesla, jinak b1 == 0 && b4 == 0 % Ukončí smyčku obsahující sekci přístupového kódu, pokud nechcete zadat přístupový kód ii = 1; konec konce konce

Pokud je správná, okamžitě vstoupí do smyčky, která ovládá teplotní čidlo. Pokud je přepínač zapnutý, smyčka bude pokračovat a vykreslit graf teploty vs. času, což umožní zobrazení trendu. Pokud stisknete tlačítko připojené k teplotnímu senzoru, odešle vám to také e -mail s informací o tom, jaká je teplota ve vašem „domě“. Pokud je přepínač vypnutý, kód okamžitě skončí

t = 0; % Počáteční čas = 0 sekund pauza (5) % Poskytuje uživateli čas na zapnutí teplotního spínače SWITCH = readDigitalPin (a, 'D11'); % Shromažďuje data o přepínači na pinu D11, zatímco SWITCH == 0 SWITCH = readDigitalPin (a, 'D11'); % Sbírá data o přepínači v pinu D11 napětí = readVoltage (a, 'A1'); % Odečte napětí ze snímače teploty temp_C = (napětí.*1000 - 500)./ 10; % Převádí napětí na teplotu ve ° C temp_F = (9/5).*Temp_C + 32; % Převádí z grafu ° C na ° F (t, teplota_C, 'b.') Podržet titul ('pokojová teplota'); xlabel ('Čas v sekundách'); ylabel ('Teplota'); osa ([0, 180, 0, 100]); plot (t, temp_F, 'r.') legenda ('Teplota ve ° C', 'Teplota ve ° F') pauza (1); t = t + 1; % Počítadlo času v sekundách % Sekce e-mailu b_temp = readDigitalPin (a, 'D0'); % Shromažďuje data tlačítka (modré) teploty v pinu D0, pokud b_temp == 0 setpref ('Internet', 'SMTP_Server', 'smtp.gmail.com'); setpref ('Internet', 'E_mail', '[email protected]'); % Sender setpref ('Internet', 'SMTP_Username', '[email protected]'); % Uživatelské jméno odesílatele setpref ('Internet', 'SMTP_Password', 'Integral_ecoTECH'); % Rekvizity hesla odesílatele = 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] ',' pokojová teplota ecoTECH ', sprintf (' aktuální pokojová teplota je %.1f ° C nebo %.1f ° F. ', temp_C, temp_F)); % Odešle e-mail příjemci s údaji o aktuální teplotě fprintf ('E-mail úspěšně odeslán! / N') konec, pokud temp_F> = 75 % Pokud teplota v místnosti stoupne na 75 ° F … temp_AC = 65; % Změní teplotu na termostatu na 65 ° F elseif teplota_F <= 65 % Pokud teplota v místnosti klesne na 60 ° F… teplota_AC = 80; % Změní teplotu na termostatu na koncový konec 80 ° F % Konec „SWITCH == 0“při smyčce, pokud je napájení == „vypnuto“|| ii == 1 % Ukončí „napájení == zapnuto“, zatímco konec konce smyčky % Konec „napájení == zapnuto“, zatímco smyčka, pokud je napájení == „vypnuto“|| ii == 1 % Ukončí celý, zatímco konec smyčky skončí

Toto byl jen stručný přehled kódu a jeho funkčnosti. V případě potřeby jsme připojili celý kód ve formátu pdf

Zde je seznam portů, ke kterým je připojeno každé zařízení

1. RGB LED: digitální piny (7, 8, 9)

2. Servo: digitální pin 6

3. Tlačítka: Digitální piny (1, 2, 3, 4, 5)

4. Modré tlačítko pro e -mail: Digital Pin 0

5. Teplotní senzor: analogový pin 1

6. Přepínač: Digital Pin 11

Doporučuje: