विषयसूची:

वाईफाई एलईडी पट्टी + तापमान सेंसर ESP8266 के साथ: 6 कदम
वाईफाई एलईडी पट्टी + तापमान सेंसर ESP8266 के साथ: 6 कदम

वीडियो: वाईफाई एलईडी पट्टी + तापमान सेंसर ESP8266 के साथ: 6 कदम

वीडियो: वाईफाई एलईडी पट्टी + तापमान सेंसर ESP8266 के साथ: 6 कदम
वीडियो: LM35 temperature sensor projects #temperature #science #arduino #shorts #short #viral #trending #diy 2024, जुलाई
Anonim
ESP8266. के साथ वाईफाई एलईडी पट्टी + तापमान सेंसर
ESP8266. के साथ वाईफाई एलईडी पट्टी + तापमान सेंसर

यह ट्यूटोरियल एक ESP8266 सेट करने और इसे तापमान सेंसर और एलईडी पट्टी दोनों से बात करने के चरणों का वर्णन करता है, जबकि वाईफाई पर MQTT के साथ इनपुट प्राप्त करने और आउटपुट भेजने में भी सक्षम है। यह परियोजना फॉल २०१६-सीपीई ४३९: रियल टाइम एंबेडेड सिस्टम्स में कैल पॉली सैन लुइस ओबिस्पो में लिए गए पाठ्यक्रम के लिए बनाई गई थी। समग्र लक्ष्य सस्ते हार्डवेयर के साथ इंटरनेट से जुड़ी "चीज" बनाने में आसानी का प्रदर्शन करना था।

आपूर्ति/उपकरण आवश्यक:

  • NodeMCU ESP8266 देव बोर्ड
  • WS2812B एलईडी पट्टी
  • MAX31820 तापमान सेंसर
  • ब्रेड बोर्ड
  • 4.7K ओम रोकनेवाला
  • 220 ओम रोकनेवाला
  • जम्पर तार
  • माइक्रो-यूएसबी केबल
  • पीसी (या वीएम) लिनक्स चल रहा है (उदाहरण के लिए उबंटू)

पूर्वापेक्षाएँ / पूर्वापेक्षाएँ:

  • कमांड-लाइन टूल का उपयोग करने और डेबियन-आधारित डिस्ट्रो पर पैकेज स्थापित करने का अनुभव
  • मेकफ़ाइल सिंटैक्स की बुनियादी समझ
  • कनेक्टिंग तार

चरण 1: बिल्ड एनवायरनमेंट बनाना

प्रोजेक्ट बनाने के लिए, आपको अपनी मशीन पर esp-open-sdk इंस्टॉल करना होगा। लिंक का पालन करें और निर्माण निर्देश पढ़ें। संक्षेप में आप निर्भरता स्थापित करने के लिए कुछ sudo apt-get कमांड कर रहे होंगे, एक git क्लोन --recursive क्लोन/डाउनलोड esp-open-sdk, और अंत में esp-open-sdk बनाने के लिए एक मेक कमांड।

मुझे देखो

चरण 2: स्रोत कोड प्राप्त करें, कॉन्फ़िगर करें, और बनाएं

अब जब esp-open-sdk बनाया गया है, तो प्रोजेक्ट रिपॉजिटरी को क्लोन करें।

गिट क्लोन

प्रोजेक्ट निर्देशिका में बदलें, एक.local फ़ोल्डर बनाएँ, और उदाहरण सेटिंग्स की प्रतिलिपि बनाएँ।

सीडी esp-rtos-परीक्षण

mkdir -p.local cp settings.example.mk.local/settings.mk

अब किसी भी टेक्स्ट एडिटर के साथ.local/settings.mk खोलें और निम्नलिखित सेटिंग्स बदलें:

  • OPENSDK_ROOT: चरण 1 में आपके द्वारा बनाए गए esp-open-sdk के स्थान के लिए पूर्ण पथ
  • WIFI_SSID: आपके वाईफाई नेटवर्क का SSID
  • वाईफ़ाई_पास: आपके वाईफाई नेटवर्क का पासवर्ड
  • PIXEL_COUNT: आपकी WS2812B LED पट्टी पर पिक्सेल की संख्या

