ዝርዝር ሁኔታ:

MATLAB ቁጥጥር የሚደረግበት ማይክሮ መቆጣጠሪያ (አርዱዲኖ MKR1000) 4 ደረጃዎች
MATLAB ቁጥጥር የሚደረግበት ማይክሮ መቆጣጠሪያ (አርዱዲኖ MKR1000) 4 ደረጃዎች

ቪዲዮ: MATLAB ቁጥጥር የሚደረግበት ማይክሮ መቆጣጠሪያ (አርዱዲኖ MKR1000) 4 ደረጃዎች

ቪዲዮ: MATLAB ቁጥጥር የሚደረግበት ማይክሮ መቆጣጠሪያ (አርዱዲኖ MKR1000) 4 ደረጃዎች
ቪዲዮ: ጥብቅ ቁጥጥር የሚደረግበት ትራማዶል መድኃኒት 2024, ህዳር
Anonim
MATLAB ቁጥጥር የሚደረግበት ማይክሮ መቆጣጠሪያ (አርዱዲኖ MKR1000)
MATLAB ቁጥጥር የሚደረግበት ማይክሮ መቆጣጠሪያ (አርዱዲኖ MKR1000)

የፕሮጀክታችን ግብ MATLAB ን እንዲሁም አርዱዲኖ MKR1000 ን በተቻለን መጠን መጠቀም ነበር። ግባችን በአንድ የተወሰነ ግብዓት ላይ በመመርኮዝ የተወሰኑ የአሩዲኖ ባህሪያትን የተወሰነ ውፅዓት እንዲያሸት የሚፈቅድ ስክሪፕት መፍጠር ነበር። በ MATLAB ውስጥ የተካተቱ ብዙ ቀለበቶችን እና ሁኔታዊ መግለጫዎችን ተጠቅመን ይህንን እንዲቻል አድርገናል። ፕሮጀክቱን በተቻለ መጠን ለማሳደግ ከተንቀሳቃሽ መሣሪያ ጋይሮስኮፕ የተገኘውን መረጃ በመጠቀም MATLAB ሞባይልንም ተጠቅመንበታል።

ደረጃ 1: ክፍሎች እና ቁሳቁሶች

ክፍሎች እና ቁሳቁሶች
ክፍሎች እና ቁሳቁሶች
ክፍሎች እና ቁሳቁሶች
ክፍሎች እና ቁሳቁሶች
ክፍሎች እና ቁሳቁሶች
ክፍሎች እና ቁሳቁሶች

MATLAB 2018 ሀ

-የ 2018 የ MATLAB ስሪት በጣም ተመራጭ ስሪት ነው ፣ ብዙውን ጊዜ ከሞባይል መሳሪያው ጋር በሚገናኝ ኮድ በተሻለ ሁኔታ ስለሚሰራ። ሆኖም ፣ አብዛኛው የእኛ ኮድ በአብዛኛዎቹ የ MATLAB ስሪቶች ሊተረጎም ይችላል።

አርዱዲኖ MKR1000

-ይህ እስከ ዲጂታል እና አናሎግ ወደቦች ድረስ ወረዳዎችን ሽቦ እንድንይዝ የሚያስችል ልዩ መሣሪያ ነው። ከእሱ ጋር አብሮ ለመሄድ የዳቦ ሰሌዳ መኖሩ በጣም አስፈላጊ ነው።

መለዋወጫዎች

-MKR1000 ን ስንጠቀም አስፈላጊዎቹን ተግባራት ለማከናወን መለዋወጫ ክፍሎች ያስፈልጉናል።

ይህ ያካትታል

  1. ሰርቮ
  2. አዝራር (6)
  3. ሊለዋወጥ የሚችል RBG LED መብራት
  4. ቀላል ሽቦዎች
  5. የዳቦ ሰሌዳ (ዎች)
  6. አነስተኛ የኃይል መቀየሪያ
  7. የሙቀት ዳሳሽ
  8. 330 ohm resistor
  9. 10 ኪ ohm resistor
  10. ዩኤስቢ-ማይክሮ ዩኤስቢ ገመድ
  11. ላፕቶፕ/ዴስክቶፕ
  12. ተንቀሳቃሽ መሣሪያ

ከ MKR1000 ጋር ጥቅም ላይ ሊውሉ የሚችሉ ብዙ ፣ ብዙ ተጨማሪ መለዋወጫዎች እንዳሉም ልብ ሊባል ይገባል

ደረጃ 2 - MATLAB Arduino ድጋፍ ጥቅል

አርዱዲኖ MKR1000 ን በ MATLAB በኩል በትክክል ለመጠቀም ፣ ለአርዱዲኖ ሃርድዌር የ MATLAB ድጋፍ ጥቅልን ማውረድ አለብዎት። ይህ ማውረድ ለተወሰኑ ተግባራት መዳረሻ ይሰጥዎታል እና በቀጥታ ወደ አርዱዲኖ ቦርድ ያስተላልፋል።

ጥቅሉን ከዚህ በታች ባለው አገናኝ ማውረድ ይችላሉ

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

ደረጃ 3 - ከተንቀሳቃሽ መሣሪያ የተገኘውን የውሂብ ዳሳሾችን መጠቀም

ከተንቀሳቃሽ መሣሪያ የተገኘ የውሂብ ዳሳሾችን መጠቀም
ከተንቀሳቃሽ መሣሪያ የተገኘ የውሂብ ዳሳሾችን መጠቀም

የ MATLAB ሞባይል መተግበሪያ የእሱን ጋይሮስኮፕ በመጠቀም መረጃን ለማስተላለፍ ተንቀሳቃሽ መሣሪያ እንድንጠቀም ያስችለናል። በ MATLAB በኩል ውሂቡን ለማግኘት ፣ ከ MATLAB ሞባይል ከአቅጣጫ ማትሪክስ በማምጣት ውሂቡን እናገኛለን። እኛ ለእያንዳንዱ የአቀማመጥ ማትሪክስ (አዚሙት ፣ ፒች እና ሮል) ተለዋዋጭ አምሳያ በመፍጠር እና ከሞባይል መሣሪያው ወደ ኮምፒዩተሩ የእሴቶችን የማያቋርጥ ዥረት በመጠቆም ይህንን እናደርጋለን። ይህ MATLAB ከተንቀሳቃሽ መሣሪያው የተወሰነ የውሂብ ግብዓት ቢወስድ ውፅዓት ቅድመ ሁኔታን የሚያመጣ ሁኔታዊ መግለጫዎችን እንድንፈጥር ያስችለናል። ይህንን ለማድረግ በተንቀሳቃሽ መሣሪያዎ ላይ MATLAB ሞባይል እና በኮምፒተርዎ ላይ ለ MATLAB የተንቀሳቃሽ መሣሪያ ድጋፍ ጥቅል ያስፈልግዎታል።

ከዚህ በታች ባለው አገናኝ ላይ ፋይሉን ማውረድ ይችላሉ

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

ደረጃ 4 ኮድ እና ሽቦ ወደቦች

ኮዱ የሚጀምረው የቤት ደህንነት መሣሪያችንን ለመጀመር እንፈልግ እንደሆነ በሚጠይቅ የመነሻ መልእክት ነው። እኛ አዎ ብለን ከመለስን እና ትክክለኛውን የይለፍ ኮድ ከሰጠን ፣ ስክሪፕቱ ወዲያውኑ ወደ ትንሽ ዙር ዘልሎ ይገባል። ከዚያ ሆነው ከተንቀሳቃሽ መሣሪያው መረጃ መሰብሰብ ይጀምራል። ይህንን ውሂብ የሚያነቡ ቅድመ ሁኔታዎች አሉ። ከተንቀሳቃሽ መሣሪያችን ስርዓቱን መክፈት እና መቆለፍ እንችላለን ፣ እና ኮዱ ከተንቀሳቃሽ መሣሪያው በተሰጠው መረጃ ላይ በመመስረት servo ን ያዞራል እና የ LED መብራቱን ያበራል።

startup = questdlg ('ecoTECH Smart Home Energy System ን ማንቃት ይፈልጋሉ?'); % የ ecoTECHwaitfor (ጅምር) የማግበር ቅደም ተከተል ይጀምራል። ጅምር == “አዎ” % “አዎ” ከተመረጠ የማግበር ቅደም ተከተል ይጀምራል እና ወደ መጨረሻው ኃይል = “በርቷል” በሚለው የጊዜ ዑደት ውስጥ ይገባል። m1 = msgbox ('ኢኮቴክ መጀመር …'); ለአፍታ አቁም (2); ሰርዝ (m1); m1_wait = የተጠባባቂ አሞሌ (0 ፣ 'እባክህ ጠብቅ…'); ደረጃዎች = 25; ለ i = 1: እርምጃዎች ለአፍታ ቆም (.1); የመጠባበቂያ አሞሌ (i/ደረጃዎች); % የመጠባበቂያ አሞሌ መጨረሻ መሰረዙን ያዘምናል (m1_wait); PASSCODE = [0 0 0 0]; % የይለፍ ኮድ ያስጀምራል ii = 0; % ከ loops m2 = msgbox ('ecoTECH ሙሉ በሙሉ ይሠራል!') ለመውጣት የሚያገለግል ተለዋዋጭ ያስጀምራል ፤ ለአፍታ አቁም (2); ሰርዝ (m2); elseif startup == "አይ" || startup == "Cancel" % "አይ" ወይም "ሰርዝ" ከተመረጠ የማግበር ቅደም ተከተል አይጀምርም እና የሉል ኃይል = "ጠፍቷል" አይገባም። m3 = msgbox ('እሺ! ደህና ሁን!'); ለአፍታ አቁም (2); ሰርዝ (m3); አበቃ

% ecoTECH በድርጊት ክፍል እውነት ሆኖ ኃይል እያለ == "በርቷል" % የሞባይል ቁልፍ ክፍል እውነት % % ስለ ተንቀሳቃሽ መሣሪያ መሳሪያው ጥቅል አቀማመጥ መረጃ ይሰበስባል KEY = m. Orientation (3); % ስለ አዝራሮቹ መረጃ ይሰበስባል b2 = readDigitalPin (a, 'D2'); % አዝራር 2 (ቀይ) b3 = readDigitalPin (a, 'D3'); % አዝራር 3 (ነጭ) ቁልፍ ከሆነ = = 35 % በዲግሪዎች m4 = msgbox ('እንኳን በደህና መጡ!'); ይፃፉ ዲጂታል ፒን (ሀ ፣ ‘ዲ 8’ ፣ 1); % አረንጓዴውን ለአፍታ ማቆም (.5) ያበራል ፤ መጻፍ አቀማመጥ (ዎች ፣ 1); % የበሩን ቆም (2) ለመክፈት አገልጋዩን ያዞራል ፤ ይፃፉ ዲጂታል ፒን (ሀ ፣ ‘ዲ 8’ ፣ 0); % አረንጓዴውን መሰረዝ (m4) ያጠፋል ፤ elseif KEY <= -35 % በዲግሪዎች m5 = msgbox ('በር ተዘግቷል!'); ይፃፉ ዲጂታል ፒን (ሀ ፣ ‘ዲ 7’ ፣ 1); % የቀይ ብርሃን ቆም (.5) ያበራል ፤ መጻፍ አቀማመጥ (ዎች ፣ 0); % የበሩን ቆም (2) ለመቆለፍ አገልጋዩን ያዞራል ፤ ጻፍ ዲጂታል ፒን (ሀ ፣ ‹77 ፣ 0 ›); % ቀይ መብራቱን መሰረዝ (m5) ያጠፋል ፤ ii = 1; break % የሞባይል ቁልፍን ይዞ በሉፕ ሳሉ የሚወጣ ከሆነ ተንቀሳቃሽ መሣሪያውን ሌላውን በመጠቀም ከሆነ b2 == 0 && b3 == 0 % ወደ ኮድ ኮድ ክፍል መገባደጃ መጨረሻ ለመግባት የሞባይል ቁልፍ የያዘ ሉፕ ሲወጣ

ከዚህ በኋላ ፣ loop እያለ ሌላ ሊገባ ይችላል። ይህ ሆኖ ሳለ ሉፕ ከአዝራሮቹ ባሉት ግብዓቶች ላይ በመመርኮዝ ውጤቶቹን ይቆጣጠራል። የመጀመሪያው ዙር loop ቸልተኛ ከሆነ ፣ ወይም በእጅ መቆለፍ አስፈላጊ ከሆነ ፣ አንድ የተወሰነ የይለፍ ቃል በሚያስፈልግበት ጊዜ ወደ ሌላ ዙር ይገባል። የይለፍ ቃሉ ትክክል ካልሆነ ምልልሱን እንደገና ያስጀምረዋል።

እውነት ከሆነ ii == 1 % በሩ ከተንቀሳቃሽ መሣሪያው መቋጫ መጨረሻ ጋር ኮድ ከያዘ ሎፕ በሚወጣበት ጊዜ ይወጣል % ስለ አዝራሮቹ መረጃ ይሰበስባል b5 = readDigitalPin (a, 'D5'); % አዝራር 5 (ሰማያዊ) b1 = readDigitalPin (ሀ ፣ 'D1') ፤ % አዝራር 1 (ጥቁር) b4 = readDigitalPin (ሀ ፣ 'D4') ፤ % አዝራር 4 (ነጭ) b5 == 0 % ለ = 1: 5 m6 = msgbox ('እባክዎን ይጫኑ እና ያዝ') የይለፍ ኮድ የሚገባ ክፍል ከጀመረ ፤ ለአፍታ አቁም (2); ሰርዝ (m6); % ስለ አዝራሮቹ መረጃ ይሰበስባል b1 = readDigitalPin (a, 'D1'); % አዝራር 1 (ጥቁር) b2 = readDigitalPin (ሀ ፣ 'D2') ፤ % አዝራር 2 (ቀይ) b3 = readDigitalPin (a, 'D3'); % አዝራር 3 (ነጭ) b4 = readDigitalPin (ሀ ፣ 'D4') ፤ % አዝራር 4 (ቢጫ) b5 = readDigitalPin (ሀ ፣ 'D5') ፤ % አዝራር 5 (ሰማያዊ) % በመጀመሪያው የይለፍ ኮድ ውስጥ ያሉትን እሴቶች በአንድ ጊዜ ይተካዋል b1 == 0 PASSCODE (0+ለ) = 1; elseif b2 == 0 PASSCODE (0+ለ) = 2; elseif b3 == 0 PASSCODE (0+ለ) = 3; elseif b4 == 0 PASSCODE (0+ለ) = 4; elseif b5 == 0 PASSCODE = sprintf ('%. 0f%.0f%.0f%.0f' ፣ PASSCODE (1) ፣ PASSCODE (2) ፣ PASSCODE (3) ፣ PASSCODE (4)) ፤ % በቁጥሮች ላይ የተጫኑትን የአዝራሮች ቅደም ተከተል ይቀይራል ከዚያም ወደ ሕብረቁምፊ መጨረሻ መጨረሻ ይለውጠዋል PASSCODE == "2314" % የይለፍ ኮድ አሃዞችን ለማስገባት የሉፕ መጨረሻ ለዝርዝሩ ኮድ ተዛማጆች ከገቡ በር ለጥቂት ሰከንዶች ይከፈታል ከዚያም ይቆልፋል m7 = msgbox ('እንኳን በደህና መጡ!'); ይፃፉ ዲጂታል ፒን (ሀ ፣ ‘ዲ 8’ ፣ 1); % አረንጓዴውን ለአፍታ ማቆም (.5) ያበራል ፤ መጻፍ አቀማመጥ (ዎች ፣ 1); % የበሩን ቆም (5) ለመክፈት አገልጋዩን ያዞራል ፤ ይፃፉ ዲጂታል ፒን (ሀ ፣ ‘ዲ 8’ ፣ 0); % አረንጓዴውን ቆም (.1) ያጠፋል; ይፃፉ ዲጂታል ፒን (ሀ ፣ ‘ዲ 7’ ፣ 1); % የቀይ ብርሃን ቆም (.5) ያበራል ፤ መጻፍ አቀማመጥ (ዎች ፣ 0); % የበሩን ቆም (1) ለመቆለፍ አገልጋዩን ያዞራል ፤ ጻፍ ዲጂታል ፒን (ሀ ፣ ‹77 ፣ 0 ›); % ቀይ መብራቱን መሰረዝ (m7) ያጠፋል ፤ ii = 1; PASSCODE ~ = "2314" writeDigitalPin (a, 'D7', 1) - ትክክለኛውን የይለፍ ኮድ ከገቡ በኋላ ኮድ (ኮድ) ከያዙ በኋላ መውጫ % መውጫ ፤ % ቀይ መብራቱን ያበራል m8 = msgbox ('ትክክል ያልሆነ የይለፍ ኮድ! እንደገና ይሞክሩ!'); ተጠባባቂ (m8) writeDigitalPin (ሀ ፣ ‘D7’ ፣ 0) ፤ % ቀይ መብራቱን ያጠፋል ቀጥል % የይለፍ ኮድ መጨረሻ እንደገና እንዲያስገቡ ይፈቅድልዎታል b1 == 0 && b4 == 0 % የይለፍ ኮድ ለማስገባት ካልፈለጉ የይለፍ ኮድ ክፍልን በሚይዙበት ጊዜ መውጫዎች ii = 1; መጨረሻ መጨረሻ

ትክክል ከሆነ ፣ ወዲያውኑ የሙቀት ዳሳሹን የሚቆጣጠረው ለተወሰነ ጊዜ loop ይገባል። ማብሪያ / ማጥፊያው በርቶ ከሆነ ፣ ዑደቱ ይቀጥላል እና የሙቀት መጠኑን እና የጊዜን ሴራ ያሴራል ፣ አንድ ሰው አዝማሚያውን እንዲመለከት ያስችለዋል። ከሙቀት ዳሳሽ ጋር የተገናኘው ቁልፍ ከተጫነ ፣ በእርስዎ “ቤት” ውስጥ ያለው የሙቀት መጠን ምን እንደሆነ የሚነግርዎት ኢሜይልም ይልካል። ማብሪያው ከተዘጋ ወዲያውኑ ኮዱን ያበቃል።

t = 0; % የመጀመሪያ ጊዜ = 0 ሰከንዶች ለአፍታ ቆም (5) % ለተጠቃሚው የሙቀት መቀየሪያውን ማብሪያ / ማጥፊያ = readDigitalPin (a ፣ 'D11') ለማብራት ጊዜ ይሰጣል ፤ % በፒን D11 ውስጥ ስላለው መቀየሪያ መረጃ ይሰበስባል SWITCH == 0 SWITCH = readDigitalPin (a ፣ 'D11') ፤ % ስለ መቀያየር መረጃ በፒን D11 ቮልቴጅ = readVoltage (a ፣ 'A1') ውስጥ ይሰበስባል ፤ % ቮልቴጅን ከአየር ሙቀት ዳሳሽ temp_C = (ቮልቴጅ.*1000 - 500)./ 10; % ቮልቴጅን በ ° ሴ temp_F = (9/5) ውስጥ ወደ ሙቀት ይለውጣል።*temp_C + 32; % ከ ° ሴ ወደ ° F ሴራ (t ፣ temp_C ፣ 'b') ይለወጣል ('የክፍል ሙቀት'); xlabel ('በሰከንዶች ጊዜ'); ylabel ('ሙቀት'); ዘንግ ([0, 180, 0, 100]); ሴራ (t ፣ temp_F ፣ 'r.') አፈ ታሪክ ('የሙቀት መጠን በ ° ሴ' ፣ 'ሙቀት በ F') ለአፍታ ቆም (1); t = t + 1; የሰዓት ቆጣሪ በሰከንዶች % ኢ-ሜይል ክፍል b_temp = readDigitalPin (a, 'D0'); % B_temp == 0 setpref ('በይነመረብ' ፣ 'SMTP_Server' ፣ 'smtp.gmail.com') ከሆነ በፒን D0 ውስጥ ያለውን (ሰማያዊ) የሙቀት አዝራር ውሂብ ይሰበስባል ፤ setpref ('በይነመረብ' ፣ 'ኢ_ሜል' ፣ '[email protected]'); % ላኪ setpref ('በይነመረብ' ፣ 'SMTP_Username' ፣ '[email protected]'); % የላኪው የተጠቃሚ ስም setpref ('በይነመረብ' ፣ 'SMTP_Password' ፣ 'Integral_ecoTECH') ፤ % የላኪው የይለፍ ቃል ፕሮፖዛል = 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 Room Temperature ', sprintf (' የአሁኑ የክፍል ሙቀት %.1f ° C ወይም %.1f ° F '፣ temp_C ፣ temp_F)); % አሁን ባለው የክፍል ሙቀት fprintf ('ኢ-ሜይል በተሳካ ሁኔታ ተልኳል! / N')) temp_F> = 75 % ከሆነ የክፍሉ ሙቀት ወደ 75 ° F ቢጨምር temp_AC = 65; % ቴርሞስታት ላይ ያለውን የሙቀት መጠን ወደ 65 ° F ሌላ ይለውጠዋል ifif temp_F <= 65 % የክፍሉ ሙቀት ወደ 60 ° F ከወሰነ… temp_AC = 80; % ቴርሞስታት ላይ ያለውን የሙቀት መጠን ወደ 80 ° F መጨረሻ መጨረሻ ይቀይራል % "SWITCH == 0" መጨረሻ ላይ ኃይል == "ጠፍቷል" || ii == 1 % “ኃይል == በርቷል” እያለ የሉፕ ማቋረጫ መጨረሻ መጨረሻ % የ “ኃይል == በርቷል” ኃይል ከጨረሰ ኃይል == “ጠፍቷል” || ii == 1 % የሉፕ ዕረፍት ሲጠናቀቅ ሙሉ በሙሉ ይወጣል

ይህ የኮዱን እና ተግባራዊነቱን አጭር መግለጫ ብቻ ነበር። አስፈላጊ ከሆነ ሙሉውን ኮድ እንደ ፒዲኤፍ አያይዘናል።

እያንዳንዱ መሣሪያ በየትኛው ወደብ የተገናኘበት ዝርዝር እነሆ።

1. RGB LED: ዲጂታል ፒኖች (7 ፣ 8 ፣ 9)

2. ሰርቮ: ዲጂታል ፒን 6

3. አዝራሮች - ዲጂታል ፒኖች (1 ፣ 2 ፣ 3 ፣ 4 ፣ 5)

4. ሰማያዊ አዝራር ለኢሜል -ዲጂታል ፒን 0

5. የሙቀት ዳሳሽ -አናሎግ ፒን 1

6. መቀያየር: ዲጂታል ፒን 11

የሚመከር: