विषयसूची:

MATLAB नियंत्रित माइक्रोकंट्रोलर (Arduino MKR1000): 4 कदम
MATLAB नियंत्रित माइक्रोकंट्रोलर (Arduino MKR1000): 4 कदम

वीडियो: MATLAB नियंत्रित माइक्रोकंट्रोलर (Arduino MKR1000): 4 कदम

वीडियो: MATLAB नियंत्रित माइक्रोकंट्रोलर (Arduino MKR1000): 4 कदम
वीडियो: Part 2 - Arduino MKR1000 - Getting Started to Programming 2024, जुलाई
Anonim
MATLAB नियंत्रित माइक्रोकंट्रोलर (Arduino MKR1000)
MATLAB नियंत्रित माइक्रोकंट्रोलर (Arduino MKR1000)

हमारी परियोजना का लक्ष्य MATLAB के साथ-साथ Arduino MKR1000 का उपयोग हमारी सर्वोत्तम क्षमता के लिए करना था। हमारा लक्ष्य एक ऐसी स्क्रिप्ट बनाना था जो एक विशिष्ट इनपुट के आधार पर एक निश्चित आउटपुट को पूरा करने के लिए arduino की कुछ विशेषताओं की अनुमति दे। हमने MATLAB में प्रदर्शित कई लूप्स और कंडीशनल स्टेटमेंट्स का उपयोग किया जिससे यह संभव हुआ। हमने प्रोजेक्ट को यथासंभव बढ़ाने के लिए मोबाइल डिवाइस के जाइरोस्कोप से प्राप्त डेटा का उपयोग करके MATLAB मोबाइल का भी उपयोग किया।

चरण 1: भागों और सामग्री

भागों और सामग्री
भागों और सामग्री
भागों और सामग्री
भागों और सामग्री
भागों और सामग्री
भागों और सामग्री

MATLAB 2018a

- MATLAB का 2018 संस्करण सबसे पसंदीदा संस्करण है, क्योंकि यह उस कोड के साथ सबसे अच्छा काम करता है जो मोबाइल डिवाइस से कनेक्ट होता है। हालाँकि, हमारे अधिकांश कोड की व्याख्या MATLAB के अधिकांश संस्करणों द्वारा की जा सकती है।

अरुडिनो एमकेआर1000

-यह एक विशिष्ट उपकरण है जो हमें डिजिटल और एनालॉग दोनों पोर्ट तक सर्किट को वायर करने की अनुमति देता है। यह महत्वपूर्ण है कि आपके पास इसके साथ जाने के लिए एक ब्रेडबोर्ड भी हो।

सामान

-MKR1000 का उपयोग करते समय, हमें आवश्यक कार्य करने के लिए सहायक भागों की आवश्यकता होती है।

यह भी शामिल है

  1. इमदादी
  2. बटन (6)
  3. विनिमेय आरबीजी एलईडी लाइट
  4. साधारण तार
  5. ब्रेडबोर्ड
  6. मिनी पावर स्विच
  7. तापमान संवेदक
  8. ३३० ओम रोकनेवाला
  9. 10K ओम रोकनेवाला
  10. यूएसबी-माइक्रोयूएसबी कॉर्ड
  11. लैपटॉप/डेस्कटॉप
  12. मोबाइल डिवाइस

यह भी ध्यान दिया जाना चाहिए कि MKR1000. के साथ और भी कई एक्सेसरीज़ का उपयोग किया जा सकता है

चरण 2: MATLAB Arduino समर्थन पैकेज

MATLAB के माध्यम से Arduino MKR1000 का ठीक से उपयोग करने के लिए, आपको Arduino हार्डवेयर के लिए MATLAB समर्थन पैकेज डाउनलोड करना होगा। यह डाउनलोड आपको कुछ कार्यों और आदेशों तक सीधे arduino बोर्ड तक पहुंच प्रदान करता है।

आप नीचे दिए गए लिंक पर पैकेज डाउनलोड कर सकते हैं

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-apple-ios-sensors

चरण 4: कोड और वायरिंग पोर्ट

कोड एक स्टार्टअप संदेश से शुरू होता है जो पूछता है कि क्या हम अपना घरेलू सुरक्षा उपकरण शुरू करना चाहते हैं। यदि हम हां में उत्तर देते हैं, और सही पासकोड देते हैं, तो स्क्रिप्ट तुरंत थोड़ी देर के लूप में कूद जाती है। वहां से, यह मोबाइल डिवाइस से डेटा एकत्र करना शुरू करता है। ऐसी शर्तें हैं जो इस डेटा को पढ़ती हैं। हम अपने मोबाइल डिवाइस से सिस्टम को अनलॉक और लॉक कर सकते हैं, और कोड सर्वो को चालू कर देगा और मोबाइल डिवाइस से दिए गए डेटा के आधार पर एलईडी लाइट को ब्लिंक करेगा।

स्टार्टअप = questdlg ('क्या आप इकोटेक स्मार्ट होम एनर्जी सिस्टम को सक्रिय करना चाहेंगे?'); % EcoTECHwaitfor(स्टार्टअप) का सक्रियण क्रम शुरू करता है; अगर स्टार्टअप == "हां"% अगर "हां" चुना जाता है तो एक सक्रियण अनुक्रम शुरू होता है और अंत में लूप में प्रवेश करता है पावर = "चालू"; m1 = msgbox ('इकोटेक शुरू हो रहा है…'); विराम(2); हटाएं (एम 1); m1_wait = प्रतीक्षा पट्टी (0, 'कृपया प्रतीक्षा करें …'); कदम = 25; i = १ के लिए चरण विराम (.१); वेटबार (i/कदम); % अपडेट वेटबार एंड डिलीट (m1_wait); पासकोड = [0 0 0 0]; % पासकोड को प्रारंभ करता है ii = 0; % लूप से बाहर निकलने के लिए उपयोग किए जाने वाले चर को प्रारंभ करता है m2 = msgbox('ecoTECH पूरी तरह से चालू!'); विराम(2); हटाएं (एम 2); औरिफ स्टार्टअप == "नहीं" || स्टार्टअप == "रद्द करें"% यदि "नहीं" या "रद्द करें" का चयन किया जाता है तो सक्रियण अनुक्रम प्रारंभ नहीं होता है और लूप पावर = "बंद" दर्ज नहीं होता है; एम 3 = संदेशबॉक्स ('ठीक है! अलविदा!'); विराम(2); हटाएं (एम 3); समाप्त

एक्शन सेक्शन में% इकोटेक जबकि ट्रू है जबकि पावर == "ऑन"% मोबाइल की सेक्शन जबकि ट्रू% मोबाइल डिवाइस के रोल ओरिएंटेशन के बारे में डेटा एकत्र करता है KEY = m. Orientation(3); % बटन के बारे में डेटा एकत्र करता है b2 = readDigitalPin(a, 'D2'); % बटन 2 (लाल) b3 = readDigitalPin(a, 'D3'); % बटन 3 (सफ़ेद) यदि KEY>= 35% डिग्री में m4 = msgbox ('घर में स्वागत है!'); राइटडिजिटलपिन (ए, 'डी 8', 1); % हरी बत्ती विराम (.5) चालू करता है; राइटपोजिशन (एस, 1); % दरवाज़ा बंद करने के लिए सर्वो को चालू करता है (2); राइटडिजिटलपिन (ए, 'डी 8', 0); % हरी बत्ती हटाएं (m4) बंद कर देता है; अन्य कुंजी <= -35% डिग्री में m5 = msgbox ('दरवाजा बंद!'); राइटडिजिटलपिन (ए, 'डी 7', 1); % लाल बत्ती विराम (.5) चालू करता है; राइटपोजिशन (एस, 0); % सर्वो को दरवाज़ा बंद करने के लिए चालू करता है (2); राइटडिजिटलपिन (ए, 'डी 7', 0); % लाल बत्ती हटाएं (m5) बंद कर देता है; ii = 1; ब्रेक% बाहर निकलता है जबकि मोबाइल डिवाइस का उपयोग करके दरवाजा बंद कर दिया जाता है, अगर मोबाइल डिवाइस का उपयोग करके दरवाजा बंद कर दिया जाता है, तो b2 == 0 && b3 == 0% पासकोड सेक्शन में प्रवेश करने के लिए मोबाइल कुंजी वाले लूप से बाहर निकलता है। ब्रेक एंड एंड

इसके बाद, यह लूप के दौरान दूसरे में प्रवेश कर सकता है। यह जबकि लूप बटन से इनपुट के आधार पर परिणामों को नियंत्रित करता है। यदि पहला जबकि लूप नगण्य है, या एक मैनुअल लॉकडाउन की आवश्यकता है, तो यह दूसरे लूप में प्रवेश करेगा जहां एक विशिष्ट पासवर्ड की आवश्यकता होगी। यदि पासवर्ड गलत है, तो यह लूप को पुनः आरंभ करेगा।

जबकि सच है अगर ii == 1% पासकोड वाले लूप से बाहर निकलता है यदि मोबाइल डिवाइस ब्रेक एंड के साथ दरवाजा अनलॉक किया गया था% बटन b5 = readDigitalPin (a, 'D5') के बारे में डेटा एकत्र करता है; % बटन 5 (नीला) b1 = readDigitalPin(a, 'D1'); % बटन 1 (काला) b4 = readDigitalPin(a, 'D4'); % बटन 4 (सफेद) यदि b5 == 0% b = 1:5 m6 = msgbox ('कृपया एक बटन दबाएं और दबाए रखें') के लिए पासकोड दर्ज करना शुरू करता है; विराम(2); हटाएं (एम 6); % बटन के बारे में डेटा एकत्र करता है b1 = readDigitalPin(a, 'D1'); % बटन 1 (काला) b2 = readDigitalPin(a, 'D2'); % बटन 2 (लाल) b3 = readDigitalPin(a, 'D3'); % बटन 3 (सफेद) b4 = readDigitalPin(a, 'D4'); % बटन 4 (पीला) b5 = readDigitalPin(a, 'D5'); % बटन 5 (नीला) % यदि b1 == 0 पासकोड (0+b) = 1; एल्सिफ बी२ == ० पासस्कोड(०+बी) = २; एल्सिफ बी3 == 0 पासकोड (0+बी) = 3; एल्सिफ बी4 == 0 पासकोड (0+बी) = 4; अन्य बी 5 == 0 पासकोड = स्प्रिंटफ ('%.0f%.0f%.0f%.0f', पासकोड (1), पासकोड (2), पासकोड (3), पासकोड (4)); % बटनों के क्रम को संख्याओं में बदल देता है और फिर इसे एक स्ट्रिंग एंड एंड में बदल देता है % पासकोड के लिए अंकों को दर्ज करने के लिए लूप का अंत यदि पासकोड == "2314"% यदि पासकोड दर्ज किया गया है तो कुछ सेकंड के लिए दरवाजा अनलॉक होता है और फिर लॉक हो जाता है m7 = msgbox ('घर में आपका स्वागत है!'); राइटडिजिटलपिन (ए, 'डी 8', 1); % हरी बत्ती विराम (.5) चालू करता है; राइटपोजिशन (एस, 1); % दरवाज़ा बंद करने के लिए सर्वो को चालू करता है(5); राइटडिजिटलपिन (ए, 'डी 8', 0); % हरी बत्ती विराम (.1) बंद कर देता है; राइटडिजिटलपिन (ए, 'डी 7', 1); % लाल बत्ती विराम (.5) चालू करता है; राइटपोजिशन (एस, 0); % सर्वो को दरवाज़ा बंद करने के लिए चालू करता है (1); राइटडिजिटलपिन (ए, 'डी 7', 0); % लाल बत्ती हटाएं (एम 7) बंद कर देता है; ii = 1; ब्रेक% बाहर निकलता है जबकि लूप सही पासकोड दर्ज करने के बाद पासकोड युक्त होता है यदि पासकोड ~ = "2314" राइटडिजिटलपिन (ए, 'डी 7', 1); % लाल बत्ती चालू करता है m8 = msgbox('गलत पासकोड! पुनः प्रयास करें!'); प्रतीक्षा करें (एम 8) राइटडिजिटलपिन (ए, 'डी 7', 0); % लाल बत्ती को बंद कर देता है जारी रखें ब्रेक एंड एंड

यदि सही है, तो यह तुरंत थोड़ी देर के लूप में प्रवेश करेगा जो तापमान संवेदक को नियंत्रित करता है। यदि स्विच चालू है, तो लूप तापमान बनाम टाइम प्लॉट के माध्यम से जारी रहेगा और प्लॉट करेगा, जिससे व्यक्ति प्रवृत्ति को देख सकेगा। यदि तापमान संवेदक से जुड़ा बटन दबाया जाता है, तो यह एक ईमेल भी भेजेगा जो आपको बताएगा कि आपके "घर" में तापमान क्या है। यदि स्विच बंद कर दिया जाता है, तो यह तुरंत कोड समाप्त कर देगा।

टी = 0; % प्रारंभिक समय = 0 सेकंड विराम(5) % उपयोगकर्ता को तापमान स्विच चालू करने के लिए समय देता है SWITCH = readDigitalPin(a, 'D11'); % पिन D11 में स्विच के बारे में डेटा एकत्र करता है जबकि SWITCH == 0 SWITCH = readDigitalPin(a, 'D11'); % पिन D11 वोल्टेज में स्विच के बारे में डेटा एकत्र करता है = रीडवोल्टेज (ए, 'ए 1'); % तापमान सेंसर से वोल्टेज पढ़ता है temp_C = (वोल्टेज। * 1000 - 500)। / 10; % वोल्टेज को °C में तापमान में परिवर्तित करता है temp_F = (9/5)।*temp_C + 32; % डिग्री सेल्सियस से डिग्री फ़ारेनहाइट प्लॉट (टी, temp_C, 'बी') में कनवर्ट करता है शीर्षक पर पकड़ ('कमरे का तापमान'); xlabel ('सेकंड में समय'); येलेबल ('तापमान'); अक्ष ([0, 180, 0, 100]); प्लॉट (टी, टेम्प_एफ, 'आर।') लेजेंड ('तापमान डिग्री सेल्सियस में', 'तापमान डिग्री फारेनहाइट') विराम (1); टी = टी + 1; सेकंड में% समय काउंटर% ई-मेल अनुभाग b_temp = readDigitalPin(a, 'D0'); % पिन D0 में (नीला) तापमान बटन का डेटा एकत्र करता है यदि b_temp == 0 setpref('Internet', 'SMTP_Server', 'smtp.gmail.com'); setpref ('इंटरनेट', 'ईमेल', '[email protected]'); % प्रेषक सेटप्रेफ़ ('इंटरनेट', '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 रूम टेम्परेचर', sprintf('वर्तमान कमरे का तापमान %.1f °C या %.1f °F.', temp_C, temp_F)); % वर्तमान कमरे के तापमान पर डेटा देने वाले प्राप्तकर्ता को एक ई-मेल भेजता है fprintf('ई-मेल सफलतापूर्वक भेजा गया!\n') अंत अगर temp_F>= 75% यदि कमरे का तापमान 75 °F तक बढ़ जाता है… temp_AC = 65; % थर्मोस्टेट पर तापमान को ६५ °F में बदलता है, अन्यथा अगर temp_F <= ६५% यदि कमरे का तापमान ६० °F तक गिर जाता है… temp_AC = ८०; % थर्मोस्टेट पर तापमान को 80 °F के अंत में बदलता है % "SWITCH == 0" का अंत जबकि लूप अगर पावर == "बंद" || ii == 1% "पावर == ऑन" से बाहर निकलता है जबकि लूप ब्रेक एंड एंड% "पावर == ऑन" का अंत होता है जबकि लूप अगर पावर == "ऑफ" होता है || ii == 1% लूप ब्रेक समाप्त होने पर संपूर्ण बाहर निकलता है

यह कोड और इसकी कार्यक्षमता का एक संक्षिप्त अवलोकन था। यदि आवश्यक हो तो हमने पूरा कोड एक पीडीएफ के रूप में संलग्न किया है।

यहां प्रत्येक डिवाइस को किस पोर्ट में वायर्ड किया गया है, इसकी सूची दी गई है।

1. आरजीबी एलईडी: डिजिटल पिन (7, 8, 9)

2. सर्वो: डिजिटल पिन 6

3. बटन: डिजिटल पिन (1, 2, 3, 4, 5)

4. ईमेल के लिए नीला बटन: डिजिटल पिन 0

5. तापमान सेंसर: एनालॉग पिन 1

6. स्विच: डिजिटल पिन 11

सिफारिश की: