विषयसूची:

स्मार्ट होम के साथ स्टोन एलसीडी: 5 कदम
स्मार्ट होम के साथ स्टोन एलसीडी: 5 कदम

वीडियो: स्मार्ट होम के साथ स्टोन एलसीडी: 5 कदम

वीडियो: स्मार्ट होम के साथ स्टोन एलसीडी: 5 कदम
वीडियो: How to connect Samsung Smart LED TV to Bluetooth Speaker | Samsung LED TV Sound Settings 2024, जुलाई
Anonim
स्मार्ट होम के साथ स्टोन एलसीडी
स्मार्ट होम के साथ स्टोन एलसीडी

आज, मुझे STONE का सीरियल पोर्ट ड्राइव डिस्प्ले मिला, जो MCU के सीरियल पोर्ट के माध्यम से संचार कर सकता है, और इस डिस्प्ले के UI लॉजिक डिज़ाइन को STONE की आधिकारिक वेबसाइट पर उपलब्ध कराए गए VGUS सॉफ़्टवेयर का उपयोग करके सीधे डिज़ाइन किया जा सकता है, जो हमारे लिए बहुत सुविधाजनक है। इसलिए मैं इसे एक साधारण उपकरण नियंत्रक बनाने के लिए उपयोग करने की योजना बना रहा हूं, जिसमें विभिन्न रोशनी (लिविंग रूम, किचन, बच्चों का कमरा, बाथरूम) का नियंत्रण शामिल है। इसी समय, इनडोर और आउटडोर तापमान, आर्द्रता और वायु गुणवत्ता एकत्र की जा सकती है। यह सिर्फ एक साधारण डेमो है, और आप मेरे द्वारा प्रदान किए गए कोड के माध्यम से माध्यमिक विकास कर सकते हैं। स्टोन स्क्रीन के बारे में कुछ बुनियादी ट्यूटोरियल वेबसाइट पर जा सकते हैं:

वेबसाइट में मॉडल, उपयोगकर्ता और डिजाइन प्रलेखन के साथ-साथ वीडियो ट्यूटोरियल के बारे में कई तरह की जानकारी है। मैं यहाँ बहुत अधिक विस्तार में नहीं जाऊँगा।

चरण 1: UI इंटरफ़ेस डिज़ाइन

यूआई इंटरफेस डिजाइन
यूआई इंटरफेस डिजाइन
यूआई इंटरफेस डिजाइन
यूआई इंटरफेस डिजाइन
यूआई इंटरफेस डिजाइन
यूआई इंटरफेस डिजाइन
यूआई इंटरफेस डिजाइन
यूआई इंटरफेस डिजाइन

फोटोशॉप

मैंने फ़ोटोशॉप के साथ निम्नलिखित दो UI पृष्ठ डिज़ाइन किए हैं:

इस परियोजना में कुल मिलाकर उपरोक्त दो पृष्ठ हैं। ऊपरी दाएं कोने में "लाइट" और "सेंसर" इन दो पृष्ठों के स्विच बटन हैं।

"लाइट" पेज में, आप अपने घर में सभी प्रकार की लाइटों को नियंत्रित कर सकते हैं। "सेंसर" पृष्ठ में, आप विभिन्न सेंसर द्वारा ज्ञात मानों की जांच कर सकते हैं।

उपरोक्त दो पृष्ठों के डिज़ाइन के बाद, हम STONE की आधिकारिक वेबसाइट पर उपलब्ध कराए गए STONE TOOL सॉफ़्टवेयर के माध्यम से एक बटन लॉजिक डिज़ाइन का संचालन कर सकते हैं।

यह ध्यान देने योग्य है कि यहां समय प्रदर्शन के लिए उपयोग किया जाने वाला घड़ी स्रोत डिस्प्ले स्क्रीन का घड़ी स्रोत है, न कि MCU घड़ी स्रोत।

टैब पृष्ठ स्विचिंग प्रभाव

STONE TOOL सॉफ़्टवेयर में कोई TAB पृष्ठ स्विचिंग घटक नहीं मिला, इसलिए मैंने TAB पृष्ठ स्विचिंग प्रभाव को प्राप्त करने के लिए एक अन्य विधि के बारे में सोचा।

अवलोकन के माध्यम से मैं दो यूआई छवियां प्रदान करता हूं, यह पाया जा सकता है कि ऊपर की दो छवियां "लाइट" और "सेंसर" टेक्स्ट हैं, अंतर यह है कि उनका पिक्सेल आकार अलग है, इसलिए हमें केवल दो-पिक्सेल स्थिति को सेट करने की आवश्यकता है एक ही पाठ, और फिर संदर्भ के लिए समय और तारीख के ऊपरी बाएं कोने के माध्यम से, आप प्रभाव स्विच करने के लिए टैब प्राप्त कर सकते हैं।

बटन तर्क

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

सेंसर अधिग्रहण

उदाहरण के लिए "वायु गुणवत्ता" लें: यदि आप इनडोर वायु गुणवत्ता प्राप्त करना चाहते हैं, तो हमारे पास वायु गुणवत्ता, वायु गुणवत्ता सेंसर एकत्र करने के लिए एक एमसीयू होना चाहिए, जब एमसीयू संख्यात्मक एल्गोरिथम के माध्यम से वायु गुणवत्ता के पेशेवरों और विपक्षों की तुलना करता है, और फिर एमसीयू एक सीरियल पोर्ट के माध्यम से "अच्छा" या "खराब" के भंडारण क्षेत्र को प्रदर्शित करने के लिए भेजा जाता है, "पाठ चर 0" प्रदर्शन सामग्री को बदलने के लिए, और फिर उपयोगकर्ता सहजता से गुणवत्ता नियंत्रण के गुणों को देख सकता है। इन्हें बाद में MCU कोड में समझाया गया है।

चरण 2: एमसीयू संचार

एमसीयू संचार
एमसीयू संचार
एमसीयू संचार
एमसीयू संचार
एमसीयू संचार
एमसीयू संचार
एमसीयू संचार
एमसीयू संचार

STM32 वह MCU है जिससे हर कोई परिचित है, और यह अंतर्राष्ट्रीय में एक सामान्य MCU मॉडल है। इसलिए, इस परियोजना में उपयोग किए गए STM32 MCU का विशिष्ट मॉडल STM32F103RCT6 है।

STM32 की कई श्रृंखलाएं हैं, जो बाजार की विभिन्न मांगों को पूरा कर सकती हैं। कर्नेल को कॉर्टेक्स-एम 0, एम 3, एम 4 और एम 7 में विभाजित किया जा सकता है, और प्रत्येक कर्नेल को मुख्यधारा, उच्च प्रदर्शन और कम बिजली की खपत में विभाजित किया जा सकता है।

विशुद्ध रूप से सीखने के दृष्टिकोण से, आप F1 और F4 चुन सकते हैं, F1 मूल प्रकार का प्रतिनिधित्व करता है, कॉर्टेक्स-एम 3 कर्नेल के आधार पर, मुख्य आवृत्ति 72MHZ है, F4 उच्च प्रदर्शन का प्रतिनिधित्व करता है, कोर्टेक्स-एम 4 कर्नेल के आधार पर, मुख्य आवृत्ति 180M है।

F1, F4 (429 श्रृंखला और ऊपर) के लिए, विभिन्न कर्नेल और मुख्य आवृत्ति में सुधार के अलावा, उन्नयन की स्पष्ट विशेषता एलसीडी नियंत्रक और कैमरा इंटरफ़ेस है, SDRAM के लिए समर्थन, इस अंतर को परियोजना चयन में प्राथमिकता दी जाएगी। हालांकि, विश्वविद्यालय शिक्षण और उपयोगकर्ताओं की प्रारंभिक शिक्षा के दृष्टिकोण से, F1 श्रृंखला अभी भी पहली पसंद है। वर्तमान में, F1 श्रृंखला के STM32 में बाजार में सबसे अधिक सामग्री और उत्पाद हैं।

STM32 SCM विकास पर्यावरण स्थापना और प्रोग्राम डाउनलोड विधि के बारे में, मैं परिचय नहीं दूंगा।

GPIO आरंभीकरण

इस परियोजना में, हमने कुल 4 GPIO का उपयोग किया, जिनमें से एक PWM आउटपुट पिन है। आइए पहले तीन सामान्य GPIO पोर्ट के आरंभीकरण को देखें:

यह फ़ंक्शन STM32F103C8 के PB0\PB1\PB2 को आउटपुट पिन के रूप में इनिशियलाइज़ करता है और इसे मुख्य फ़ंक्शन से कॉल करता है। आरंभीकरण के बाद, हमें इस GPIO की आउटपुट स्थिति, उच्च और निम्न स्तर को नियंत्रित करने के लिए एक तर्क की आवश्यकता है, इसलिए मैंने नीचे के रूप में फ़ंक्शन लिखा:

यह एक ऐसा फंक्शन है जिसे आप वेरिएबल के नाम से सहज रूप से समझ सकते हैं।

सीरियल पोर्ट इनिशियलाइज़ेशन

सीरियल पोर्ट का इनिशियलाइज़ेशन पार्ट uart.c में है:

फिर 115200 के सीरियल पोर्ट बॉड रेट को इनिशियलाइज़ करने के लिए मुख्य फ़ंक्शन में uart_init को कॉल करें। पिन PA9/PA10 का उपयोग करते हैं

पीडब्लूएम आरंभीकरण

विशिष्ट कदम:

1. आरसीसी घड़ी सेट करें;

2. GPIO घड़ी सेट करें; GPIO मोड को GPIO_Model_AF_PP पर, या GPIO_PinRemapConfig() फ़ंक्शन पर सेट किया जाना चाहिए यदि पिन रीमैप की आवश्यकता है।

3. TIMx टाइमर के प्रासंगिक रजिस्टर सेट करें;

4. TIMx टाइमर का PWM संबंधित रजिस्टर सेट करें;

ए पीडब्लूएम मोड सेट करें

बी सेट कर्तव्य चक्र (सूत्र गणना)

सी। आउटपुट तुलना ध्रुवीयता सेट करें (पहले पेश किया गया)

D. सबसे महत्वपूर्ण बात, TIMx की आउटपुट स्थिति को सक्षम करें और TIMx के PWM आउटपुट को सक्षम करें; प्रासंगिक सेटिंग्स पूर्ण होने के बाद, PWM आउटपुट प्राप्त करने के लिए TIMx_Cmd () द्वारा TIMx टाइमर चालू किया जाता है। इस TIM3_PWM_Init को मुख्य फ़ंक्शन से कॉल करें।

चरण 3: लॉजिक कोड राइटिंग

लॉजिक कोड राइटिंग
लॉजिक कोड राइटिंग
लॉजिक कोड राइटिंग
लॉजिक कोड राइटिंग
लॉजिक कोड राइटिंग
लॉजिक कोड राइटिंग

प्रदर्शन घटक पता परिभाषा

प्रदर्शन के घटकों के अलग-अलग पते हैं, और यहां मैंने उन सभी को मैक्रो परिभाषाओं के रूप में लिखा है: सीरियल डेटा रिसेप्शन

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

दीपक की स्विचिंग स्थिति को नियंत्रित करें

मुख्य समारोह में, मैंने दीपक की स्विच स्थिति को नियंत्रित करने के लिए कुछ तर्क कोड लिखे: जैसा कि हम देख सकते हैं, कोड पहले यह निर्धारित करता है कि सीरियल पोर्ट डेटा प्राप्त हुआ है या नहीं, और जब सीरियल पोर्ट डेटा प्राप्त होता है, तो यह निर्धारित करता है कि उपयोगकर्ता कौन सा बटन है डिस्प्ले स्क्रीन पर दबाता है। डिस्प्ले पर अलग-अलग बटनों के अलग-अलग पते होते हैं, जिन्हें स्टोन टूल सॉफ्टवेयर में देखा जा सकता है: जब उपयोगकर्ता "लिविंग रूम" बटन दबाता है, तो डिस्प्ले स्क्रीन के सीरियल पोर्ट द्वारा भेजे गए डेटा के चौथे और पांचवें बिट्स होते हैं बटन का पता। चूंकि यहां सेट किए गए सभी बटनों में से चौथा बिट 0x00 है, हम सीधे पांचवें बिट के डेटा को देखते हुए यह निर्धारित कर सकते हैं कि उपयोगकर्ता किस बटन को दबाता है। उपयोगकर्ता द्वारा दबाए गए बटन को प्राप्त करने के बाद, हमें बटन दबाए जाने पर प्राप्त उपयोगकर्ता डेटा का न्याय करने की आवश्यकता होती है, जो डिस्प्ले स्क्रीन से भेजे गए डेटा का आठवां अंक है। इसलिए, हम निम्नलिखित नियंत्रण करते हैं: प्रकाश की ऑन-ऑफ स्थिति को नियंत्रित करने के लिए "Light_Contral" फ़ंक्शन में बटन पता पैरामीटर और उपयोगकर्ता डेटा लिखें। Light_Contral फ़ंक्शन इकाई इस प्रकार है: जैसा कि आप देख सकते हैं, यदि बटन का पता "लिविंग रूम" है और उपयोगकर्ता डेटा "लाइटऑन" है, तो MCU का PB0 पिन उच्च-स्तरीय आउटपुट पर सेट है, और लाइट चालू है. अन्य तीन बटन समान हैं, लेकिन मैं यहाँ नहीं जाऊँगा।

पीडब्लूएम आउटपुट

मेरे द्वारा डिज़ाइन किए गए UI में एक स्लाइडिंग रेगुलेटर है, जिसका उपयोग "चिल्ड्रन रूम" की रोशनी की चमक को नियंत्रित करने के लिए किया जाता है। MCU PWM द्वारा कार्यान्वित किया जाता है। PWM आउटपुट पिन PB5 है। कोड इस प्रकार है: स्लाइडिंग समायोजक 0x00 के न्यूनतम मान और 0x64 के अधिकतम मान पर सेट है। स्लाइड करते समय, डिस्प्ले स्क्रीन का सीरियल पोर्ट प्रासंगिक पते और डेटा भी भेजेगा, और फिर निम्न फ़ंक्शन को कॉल करके PWM आउटपुट का कर्तव्य अनुपात सेट करें:

चरण 4: सेंसर अधिग्रहण

सेंसर अधिग्रहण
सेंसर अधिग्रहण
सेंसर अधिग्रहण
सेंसर अधिग्रहण
सेंसर अधिग्रहण
सेंसर अधिग्रहण

डिस्प्ले स्क्रीन के "सेंसर" के पेज में चार सेंसर डेटा होते हैं।

प्रदर्शन में डेटा का एक भंडारण पता भी होता है, और हम एमसीयू के सीरियल पोर्ट के माध्यम से इन पतों पर डेटा लिखकर वास्तविक सामग्री को बदल सकते हैं।

यहां मैंने एक साधारण कोड कार्यान्वयन किया है:

प्रदर्शन डेटा हर 5 सेकंड में अपडेट किया जाता है, और मैंने केवल प्रासंगिक सेंसर संग्रह फ़ंक्शन का एक साधारण डेमो लिखा है, क्योंकि मेरे हाथ में ये सेंसर नहीं हैं।

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

चरण 5: वास्तविक संचालन प्रभाव

सिफारिश की: