Obsah:
- Krok 1: Díly a materiály
- Krok 2: Balíček podpory MATLAB Arduino
- Krok 3: Použití senzorů dat získaných z mobilního zařízení
- Krok 4: Kód a porty zapojení
Video: Mikrokontrolér řízený MATLAB (Arduino MKR1000): 4 kroky
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:22
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
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
- Servo
- Tlačítko (6)
- Vyměnitelné RBG LED světlo
- Jednoduché dráty
- prkénko (y)
- mini vypínač
- senzor teploty
- Rezistor 330 ohmů
- Rezistor 10K ohmů
- USB-microUSB kabel
- Notebook/stolní počítač
- 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í
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:
ROBOT ŘÍZENÝ HLASEM PŘES BLUETOOTH: 3 kroky
ROBOT ŘÍZENÝ HLASEM PŘES BLUETOOTH: Tento robot je řízen naším telefonem. Odkaz pro aplikaci: https://play.google.com/store/apps/details?id=com…. Tento robot je řízen naším hlasem a také jej lze ovládat pomocí tlačítek. Tento robot je pouze pro demo účely. Sledujte
RC řízený RGB LED pás: 4 kroky (s obrázky)
RC řízený RGB LED pás: Vytvořte si vlastní RC řízený LED pás pro osvětlení jednotlivých místností! Většina RGB LED pásů je ovládána infračerveným dálkovým ovladačem. Chcete -li jej vypnout nebo zapnout nebo změnit barvu, musíte zůstat před přijímačem. Je to nudné a už to nejde
Potenciometr a servo: Řízený pohyb s Arduino: 4 kroky
Potenciometr a servo: Řízený pohyb s Arduino: Nejprve musíte shromáždit příslušné materiály, abyste tento obvod spojili
2 potenciometry a 2 serva: řízený pohyb s Arduino: 4 kroky
2 potenciometry a 2 serva: Řízený pohyb s Arduino: Nejprve musíte shromáždit příslušné materiály, abyste tento obvod spojili
Shelly 1PM řízený napájecí kabel / prodlužovací kabel: 4 kroky
Shelly 1PM Controlled Power Strip / Extension Cord: Mám několik základních napájecích pásků a chtěl jsem je udělat o něco chytřejší bez velkých nákladů. Zadejte modul Shelly 1PM. Jedná se o velmi cenově dostupný, malý a certifikovaný přepínač WIFI s certifikací CE. Skvělé na tom je, že má také velmi přesnou sílu