नोट: चूंकि यह प्रोजेक्ट एलईडी को चलाने के लिए SPI का उपयोग करता है और उन्हें आपूर्ति करने के लिए NodeMCU 3.3v का उपयोग करता है, आप शायद ~ 60 LED से अधिक ड्राइव नहीं कर पाएंगे।

नोट: अन्य सेटिंग्स को बदलने की आवश्यकता नहीं है, लेकिन यदि वांछित हो तो हो सकता है। कार्य प्राथमिकताओं के क्रम को बनाए रखने की अनुशंसा की जाती है। प्राथमिकता संख्या जितनी कम होगी, कार्य की प्राथमिकता उतनी ही कम होगी।

अब प्रोजेक्ट बनाएं:

मेक-सी उदाहरण/सीपीई439

यदि सब कुछ सही ढंग से सेट किया गया है, तो इसे संकलित करना शुरू कर देना चाहिए। अंत में आपको देखना चाहिए:

सफलतापूर्वक 'फर्मवेयर/cpe439.bin' बनाया गया

मुझे देखो

चरण 3: हार्डवेयर घटकों को कनेक्ट करें

हार्डवेयर घटक कनेक्ट करें
हार्डवेयर घटक कनेक्ट करें

अब जब कोड संकलित हो गया है, तो हमारे बाह्य उपकरणों को जोड़ने का समय आ गया है।

सबसे पहले, NodeMCU को ब्रेडबोर्ड पर चिपका दें, फिर कनेक्शन बनाने के लिए जम्पर तारों का उपयोग करें जैसा कि आरेख में दिखाया गया है।

कुछ बातों के बारे में पता होना चाहिए:

  1. महत्वपूर्ण: WS2812B डेटा लाइन द्वि-दिशात्मक नहीं है। यदि आप पट्टी के एलईडी पक्ष पर चिह्नों को करीब से देखते हैं, तो आपको एक दिशा की ओर इशारा करते हुए छोटे तीर दिखाई देने चाहिए। NodeMCU के D7 से आउटपुट को दिशा मार्कर की तरह ही WS2812B में जाने की आवश्यकता है, जिसे आप बारीकी से देखने पर आरेख में देख सकते हैं।
  2. आपका WS2812B किस प्रकार के कनेक्टर के साथ आता है, इस पर निर्भर करते हुए, आपको उन्हें ब्रेडबोर्ड में सुरक्षित रूप से जोड़ने के लिए कुछ संशोधन करने की आवश्यकता हो सकती है। आप उन्हें ब्रेडबोर्ड-सक्षम जम्पर केबल से जोड़ने के लिए मगरमच्छ क्लिप का भी उपयोग कर सकते हैं।
  3. MAX31820 पिन की पिच छोटी होती है और मानक 0.1"/2.54 मिमी जंपर्स की तुलना में पतले होते हैं, जिससे उन्हें कनेक्ट करना मुश्किल हो जाता है। इसका एक तरीका महिला-से-पुरुष जम्पर तारों का उपयोग करना है, महिला पक्ष से प्लास्टिक के मामले को हटा दें, फिर महिला जम्पर को छोटे MAX31820 पिनों के चारों ओर कसकर समाप्त करने के लिए कुछ सरौता का उपयोग करें।

NodeMCU को चालू करने से पहले कनेक्शन को दोबारा जांचें ताकि घटकों को नुकसान न पहुंचे।

चरण 4: फ्लैश और रन

चमकता

सभी हार्डवेयर कनेक्ट होने के साथ, अपने NodeMCU में प्लग इन करें और निम्न कमांड के साथ फ्लैश करें:

फ्लैश-सी उदाहरण/cpe439 ESPPORT=/dev/ttyUSB0. बनाएं

/dev/ttyUSB0 सीरियल कॉम है जिसे NodeMCU के तहत दिखाना चाहिए। यदि आपके पास अन्य सीरियल डिवाइस जुड़े हुए हैं, तो यह /dev/ttyUSB1 या किसी अन्य नंबर के रूप में दिखाई दे सकता है। यह जांचने के लिए कि आप इस कमांड को दो बार चला सकते हैं, एक बार NodeMCU अनप्लग्ड के साथ, और एक बार इसके प्लग इन के साथ, और अंतर की तुलना करें:

एलएस / देव / टीटीआईयूएसबी *

एक अन्य समस्या जिसका आप सामना कर सकते हैं, वह है डिवाइस को एक्सेस करने की अनुमति नहीं होना। इसे ठीक करने के दो तरीके हैं:

  1. अपने उपयोगकर्ता को डायलआउट समूह में जोड़ें:

    sudo adduser $(whoami) डायलआउट

  2. डिवाइस को चामोद या चाउन करें:

sudo chmod 666 /dev/ttyUSB0 sudo chown $(whoami):$(whoami) /dev/ttyUSB0पहली विधि को प्राथमिकता दी जाती है क्योंकि यह एक स्थायी समाधान है।

दौड़ना

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

python3 -m serial.tools.miniterm --eol CRLF --exit-char 003 /dev/ttyUSB0 500000 --raw -q

समय बचाने के लिए आप इसे अपनी ~/.bashrc फ़ाइल में जोड़ सकते हैं:

उर्फ nodemcu='python3 -m serial.tools.miniterm --eol CRLF --exit-char 003 /dev/ttyUSB0 500000 --raw -q'

..जो आपको उस कमांड के लिए उपनाम के रूप में "नोडेमकू" टाइप करने की अनुमति देता है।

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

MyWiFiSSID से कनेक्टेड, चैनल 1dhcp क्लाइंट स्टार्ट…wifi_task: status = 1wifi_task: status = 1ip:192.168.2.23, मास्क:255.255.255.0, gw:192.168.2.1ws2812_spi_init okRequest temp OKwifi_task: status = 5xQueueReceive +25.43xFiskae: (पुनः) MQTT सर्वर से जुड़ना

चरण 5: बातचीत

यह मानते हुए कि आपका डिवाइस वाईफाई और MQTT ब्रोकर से सफलतापूर्वक जुड़ा है, आप MQTT के साथ NodeMCU से डेटा भेज और प्राप्त कर पाएंगे। यदि आपने पहले से नहीं किया है, तो मच्छर क्लाइंट पैकेज स्थापित करें:

sudo apt-मच्छर-ग्राहक स्थापित करें

अब आप अपने शेल से mosquitto_pub और mosquitto_sub प्रोग्राम का उपयोग करने में सक्षम हो जाएंगे।

तापमान अपडेट प्राप्त करना

तापमान डेटा प्राप्त करने के लिए हम उस विषय की सदस्यता लेने के लिए mosquitto_sub कमांड का उपयोग करना चाहेंगे जिसे NodeMCU प्रकाशित कर रहा है।

mosquitto_sub -h test.mosquitto.org -t /cpe439/temp

आपको टर्मिनल में पहुंचते हुए तापमान डेटा (सेल्सियस में) देखना चाहिए।

+25.87+25.93+25.68…

दूर से एलईडी पट्टी का रंग सेट करना

MQTT पर NodeMCU को RGB मान भेजने के लिए एक साधारण संदेश प्रारूप का उपयोग किया जाता है। कमांड प्रारूप इस तरह दिखता है:

आर: आरआरआरजी: जीजीजीबी: बीबीबी ~

जहां RRR, GGG, BBB उस रंग के RGB मान (0-255) से मेल खाते हैं, जिसे आप भेजना चाहते हैं। अपना आदेश भेजने के लिए, हम mosquitto_pub कमांड का उपयोग करेंगे। यहां कुछ उदाहरण दिए गए हैं:

mosquitto_pub -h test.mosquitto.org -t /cpe439/rgb -m 'r:255g:0b:0~' # redmosquitto_pub -h test.mosquitto.org -t /cpe439/rgb -m 'r:0g:255b: 0~' # Greenmosquitto_pub -h test.mosquitto.org -t /cpe439/rgb -m 'r:0g:0b:255~' # नीला

यदि आप रचनात्मक होना चाहते हैं, तो इस तरह ऑनलाइन रंग-पिकर खोजें, और जो भी आरजीबी मूल्य आप चुनते हैं उसके साथ कमांड संपादित करें।

ध्यान रहें

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

चरण 6: कार्यान्वयन विवरण

वनवायर

ESP8266 में केवल 1 कोर है, इतना लंबा, अवरुद्ध कार्य जैसे तापमान सेंसर के लिए तापमान माप करने के लिए 750ms की प्रतीक्षा करना सामान्य रूप से वाईफाई के ठीक से काम नहीं करने का परिणाम होगा, और शायद एक दुर्घटना भी। फ्रीआरटीओएस प्रतिमान में, आप इन लंबी प्रतीक्षाओं को संभालने के लिए vTaskDelay() को कॉल करते हैं, लेकिन पढ़ने और लिखने के बीच कई छोटी प्रतीक्षाएं भी होती हैं जो फ्रीआरटीओएस सिस्टम टिक से छोटी होती हैं, और इस प्रकार vTaskDelay() से बचा नहीं जा सकता है। इनके आस-पास भी जाने के लिए, इस परियोजना में वनवायर ड्राइवर को एक राज्य-मशीन को चलाने के लिए लिखा गया था जो ESP8266 के हार्डवेयर टाइमर द्वारा संचालित होता है, जो हर 10 माइक्रो-सेकंड के रूप में कम से कम घटनाओं को ट्रिगर कर सकता है, जो कि सबसे छोटा होता है ऑनवायर रीड/राइट ऑपरेशंस के बीच आवश्यक समय। अधिकांश अन्य कार्यान्वयन देरी_स() या इसे संभालने के लिए इसी तरह के ब्लॉकिंग कॉल का उपयोग करते हैं, लेकिन यदि आप लगातार तापमान अपडेट ले रहे हैं, तो वे सभी देरी जोड़ना शुरू हो जाते हैं, जिसके परिणामस्वरूप कम प्रतिक्रियाशील अनुप्रयोग होता है। कोड के इस हिस्से का स्रोत एक्स्ट्रा/ऑनवायर फ़ोल्डर में स्थित है।

WS2812B

ESP8266 में PWM के लिए 800KHz पर एलईडी स्ट्रिप्स चलाने के लिए पर्याप्त तेजी से कोई मानक हार्डवेयर विकल्प नहीं है। इसे दूर करने के लिए, यह प्रोजेक्ट एलईडी को चलाने के लिए SPI MOSI पिन का उपयोग करता है। एसपीआई की घड़ी की दर को समायोजित करके, और एसपीआई पेलोड को चारों ओर बदलकर, आप प्रत्येक व्यक्तिगत एलईडी का काफी विश्वसनीय नियंत्रण प्राप्त कर सकते हैं। यह विधि इसके दोषों के बिना नहीं है- एक के लिए एल ई डी को 5 वी स्रोत के साथ संचालित किया जाना चाहिए और एसपीआई पिन के आउटपुट में एक स्तर का शिफ्टर जोड़ा जाना चाहिए। लेकिन 3.3V काम करता है। दूसरा, एसपीआई पद्धति का उपयोग करते हुए अपूर्ण समय के कारण होने वाली गड़बड़ियां हैं। और तीसरा अब आप किसी और चीज़ के लिए SPI का उपयोग नहीं कर सकते। इस पद्धति पर अतिरिक्त पृष्ठभूमि यहां पाई जा सकती है, और कोड के इस हिस्से का स्रोत अतिरिक्त/ws2812 फ़ोल्डर में स्थित है।

एलईडी स्ट्रिप्स चलाने का एक अधिक विश्वसनीय तरीका i2s का उपयोग करना है। हालाँकि इस पद्धति में बहुत सारे चिप-विशिष्ट हैक हैं, इसलिए SPI सीखने के अभ्यास के रूप में एक बेहतर विकल्प प्रतीत होता है।

सिफारिश की: