Tartalomjegyzék:
- 1. lépés: Alkatrészek és anyagok
- 2. lépés: MATLAB Arduino támogatási csomag
- 3. lépés: A mobileszközről beszerzett adatérzékelők használata
- 4. lépés: A kód és a kábelezési portok
Videó: MATLAB vezérelt mikrokontroller (Arduino MKR1000): 4 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:42
Projektünk célja az volt, hogy a legjobb tudásunk szerint használjuk a MATLAB -ot, valamint az Arduino MKR1000 -et. Célunk egy olyan szkript létrehozása volt, amely lehetővé tette az arduino bizonyos funkciói számára, hogy egy bizonyos bemenet alapján előállítsanak egy bizonyos kimenetet. A MATLAB számos ciklusát és feltételes állítását használtuk, amelyek ezt lehetővé tették. A MATLAB mobile -t is használtuk a mobileszköz giroszkópjából származó adatok felhasználásával, hogy a lehető legjobban javítsuk a projektet.
1. lépés: Alkatrészek és anyagok
MATLAB 2018a
-A MATLAB 2018 -as verziója a legelőnyösebb verzió, leginkább azért, mert a legjobban működik a mobilkészülékhez csatlakozó kóddal. Kódunk nagy része azonban a MATLAB verziók többségével értelmezhető.
Arduino MKR1000
-Ez egy speciális eszköz, amely lehetővé teszi számunkra az áramkörök vezetését mind a digitális, mind az analóg portokhoz. Létfontosságú, hogy legyen hozzá kenyérlapja is.
kiegészítők
-Az MKR1000 használatakor kiegészítő alkatrészekre volt szükségünk a szükséges funkciók ellátásához.
Ebbe beletartozik
- Szervo
- Gomb (6)
- Cserélhető RBG LED lámpa
- Egyszerű vezetékek
- kenyeretábla (k)
- mini tápkapcsoló
- hőmérséklet szenzor
- 330 ohmos ellenállás
- 10K ohmos ellenállás
- USB-microUSB kábel
- Laptop/asztali számítógép
- Mobil eszköz
Azt is meg kell jegyezni, hogy még sok -sok kiegészítő használható az MKR1000 készülékkel
2. lépés: MATLAB Arduino támogatási csomag
Az Arduino MKR1000 és a MATLAB közötti megfelelő használathoz le kell töltenie a MATLAB támogatási csomagot az Arduino hardverhez. Ez a letöltés hozzáférést biztosít bizonyos funkciókhoz és parancsokhoz közvetlenül az arduino táblához.
A csomagot letöltheti az alábbi linkről
www.mathworks.com/matlabcentral/fileexchange/47522-matlab-support-package-for-arduino-hardware
3. lépés: A mobileszközről beszerzett adatérzékelők használata
A MATLAB Mobile alkalmazás lehetővé teszi számunkra, hogy mobil eszközt használjunk giroszkóp segítségével az adatok továbbítására. Ahhoz, hogy az adatokat a MATLAB -on keresztül szerezzük be, az adatokat úgy kapjuk meg, hogy lekérjük őket a MATLAB mobile tájolási mátrixából. Ehhez az orientációs mátrix minden oszlopához (Azimuth, Pitch és Roll) hozzunk létre egy változót, és indexeljük az állandó értékfolyamot a mobileszközről a számítógépre. Ez lehetővé teszi számunkra, hogy feltételes utasításokat hozzunk létre, amelyek előformázzák a kimenetet, ha a MATLAB felvesz egy adott adatbevitelt a mobileszközről. Ehhez szüksége lesz a MATLAB mobilra a mobileszközén, és a MATLAB mobileszköz -támogatási csomagra a számítógépén.
A fájlt letöltheti az alábbi linkről
www.mathworks.com/matlabcentral/fileexchange/51235-matlab-support-package-for-apple-ios-sensors
4. lépés: A kód és a kábelezési portok
A kód egy indítási üzenettel kezdődik, amely megkérdezi, szeretnénk -e elindítani otthoni biztonsági eszközünket. Ha igennel válaszolunk, és megadjuk a helyes jelszót, a szkript azonnal beugrik a while ciklusba. Innentől kezdve adatokat gyűjt a mobileszközről. Vannak feltételes feltételek, amelyek olvassák ezeket az adatokat. Feloldhatjuk és lezárhatjuk a rendszert a mobileszközünkről, és a kód a szervót bekapcsolja, és villogni kezd a LED -fény a mobileszközről kapott adatoktól függően
startup = questdlg ('Szeretné aktiválni az ecoTECH Smart Home Energy System rendszert?'); % Kezdi az ecoTECHwaitfor (indítás) aktiválási sorrendjét; ha indítás == "Igen" % Ha az "Igen" lehetőséget választja, akkor egy aktiválási sorozat kezdődik és belép a while ciklusba a végén power = "on"; m1 = msgbox ('Az ecoTECH indítása …'); szünet (2); törlés (m1); m1_wait = waitbar (0, 'Kérem várjon …'); lépések = 25; i = 1 esetén: lépések szüneteltetése (.1); várólista (i/lépések); % Frissíti a várakozó sáv törlését (m1_wait); PASSCODE = [0 0 0 0]; % Inicializálja a jelszót ii = 0; % Inicializálja a ciklusokból való kitöréshez használt változót m2 = msgbox ('ecoTECH teljesen működőképes!'); szünet (2); törlés (m2); elseif indítás == "Nem" || startup == "Mégse" % Ha a "Nem" vagy a "Mégse" lehetőséget választja, akkor az aktiválási sorozat nem indul el, és nem lép be a while ciklus tápellátásába = "ki"; m3 = msgbox ('Oké! Viszlát!'); szünet (2); törlés (m3); vége
% ecoTECH a Action részben, miközben igaz, miközben bekapcsolt állapotban == "on" % Mobile Key Section, míg true % Adatokat gyűjt a mobileszköz forgásirányáról KEY = m. Orientation (3); % Adatokat gyűjt a gombokról b2 = readDigitalPin (a, 'D2'); % Button 2 (Red) b3 = readDigitalPin (a, 'D3'); % Gomb 3 (fehér), ha KEY> = 35 % fokban m4 = msgbox ('Welcome Home!'); writeDigitalPin (a, 'D8', 1); % Bekapcsolja a zöld fényszünetet (.5); writePosition (s, 1); % Elforgatja a szervót az ajtó szünetének feloldásához (2); writeDigitalPin (a, 'D8', 0); % Kikapcsolja a zöld fény törlését (m4); elseif KULCS <= -35 % m5 fokban = msgbox ('Ajtó zárva!'); writeDigitalPin (a, 'D7', 1); % Bekapcsolja a piros fényszünetet (.5); writePosition (s, 0); % Elforgatja a szervót, hogy lezárja az ajtó szüneteltetését (2); writeDigitalPin (a, 'D7', 0); % Kikapcsolja a piros lámpa törlését (m5); ii = 1; break % Kilépés, miközben a hurok tartalmazza a mobilkulcsot, ha az ajtó zárva van a mobileszköz használatával ifif b2 == 0 && b3 == 0 % Kilép, miközben a mobilkulcsot tartalmazó hurok belép a jelszó szakasz törés vége vége
Ezt követően beléphet egy másik while ciklusba. Ez a ciklus a gombok bemenetei alapján szabályozza az eredményeket. Ha az első while ciklus elhanyagolható, vagy manuális lezárásra van szükség, akkor egy másik while ciklusba lép, ahol egy adott jelszó szükséges. Ha a jelszó helytelen, akkor újraindítja a ciklust
míg igaz, ha ii == 1 % Kilép, miközben a jelkódot tartalmazó hurok, ha az ajtót kinyitották a mobileszközön break end % Adatokat gyűjt a b5 = readDigitalPin (a, 'D5') gombokról; % 5. gomb (kék) b1 = readDigitalPin (a, 'D1'); % Button 1 (Black) b4 = readDigitalPin (a, 'D4'); % 4 gomb (fehér), ha b5 == 0 % Elindítja a jelszó bevitelét b = 1: 5 esetén m6 = msgbox ('Please Press And Hold A Button'); szünet (2); törlés (m6); % Adatokat gyűjt a gombokról b1 = readDigitalPin (a, 'D1'); % Button 1 (Black) b2 = readDigitalPin (a, 'D2'); % Button 2 (Red) b3 = readDigitalPin (a, 'D3'); % Button 3 (White) b4 = readDigitalPin (a, 'D4'); % 4 gomb (sárga) b5 = readDigitalPin (a, 'D5'); % Gomb 5 (kék) % Egyenként helyettesíti a kezdeti jelszó értékeit, ha 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)); % A megnyomott gombok sorozatát számokká alakítja, majd karakterlánc végévé alakítja % Vége ciklusnak a számkódok beviteléhez, ha PASSCODE == "2314" % Ha a megadott jelszó megegyezik, az ajtó néhány másodpercre kinyílik, majd zár m7 = msgbox ('Üdv itthon!'); writeDigitalPin (a, 'D8', 1); % Bekapcsolja a zöld fényszünetet (.5); writePosition (s, 1); % Elforgatja a szervót az ajtó szünetének feloldásához (5); writeDigitalPin (a, 'D8', 0); % Kikapcsolja a zöld fényszünetet (.1); writeDigitalPin (a, 'D7', 1); % Bekapcsolja a piros fényszünetet (.5); writePosition (s, 0); % Elforgatja a szervót, hogy lezárja az ajtó szüneteltetését (1); writeDigitalPin (a, 'D7', 0); % Kikapcsolja a piros lámpa törlését (m7); ii = 1; break % Kilép, miközben a jelkódot tartalmazó hurok a helyes jelszó megadása után elseif PASSCODE ~ = "2314" writeDigitalPin (a, 'D7', 1); % Bekapcsolja a piros lámpát m8 = msgbox ('Helytelen jelszó! Próbálja újra!'); waitfor (m8) writeDigitalPin (a, 'D7', 0); % Kikapcsolja a piros lámpa folytatását % Lehetővé teszi a jelszó újbóli megadását elseif b1 == 0 && b4 == 0 % Kilép a jelkódot tartalmazó ciklusból, ha nem akar belépni jelszót ii = 1; törés vége vége
Ha helyes, akkor azonnal belép egy időhurokba, amely a hőmérséklet -érzékelőt vezérli. Ha a kapcsoló be van kapcsolva, a hurok folytatódik, és ábrázolja a hőmérséklet és az idő diagramját, lehetővé téve a tendencia megtekintését. Ha megnyomja a hőmérséklet -érzékelőhöz csatlakoztatott gombot, akkor e -mailt is küld arról, hogy mennyi az otthoni hőmérséklet. Ha a kapcsoló ki van kapcsolva, akkor azonnal leáll a kód
t = 0; % Kezdeti idő = 0 másodperces szünet (5) % Időt ad a felhasználónak a hőmérséklet -kapcsoló bekapcsolásához SWITCH = readDigitalPin (a, 'D11'); % Adatokat gyűjt a D11 érintkező kapcsolójáról, míg SWITCH == 0 SWITCH = readDigitalPin (a, 'D11'); % Adatokat gyűjt a D11 érintkezőben lévő kapcsolóról feszültség = readVoltage (a, 'A1'); % Feszültséget olvas ki a hőmérséklet -érzékelőből temp_C = (feszültség.*1000 - 500)./ 10; % Átalakítja a feszültséget hőmérsékletre ° C -ban temp_F = (9/5).*Temp_C + 32; % ° C -ból ° F grafikonra konvertálja (t, temp_C, 'b.') Hold on title ('Szobahőmérséklet'); xlabel ('Idő másodpercben'); ylabel ('Hőmérséklet'); tengely ([0, 180, 0, 100]); plot (t, temp_F, 'r.') jelmagyarázat ('Temperature in ° C', 'Temperature in ° F') szünet (1); t = t + 1; % Időszámláló másodpercben % E-mail szakasz b_temp = readDigitalPin (a, 'D0'); % Gyűjti a (kék) hőmérséklet gomb adatait a D0 érintkezőben, ha b_temp == 0 setpref ('Internet', 'SMTP_Server', 'smtp.gmail.com'); setpref ('Internet', 'E_mail', '[email protected]'); % Sender setpref ('Internet', 'SMTP_Username', '[email protected]'); % Feladó felhasználóneve setpref ('Internet', 'SMTP_Password', 'Integral_ecoTECH'); % Feladó jelszava props = 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 szobahőmérséklet', sprintf ('Az aktuális szobahőmérséklet %.1f ° C vagy %.1f ° F.', temp_C, temp_F)); % E-mailt küld a címzettnek, amelyben adatokat ad az aktuális szobahőmérsékletről. % A termosztát hőmérsékletét 65 ° F -ra változtatja, elseif temp_F <= 65 % Ha a helyiség hőmérséklete 60 ° F -ra csökken… temp_AC = 80; % Módosítja a hőmérsékletet a termosztáton 80 ° F végére % "SWITCH == 0" vége ciklusban, ha áram == "kikapcsolt" || ii == 1 % Kilép a "bekapcsolás == be" ciklus megszakítás vége vége % A "bekapcsolás == be" vége ciklus közben, ha a tápfeszültség == "ki" || ii == 1 % Teljes kilépés, miközben a ciklus megszakítása véget ér
Ez csak egy rövid áttekintés volt a kódról és annak működőképességéről. Szükség esetén a teljes kódot pdf -ben csatoltuk
Itt található az egyes eszközökhöz csatlakoztatott portok listája
1. RGB LED: Digitális csapok (7, 8, 9)
2. Szervo: Digitális pin 6
3. Gombok: Digitális csapok (1, 2, 3, 4, 5)
4. Kék gomb e -mailhez: Digitális Pin 0
5. Hőmérséklet érzékelő: 1. analóg csap
6. Kapcsoló: Digitális Pin 11
Ajánlott:
DIY Arduino Bluetooth vezérelt autó: 6 lépés (képekkel)
DIY Arduino Bluetooth vezérelt autó: Hello barátok! A nevem Nikolas, 15 éves vagyok, és Athénban élek, Görögországban. Ma megmutatom, hogyan lehet kétkerekű Bluetooth-vezérlésű autót készíteni Arduino Nano, 3D nyomtató és néhány egyszerű elektronikus alkatrész segítségével! Feltétlenül nézze meg a
Léptetőmotor vezérelt léptetőmotor mikrokontroller nélkül !: 6 lépés
Léptetőmotor vezérelt léptetőmotor mikrokontroller nélkül!: Ebben a gyors utasításban egy egyszerű léptetőmotor -vezérlőt készítünk léptetőmotor segítségével. Ez a projekt nem igényel komplex áramkört vagy mikrokontrollert. Tehát minden további nélkül, kezdjük el
Léptetőmotor vezérelt léptetőmotor mikrokontroller nélkül (V2): 9 lépés (képekkel)
Léptetőmotor vezérelt léptetőmotor mikrokontroller nélkül (V2): Az egyik korábbi utasításomban megmutattam, hogyan lehet egy léptetőmotort mikrovezérlő nélküli léptetőmotor segítségével vezérelni. Gyors és szórakoztató projekt volt, de két problémával járt, amelyeket ebben az utasításban megoldanak. Szóval, okosan
MATLAB vezérelt Roomba: 5 lépés
MATLAB vezérelt Roomba: A projekt célja a MATLAB és egy módosított iRobot programozható robot használata. Csoportunk egyesítette kódolási készségeinket, hogy létrehozzon egy MATLAB szkriptet, amely az iRobot számos funkcióját használja, beleértve a sziklaérzékelőket, a lökhárító érzékelőt
AVR mikrokontroller biztosíték bit konfiguráció. A LED villogó program létrehozása és feltöltése a mikrokontroller flash memóriájába: 5 lépés
AVR mikrokontroller biztosíték bit konfiguráció. A LED villogó program létrehozása és feltöltése a mikrokontroller flash memóriájába: Ebben az esetben egyszerű programot készítünk C kódban, és elégetjük a mikrokontroller memóriájában. Saját programot írunk és összeállítjuk a hex fájlt, az Atmel Studio integrált fejlesztési platformjaként. Beállítjuk a biztosítékot bi