Innehållsförteckning:
- Steg 1: Delar och material
- Steg 2: MATLAB Arduino -supportpaket
- Steg 3: Använda datasensorer förvärvade från mobilenhet
- Steg 4: Koden och ledningsportarna
Video: MATLAB -kontrollerad mikrokontroller (Arduino MKR1000): 4 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:45
Målet med vårt projekt var att använda MATLAB såväl som Arduino MKR1000 efter bästa förmåga. Vårt mål var att skapa ett manus som tillät vissa funktioner i arduino att utföra en viss utgång baserat på en specifik ingång. Vi använde många loopar och villkorliga uttalanden i MATLAB som gjorde detta möjligt. Vi använde också MATLAB -mobil genom att använda data som samlats in från en mobil enhets gyroskop för att förbättra projektet så mycket som möjligt.
Steg 1: Delar och material
MATLAB 2018a
-2018 -versionen av MATLAB är den mest föredragna versionen, mest för att den fungerar bäst med koden som ansluts till den mobila enheten. De flesta av våra koder kan dock tolkas av de flesta MATLAB -versioner.
Arduino MKR1000
-Detta är en specifik enhet som gör att vi kan koppla kretsar upp till både digitala och analoga portar. Det är viktigt att du också har en brödbräda att gå med på.
Tillbehör
-När vi använde MKR1000 behövde vi tillbehör för att utföra de nödvändiga funktionerna.
Detta inkluderar
- Servo
- Knapp (6)
- Utbytbart RBG LED -ljus
- Enkla trådar
- brödbräda
- mini strömbrytare
- temperatursensor
- 330 ohm motstånd
- 10K ohm motstånd
- USB-microUSB-sladd
- Bärbar/stationär dator
- Mobilenhet
Det bör också noteras att det finns många, många fler tillbehör som kan användas med MKR1000
Steg 2: MATLAB Arduino -supportpaket
För att kunna använda Arduino MKR1000 genom MATLAB korrekt måste du ladda ner MATLAB -supportpaketet för Arduino -hårdvara. Denna nedladdning ger dig tillgång till vissa funktioner och kommandon direkt till arduino -kortet.
Du kan ladda ner paketet på länken nedan
www.mathworks.com/matlabcentral/fileexchange/47522-matlab-support-package-for-arduino-hardware
Steg 3: Använda datasensorer förvärvade från mobilenhet
Med MATLAB Mobile -appen kan vi använda en mobil enhet för att strömma data med hjälp av dess gyroskop. För att förvärva data via MATLAB, hämtar vi data genom att hämta dem från orienteringsmatrisen från MATLAB mobile. Vi gör detta genom att skapa en variabel för varje kolumn i orienteringsmatrisen (Azimuth, Pitch och Roll) och indexera den konstanta strömmen av värden från den mobila enheten till datorn. Detta gör att vi kan skapa villkorliga uttalanden som kommer att förforma en utdata om MATLAB hämtar en specifik datainmatning från den mobila enheten. För att göra detta behöver du MATLAB -mobil på din mobila enhet och stödpaketet för mobila enheter för MATLAB på din dator.
Du kan ladda ner filen på länken nedan
www.mathworks.com/matlabcentral/fileexchange/51235-matlab-support-package-for-apple-ios-sensors
Steg 4: Koden och ledningsportarna
Koden börjar med ett startmeddelande som frågar om vi vill starta vår hemmasäkerhetsenhet. Om vi svarar ja och ger rätt lösenord hoppar manuset omedelbart in i en stundslinga. Därifrån börjar det samla in data från den mobila enheten. Det finns villkor som läser dessa data. Vi kan låsa upp och låsa systemet från vår mobila enhet, och koden vrider servon och blinkar LED -lampan beroende på den angivna data från den mobila enheten
startup = questdlg ('Vill du aktivera ecoTECH Smart Home Energy System?'); % Börjar aktiveringssekvensen för ecoTECHwaitfor (start); om start == "Ja" % Om "Ja" väljs startar en aktiveringssekvens och går in i stundslingan vid slutet power = "on"; m1 = msgbox ('Starta ecoTECH …'); paus (2); radera (m1); m1_wait = waitbar (0, "Vänta …"); steg = 25; för i = 1: steg paus (.1); väntelista (i/steg); % Uppdaterar väntelistens borttagning (m1_wait); PASSCODE = [0 0 0 0]; % Initierar lösenord ii = 0; % Initierar en variabel som används för att bryta ut slingor m2 = msgbox ('ecoTECH fullt fungerande!'); paus (2); radera (m2); elseif start == "Nej" || start == "Avbryt" % Om "Nej" eller "Avbryt" har valts så startar inte aktiveringssekvensen och går inte in medan loop -ström = "av"; m3 = msgbox ('Okej! Hejdå!'); paus (2); radera (m3); slutet
% ecoTECH in Action Section medan true while power == "on" % Mobile Key Section while true % Samlar in data om rullningsorienteringen för den mobila enheten KEY = m. Orientation (3); % Samlar in data om knapparna b2 = readDigitalPin (a, 'D2'); % Knapp 2 (röd) b3 = readDigitalPin (a, 'D3'); % Knapp 3 (vit) om KEY> = 35 % i grader m4 = msgbox ('Välkommen hem!'); writeDigitalPin (a, 'D8', 1); % Slår på grönt ljus paus (.5); writePosition (s, 1); % Vänder på servon för att låsa upp dörrpausen (2); writeDigitalPin (a, 'D8', 0); % Stänger av radering av grönt ljus (m4); elseif KEY <= -35 % in degrees m5 = msgbox ('Door Locked!'); writeDigitalPin (a, 'D7', 1); % Slår på rödljuspausen (.5); writePosition (s, 0); % Stänger servon för att låsa dörrpausen (2); writeDigitalPin (a, 'D7', 0); % Stänger av radering av rött ljus (m5); ii = 1; bryta % Avslutar medan slinga innehåller mobilnyckel om dörren är låst med den mobila enheten annars b2 == 0 && b3 == 0 % Avgår medan slingan innehåller mobilnyckeln för att ange lösenordsavsnittets slut
Efter detta kan den ange en annan medan loop. Detta medan loop styr utgångarna baserat på ingångarna från knapparna. Om den första medan slingan är försumbar, eller om en manuell låsning krävs, kommer den att ange en annan medan loop där ett specifikt lösenord behövs. Om lösenordet är felaktigt startar det om slingan
medan sant om ii == 1 % Avslutar medan slinga innehåller lösenord om dörren var upplåst med den mobila enhetens slut slut % Samlar in data om knapparna b5 = readDigitalPin (a, 'D5'); % Knapp 5 (blå) b1 = readDigitalPin (a, 'D1'); % Knapp 1 (svart) b4 = readDigitalPin (a, 'D4'); % Knapp 4 (vit) om b5 == 0 % Startar inmatning av avsnittskoden för b = 1: 5 m6 = msgbox ('Please Press And Hold A Button'); paus (2); radera (m6); % Samlar in data om knapparna b1 = readDigitalPin (a, 'D1'); % Knapp 1 (svart) b2 = readDigitalPin (a, 'D2'); % Knapp 2 (röd) b3 = readDigitalPin (a, 'D3'); % Knapp 3 (vit) b4 = readDigitalPin (a, 'D4'); % Knapp 4 (gul) b5 = readDigitalPin (a, 'D5'); % Knapp 5 (blå) % Ersätter värdena i den ursprungliga lösenordet ett i taget om b1 == 0 LÖSENKOD (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)); % Förvandlar sekvensen av knappar som trycks till siffror och konverterar den sedan till en strängänds slut m7 = msgbox ('Välkommen hem!'); writeDigitalPin (a, 'D8', 1); % Slår på grönt ljus paus (.5); writePosition (s, 1); % Vänder på servon för att låsa upp dörrpausen (5); writeDigitalPin (a, 'D8', 0); % Stänger av pausen för grönt ljus (.1); writeDigitalPin (a, 'D7', 1); % Slår på rödljuspausen (.5); writePosition (s, 0); % Vänder servon för att låsa dörrens paus (1); writeDigitalPin (a, 'D7', 0); % Stänger av radering av rött ljus (m7); ii = 1; break % Avslutar medan loop innehåller lösenord efter att ha angett rätt lösenord elseif PASSCODE ~ = "2314" writeDigitalPin (a, 'D7', 1); % Tänder den röda lampan m8 = msgbox ('Felaktigt lösenord! Försök igen!'); waitfor (m8) writeDigitalPin (a, 'D7', 0); % Stänger av det röda ljuset fortsätter % Gör att du kan ange ett lösenord på nytt annars if b1 == 0 && b4 == 0 % Avslutar medan loop innehåller lösenordssektion om du inte vill ange ett lösenord ii = 1; bryta slutet slut
Om det är korrekt kommer det omedelbart att gå in i en stundslinga som styr temperatursensorn. Om omkopplaren är på fortsätter slingan och plottar temperaturen mot tiden, så att en kan se trenden. Om knappen som är ansluten till temperaturgivaren trycks in kommer den också att skicka ett mejl med information om temperaturen i ditt "hem". Om omkopplaren stängs av, kommer den omedelbart att avsluta koden
t = 0; % Initial tid = 0 sekunder paus (5) % Ger tid för användaren att slå på temperaturomkopplaren SWITCH = readDigitalPin (a, 'D11'); % Samlar in data om omkopplaren i stift D11 medan SWITCH == 0 SWITCH = readDigitalPin (a, 'D11'); % Samlar in data om omkopplaren i stift D11 -spänning = readVoltage (a, 'A1'); % Avläser spänningen från temperaturgivaren temp_C = (spänning.*1000 - 500)./ 10; % Konverterar spänningen till temperatur i ° C temp_F = (9/5).*Temp_C + 32; % Konverterar från ° C till ° F tomt (t, temp_C, 'b.') Håll på titel ('Rumstemperatur'); xlabel ('Time in Seconds'); ylabel ('temperatur'); axel ([0, 180, 0, 100]); plot (t, temp_F, 'r.') legend ('Temperatur i ° C', 'Temperatur i ° F') paus (1); t = t + 1; % Tidsräknare i sekunder % E-postavsnitt b_temp = readDigitalPin (a, 'D0'); % Samlar in data för (blå) temperaturknappen i stift D0 om b_temp == 0 setpref ('Internet', 'SMTP_Server', 'smtp.gmail.com'); setpref ('Internet', 'E_mail', '[email protected]'); % Avsändare setpref ('Internet', 'SMTP_Username', '[email protected]'); % Avsändarens användarnamn setpref ('Internet', 'SMTP_Password', 'Integral_ecoTECH'); % Avsändarens lösenord rekvisita = 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 Rumstemperatur ', sprintf (' Den aktuella rumstemperaturen är %.1f ° C eller %.1f ° F. ', temp_C, temp_F)); % Skickar ett e-postmeddelande till mottagaren med uppgifter om den aktuella rumstemperaturen fprintf ('E-post skickades! / N') slutar om temp_F> = 75 % Om rumstemperaturen stiger till 75 ° F… temp_AC = 65; % Ändrar temperaturen på termostaten till 65 ° F annars om temp_F <= 65 % Om rumstemperaturen sjunker till 60 ° F… temp_AC = 80; % Ändrar temperaturen på termostaten till 80 ° F ändänd % Slut på "SWITCH == 0" medan slinga om ström == "off" || ii == 1 % Avslutar "power == on" medan loop -break -slutet slutar % End of "power == on" while loop if power == "off" || ii == 1 % Avslutar hela medan slingan bryts
Detta var bara en kort översikt över koden och dess funktion. Vi har bifogat hela koden som pdf om det behövs
Här är listan över vilken port varje enhet är ansluten till
1. RGB LED: Digitala stift (7, 8, 9)
2. Servo: Digital Pin 6
3. Knappar: Digitala pins (1, 2, 3, 4, 5)
4. Blå knapp för e -post: Digital Pin 0
5. Temperatursensor: Analog stift 1
6. Brytare: Digital stift 11
Rekommenderad:
En IoT Halloween Pumpa - Kontroll -lysdioder med en Arduino MKR1000 och Blynk -app ???: 4 steg (med bilder)
En IoT Halloween Pumpa | Kontroll -lysdioder med en Arduino MKR1000 och Blynk -app ???: Hej alla, För några veckor sedan var det Halloween och efter traditionen huggade jag ut en fin pumpa till min balkong. Men med min pumpa utomhus insåg jag att det var ganska irriterande att behöva gå ut varje kväll för att tända ljuset. Och jag
En liten programmerare för ATTINY mikrokontroller med Arduino UNO: 7 steg
En liten programmerare för ATTINY mikrokontroller med Arduino UNO: Det är för närvarande intressant att använda mikrokontroller i ATTINY -serien på grund av deras mångsidighet, låga pris men också det faktum att de enkelt kan programmeras i miljöer som Arduino IDE. Program som är utformade för Arduino -moduler kan vara enkelt överföra
DIY handkontaktdispenser utan kontakt utan en Arduino eller en mikrokontroller: 17 steg (med bilder)
DIY handkontaktdispenser utan kontakt utan en Arduino eller en mikrokontroller: Som vi alla vet drabbade COVID-19-utbrottet världen och förändrade vår livsstil. I detta tillstånd är alkohol och handdesinfektionsmedel viktiga vätskor, men de måste användas på rätt sätt. Vidrör alkoholbehållare eller handdesinfektionsmedel med infekterade händer
Smart hem med Arduino MKR1000 och M.I.T. Android -app: 4 steg
Smart hem med Arduino MKR1000 och M.I.T. Android App: I den här självstudien beskriver jag hur du kan förbättra ditt smarta hem med bara några komponenter. Hjärtat i denna smarta hemdesign är Arduino MKR1000 -kortet, styrt med en app, designad på utvecklingswebbplatsen för M.I.T. (Massachusetts Institute
Hinder Undvik robot med hjälp av mikrokontroller (Arduino): 5 steg
Hinder Undvik robot med hjälp av mikrokontroller (Arduino): I den här instruktören kommer jag att lära dig hur du gör ett hinder för att undvika robot som fungerar med Arduino. Du måste vara bekant med Arduino. Arduino är ett styrkort som använder atmega mikrokontroller. Du kan använda vilken version av Arduino som helst men jag har