विषयसूची:

एंबेडेड यूनिवर्सल इंटरफेस बोर्ड - यूएसबी/ब्लूटूथ/वाईफाई नियंत्रण: 6 कदम
एंबेडेड यूनिवर्सल इंटरफेस बोर्ड - यूएसबी/ब्लूटूथ/वाईफाई नियंत्रण: 6 कदम

वीडियो: एंबेडेड यूनिवर्सल इंटरफेस बोर्ड - यूएसबी/ब्लूटूथ/वाईफाई नियंत्रण: 6 कदम

वीडियो: एंबेडेड यूनिवर्सल इंटरफेस बोर्ड - यूएसबी/ब्लूटूथ/वाईफाई नियंत्रण: 6 कदम
वीडियो: Simple Programming, Amazing Results: DIY Bluetooth Speaker with #ESP32 and 2 Speakers 2024, नवंबर
Anonim
एंबेडेड यूनिवर्सल इंटरफेस बोर्ड - यूएसबी/ब्लूटूथ/वाईफाई कंट्रोल
एंबेडेड यूनिवर्सल इंटरफेस बोर्ड - यूएसबी/ब्लूटूथ/वाईफाई कंट्रोल
एंबेडेड यूनिवर्सल इंटरफेस बोर्ड - यूएसबी/ब्लूटूथ/वाईफाई कंट्रोल
एंबेडेड यूनिवर्सल इंटरफेस बोर्ड - यूएसबी/ब्लूटूथ/वाईफाई कंट्रोल

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

मैं अक्सर यह भी पाता हूं कि मैं एक पीसी के साथ एक एम्बेडेड मॉड्यूल को इंटरफेस करना चाहता हूं। यदि मॉड्यूल में विशेष रूप से एक यूएसबी कनेक्शन नहीं है जो अक्सर ऐसा होता है तो आपको आम तौर पर एक अधिक कीमत वाला यूएसबी कनवर्टर खरीदना पड़ता है जो केवल एसपीआई या सिर्फ आई२सी जैसे एक ही काम करेगा।

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

मेरे द्वारा तय किए गए बोर्ड की एम्बेडेड इंटरफ़ेस सुविधाएँ शामिल हैं।

  • डिजिटल I/O
  • I2C
  • एसपीआई
  • यूएआरटी
  • पीडब्लूएम
  • सर्वो मोटर
  • एडीसी इनपुट
  • डीएसी आउटपुट

जिनमें से सभी का पूरी तरह से स्वतंत्र रूप से उपयोग किया जा सकता है।

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

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

मैंने कैन, लिन, एच-ब्रिज इत्यादि जैसी चीजों को जोड़ने के बारे में भी सोचा लेकिन ये बाद में वी 2 संशोधन के साथ आ सकते हैं।

चरण 1: पीसीबी डिजाइन करना

पीसीबी डिजाइनिंग
पीसीबी डिजाइनिंग
पीसीबी डिजाइनिंग
पीसीबी डिजाइनिंग
पीसीबी डिजाइनिंग
पीसीबी डिजाइनिंग
पीसीबी डिजाइनिंग
पीसीबी डिजाइनिंग

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

अपने पसंदीदा इलेक्ट्रॉनिक्स आपूर्तिकर्ता को देखते हुए मुझे एक चिप मिली जिसके साथ मैं सहज था जिसमें वे सुविधाएँ थीं जिनकी मुझे तलाश थी और यह एक उचित लागत थी। मैं जिस चिप पर उतरा वह PIC18F24K50 थी।

उपलब्ध 23 I/O पिन के साथ इसने मुझे इन सुविधाओं की अनुमति दी

  • डिजिटल I/O
  • I2C
  • एसपीआई
  • यूएआरटी
  • पीडब्लूएम एक्स 2
  • सर्वो मोटर x 6
  • एडीसी इनपुट एक्स 3
  • डीएसी आउटपुट एक्स 1
  • I/O 5V या 3V3. से संचालित होता है
  • स्थिति एलईडी

मेरे द्वारा चुने गए IC का एक दोष यह है कि इसमें केवल एक UART परिधीय है और इसलिए ब्लूटूथ या Wifi नियंत्रण पद्धति का उपयोग करने से आप UART कनेक्शन का उपयोग करने में सक्षम नहीं होंगे।

ऊपर की छवियों में दिखाया गया है कि योजनाबद्ध और पीसीबी समाप्त हो गए हैं।

चरण 2: प्रोटोकॉल डिजाइन करना

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

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

बोर्ड के प्रत्येक कार्य के लिए आपको किसी भी पैरामीटर और रिटर्न का संकेत देना चाहिए। उदाहरण के लिए, एडीसी इनपुट को पढ़ने के लिए एक फ़ंक्शन में यह निर्दिष्ट करने के लिए एक पैरामीटर हो सकता है कि कौन सा इनपुट नमूना है और एक रिटर्न मान जिसमें परिणाम है।

मेरे डिजाइन में यहां उन कार्यों की सूची दी गई है जिन्हें मैं शामिल करना चाहता था:

  • डिजिटल I/O

    • सेटपिन (पिन नंबर, राज्य)
    • राज्य = गेटपिन (पिननंबर)
  • एसपीआई

    • प्रारंभ करें (एसपीआई मोड)
    • डेटाइन = स्थानांतरण (डेटाऑट)
    • ControlChipSelect (चैनल, राज्य)
    • सेटप्रेस्केलर (दर)
  • I2C

    • प्रारंभ करें ()
    • शुरू ()
    • पुनः आरंभ करें ()
    • विराम ()
    • स्लेवएक = भेजें (डेटाऑट)
    • डेटाइन = प्राप्त करें (अंतिम)
  • यूएआरटी

    • प्रारंभ करें ()
    • TX बाइट (डेटाऑट)
    • बाइट्सउपलब्ध = RX गणना ()
    • डेटाइन = आरएक्स बाइट ()
    • सेटबॉड (बॉड)
  • पीडब्लूएम

    • सक्षम करें (चैनल)
    • अक्षम करें (चैनल)
    • सेट फ़्रीक्वेंसी (चैनल, फ़्रिक्वेंसी)
    • गेटमैक्स ड्यूटी (ड्यूटी)
    • सेट ड्यूटी (ड्यूटी)
  • इमदादी

    • सक्षम करें (चैनल)
    • अक्षम करें (चैनल)
    • सेटपोजिशन (चैनल, स्थिति)
  • एडीसी

    एडीसी नमूना = नमूना (चैनल)

  • डीएसी

    • सक्षम
    • अक्षम करना
    • सेटआउटपुट (वोल्टेज)
  • वाई - फाई

    • सेटएसएसआईडी (एसएसआईडी)
    • पासवर्ड सेट करें (पासवर्ड)
    • स्थिति = CheckConnectionStatus ()
    • आईपी = गेटआईपीएड्रेस ()

पैरामीटर्स को कोष्ठकों में दिखाया जाता है और रिटर्न बराबर चिह्न से पहले दिखाया जाता है।

कोडिंग शुरू करने से पहले मैं प्रत्येक फ़ंक्शन को 128 (बाइनरी 0b10000000) से शुरू होने वाला एक कमांड कोड असाइन करता हूं और ऊपर की ओर काम करता हूं। मैं यह सुनिश्चित करने के लिए पूरी तरह से प्रोटोकॉल का दस्तावेजीकरण करता हूं कि एक बार जब मेरा सिर कोड में हो तो मेरे पास वापस संदर्भित करने के लिए एक अच्छा दस्तावेज़ है। इस परियोजना के लिए पूर्ण प्रोटोकॉल दस्तावेज़ संलग्न है और इसमें आने वाले कमांड कोड और बिट चौड़ाई शामिल हैं।

चरण 3: फर्मवेयर डिजाइन करना

फर्मवेयर डिजाइनिंग
फर्मवेयर डिजाइनिंग
फर्मवेयर डिजाइनिंग
फर्मवेयर डिजाइनिंग
फर्मवेयर डिजाइनिंग
फर्मवेयर डिजाइनिंग

एक बार प्रोटोकॉल स्थापित हो जाने के बाद यह हार्डवेयर पर कार्यक्षमता को लागू करने का मामला है।

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

राज्य मशीन में तीन राज्य होते हैं:

१) आदेशों की प्रतीक्षा

2) पैरामीटर प्राप्त करना

3) उत्तर दें

तीन राज्य निम्नानुसार बातचीत करते हैं:

1) हम बफर में आने वाले बाइट्स से गुजरते हैं जब तक कि हमारे पास एक बाइट न हो जिसमें सबसे महत्वपूर्ण बिट सेट हो। एक बार जब हम ऐसी बाइट प्राप्त कर लेते हैं तो हम इसे ज्ञात आदेशों की सूची के विरुद्ध जांचते हैं। यदि हमें एक मैच मिलता है तो हम प्रोटोकॉल से मेल खाने के लिए पैरामीटर बाइट्स और रिटर्न बाइट्स की संख्या निर्दिष्ट करते हैं। यदि कोई पैरामीटर बाइट्स नहीं हैं तो हम यहां कमांड कर सकते हैं और या तो स्टेट 3 पर जा सकते हैं या स्टेट 1 को फिर से शुरू कर सकते हैं। यदि पैरामीटर बाइट्स हैं तो हम स्टेट 2 में चले जाते हैं।

2) हम आने वाले बाइट्स से गुजरते हैं जब तक कि हम सभी मापदंडों को संग्रहीत नहीं कर लेते। एक बार हमारे पास सभी पैरामीटर होने के बाद हम कमांड करते हैं। अगर रिटर्न बाइट्स हैं तो हम स्टेज 3 में चले जाते हैं। अगर भेजने के लिए कोई रिटर्न बाइट्स नहीं हैं तो हम स्टेज 1 पर लौट आते हैं।

3) हम आने वाले बाइट्स से गुजरते हैं और प्रत्येक बाइट के लिए हम एक वैध रिटर्न बाइट के साथ इको बाइट को ओवरराइट करते हैं। एक बार जब हम सभी रिटर्न बाइट भेज देते हैं तो हम स्टेज 1 पर लौट आते हैं।

मैंने फर्मवेयर को डिजाइन करने के लिए फ्लोकोड का उपयोग किया क्योंकि यह अच्छी तरह से प्रदर्शित करता है कि मैं क्या कर रहा हूं। Arduino या अन्य एम्बेडेड प्रोग्रामिंग भाषाओं में भी यही काम समान रूप से किया जा सकता है।

पहला कदम पीसी के साथ संचार स्थापित करना है। ऐसा करने के लिए माइक्रो को सही गति से चलाने के लिए कॉन्फ़िगर करने की आवश्यकता है और हमें USB और UART बाह्य उपकरणों को चलाने के लिए कोड जोड़ना होगा। फ़्लोकोड में यह प्रोजेक्ट में USB सीरियल घटक और Coms घटक मेनू से UART घटक को खींचने जितना आसान है।

हम UART पर आने वाली कमांड को पकड़ने के लिए एक RX इंटरप्ट और बफर जोड़ते हैं और हम नियमित रूप से USB को पोल करते हैं। फिर हम अपनी अवकाश प्रक्रिया में बफर कर सकते हैं।

फ्लोकोड परियोजना और उत्पन्न सी कोड संलग्न हैं।

चरण 4: फ्लोकोड के माध्यम से इंटरफेसिंग

फ्लोकोड के माध्यम से इंटरफेसिंग
फ्लोकोड के माध्यम से इंटरफेसिंग
फ्लोकोड के माध्यम से इंटरफेसिंग
फ्लोकोड के माध्यम से इंटरफेसिंग
फ्लोकोड के माध्यम से इंटरफेसिंग
फ्लोकोड के माध्यम से इंटरफेसिंग

फ़्लोकोड सिमुलेशन बहुत शक्तिशाली है और हमें बोर्ड से बात करने के लिए एक घटक बनाने की अनुमति देता है। घटक बनाने में अब हम घटक को अपनी परियोजना में खींच सकते हैं और तुरंत बोर्ड के कार्य उपलब्ध करा सकते हैं। एक अतिरिक्त बोनस के रूप में किसी भी मौजूदा घटक जिसमें SPI, I2C या UART परिधीय है, का उपयोग सिमुलेशन में किया जा सकता है और कॉमस डेटा को एक इंजेक्टर घटक के माध्यम से इंटरफ़ेस बोर्ड में पाइप किया जा सकता है। संलग्न छवियां डिस्प्ले पर एक संदेश मुद्रित करने के लिए एक सरल प्रोग्राम दिखाती हैं। कॉमस डेटा जो इंटरफ़ेस बोर्ड के माध्यम से वास्तविक डिस्प्ले हार्डवेयर और I2C डिस्प्ले, I2C इंजेक्टर और इंटरफ़ेस बोर्ड घटकों के साथ घटक सेटअप को भेजा जाता है।

फ़्लोकोड 8.1 के लिए नया SCADA मोड एक पूर्ण अतिरिक्त बोनस है जिसमें हम एक प्रोग्राम ले सकते हैं जो फ़्लोकोड सिम्युलेटर में कुछ करता है और इसे निर्यात करता है ताकि यह बिना किसी लाइसेंसिंग मुद्दों के किसी भी पीसी पर अकेले चल सके। यह परीक्षण रिसाव या सेंसर क्लस्टर जैसी परियोजनाओं के लिए बहुत अच्छा हो सकता है।

मैं इस SCADA मोड का उपयोग वाईफ़ाई कॉन्फ़िगरेशन टूल बनाने के लिए करता हूं जिसका उपयोग SSID और पासवर्ड को कॉन्फ़िगर करने के साथ-साथ मॉड्यूल का IP पता एकत्र करने के लिए किया जा सकता है। यह मुझे USB कनेक्शन का उपयोग करके सब कुछ सेट करने की अनुमति देता है और फिर चीजें चलने के बाद एक वाईफ़ाई नेटवर्क कनेक्शन पर स्थानांतरित कर देता है।

कुछ उदाहरण प्रोजेक्ट संलग्न हैं।

चरण 5: अन्य इंटरफेसिंग तरीके

साथ ही फ़्लोकोड आप इंटरफ़ेस बोर्ड के साथ संवाद करने के लिए अपनी पसंद की प्रोग्रामिंग भाषा का बहुत अधिक उपयोग कर सकते हैं। हमने फ़्लोकोड का उपयोग किया क्योंकि इसमें पहले से ही शामिल भागों की एक लाइब्रेरी थी जिसे हम तुरंत उठकर चला सकते थे लेकिन यह कई अन्य भाषाओं पर भी लागू होता है।

इंटरफ़ेस बोर्ड के साथ संवाद करने के लिए भाषाओं और विधियों की एक सूची यहां दी गई है।

पायथन - COM पोर्ट या आईपी पते पर डेटा स्ट्रीम करने के लिए सीरियल लाइब्रेरी का उपयोग करना

मैटलैब - COM पोर्ट या आईपी पते पर डेटा स्ट्रीम करने के लिए फ़ाइल कमांड का उपयोग करना

सी ++ / सी # / वीबी - या तो पूर्व-लिखित डीएलएल का उपयोग करना, सीधे COM पोर्ट या विंडोज टीसीपी/आईपी एपीआई तक पहुंचना

लैबव्यू - या तो पूर्व-लिखित डीएलएल, वीज़ा सीरियल घटक या टीसीपी/आईपी घटक का उपयोग करना

अगर कोई उपरोक्त भाषाओं को लागू होते देखना चाहता है तो कृपया मुझे बताएं।

चरण 6: तैयार उत्पाद

तैयार उत्पाद
तैयार उत्पाद
तैयार उत्पाद
तैयार उत्पाद
तैयार उत्पाद
तैयार उत्पाद

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

मैंने सहकर्मियों के लिए कुछ बोर्ड भी सौंपे हैं ताकि वे अपने कार्य प्रवाह में भी सुधार कर सकें और इन्हें बहुत अच्छी तरह से प्राप्त किया गया है।

मेरे निर्देश को पढ़ने के लिए धन्यवाद, मुझे आशा है कि आपको यह उपयोगी लगा होगा और उम्मीद है कि यह आपको अपनी उत्पादकता को गति देने के लिए अपने स्वयं के उपकरण बनाने के लिए प्रेरित करेगा।

सिफारिश की: