विषयसूची:

Arduino के साथ LV-MaxSonar-EZ और HC-SR04 सोनार रेंज फाइंडर्स की तुलना: 20 कदम (चित्रों के साथ)
Arduino के साथ LV-MaxSonar-EZ और HC-SR04 सोनार रेंज फाइंडर्स की तुलना: 20 कदम (चित्रों के साथ)

वीडियो: Arduino के साथ LV-MaxSonar-EZ और HC-SR04 सोनार रेंज फाइंडर्स की तुलना: 20 कदम (चित्रों के साथ)

वीडियो: Arduino के साथ LV-MaxSonar-EZ और HC-SR04 सोनार रेंज फाइंडर्स की तुलना: 20 कदम (चित्रों के साथ)
वीडियो: TPB #84 - Weather Proof Motion Sensor 2024, नवंबर
Anonim
Arduino के साथ LV-MaxSonar-EZ और HC-SR04 सोनार रेंज फाइंडर्स की तुलना करना
Arduino के साथ LV-MaxSonar-EZ और HC-SR04 सोनार रेंज फाइंडर्स की तुलना करना
Arduino के साथ LV-MaxSonar-EZ और HC-SR04 सोनार रेंज फाइंडर्स की तुलना करना
Arduino के साथ LV-MaxSonar-EZ और HC-SR04 सोनार रेंज फाइंडर्स की तुलना करना

मुझे लगता है कि कई परियोजनाओं (विशेष रूप से रोबोट) को वास्तविक समय में किसी वस्तु की दूरी को मापने की आवश्यकता होती है, या इससे लाभ हो सकता है। सोनार रेंज फाइंडर अपेक्षाकृत सस्ते होते हैं और इन्हें आसानी से Arduino जैसे माइक्रो-कंट्रोलर से जोड़ा जा सकता है।

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

मैं बेहद लोकप्रिय HC-SR04 (बग-आई) डिवाइस की तुलना कम सामान्य LV-MaxSonar-EZ डिवाइस से करना चाहता था, यह देखने के लिए कि मैं एक के बजाय दूसरे का उपयोग कब करना चाहता हूं। मैं अपने निष्कर्षों और सेटअप को साझा करना चाहता था ताकि आप दोनों के साथ प्रयोग कर सकें और तय कर सकें कि आपके अगले प्रोजेक्ट में किसका उपयोग करना है।

ये दोनों क्यों…

HC-SR04 क्यों? 'बग-आई' HC-SR04 बेहद लोकप्रिय है - कुछ कारणों से:

  • यह सस्ता है - यदि थोक में खरीदा जाए तो $2 या उससे कम
  • इंटरफ़ेस करना अपेक्षाकृत आसान है
  • कई, कई, परियोजनाएं इसका उपयोग करती हैं - इसलिए यह अच्छी तरह से जाना जाता है और अच्छी तरह से समझा जाता है

LV-MaxSonar-EZ क्यों?

  • इंटरफ़ेस करना बहुत आसान है
  • किसी प्रोजेक्ट में शामिल करने के लिए इसका एक अच्छा/आसान फॉर्म-फैक्टर है
  • इसके 5 संस्करण हैं जो विभिन्न माप आवश्यकताओं को संबोधित करते हैं (डेटाशीट देखें)
  • यह (आमतौर पर) HC-SR04. की तुलना में बहुत अधिक सटीक और विश्वसनीय है
  • यह सस्ती है - $15 से $20

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

धारणाएं:

  • आप Arduino और Arduino IDE से परिचित हैं
  • Arduino IDE स्थापित है और आपकी वरीयता की विकास मशीन (पीसी/मैक/लिनक्स) पर काम कर रहा है।
  • प्रोग्राम अपलोड करने और चलाने और संवाद करने के लिए आपके पास Arduino IDE से आपके Arduino से कनेक्शन है

जरूरत पड़ने पर इसमें आपकी मदद करने के लिए निर्देश और अन्य संसाधन हैं।

आपूर्ति

  • HC-SR04 'बग-आई' रेंज फाइंडर
  • LV-MaxSonar-EZ (0, 1, 2, 3, 4 - मैं '1' का उपयोग कर रहा हूं, लेकिन सभी संस्करण समान हैं)
  • अरुडिनो यूएनओ
  • सोल्डरलेस ब्रेडबोर्ड
  • पिन हैडर - 7 पिन 90° (मैक्ससोनर डिवाइस के लिए, 180° का उपयोग करने के लिए नीचे * देखें)
  • रिबन केबल जम्पर - 5 तार, पुरुष-पुरुष
  • रिबन केबल जम्पर - 2 तार, पुरुष-पुरुष
  • जम्पर तार - नर-नर
  • हुक-अप तार - लाल और काला (Arduino से ब्रेडबोर्ड और ब्रेडबोर्ड से उपकरणों तक बिजली के लिए)
  • Arduino UNO से कनेक्ट करने के लिए Arduino IDE और USB केबल वाला कंप्यूटर

* मैक्ससोनार संलग्न हेडर के साथ नहीं आता है इसलिए आप एक हेडर का उपयोग कर सकते हैं जो आपके प्रोजेक्ट के लिए सबसे उपयुक्त है। इस निर्देश के लिए मैंने ब्रेडबोर्ड में प्लग करना आसान बनाने के लिए 90 ° हेडर का उपयोग किया। कुछ परियोजनाओं में 180° (सीधा) हैडर बेहतर हो सकता है। मैं यह दिखाने के लिए एक फोटो शामिल करता हूं कि इसे कैसे जोड़ा जाए ताकि आपको उन्हें स्विच न करना पड़े। यदि आप 180° हैडर का उपयोग करना चाहते हैं, तो मेरे फोटो शो के रूप में कनेक्ट करने के लिए आपको एक अतिरिक्त 7 तार पुरुष-महिला रिबन केबल जम्पर की आवश्यकता होगी।

गिट हब रिपोजिटरी: प्रोजेक्ट फ़ाइलें

चरण 1: पीछा …

अनुसरण…
अनुसरण…

इससे पहले कि हम चीजों को कैसे प्राप्त करें, इस बारे में विवरण प्राप्त करें ताकि आप इन दो शानदार उपकरणों के साथ अपना स्वयं का प्रयोग कर सकें, मैं कुछ चीजों का वर्णन करना चाहता था, मुझे आशा है कि यह निर्देश आपकी मदद करेगा।

चूंकि मैक्ससोनर डिवाइस एचसी-एसआर04 डिवाइस की तुलना में कम उपयोग किया जाता है और कम समझा जाता है, इसलिए मैं दिखाना चाहता था:

  • मैक्ससोनर डिवाइस को माइक्रो-कंट्रोलर से कैसे कनेक्ट करें (इस मामले में एक Arduino)
  • मैक्ससोनर डिवाइस के विभिन्न आउटपुट से माप कैसे लें
  • MaxSonar डिवाइस को HC-SR04 डिवाइस से जोड़ने की तुलना करें
  • विभिन्न सतहों वाली वस्तुओं की दूरी मापने की क्षमता का परीक्षण करें
  • आप एक डिवाइस को दूसरे पर क्यों चुन सकते हैं (या दोनों का उपयोग एक साथ करें)

मुझे आशा है कि यह निर्देशयोग्य इस पीछा में आपकी मदद करेगा …

चरण 2: प्रारंभ करना - Arduino-Breadboard सेटअप

प्रारंभ करना - Arduino-Breadboard सेटअप
प्रारंभ करना - Arduino-Breadboard सेटअप

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

  1. मैं Arduino UNO और एक छोटा वायरलेस ब्रेडबोर्ड को 3-3/8" x 4-3/4" (8.6 x 12.0 सेमी) प्लास्टिक के टुकड़े से जोड़ता हूं जिसके तल पर रबर के पैर हैं।
  2. मैं Arduino से ब्रेडबोर्ड बिजली वितरण पट्टी में +5V और GND को जोड़ने के लिए लाल और काले 22-AWG हुक-अप तार का उपयोग करता हूं
  3. मैं बिजली के शोर को कम करने में मदद करने के लिए बिजली-जमीन वितरण पट्टी पर एक 10μF टैंटलम संधारित्र शामिल करता हूं (लेकिन इस परियोजना की आवश्यकता नहीं है)

यह एक अच्छा मंच प्रदान करता है जिसके साथ प्रोटोटाइप करना आसान है।

चरण 3: LV-MaxSonar-EZ. को तार दें

LV-MaxSonar-EZ. को वायर अप करें
LV-MaxSonar-EZ. को वायर अप करें
LV-MaxSonar-EZ. को वायर अप करें
LV-MaxSonar-EZ. को वायर अप करें
LV-MaxSonar-EZ. को वायर अप करें
LV-MaxSonar-EZ. को वायर अप करें

MaxSonar डिवाइस पर टांका लगाने वाले 90° हेडर के साथ इसे ब्रेडबोर्ड में प्लग करना आसान है। 5 पिन रिबन केबल तब मैक्ससोनर को अरुडिनो से जोड़ता है जैसा कि आरेख में देखा गया है। रिबन केबल के अलावा, मैं डिवाइस को बिजली प्रदान करने के लिए बिजली वितरण रेल से लाल और काले हुक-अप तार के छोटे टुकड़ों का उपयोग करता हूं।

तारों:

मैक्स सोनार अरुडिनो रंग
1 (बीडब्ल्यू) पावर-जीएनडी पीला
2 (पीडब्ल्यू) डिजिटल-5 हरा
3 (एएन) एनालॉग -0 नीला
4 (आरएक्स) डिजिटल-3 बैंगनी
5 (टेक्सास) डिजिटल-2 धूसर
6 (+5) +5 बीबी-पीडब्लूआर रेल लाल
7 (जीएनडी) जीएनडी बीबी-पीडब्लूआर रेल काला

ध्यान दें:

इस निर्देश में उपयोग किए गए कनेक्शनों की संख्या को अपने प्रोजेक्ट के लिए मैक्ससोनार पर विचार करने से न रोकें। यह निर्देशयोग्य सभी MaxSonar इंटरफ़ेस विकल्पों का उपयोग यह बताने के लिए करता है कि वे कैसे काम करते हैं और उनकी एक दूसरे से और HC-SR04 डिवाइस से तुलना करते हैं। किसी दिए गए उपयोग के लिए (इंटरफ़ेस विकल्पों में से एक का उपयोग करके) एक प्रोजेक्ट आम तौर पर एक या दो इंटरफ़ेस पिन (प्लस पावर और ग्राउंड) का उपयोग करेगा।

चरण 4: HC-SR04 को तार दें

HC-SR04 आमतौर पर पहले से संलग्न 90° हेडर के साथ आता है, इसलिए इसे ब्रेडबोर्ड में प्लग करना आसान है। 2 पिन रिबन केबल तब HC-SR04 को Arduino से जोड़ता है जैसा कि आरेख में देखा गया है। रिबन केबल के अलावा, मैं डिवाइस को बिजली प्रदान करने के लिए बिजली वितरण रेल से लाल और काले हुक-अप तार के छोटे टुकड़ों का उपयोग करता हूं।

कोर्ट-SR04 अरुडिनो रंग
1 (वीसीसी) +5 बीबी-पीडब्लूआर रेल लाल
2 (टीआरआईजी) डिजिटल-6 पीला
3 (इको) डिजिटल-7 संतरा
4 (जीएनडी) जीएनडी बीबी-पीडब्लूआर रेल काला

चरण 5: 'HC-SR04' विकल्प चयनकर्ता को वायर अप करें

जब मैंने इस परियोजना को शुरू किया तो मेरा इरादा मैक्ससोनर डिवाइस के विभिन्न इंटरफ़ेस विकल्पों का परीक्षण करना था। इसे उठने और चलाने के बाद, मैंने फैसला किया कि इसकी तुलना सर्वव्यापी HC-SR04 (ब्यूजी) डिवाइस से करना अच्छा होगा। हालांकि, मैं इसे शामिल किए बिना चलाने/परीक्षण करने में सक्षम होना चाहता था, इसलिए मैंने कोड में एक विकल्प/परीक्षण जोड़ा।

कोड यह देखने के लिए इनपुट पिन की जांच करता है कि HC-SR04 डिवाइस को माप रीडिंग और आउटपुट में शामिल किया जाना चाहिए या नहीं।

आरेख में, यह एक स्विच के रूप में दिखाया गया है, लेकिन ब्रेडबोर्ड पर मैं बस एक जम्पर तार का उपयोग करता हूं (जैसा कि तस्वीरों में देखा गया है)। यदि तार GND से जुड़ा है तो HC-SR04 को माप में शामिल किया जाएगा। Arduino में कोड 'खींचता है' (इनपुट को उच्च/सच बनाता है), ताकि अगर इसे कम (GND से जुड़ा) नहीं खींचा जाए तो HC-SR04 को मापा नहीं जाएगा।

हालाँकि यह निर्देश दो उपकरणों की तुलना में रूपांतरित हो गया, लेकिन मैंने यह बताने के लिए इसे छोड़ने का फैसला किया कि आप अपनी परियोजना में विभिन्न उपकरणों / विकल्पों को कैसे शामिल / बहिष्कृत कर सकते हैं।

ब्रेड बोर्ड अरुडिनो रंग
जीएनडी बीबी-पीडब्लूआर रेल डिजिटल-12 सफेद

चरण 6: यह सब काम करना …

यह सब काम कर रहा है …
यह सब काम कर रहा है …
यह सब काम कर रहा है …
यह सब काम कर रहा है …
यह सब काम कर रहा है …
यह सब काम कर रहा है …

अब जब सब कुछ जुड़ा हुआ है - यह काम करने का समय है!

जैसा कि 'मान्यताओं' में उल्लेख किया गया है - मैं यह समझाने वाला नहीं हूं कि Arduino IDE कैसे काम करता है या Arduino को कैसे प्रोग्राम किया जाता है (विस्तार से)।

निम्नलिखित खंड इस परियोजना में शामिल Arduino कोड को तोड़ते हैं।

कृपया पूरे संग्रह को उस स्थान पर अनज़िप करें जिसका उपयोग आप अपने Arduino विकास के लिए करते हैं। अपने Arduino IDE में `MaxSonar-outputs.ino` कोड लोड करें और शुरू करें!

चरण 7: परियोजना लेआउट

परियोजना में LV-MaxSonar-EZ डिवाइस, सर्किट आरेख, एक README और Arduino कोड के बारे में जानकारी है। सर्किट आरेख फ्रिट्ज़िंग प्रारूप के साथ-साथ एक पीएनजी छवि में है। रीडमी मार्कडाउन फॉर्मेट में है।

चरण 8: कोड लीड-इन…

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

टिप्पणियाँ बहुत सारी जानकारी प्रदान करती हैं जिन्हें मैं यहाँ नहीं दोहराऊँगा।

कुछ चीजें हैं जो मैं 'सेटअप' कोड में इंगित करना चाहता हूं …

  • `_DEBUG_OUTPUT` - चर और #define कथन
  • इंटरफ़ेस के लिए प्रयुक्त Arduino 'पिन' की परिभाषा
  • गणना में प्रयुक्त रूपांतरण कारकों की परिभाषा

डिबगिंग का उपयोग पूरे कोड में किया जाता है, और मैं दिखाऊंगा कि इसे गतिशील रूप से कैसे चालू/बंद किया जा सकता है।

अन्य परियोजनाओं में इस कोड का उपयोग करना आसान बनाने के लिए Arduino पिन और रूपांतरणों के लिए 'परिभाषाओं' का उपयोग किया जाता है।

डिबगिंग…

'डीबगिंग' अनुभाग एक चर और कुछ मैक्रो को परिभाषित करता है जो मांग पर सीरियल आउटपुट में डिबगिंग जानकारी को शामिल करना आसान बनाता है।

कोड में `_DEBUG_OUTPUT` बूलियन वैरिएबल को गलत पर सेट किया गया है (इसे सही पर सेट किया जा सकता है) और इसका उपयोग `DB_PRINT…` मैक्रोज़ में परीक्षण के रूप में किया जाता है। इसे कोड में गतिशील रूप से बदला जा सकता है (जैसा कि `setDebugOutputMode` विधि में देखा गया है)।

वैश्विक…

परिभाषाओं के बाद, कोड कुछ वैश्विक चर और वस्तुओं को बनाता है और आरंभ करता है।

  • SoftwareSerial (अगला भाग देखें)
  • _loopCount - प्रत्येक 'एन' पंक्तियों में एक शीर्षलेख आउटपुट करने के लिए प्रयुक्त होता है
  • _inputBuffer - विकल्पों को संसाधित करने के लिए सीरियल/टर्मिनल इनपुट एकत्र करने के लिए प्रयुक्त होता है (डीबग चालू/बंद)

चरण 9: Arduino सॉफ़्टवेयर-सीरियल…

MaxSonar इंटरफ़ेस विकल्पों में से एक सीरियल डेटा स्ट्रीम है। हालाँकि, Arduino UNO केवल एक एकल सीरियल डेटा कनेक्शन प्रदान करता है, और इसका उपयोग Arduino IDE (होस्ट कंप्यूटर) के साथ संचार करने के लिए USB पोर्ट के साथ/साझा किया जाता है।

सौभाग्य से, Arduino IDE के साथ एक पुस्तकालय घटक शामिल है जो एक सीरियल-i/o इंटरफ़ेस को लागू करने के लिए Arduino Digital-I/O पिन की एक जोड़ी का उपयोग करता है। चूंकि मैक्ससोनर सीरियल इंटरफ़ेस 9600 BAUD का उपयोग करता है, यह 'सॉफ़्टवेयर' इंटरफ़ेस संचार को संभालने में पूरी तरह से सक्षम है।

Arduino-Mega (या अन्य डिवाइस जिसमें कई HW सीरियल पोर्ट हैं) का उपयोग करने वालों के लिए कृपया एक भौतिक सीरियल पोर्ट का उपयोग करने के लिए कोड को समायोजित करने के लिए स्वतंत्र महसूस करें और SW-Serial की आवश्यकता को समाप्त करें।

'सेटअप' विधि मैक्ससोनर डिवाइस के साथ उपयोग किए जाने वाले 'सॉफ़्टवेयरसेरियल' इंटरफ़ेस को प्रारंभ करती है। केवल प्राप्त (RX) की जरूरत है। मैक्ससोनर के आउटपुट से मेल खाने के लिए इंटरफ़ेस 'उलटा' है।

चरण 10: कोड - सेटअप

जैसा कि ऊपर वर्णित है, `सेटअप` विधि `सॉफ़्टवेयरसेरियल` इंटरफ़ेस, साथ ही भौतिक सीरियल इंटरफ़ेस को प्रारंभ करती है। यह Arduino I/O पिन को कॉन्फ़िगर करता है और एक हेडर भेजता है।

चरण 11: कोड - लूप

`लूप` कोड निम्नलिखित के माध्यम से चलता है:

  • एक हेडर आउटपुट करें (डिबगिंग और प्लॉटर के लिए प्रयुक्त)
  • माप लेने के लिए मैक्ससोनार को ट्रिगर करें
  • मैक्ससोनार पल्स-चौड़ाई मान पढ़ें
  • मैक्ससोनार सीरियल-डेटा मान पढ़ें
  • मैक्ससोनार एनालॉग वैल्यू पढ़ें
  • 'HC-SR04' विकल्प की जाँच करें और, यदि सक्षम हो:

    ट्रिगर करें और HC-SR04 डिवाइस पढ़ें

  • डेटा को एक टैब सीमांकित प्रारूप में आउटपुट करें जिसका उपयोग सीरियल प्लॉटर द्वारा किया जा सकता है
  • पर्याप्त समय बीत जाने तक प्रतीक्षा करें ताकि एक और माप लिया जा सके

चरण 12: कोड - मैक्ससोनार को ट्रिगर करें। पीडब्लू वैल्यू पढ़ें

मैक्ससोनर के दो तरीके हैं: 'ट्रिगर' और 'निरंतर'

यह निर्देशयोग्य 'ट्रिगर' मोड का उपयोग करता है, लेकिन कई प्रोजेक्ट 'निरंतर' मोड (डेटाशीट देखें) का उपयोग करने से लाभान्वित हो सकते हैं।

'ट्रिगर' मोड का उपयोग करते समय, पहला वैध आउटपुट पल्स-चौड़ाई (पीडब्लू) आउटपुट से होता है। उसके बाद, शेष आउटपुट मान्य हैं।

`tiggerAndReadDistanceFromPulse` MaxSonar डिवाइस पर ट्रिगर पिन को पल्स करता है और परिणामी पल्स-चौड़ाई दूरी मान पढ़ता है

ध्यान दें कि, कई अन्य सोनार उपकरणों के विपरीत, मैक्ससोनर राउंड-ट्रिप रूपांतरण को संभालता है, इसलिए पढ़ी गई दूरी लक्ष्य की दूरी है।

यह विधि डिवाइस के अन्य आउटपुट के मान्य (धारावाहिक, एनालॉग) होने के लिए काफी देर तक देरी करती है।

चरण 13: कोड - मैक्ससोनार सीरियल वैल्यू पढ़ें

मैक्ससोनर के चालू होने के बाद (या 'निरंतर' मोड में होने पर), यदि सीरियल आउटपुट विकल्प सक्षम है ('बीडब्ल्यू - पिन -1' नियंत्रण के माध्यम से) "आर एनएनएन" के रूप में एक सीरियल डेटा स्ट्रीम भेजा जाता है, उसके बाद कैरिज-रिटर्न '\r' द्वारा। ' nnn ' वस्तु के लिए इंच का मान है।

`readDistanceFromSerial` विधि सीरियल डेटा (सॉफ़्टवेयर सीरियल पोर्ट से) को पढ़ती है और 'nnn' मान को दशमलव में बदल देती है। इसमें एक असफल-सुरक्षित टाइमआउट शामिल है, बस एक सीरियल वैल्यू प्राप्त नहीं होने की स्थिति में।

चरण 14: कोड - मैक्ससोनार एनालॉग वैल्यू पढ़ें

मैक्ससोनर एनालॉग पोर्ट लगातार मापी गई अंतिम दूरी के अनुपात में आउटपुट वोल्टेज प्रदान करता है। यह मान डिवाइस के प्रारंभ होने के बाद किसी भी समय पढ़ा जा सकता है। अंतिम दूरी पढ़ने (ट्रिगर या निरंतर मोड) के 50mS के भीतर मान अपडेट किया जाता है।

मान (Vcc/512) प्रति इंच है। तो, 5 वोल्ट के Arduino से Vcc के साथ, मान ~ 9.8mV/in होगा। `readDistanceFromAnalog` विधि Arduino एनालॉग इनपुट से मान पढ़ती है और इसे 'इंच' मान में परिवर्तित करती है।

चरण 15: कोड - ट्रिगर करें और HC-SR04 पढ़ें

यद्यपि HC-SR04 को पढ़ने के लिए पुस्तकालय हैं, मैंने उनमें से कुछ को उन विभिन्न उपकरणों के साथ अविश्वसनीय पाया है जिनके साथ मैंने परीक्षण किया है। मुझे वह कोड मिला है जिसे मैंने `sr04ReadDistance` विधि में शामिल किया है जो सरल और अधिक विश्वसनीय है (जितना सस्ता HC-SR04 डिवाइस हो सकता है)।

यह विधि सेट करती है और फिर HC-SR04 डिवाइस को ट्रिगर करती है और फिर रिटर्न पल्स चौड़ाई को मापने की प्रतीक्षा करती है। पल्स की चौड़ाई को मापने में एक बहुत लंबी पल्स अवधि के HC-SR04 मुद्दे से निपटने के लिए एक टाइमआउट शामिल है, जब इसे कोई लक्ष्य नहीं मिल पाता है। ~ 10 फीट की लक्ष्य दूरी से अधिक लंबी पल्स चौड़ाई को कोई वस्तु या वस्तु नहीं माना जाता है जिसे पहचाना नहीं जा सकता है। यदि टाइमआउट पहुंच गया है तो '0' मान दूरी के रूप में वापस कर दिया जाता है। इस 'दूरी' (नाड़ी-चौड़ाई) को #define मानों का उपयोग करके समायोजित किया जा सकता है।

ऑब्जेक्ट की दूरी के रूप में वापस आने से पहले पल्स की चौड़ाई को एक राउंड-ट्रिप दूरी में बदल दिया जाता है।

चरण 16: कोड - Arduino IDE सीरियल प्लॉटर समर्थन

कोड - Arduino IDE सीरियल प्लॉटर सपोर्ट
कोड - Arduino IDE सीरियल प्लॉटर सपोर्ट

अब आउटपुट के लिए!

`लूप` विधि दो उपकरणों से दूरी माप के संग्रह को ट्रिगर करती है - लेकिन हम इसके साथ क्या करते हैं?

ठीक है, निश्चित रूप से, हम इसे भेज देंगे ताकि इसे कंसोल पर देखा जा सके - लेकिन हम और अधिक चाहते हैं!

Arduino IDE सीरियल प्लॉटर इंटरफ़ेस भी प्रदान करता है। हम इसका उपयोग अपने दो उपकरणों के आउटपुट से हमारी वस्तु की दूरी का वास्तविक समय ग्राफ प्रदान करने के लिए करेंगे।

सीरियल प्लॉटर एक हेडर को स्वीकार करता है जिसमें वैल्यू लेबल होते हैं और फिर ग्राफ़ के रूप में प्लॉट किए जाने के लिए सीमांकित मानों की कई पंक्तियाँ होती हैं। यदि मान नियमित रूप से आउटपुट होते हैं (हर 'इतने सेकंड' में एक बार) तो ग्राफ समय के साथ वस्तु की दूरी का एक दृश्य प्रदान करता है।

`लूप` विधि मैक्ससोनर से तीन मानों और एचसी-एसआर04 से मूल्य को एक टैब से अलग प्रारूप में आउटपुट करती है जिसका उपयोग सीरियल प्लॉटर के साथ किया जा सकता है। प्रत्येक 20 पंक्तियों में एक बार यह हेडर को आउटपुट करता है (सिर्फ सीरियल प्लॉटर के मध्य-स्ट्रीम में सक्षम होने की स्थिति में)।

यह आपको बाधा की दूरी की कल्पना करने और दो उपकरणों द्वारा लौटाए गए मूल्यों में अंतर देखने की अनुमति देता है।

चरण 17: कोड - डिबगिंग…

कोड - डिबगिंग…
कोड - डिबगिंग…
कोड - डिबगिंग…
कोड - डिबगिंग…

डिबगिंग एक आवश्यकता है। जब कोई चीज़ अपेक्षित रूप से काम नहीं करती है तो आप किसी समस्या को कैसे ट्रैक कर सकते हैं?

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

इस निर्देशयोग्य में मैंने Arduino IDE सीरियल मॉनिटर से पढ़े गए इनपुट से गतिशील रूप से डिबगिंग प्रिंट (सीरियल आउटपुट) स्टेटमेंट को सक्षम और अक्षम करने के लिए एक तंत्र शामिल किया है (आगामी रिलीज़ में, सीरियल प्लॉटर से यह इनपुट भी प्रदान करने की उम्मीद है)।

`_DEBUG_OUTPUT` बूलियन का उपयोग कई #define प्रिंट विधियों में किया जाता है जिनका उपयोग कोड के भीतर किया जा सकता है। _DEBUG_OUTPUT वैरिएबल का मान प्रिंटिंग (आउटपुट भेजने) को सक्षम करने के लिए उपयोग किया जाता है या नहीं। कोड के भीतर मान को गतिशील रूप से बदला जा सकता है, जैसा कि `setDebugOutputMode` विधि करती है।

सीरियल इनपुट से प्राप्त इनपुट के आधार पर `सेटडिबगऑटपुटमोड` विधि को `लूप` से कहा जाता है। इनपुट को यह देखने के लिए पार्स किया जाता है कि क्या यह डिबग मोड को सक्षम/अक्षम करने के लिए "डीबग ऑन/ऑफ | सही/गलत" से मेल खाता है।

चरण 18: निष्कर्ष

मुझे उम्मीद है कि यह सरल हार्डवेयर सेटअप और उदाहरण कोड आपको HC-SR04 और LV-MaxSonar-EZ उपकरणों के बीच के अंतर को समझने में मदद कर सकता है। दोनों का उपयोग करना बहुत आसान है, और मेरा मानना है कि प्रत्येक के अपने फायदे हैं। यह जानना कि एक के बजाय दूसरे का उपयोग कब करना है, एक सफल परियोजना के लिए महत्वपूर्ण हो सकता है।

BTW - मैंने LV-MaxSonar-EZ का उपयोग करके किसी वस्तु की दूरी को सटीक रूप से मापने के लिए उपयोग में आसान तरीके का संकेत दिया … आप सरल का उपयोग करके दूरी को पढ़ने के लिए एनालॉग आउटपुट (एक तार) और निरंतर माप मोड का उपयोग कर सकते हैं। Arduino एनालॉग इनपुट से सीधे `readDistanceFromAnalog` में कोड। एक तार और (संघनित) कोड की एक पंक्ति!

चरण 19: वैकल्पिक मैक्ससोनार कनेक्शन (180° हैडर का उपयोग करके)

वैकल्पिक मैक्ससोनार कनेक्शन (180° हैडर का उपयोग करके)
वैकल्पिक मैक्ससोनार कनेक्शन (180° हैडर का उपयोग करके)
वैकल्पिक मैक्ससोनार कनेक्शन (180° हैडर का उपयोग करके)
वैकल्पिक मैक्ससोनार कनेक्शन (180° हैडर का उपयोग करके)
वैकल्पिक मैक्ससोनार कनेक्शन (180° हैडर का उपयोग करके)
वैकल्पिक मैक्ससोनार कनेक्शन (180° हैडर का उपयोग करके)

जैसा कि मैंने उल्लेख किया है, मैक्ससोनार कनेक्टेड हेडर के साथ नहीं आता है। तो, आप अपनी परियोजना के लिए जो भी कनेक्शन सबसे उपयुक्त है उसका उपयोग कर सकते हैं। कुछ मामलों में 180° (सीधा) हैडर अधिक उपयुक्त हो सकता है। अगर ऐसा है, तो मैं जल्दी से दिखाना चाहता था कि आप इस निर्देश के साथ इसका उपयोग कैसे कर सकते हैं। यह चित्रण एक मैक्ससोनर को दिखाता है जिसमें एक पुरुष-महिला रिबन केबल के साथ ब्रेडबोर्ड से जुड़ा एक सीधा हेडर होता है, और फिर बाकी लेख में वर्णित अनुसार Arduino से जुड़ा होता है।

चरण 20: Arduino कोड

Arduino कोड सोनार रेंज-फाइंडर तुलना में परियोजना के 'MaxSonar-outputs' फ़ोल्डर में है

सिफारिश की: