विषयसूची:

Arduino 1-वायर जेनेरिक क्लाइंट/स्लेव डिवाइस (सेंसर): 4 कदम
Arduino 1-वायर जेनेरिक क्लाइंट/स्लेव डिवाइस (सेंसर): 4 कदम

वीडियो: Arduino 1-वायर जेनेरिक क्लाइंट/स्लेव डिवाइस (सेंसर): 4 कदम

वीडियो: Arduino 1-वायर जेनेरिक क्लाइंट/स्लेव डिवाइस (सेंसर): 4 कदम
वीडियो: अरुडिनो मास्टरक्लास | 90 मिनट में पूर्ण प्रोग्रामिंग कार्यशाला! 2024, दिसंबर
Anonim
Arduino 1-वायर जेनेरिक क्लाइंट/स्लेव डिवाइस (सेंसर)
Arduino 1-वायर जेनेरिक क्लाइंट/स्लेव डिवाइस (सेंसर)

उपलब्ध स्थिति और पुस्तकालयों के बारे में अधिक जानकारी प्राप्त करने के लिए कृपया Arduino 1-वायर डिस्प्ले (144 वर्ण) बनाने के तरीके के बारे में मेरे निर्देश का परिचय और चरण 2 पढ़ें। जैसा कि बताया गया है कि हम एक Arduino का उपयोग करके जेनेरिक 1-वायर डिवाइस (जैसे सेंसर) बनाने के लिए ऑर्गुआ द्वारा वनवायर-हब लाइब्रेरी (वनवायर स्लेव डिवाइस एमुलेटर) का उपयोग करेंगे (ध्यान दें कि आसपास अन्य कांटे हैं)।

चरण 1: सॉफ्टवेयर

सबसे महत्वपूर्ण बात एक ऐसा उपकरण बनाना है जो मूल रूप से किसी भी तरह के मूल्य को सरल तरीके से वापस कर सके। इसका मतलब है कि मानक सॉफ्टवेयर का उपयोग सभी मूल्यों को सीधे पढ़ने के लिए किया जा सकता है (कोई बातचीत या बाइनरी हेरफेर की आवश्यकता नहीं है)। उसके लिए हमें एक बहुत ही सरल डिफ़ॉल्ट 1-वायर डिवाइस की आवश्यकता है जो फ्लोट्स को वापस कर सके और व्यापक रूप से समर्थित हो। मुझे पता है कि एकमात्र विकल्प DS18B20 थर्मामीटर है (DS2438 बैटरी मॉनिटर दिलचस्प और उपयोगी भी है लेकिन काफी जटिल है और इस प्रकार अन्य कमियों के बीच धीमा है)। वनवायर-हब लाइब्रेरी में DS18B20_asInterface नामक एक उदाहरण है जो ठीक वही करता है जो हमें चाहिए। यह DS18B20 का एक गुच्छा बनाता है जिसमें से प्रत्येक एक फ्लोट वैल्यू का प्रतिनिधित्व करता है जिसे हम अपने सेंसर से वापस करना चाहते हैं। यहां प्रतिबंध संकल्प हैं और मान -55, 0 … 125, 0 की सीमा में होना चाहिए। यह आसानी से प्राप्त किया जा सकता है - सबसे खराब स्थिति में पुनर्विक्रय हो - और वास्तव में उन मानों से बेहतर है जिन्हें उदाहरण के द्वारा दर्शाया जा सकता है। DS2438 मान (1.5 से 10V)। वैकल्पिक रूप से मूल्यों की एक बड़ी श्रृंखला का उपयोग करके सेट किया जा सकता है:

setTemperatureRaw (static_cast (मान * 16.0f));

लेकिन इन मानों को पढ़ना और संसाधित करना सभी सॉफ़्टवेयर द्वारा समर्थित नहीं हो सकता है क्योंकि यह विनिर्देशों से बाहर है।

आपको इस बात की जानकारी होनी चाहिए कि शुरू में गुलामों की अधिकतम संख्या 8 तक सीमित है, लेकिन HUB_SLAVE_LIMIT को 32 तक बढ़ाकर "OneWireHub_config.h" में बदला जा सकता है। साथ ही आपको यह सुनिश्चित करना होगा कि यदि आपके द्वारा आवश्यक हो तो ONEWIRE_TIME_MSG_HIGH_TIMEOUT को अपनाना सुनिश्चित करें। 1-वायर नेटवर्क (जैसे x10), जैसा कि Arduino 1-वायर डिस्प्ले (144 वर्ण) के चरण 2 में बताया गया है। और अपने Arduino पर कोड को संकलित और अपलोड करने के लिए IDE संस्करण>= 1.8.3 का उपयोग करने के लिए।

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

चरण 2: हार्डवेयर

हार्डवेयर
हार्डवेयर

मूल रूप से जो कुछ भी आप एक Arduino से कनेक्ट कर सकते हैं उसे आपकी पसंद के सेंसर के रूप में उपयोग किया जा सकता है। एकमात्र प्रतिबंध यह है कि सेंसर को पढ़ना जितना संभव हो उतना तेज़ होना चाहिए ताकि 1-तार संचार होने के लिए बहुत समय बचा हो (मेरे निर्देश के चरण 2 को Arduino 1-वायर डिस्प्ले (144 वर्ण) के बारे में क्रम में प्रदान करें। एक उदाहरण प्राप्त करने के लिए)।

संभावित हार्डवेयर का एक उदाहरण मौसम स्टेशन हो सकता है जैसे:

https://shop.boxtec.ch/wetter-messer-p-41289.html

इसके अतिरिक्त या आप के बजाय शायद Arduino को ही अपने सेंसर के रूप में उपयोग करना चाहें। आप इसके बारे में और अधिक पढ़ सकते हैं कि मेरे निर्देश में Arduino कम ज्ञात सुविधाओं के बारे में - संभावित मान स्रोत वोल्टेज और आंतरिक तापमान हैं।

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

चरण 3: डिवाइस का परीक्षण करें

इसे अपने नेटवर्क से कनेक्ट करें और अपने सॉफ़्टवेयर की जाँच करें कि सभी ROM ID मौजूद हैं और वे मान जो तापमान के रूप में वापस आते हैं।

चरण 4: परिशिष्ट: ATtiny85

परिशिष्ट: ATtiny85
परिशिष्ट: ATtiny85

ATtiny85 पर सिंगल डिवाइस (मेमोरी लिमिटेशन) भी किया जा सकता है। इसके लिए कुछ चरणों की आवश्यकता है क्योंकि हम Arduino IDE की मदद से Arduino Uno का उपयोग ISP के रूप में ATtiny85 को प्रोग्राम करते हैं:

  • लिंक

    • https://playground.boxtec.ch/doku.php/arduino/att…
    • https://sebastian.expert/could-not-find-usbtiny-d…
    • https://learn.sparkfun.com/tutorials/tiny-avr-pro…
    • https://forum.arduino.cc/index.php?topic=425532.0
    • https://forum.arduino.cc/index.php?topic=128963.0
  1. Arduino IDE> = 1.8.3. का उपयोग करें
  2. IDE में ATtiny विकल्प स्थापित करें

    1. फ़ाइल > वरीयताएँ > अतिरिक्त बोर्ड प्रबंधक यूआरएल:
    2. उपकरण > बोर्ड: ??? > बोर्ड प्रबंधक…
    3. के लिए खोजें: "छोटा" और स्थापित करें
  3. ISP स्केच को Uno पर अपलोड करें

    फ़ाइल > उदाहरण > ArduinoISP > ArduinoISP

  4. प्रोग्रामिंग (शून्य-बल) सॉकेट में ATtiny85 डालें और इसे तार दें:

    1. Arduino Pin MOSI D11 से ATtiny Pin 5
    2. Arduino पिन MISO D12 से ATtiny पिन 6
    3. Arduino पिन SCK D13 से ATtiny पिन 7
    4. Arduino पिन रीसेट D10 से ATtiny पिन 1
    5. Arduino Pin GND से ATtiny Pin 4
    6. Arduino Pin VCC से ATtiny Pin 8
    7. (>=10uF Arduino Uno RESET पिन पर कैप की आवश्यकता हो सकती है)
  5. ATtiny85 चुनें (चित्र देखें):

    • बोर्ड: "ATtiny25/45/85"
    • टाइमर 1 घड़ी: "सीपीयू"
    • बी.ओ.डी.: "बी.ओ.डी. अक्षम"
    • एलटीओ (1.6.11 + केवल): "अक्षम"
    • चिप: "ATtiny85"
    • घड़ी: "8 मेगाहर्ट्ज (आंतरिक)" (ATtiny85 और ATtiny84 संगत)
    • घड़ी: "16 मेगाहर्ट्ज (पीएलएल)" (केवल ATtiny85 के लिए वैकल्पिक सेटिंग)
    • बंदरगाह: ???
  6. प्रोग्रामर का चयन करें:

    टूल्स> प्रोग्रामर: "Arduino as ISP" ("ArduinoISP" नहीं!)

  7. फ़्यूज़ सेटिंग सेट करें (घड़ी, आदि):

    उपकरण> बूटलोडर जलाएं

  8. इस कोड को अपलोड करें (प्रोग्रामर त्रुटि एलईडी को बंद करने की आवश्यकता है, अन्यथा इसे रीसेट करें)
  9. ATtinyX5 पिन लेआउट (ATtiny85):

    1. पिन 1: PB5 (RST)
    2. पिन 2: PB3 (A3) - वैकल्पिक रूप से 220ohm से 1<-TX. के माध्यम से जुड़ा हुआ है
    3. पिन 3: PB4 (A2) - 1-वायर डेटा से जुड़ा है
    4. पिन 4: GND - GND से जुड़ा हुआ है
    5. पिन 5: PB0 (PWM) - सेंसर I2C SDA से जुड़ा है
    6. पिन 6: PB1 (PWM) - 4.7k से GND के साथ LED से जुड़ा है
    7. पिन 7: PB2 (A1) - सेंसर I2C SCL. से जुड़ा है
    8. पिन 8: वीसीसी - 5V. से जुड़ा

ATTiny85 के साथ काम करने के लिए थोड़ा और काम करने की आवश्यकता है क्योंकि आपको I2C कॉम (adafruit/TinyWireM) और सीरियल आउटपुट (TinyDebugSerial) के लिए अतिरिक्त लाइब्रेरी प्राप्त करने की आवश्यकता है। इसके अतिरिक्त चूंकि स्मृति काफी सीमित है, इसलिए आप #define के साथ बहुत काम करना चाहेंगे उदा। सीरियल डिबगिंग को हटाने के लिए। उदाहरण में आप यह सब एक साथ फेंका हुआ देख सकते हैं।

परीक्षण के लिए पहला कदम यह जांचना है कि एलईडी सही आवृत्ति, 0.5 हर्ट्ज के साथ चमकती है या नहीं। फिर इसे 1वायर बस से कनेक्ट करें और नए डिवाइस की जांच करें।

सिफारिश की: