विषयसूची:
वीडियो: FPGA से कोई भी सेंसर बनाएं: 4 कदम
2024 लेखक: John Day | [email protected]. अंतिम बार संशोधित: 2024-01-30 09:21
अधिकांश निर्माताओं ने अपने जीवन में कम से कम एक बार थर्मामीटर बनाने की कोशिश की, हो सकता है कि उनके पास घर पर जो थर्मामीटर है वह पर्याप्त स्मार्ट नहीं है, या शायद उन्हें लगता है कि वे अगले नेस्ट का निर्माण कर सकते हैं। फिर भी, किसी बिंदु पर उनके पास एक माइक्रोकंट्रोलर था जिसमें उनके अत्याधुनिक सॉफ़्टवेयर एक तापमान सेंसर (और शायद अन्य सेंसर: दबाव, प्रकाश) से जुड़े थे। अब तक सब कुछ सही है, सॉफ्टवेयर चल रहा है और सेंसर सेंस कर रहा है। आइए इसका परीक्षण करें!
हम्म्म्म… हो सकता है कि उसे हेयर ड्रायर का उपयोग करके सेंसर को गर्म करना चाहिए और बर्फ का उपयोग करके इसे ठंडा करना चाहिए, यह कुछ समय के लिए काम करता है। लेकिन यह पेशेवर नहीं लगता है, यदि आप इसे गर्म करते हैं तो सेंसर बहुत तेज़ी से मान बदलता है, यह कुछ डिग्री से अधिक गर्म नहीं होता है। परियोजना एक बस्ट है! लेकिन एल्गोरिथ्म नया है, बहुत सारे कारकों को ध्यान में रखता है, क्या शर्म की बात है कि वह इस मूर्खतापूर्ण छोटी सी बात पर फंस गया।
मेरा समाधान यह है: एक एफपीजीए एक पीसी से स्ट्रीम किए गए मूल्यों के साथ एक सेंसर के रूप में कार्य करें (या मेमोरी में संग्रहीत, या एफपीजीए के अंदर एड-हॉक बनाया गया)। तो आपके कीमती MCU के लिए FPGA एक सेंसर की तरह दिखता है, लेकिन कोई सेंसर नहीं: जो भी सेंसर आपको पसंद हो। हो सकता है कि आप तय करें कि आपको अपेक्षा से अधिक रिज़ॉल्यूशन या तेज़ प्रतिक्रिया समय की आवश्यकता है, आपको सेंसर को बदलना होगा। इसे ऑनलाइन ऑर्डर करें, यह कुछ दिनों में, कुछ महीनों में आ जाएगा, कौन जानता है। अपने पीसीबी को रिस्पिन करें या नए सेंसर के साथ एक मॉड्यूल ऑर्डर करें। या … कुछ क्लिक और FPGA को आपके बिल्कुल नए सेंसर के रूप में कॉन्फ़िगर किया गया है और यह सटीक आंतरिक कॉन्फ़िगरेशन का अनुकरण कर सकता है।
इसे लिखने के समय, FPGA, BRAM (FPGA पर) में संग्रहीत तापमान डेटा के साथ LM75 के रूप में कार्य कर सकता है।
चरण 1: एमसीयू
मेरी पसंद का एमसीयू एलपीसीएक्सप्रेसो पर एलपीसी4337 है। इसके ऊपर मेरे पास एक डिस्प्ले और एक वास्तविक LM75 सेंसर के साथ एक शील्ड (LPC जनरल पर्पस शील्ड) है। LPC4337 एक ARM Cortex M4 है जो 200MHz पर चल रहा है और एक छोटा Cortex M0 (यहाँ उपयोग नहीं किया गया है)। वास्तविक सेंसर I2C1 परिधीय से जुड़ा है और हमारा आभासी I2C0 से जुड़ा होगा। स्रोत मेरे GitHub पर उपलब्ध है।
इसका निर्माण कैसे करें? LPCXpresso IDE को LPCOpen लाइब्रेरी के साथ डाउनलोड करें। उस लाइब्रेरी को IDE में आयात करें और GitHub से प्रोजेक्ट भी खोलें। सब कुछ कॉन्फ़िगर किया जाना चाहिए और आप निचले बाएं कोने में "डीबग" पर क्लिक कर सकते हैं।
पूरी परियोजना एनएक्सपी के उदाहरणों में से एक पर आधारित है (यह दिखाने के लिए कि मेरी परियोजना एक वास्तविक सेंसर का अनुकरण करती है और एमसीयू पक्ष पर विशेष कोड की आवश्यकता नहीं है)। मुख्य फ़ाइल में (iox_sensor.cpp कहा जाता है) यह कोड निहित है:
#SENSORS_ON_SHIELD परिभाषित करें
#if परिभाषित (SENSORS_ON_SHIELD) # SHIELD_I2C I2C1 को परिभाषित करें #elif परिभाषित (SENSORS_ON_FPGA) # SHIELD_I2C I2C0 को परिभाषित करें #endif
SENSOR_ON_SHIELD और SENSOR_OR_FPGA को बदलकर उपयोगकर्ता संकलन समय पर स्विच करने में सक्षम है कि किस सेंसर से बात करनी है, असली या आभासी एक, क्योंकि वे अलग-अलग I2C पिन पर हैं।
चरण 2: FPGA
मेरी पसंद का FPGA बोर्ड Digilent द्वारा बनाया गया एक Artix 7 है, जिसमें Xilinx Arty 7 है। दो PMod कनेक्टर का उपयोग किया जाता है, एक डिबगिंग के लिए और एक वास्तविक पेलोड के लिए, MCU बोर्ड के साथ कनेक्शन।
फिर से, FPGA के लिए स्रोत कोड मेरे GitHub (fpgaSide फ़ोल्डर) पर उपलब्ध है।
इसका निर्माण कैसे करें? Xilinx Vivado IDE डाउनलोड करें, खरीदें या खोलें। GitHub से प्रोजेक्ट फ़ाइलें आयात करें। फाइलों में से एक (content.coe) कच्चे प्रारूप में तापमान डेटा है जिसे नकली सेंसर पर स्ट्रीम किया जा रहा है। इसी नाम की एक एक्सेल फ़ाइल भी है जो मानव पठनीय तापमान डेटा को कच्चे LM75 डेटा में बदलने में मदद करती है। मैं जावा में लिखे गए सॉफ़्टवेयर के एक टुकड़े के साथ इसे स्वचालित प्रक्रिया में बदलने की योजना बना रहा हूं लेकिन तब तक यह समाधान काम करता है। संश्लेषण और कार्यान्वयन में थोड़ा समय लगना चाहिए, इसे ध्यान में रखें।
चरण 3: यह कैसे काम करता है?
जैसा कि मैंने कहा, MCU के लिए, FPGA एक सेंसर की तरह दिखता है, अधिक सटीक रूप से एक I2C सेंसर। I2C परिधीय का आउटपुट FPGA के इनपुट से जुड़ा है। FPGA के अंदर 3 मुख्य घटक होते हैं: - I2C नियंत्रक- I2C डिवाइस- डेटा I2C नियंत्रक FPGA के पिन से I2C डेटा प्राप्त करता है और उन्हें शेष FPGA को भेजता है और इसे उल्टे क्रम में करता है। यह I2C प्रोटोकॉल के लिए एक आंतरिक स्थिति मशीन रखता है (वैसे, यहां इसके लिए प्रलेखन है)। यह घटक I2C डिवाइस को क्या भेजता है? वर्तमान में प्राप्त बाइट, वर्तमान संचार में उस बाइट की स्थिति और क्या MCU FPGA को लिख रहा है या पढ़ रहा है। I2C डिवाइस भेजे गए बाइट्स को प्राप्त करता है और सेंसर की नकली आंतरिक संरचना को अपडेट करता है। यह सिर्फ रजिस्टर पॉइंटर को अपडेट कर सकता है या डेटा स्रोत से नए डेटा का अनुरोध कर सकता है। डेटा घटक नए डेटा बिंदुओं को स्ट्रीम करता है। वर्तमान में यह केवल एक ROM मेमोरी है जिसका पता प्रति सेकंड दो बार (लगभग) बढ़ाया जाता है।
मेरा अंतिम लक्ष्य क्या है? इसे दूसरी तस्वीर में दिखाया गया है। वह है: FPGA के अंदर एक ही समय में अधिक I2C उपकरणों (सेंसर और अन्य) को अनुकरणीय बनाना संभव बनाता है। सेंसर के बैकएंड पर डेटा को FPGA में कैश किया जाना है और USB या ईथरनेट के माध्यम से पीसी से स्ट्रीम किया जाना है। अधिक उन्नत सेंसर और अन्य I2C उपकरणों (स्मृति, एलईडी ड्राइवर आदि) का समर्थन करें।
चरण 4: यह सब एक साथ रखना
अब सब कुछ एक साथ जोड़ने का समय है। सैद्धांतिक रूप से, यह सरल है: mcu बोर्ड में एक PMod कनेक्टर (I2C0 और SSP0 (SPI की तरह काम कर सकता है)) है। Artix बोर्ड में 4 PMod कनेक्टर हैं जिनका उपयोग आप अपनी इच्छानुसार कर सकते हैं। मैं एमसीयू से बात करने के लिए कनेक्टर डी और अपने लॉजिक एनालाइजर से कनेक्ट करने के लिए कनेक्टर बी को चुनता हूं।
चेतावनी
आप दोनों बोर्डों को ऐसे ही एक साथ नहीं जोड़ सकते। क्यों? PMod एक मास्टर/होस्ट बोर्ड (जो शक्ति देता है) को एक गुलाम/सेंसर बोर्ड (जो शक्ति प्राप्त करता है) के कनेक्शन को आसान बनाने के लिए बनाया गया था। लेकिन इस परियोजना में दोनों बोर्ड शक्ति देते हैं और यदि आप एक बोर्ड से 3.3V आउटपुट को दूसरे बोर्ड के 3.3V आउटपुट से जोड़ते हैं तो खराब चीजें हो सकती हैं। लेकिन वे नहीं हो सकते हैं और आप केवल FPGA के पावर रेल के मापदंडों को बदल सकते हैं (वे बहुत सावधानी से डिज़ाइन किए गए हैं)। तो यह जोखिम न लें और कनेक्टर को एक पिन बाईं ओर ले जाएं (और FPGA बोर्ड को भी फ्लिप करें) जैसा कि ऊपर की तस्वीरों में देखा गया है। यहां पीएमओडी विनिर्देश है, आप इसका अध्ययन कर सकते हैं, मैंने संक्षेप में जो किया वह दो बोर्डों के वीसीसी को जोड़ने के लिए नहीं है।
सिफारिश की:
एक आसान इन्फिनिटी मिरर क्यूब बनाएं - कोई 3डी प्रिंटिंग और कोई प्रोग्रामिंग नहीं: 15 कदम (चित्रों के साथ)
एक आसान इन्फिनिटी मिरर क्यूब बनाएं | कोई 3D प्रिंटिंग और कोई प्रोग्रामिंग नहीं: हर कोई एक अच्छा इन्फिनिटी क्यूब पसंद करता है, लेकिन ऐसा लगता है कि इसे बनाना मुश्किल होगा। इस निर्देश के लिए मेरा लक्ष्य आपको चरण-दर-चरण यह दिखाना है कि इसे कैसे बनाया जाए। इतना ही नहीं, जो निर्देश मैं आपको दे रहा हूं, उससे आप एक
ईथरनेट केबल का उपयोग करके लैपटॉप / पीसी के माध्यम से रास्पबेरी पाई 4 सेट करें (कोई मॉनिटर नहीं, कोई वाई-फाई नहीं): 8 कदम
ईथरनेट केबल का उपयोग करके लैपटॉप / पीसी के माध्यम से रास्पबेरी पाई 4 सेट करें (कोई मॉनिटर नहीं, कोई वाई-फाई नहीं): इसमें हम सेट अप के लिए 1 जीबी रैम के रास्पबेरी पाई 4 मॉडल-बी के साथ काम करेंगे। रास्पबेरी-पाई एक एकल बोर्ड कंप्यूटर है जिसका उपयोग शैक्षिक उद्देश्यों और एक किफायती लागत के साथ DIY परियोजनाओं के लिए किया जाता है, इसके लिए 5V 3A की बिजली आपूर्ति की आवश्यकता होती है। जैसे ऑपरेटिंग सिस्टम
एक इनहाउस IoT वायु गुणवत्ता सेंसर बनाएं कोई क्लाउड आवश्यक नहीं: 10 कदम
एक आंतरिक IoT वायु गुणवत्ता सेंसर का निर्माण करें जिसके लिए किसी बादल की आवश्यकता नहीं है: इनडोर या बाहरी हवा की गुणवत्ता प्रदूषण के कई स्रोतों और मौसम पर भी निर्भर करती है। यह उपकरण 2 सेंसर चिप्स का उपयोग करके कुछ सामान्य और कुछ सबसे दिलचस्प मापदंडों को कैप्चर करता है। तापमानआर्द्रतादबावऑर्गेनिक गैसमाइक्रो
कोई मेकी मेकी नहीं? कोई समस्या नहीं ! घर पर कैसे बनाएं अपने मेसी मेसी!: 3 कदम
कोई मेकी मेकी नहीं? कोई समस्या नहीं ! घर पर अपना मेसी मेसी कैसे बनाएं !: क्या आप कभी इंस्ट्रक्शंस पर मेकी मेकी प्रतियोगिता में भाग लेना चाहते हैं, लेकिन आपके पास कभी मेकी मेसी नहीं है?!अब आप कर सकते हैं! निम्नलिखित गाइड के साथ, मैं आपको दिखाना चाहता हूं कि कुछ सरल घटकों के साथ अपनी खुद की मेसी मेसी कैसे बनाएं, जिसे आप कर सकते हैं
जीरो कॉस्ट लैपटॉप कूलर / स्टैंड (कोई गोंद नहीं, कोई ड्रिलिंग नहीं, कोई नट और बोल्ट नहीं, कोई पेंच नहीं): 3 कदम
जीरो कॉस्ट लैपटॉप कूलर / स्टैंड (कोई गोंद नहीं, कोई ड्रिलिंग नहीं, कोई नट और बोल्ट नहीं, कोई पेंच नहीं): अद्यतन: कृपया कृपया वोट करें मेरे निर्देशनीय के लिए, धन्यवाद ^_^ आप मेरे अन्य लोगों के लिए मतदान करना भी पसंद कर सकते हैं पर प्रवेश