Indholdsfortegnelse:
- Trin 1: Dele og materialer
- Trin 2: MATLAB Arduino -supportpakke
- Trin 3: Brug af datasensorer erhvervet fra mobilenhed
- Trin 4: Koden og ledningsportene
Video: MATLAB -kontrolleret mikrokontroller (Arduino MKR1000): 4 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:28
Målet med vores projekt var at udnytte MATLAB såvel som Arduino MKR1000 efter bedste evne. Vores mål var at skabe et script, der tillod visse funktioner i arduinoen at udføre et bestemt output baseret på et specifikt input. Vi brugte mange sløjfer og betingede udsagn i MATLAB, der gjorde dette muligt. Vi brugte også MATLAB -mobil ved at bruge data hentet fra en mobilenheds gyroskop til at forbedre projektet så meget som muligt.
Trin 1: Dele og materialer
MATLAB 2018a
-2018 -versionen af MATLAB er den mest foretrukne version, mest fordi den fungerer bedst med den kode, der opretter forbindelse til den mobile enhed. Det meste af vores kode kan imidlertid fortolkes af de fleste MATLAB -versioner.
Arduino MKR1000
-Dette er en specifik enhed, der giver os mulighed for at føre kredsløb op til både digitale og analoge porte. Det er vigtigt, at du også har et brødbræt til at følge med.
tilbehør
-Når vi brugte MKR1000, havde vi brug for tilbehør til at udføre de nødvendige funktioner.
Dette inkluderer
- Servo
- Knap (6)
- Udskifteligt RBG LED -lys
- Enkle ledninger
- brødbræt
- mini afbryder
- temperatur måler
- 330 ohm modstand
- 10K ohm modstand
- USB-microUSB ledning
- Bærbar/desktop
- Mobil enhed
Det skal også bemærkes, at der er mange, mange flere tilbehør, der kan bruges med MKR1000
Trin 2: MATLAB Arduino -supportpakke
For at kunne bruge Arduino MKR1000 korrekt gennem MATLAB, skal du downloade MATLAB -supportpakken til Arduino -hardware. Denne download giver dig adgang til bestemte funktioner og kommandoer direkte til arduino -kortet.
Du kan downloade pakken på nedenstående link
www.mathworks.com/matlabcentral/fileexchange/47522-matlab-support-package-for-arduino-hardware
Trin 3: Brug af datasensorer erhvervet fra mobilenhed
MATLAB Mobile -appen giver os mulighed for at bruge en mobilenhed til at streame data ved hjælp af dets gyroskop. For at erhverve dataene via MATLAB får vi dataene ved at hente dem fra orienteringsmatrixen fra MATLAB mobile. Vi gør dette ved at oprette en variabel for hver kolonne i orienteringsmatrixen (Azimuth, Pitch og Roll) og indeksere den konstante strøm af værdier fra mobilenheden til computeren. Dette giver os mulighed for at oprette betingede udsagn, der vil præforme et output, hvis MATLAB opfanger et specifikt datainput fra den mobile enhed. For at gøre dette skal du bruge MATLAB -mobil på din mobilenhed og understøttelsespakke til mobilenheder til MATLAB på din computer.
Du kan downloade filen på nedenstående link
www.mathworks.com/matlabcentral/fileexchange/51235-matlab-support-package-for-apple-ios-sensors
Trin 4: Koden og ledningsportene
Koden begynder med en startmeddelelse, der spørger, om vi vil starte vores hjemmesikkerhedsenhed. Hvis vi svarer ja og giver den korrekte adgangskode, hopper scriptet straks i et stykke loop. Derfra begynder det at indsamle data fra den mobile enhed. Der er betingelser, der læser disse data. Vi kan låse og låse systemet fra vores mobile enhed, og koden vil dreje servoen og blinke LED -lampen afhængigt af de givne data fra den mobile enhed
startup = questdlg ('Vil du aktivere ecoTECH Smart Home Energy System?'); % Starter aktiveringssekvens for ecoTECHwaitfor (opstart); hvis opstart == "Ja" % Hvis der vælges "Ja", starter en aktiveringssekvens og går ind i mensløkken ved afslutningen power = "on"; m1 = msgbox ('Start af ecoTECH …'); pause (2); slet (m1); m1_wait = ventelinje (0, 'Vent venligst …'); trin = 25; for i = 1: trin pause (.1); ventelinje (i/trin); % Opdaterer ventelinens sletning (m1_wait); PASSCODE = [0 0 0 0]; % Initialiserer adgangskode ii = 0; % Initialiserer en variabel, der bruges til at bryde ud af sløjfer m2 = msgbox ('ecoTECH fuldt operationel!'); pause (2); slet (m2); elseif opstart == "Nej" || startup == "Annuller" % Hvis "Nej" eller "Annuller" er valgt, starter aktiveringssekvensen ikke og indtaster ikke while loop power = "off"; m3 = msgbox ('Okay! Farvel!'); pause (2); slet (m3); ende
% ecoTECH in Action Section while true while power == "on" % Mobile Key Section while true % Indsamler data om rullens retning for den mobile enhed KEY = m. Orientation (3); % Indsamler data om knapperne b2 = readDigitalPin (a, 'D2'); % Knap 2 (rød) b3 = readDigitalPin (a, 'D3'); % Knap 3 (hvid) hvis KEY> = 35 % i grader m4 = msgbox ('Velkommen hjem!'); writeDigitalPin (a, 'D8', 1); % Tænder for det grønne lys pause (.5); writePosition (s, 1); % Drejer servoen for at låse dørpausen (2) op; writeDigitalPin (a, 'D8', 0); % Deaktiverer sletning af grønt lys (m4); elseif NØGLE <= -35 % i grader m5 = msgbox ('Door Locked!'); writeDigitalPin (a, 'D7', 1); % Tænder pause for rødt lys (.5); writePosition (s, 0); % Drejer servoen for at låse dørpausen (2); writeDigitalPin (a, 'D7', 0); % Deaktiverer sletning af rødt lys (m5); ii = 1; break % Afslut, mens loop indeholder mobilnøgle, hvis døren er låst ved hjælp af den mobile enhed ellers b2 == 0 && b3 == 0 % Afslutter, mens loop indeholder mobilnøgle for at indtaste adgangskoden sektion break end end
Efter dette kan den indtaste en anden while loop. Dette mens loop styrer resultaterne baseret på input fra knapperne. Hvis den første mens loop er ubetydelig, eller en manuel låsning er påkrævet, vil den indtaste en anden mens loop, hvor en bestemt adgangskode er nødvendig. Hvis adgangskoden er forkert, genstarter sløjfen igen
while true if ii == 1 % Afslutter mens loop indeholder adgangskode, hvis døren blev låst op med mobilenhedens afbrydelse % Indsamler data om knapperne b5 = readDigitalPin (a, 'D5'); % Knap 5 (blå) b1 = readDigitalPin (a, 'D1'); % Knap 1 (sort) b4 = readDigitalPin (a, 'D4'); % Knap 4 (Hvid) hvis b5 == 0 % Starter adgangskodeindtastningssektion for b = 1: 5 m6 = msgbox ('Tryk og hold en knap'); pause (2); slet (m6); % Indsamler data om knapperne b1 = readDigitalPin (a, 'D1'); % Knap 1 (sort) b2 = readDigitalPin (a, 'D2'); % Knap 2 (rød) b3 = readDigitalPin (a, 'D3'); % Knap 3 (hvid) b4 = readDigitalPin (a, 'D4'); % Knap 4 (gul) b5 = readDigitalPin (a, 'D5'); % Knap 5 (blå) % Erstatter værdierne i den oprindelige adgangskode én ad gangen, hvis 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)); % Vender rækkefølgen af knapper, der trykkes ind i tal, og konverterer den derefter til en strengende ende m7 = msgbox ('Velkommen hjem!'); writeDigitalPin (a, 'D8', 1); % Tænder for det grønne lys pause (.5); writePosition (s, 1); % Drejer servoen for at låse dørpausen (5) op; writeDigitalPin (a, 'D8', 0); % Deaktiverer det grønne lys pause (.1); writeDigitalPin (a, 'D7', 1); % Tænder for det røde lys pause (.5); writePosition (s, 0); % Drejer servoen for at låse dørpausen (1); writeDigitalPin (a, 'D7', 0); % Deaktiverer sletning af det røde lys (m7); ii = 1; break % Afslut, mens loop indeholder adgangskode efter indtastning af den korrekte adgangskode elseif PASSCODE ~ = "2314" writeDigitalPin (a, 'D7', 1); % Tænder det røde lys m8 = msgbox ('Forkert adgangskode! Prøv igen!'); waitfor (m8) writeDigitalPin (a, 'D7', 0); % Slukker det røde lys fortsæt % Giver dig mulighed for at indtaste en adgangskode igen ifb1 == 0 && b4 == 0 % Afslutter mens loop indeholder kodeordssektion, hvis du ikke vil indtaste en adgangskode ii = 1; pause ende ende
Hvis det er korrekt, vil det straks gå ind i en while -sløjfe, der styrer temperatursensoren. Hvis kontakten er tændt, vil sløjfen fortsætte og plotte temperaturen vs. tid plottet, så man kan se tendensen. Hvis der trykkes på knappen, der er forbundet til temperatursensoren, sender den også en e -mail, der fortæller dig, hvad temperaturen er i dit "hjem". Hvis kontakten er slukket, afslutter den straks koden
t = 0; % Starttid = 0 sekunders pause (5) % Giver tid for brugeren til at tænde temperaturkontakten SWITCH = readDigitalPin (a, 'D11'); % Indsamler data om kontakten i pin D11, mens SWITCH == 0 SWITCH = readDigitalPin (a, 'D11'); % Indsamler data om kontakten i pin D11 spænding = readVoltage (a, 'A1'); % Læser spændingen fra temperatursensoren temp_C = (spænding.*1000 - 500)./ 10; % Konverterer spændingen til temperatur i ° C temp_F = (9/5).*Temp_C + 32; % Konverterer fra ° C til ° F plot (t, temp_C, 'b.') Hold on titel ('Rumtemperatur'); xlabel ('Time in Seconds'); ylabel ('temperatur'); akse ([0, 180, 0, 100]); plot (t, temp_F, 'r.') legend ('Temperatur i ° C', 'Temperatur i ° F') pause (1); t = t + 1; % Tæller i sekunder % E-mail Afsnit b_temp = readDigitalPin (a, 'D0'); % Indsamler dataene for den (blå) temperaturknap i pin D0, hvis b_temp == 0 setpref ('Internet', 'SMTP_Server', 'smtp.gmail.com'); setpref ('Internet', 'E_mail', '[email protected]'); % Sender setpref ('Internet', 'SMTP_Username', '[email protected]'); % Afsenders brugernavn setpref ('Internet', 'SMTP_Password', 'Integral_ecoTECH'); % Afsenders adgangskode rekvisitter = 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 Rumtemperatur ', sprintf (' Den aktuelle rumtemperatur er %.1f ° C eller %.1f ° F. ', temp_C, temp_F)); % Sender en e-mail til modtageren med data om den aktuelle stuetemperatur fprintf ('E-mail med succes sendt! / N') slutter hvis temp_F> = 75 % Hvis rumtemperaturen stiger til 75 ° F… temp_AC = 65; % Ændrer temperaturen på termostaten til 65 ° F elseif temp_F <= 65 % Hvis rumtemperaturen falder til 60 ° F… temp_AC = 80; % Ændrer temperaturen på termostaten til 80 ° F endeenden % Slut på "SWITCH == 0" mens loop, hvis strøm == "off" || ii == 1 % Afslutter "strøm == tændt", mens sløjfepause slut slutter % Slutter på "strøm == tændt", mens sløjfe, hvis strøm == "slukker" || ii == 1 % Afslutter hele, mens loop -slutningen slutter
Dette var blot en kort oversigt over koden og dens funktionalitet. Vi har vedhæftet den fulde kode som en pdf, hvis det er nødvendigt
Her er listen over, hvilken port hver enhed er tilsluttet
1. RGB LED: Digitale pins (7, 8, 9)
2. Servo: Digital pin 6
3. Knapper: Digitale pins (1, 2, 3, 4, 5)
4. Blå knap til e -mail: Digital pin 0
5. Temperatursensor: Analog pin 1
6. Kontakt: Digital pin 11
Anbefalede:
Et IoT Halloween græskar - Kontrol -LED'er med en Arduino MKR1000 og Blynk App ???: 4 trin (med billeder)
Et IoT Halloween græskar | Kontrol -LED'er Med en Arduino MKR1000 og Blynk App ???: Hej alle sammen, For et par uger siden var det Halloween og efter traditionen skåret jeg et dejligt græskar til min altan. Men da jeg havde mit græskar udendørs, indså jeg, at det var ret irriterende at skulle ud hver aften for at tænde lyset. Og jeg
DIY håndfri desinfektionsdispenser uden kontakt uden en Arduino eller en mikrokontroller: 17 trin (med billeder)
DIY Non Contact Hand Sanitizer Dispenser Uden en Arduino eller en mikrokontroller: Som vi alle ved, ramte COVID-19-udbruddet verden og ændrede vores livsstil. I denne tilstand er alkohol og hånddesinfektionsmidler vitale væsker, men de skal bruges korrekt. Berøring af alkoholbeholdere eller håndsprit med inficerede hænder
Smart hjem med Arduino MKR1000 og M.I.T. Android App: 4 trin
Smart hjem med Arduino MKR1000 og M.I.T. Android App: I denne vejledning beskriver jeg, hvordan du kan forbedre dit smarte hjem med blot nogle få komponenter. Hjertet i dette smarte hjemdesign er Arduino MKR1000 -kortet, der styres med en app, designet på udviklingswebstedet for M.I.T. (Massachusetts Institu
Hindring for at undgå robot ved hjælp af mikrokontroller (Arduino): 5 trin
Hindring for at undgå robot ved hjælp af mikrokontroller (Arduino): I denne instruktive vil jeg lære dig, hvordan du kan forhindre en robot, der arbejder med Arduino. Du skal være fortrolig med Arduino. Arduino er et controller board, der bruger atmega microcontroller. Du kan bruge enhver version af Arduino, men jeg har
Konfiguration af AVR -mikrokontroller -sikringsbits. Oprettelse og upload i Flash -hukommelsen af mikrokontroller LED -blinkende program .: 5 trin
Konfiguration af AVR -mikrokontroller -sikringsbits. Oprettelse og upload i Flash -hukommelsen til mikrokontrolleren LED -blinkende program .: I dette tilfælde opretter vi et enkelt program i C -kode og brænder det ind i hukommelsen til mikrokontrolleren. Vi vil skrive vores eget program og kompilere hex -filen ved hjælp af Atmel Studio som den integrerede udviklingsplatform. Vi konfigurerer sikring bi