ESP32 बेसिक स्टार्टर
किट
पैकिंग सूची
ESP32 परिचय
ESP32 में नए हैं? यहाँ से शुरू करें! ESP32, Espressif द्वारा विकसित कम लागत और कम बिजली वाले सिस्टम ऑन ए चिप (SoC) माइक्रोकंट्रोलर की एक श्रृंखला है जिसमें वाई-फाई और ब्लूटूथ वायरलेस क्षमताएँ और दोहरे कोर प्रोसेसर शामिल हैं। यदि आप ESP8266 से परिचित हैं, तो ESP32 इसका उत्तराधिकारी है, जिसमें बहुत सारी नई सुविधाएँ हैं।ESP32 विनिर्देश
यदि आप थोड़ा और अधिक तकनीकी और विशिष्ट जानकारी चाहते हैं, तो आप ESP32 के निम्नलिखित विस्तृत विनिर्देशों पर एक नज़र डाल सकते हैं (स्रोत: http://esp32.net/)—अधिक जानकारी के लिए, डेटाशीट की जाँच करें):
- वायरलेस कनेक्टिविटी WiFi: HT150.0 के साथ 40 Mbps डेटा दर
- ब्लूटूथ: BLE (ब्लूटूथ लो एनर्जी) और ब्लूटूथ क्लासिक
- प्रोसेसर: टेन्सिलिका एक्सटेंसा डुअल-कोर 32-बिट LX6 माइक्रोप्रोसेसर, 160 या 240 मेगाहर्ट्ज पर चलता है
- याद:
- ROM: 448 KB (बूटिंग और मुख्य कार्यों के लिए)
- SRAM: 520 KB (डेटा और निर्देशों के लिए)
- RTC फास्ट SRAM: 8 KB (डीप-स्लीप मोड से RTC बूट के दौरान डेटा भंडारण और मुख्य CPU के लिए)
- आरटीसी धीमा SRAM: 8KB (डीप-स्लीप मोड के दौरान सह-प्रोसेसर एक्सेसिंग के लिए) ईफ्यूज: 1 Kbit (जिसमें से 256 बिट्स सिस्टम (MAC पता और चिप कॉन्फ़िगरेशन) के लिए उपयोग किए जाते हैं और शेष 768 बिट्स ग्राहक अनुप्रयोगों के लिए आरक्षित हैं, जिनमें फ्लैश-एन्क्रिप्शन और चिप-आईडी शामिल हैं)
एम्बेडेड फ़्लैश: ESP16-D17WD और ESP0-PICO-D1 पर IO32, IO2, SD_CMD, SD_CLK, SD_DATA_32 और SD_DATA_4 के माध्यम से आंतरिक रूप से कनेक्ट किया गया फ़्लैश।
- 0 MiB (ESP32-D0WDQ6, ESP32-D0WD, और ESP32-S0WD चिप्स)
- 2 MiB (ESP32-D2WD चिप)
- 4 MiB (ESP32-PICO-D4 SiP मॉड्यूल)
कम पावर: यह सुनिश्चित करता है कि आप अभी भी ADC रूपांतरणों का उपयोग कर सकते हैं, उदाहरण के लिएampगहरी नींद के दौरान।
परिधीय इनपुट/आउटपुट:
- डीएमए के साथ परिधीय इंटरफ़ेस जिसमें कैपेसिटिव टच शामिल है
- एडीसी (एनालॉग-टू-डिजिटल कनवर्टर)
- डीएसी (डिजिटल-टू-एनालॉग कनवर्टर)
- I²C (इंटर-इंटीग्रेटेड सर्किट)
- यूएआरटी (यूनिवर्सल एसिंक्रोनस रिसीवर/ट्रांसमीटर)
- एसपीआई (सीरियल पेरिफेरल इंटरफ़ेस)
- I²S (एकीकृत इंटरचिप ध्वनि)
- आरएमआईआई (रिड्यूस्ड मीडिया-इंडिपेंडेंट इंटरफ़ेस)
- पीडब्लूएम (पल्स-चौड़ाई मॉडुलन)
सुरक्षा: AES और SSL/TLS के लिए हार्डवेयर त्वरक
ESP32 विकास बोर्ड
ESP32 नंगे ESP32 चिप को संदर्भित करता है। हालाँकि, "ESP32" शब्द का उपयोग ESP32 विकास बोर्डों को संदर्भित करने के लिए भी किया जाता है। ESP32 नंगे चिप्स का उपयोग करना आसान या व्यावहारिक नहीं है, खासकर जब सीखना, परीक्षण करना और प्रोटोटाइप करना हो। अधिकांश समय, आप ESP32 विकास बोर्ड का उपयोग करना चाहेंगे।
हम संदर्भ के रूप में ESP32 DEVKIT V1 बोर्ड का उपयोग करेंगे। नीचे दी गई तस्वीर में ESP32 DEVKIT V1 बोर्ड, 30 GPIO पिन वाला संस्करण दिखाया गया है।विशिष्टताएँ – ESP32 DEVKIT V1
निम्न तालिका ESP32 DEVKIT V1 DOIT बोर्ड की विशेषताओं और विनिर्देशों का सारांश दर्शाती है:
कोर की संख्या | 2 (दोहरी कोर) |
वाईफ़ाई | 2.4 गीगाहर्ट्ज से 150 एमबीआईटी/एस तक |
ब्लूटूथ | BLE (ब्लूटूथ लो एनर्जी) और लीगेसी ब्लूटूथ |
वास्तुकला | 32 बिट्स |
घड़ी आवृत्ति | 240 मेगाहर्ट्ज तक |
टक्कर मारना | 512 केबी |
पिंस | 30(मॉडल पर निर्भर करता है) |
बाह्य उपकरणों | कैपेसिटिव टच, ADC (एनालॉग से डिजिटल कनवर्टर), DAC (डिजिटल से एनालॉग कनवर्टर), 12C (इंटर-इंटीग्रेटेड सर्किट), UART (यूनिवर्सल एसिंक्रोनस रिसीवर/ट्रांसमीटर), CAN 2.0 (कंट्रोलर एरिया नेटवर्क), SPI (सीरियल पेरिफेरल इंटरफ़ेस), 12S (इंटीग्रेटेड इंटर-IC) ध्वनि), आरएमआईआई (रिड्यूस्ड मीडिया-इंडिपेंडेंट इंटरफेस), पीडब्ल्यूएम (पल्स चौड़ाई मॉडुलन), और अधिक। |
अंतर्निर्मित बटन | रीसेट और बूट बटन |
अंतर्निर्मित एल.ई.डी. | GPIO2 से जुड़ी अंतर्निर्मित नीली LED; अंतर्निर्मित लाल LED जो दर्शाती है कि बोर्ड को बिजली मिल रही है |
यूएसबी से UART पुल |
सीपी2102 |
यह एक माइक्रोयूएसबी इंटरफेस के साथ आता है जिसका उपयोग आप कोड अपलोड करने या पावर लगाने के लिए बोर्ड को अपने कंप्यूटर से कनेक्ट करने के लिए कर सकते हैं।
यह सीरियल इंटरफ़ेस का उपयोग करके COM पोर्ट के माध्यम से आपके कंप्यूटर के साथ संचार करने के लिए CP2102 चिप (USB से UART) का उपयोग करता है। एक और लोकप्रिय चिप CH340 है। जाँच करें कि आपके बोर्ड पर USB से UART चिप कनवर्टर क्या है क्योंकि आपको आवश्यक ड्राइवर स्थापित करने की आवश्यकता होगी ताकि आपका कंप्यूटर बोर्ड के साथ संचार कर सके (इसके बारे में अधिक जानकारी इस गाइड में बाद में दी गई है)।
इस बोर्ड में बोर्ड को पुनः आरंभ करने के लिए एक रीसेट बटन (जिसे EN लेबल किया जा सकता है) और बोर्ड को फ्लैशिंग मोड (कोड प्राप्त करने के लिए उपलब्ध) में डालने के लिए एक बूट बटन भी होता है। ध्यान दें कि कुछ बोर्ड में बूट बटन नहीं हो सकता है।
इसमें एक बिल्ट-इन ब्लू एलईडी भी है जो आंतरिक रूप से GPIO 2 से जुड़ी हुई है। यह एलईडी डिबगिंग के लिए उपयोगी है ताकि किसी प्रकार का विज़ुअल फिजिकल आउटपुट दिया जा सके। इसमें एक लाल एलईडी भी है जो बोर्ड को पावर देने पर जलती है।ESP32 पिनआउट
ESP32 बाह्य उपकरणों में शामिल हैं:
- 18 एनालॉग-टू-डिजिटल कनवर्टर (ADC) चैनल
- 3 एसपीआई इंटरफेस
- 3 UART इंटरफेस
- 2 I2C इंटरफेस
- 16 पीडब्लूएम आउटपुट चैनल
- 2 डिजिटल-टू-एनालॉग कन्वर्टर्स (DAC)
- 2 I2S इंटरफेस
- 10 कैपेसिटिव सेंसिंग GPIOs
ADC (एनालॉग टू डिजिटल कनवर्टर) और DAC (डिजिटल टू एनालॉग कनवर्टर) सुविधाएँ विशिष्ट स्थिर पिनों को सौंपी जाती हैं। हालाँकि, आप तय कर सकते हैं कि कौन सी पिन UART, I2C, SPI, PWM, आदि हैं - आपको बस उन्हें कोड में असाइन करना होगा। यह ESP32 चिप की मल्टीप्लेक्सिंग सुविधा के कारण संभव है।
यद्यपि आप सॉफ़्टवेयर पर पिन गुणों को परिभाषित कर सकते हैं, लेकिन डिफ़ॉल्ट रूप से पिन निर्दिष्ट होते हैं जैसा कि निम्नलिखित चित्र में दिखाया गया हैइसके अतिरिक्त, कुछ पिन ऐसे भी होते हैं जिनमें कुछ खास विशेषताएं होती हैं जो उन्हें किसी खास प्रोजेक्ट के लिए उपयुक्त या अनुपयुक्त बनाती हैं। निम्न तालिका दर्शाती है कि इनपुट, आउटपुट के रूप में उपयोग करने के लिए कौन से पिन सबसे अच्छे हैं और किन पिनों के साथ आपको सावधान रहने की आवश्यकता है।
हरे रंग में हाइलाइट किए गए पिन का उपयोग करना ठीक है। पीले रंग में हाइलाइट किए गए पिन का उपयोग करना ठीक है, लेकिन आपको ध्यान देने की आवश्यकता है क्योंकि उनका व्यवहार मुख्य रूप से बूट के समय अप्रत्याशित हो सकता है। लाल रंग में हाइलाइट किए गए पिन को इनपुट या आउटपुट के रूप में उपयोग करने की अनुशंसा नहीं की जाती है।
जीपी आईओ | इनपुट | उत्पादन | नोट्स |
0 | खींचा गया | OK | बूट पर PWM सिग्नल आउटपुट करता है, फ्लैशिंग मोड में प्रवेश करने के लिए LOW होना चाहिए |
1 | TX पिन | OK | बूट पर डिबग आउटपुट |
2 | OK | OK | ऑन-बोर्ड एलईडी से जुड़ा हुआ, फ्लैशिंग मोड में प्रवेश करने के लिए फ्लोटिंग या लो छोड़ा जाना चाहिए |
3 | OK | आरएक्स पिन | बूट पर उच्च |
4 | OK | OK | |
5 | OK | OK | बूट, स्ट्रैपिंग पिन पर PWM सिग्नल आउटपुट करता है |
12 | OK | OK | बूट को ऊपर खींचने पर वह विफल हो जाता है, स्ट्रैपिंग पिन |
13 | OK | OK | |
14 | OK | OK | बूट पर PWM सिग्नल आउटपुट करता है |
15 | OK | OK | बूट, स्ट्रैपिंग पिन पर PWM सिग्नल आउटपुट करता है |
16 | OK | OK | |
17 | OK | OK | |
18 | OK | OK | |
19 | OK | OK | |
21 | OK | OK | |
22 | OK | OK | |
23 | OK | OK | |
25 | OK | OK | |
26 | OK | OK | |
27 | OK | OK | |
32 | OK | OK | |
33 | OK | OK | |
34 | OK | केवल इनपुट | |
35 | OK | केवल इनपुट | |
36 | OK | केवल इनपुट | |
39 | OK | केवल इनपुट |
ESP32 GPIOs और इसके कार्यों के अधिक विस्तृत और गहन विश्लेषण के लिए पढ़ना जारी रखें।
केवल पिन इनपुट करें
GPIOs 34 से 39 GPIs हैं - केवल इनपुट पिन। इन पिनों में आंतरिक पुल-अप या पुल-डाउन प्रतिरोधक नहीं होते हैं। इन्हें आउटपुट के रूप में इस्तेमाल नहीं किया जा सकता है, इसलिए इन पिनों का इस्तेमाल केवल इनपुट के रूप में करें:
- जीपीआईओ 34
- जीपीआईओ 35
- जीपीआईओ 36
- जीपीआईओ 39
ESP-WROOM-32 पर SPI फ्लैश एकीकृत
कुछ ESP6 डेवलपमेंट बोर्ड में GPIO 11 से GPIO 32 तक एक्सपोज़ किए गए हैं। हालाँकि, ये पिन ESP-WROOM-32 चिप पर एकीकृत SPI फ़्लैश से जुड़े हुए हैं और अन्य उपयोगों के लिए अनुशंसित नहीं हैं। इसलिए, अपनी परियोजनाओं में इन पिन का उपयोग न करें:
- जीपीआईओ 6 (एससीके/सीएलके)
- जीपीआईओ 7 (एसडीओ/एसडी0)
- जीपीआईओ 8 (एसडीआई/एसडी1)
- जीपीआईओ 9 (एसएचडी/एसडी2)
- जीपीआईओ 10 (एसडब्ल्यूपी/एसडी3)
- जीपीआईओ 11 (सीएससी/सीएमडी)
कैपेसिटिव टच GPIOs
ESP32 में 10 आंतरिक कैपेसिटिव टच सेंसर हैं। ये किसी भी ऐसी चीज़ में होने वाले बदलावों को पहचान सकते हैं जिसमें विद्युत आवेश होता है, जैसे कि मानव त्वचा। इसलिए वे GPIO को उंगली से छूने पर होने वाले बदलावों को पहचान सकते हैं। इन पिन को आसानी से कैपेसिटिव पैड में एकीकृत किया जा सकता है और मैकेनिकल बटन की जगह ले सकते हैं। कैपेसिटिव टच पिन का उपयोग ESP32 को गहरी नींद से जगाने के लिए भी किया जा सकता है। वे आंतरिक टच सेंसर इन GPIO से जुड़े होते हैं:
- टी0 (जीपीआईओ 4)
- टी1 (जीपीआईओ 0)
- टी2 (जीपीआईओ 2)
- टी3 (जीपीआईओ 15)
- टी4 (जीपीआईओ 13)
- टी5 (जीपीआईओ 12)
- टी6 (जीपीआईओ 14)
- टी7 (जीपीआईओ 27)
- टी8 (जीपीआईओ 33)
- टी9 (जीपीआईओ 32)
डिजिटल कनवर्टर (ADC) के अनुरूप
ESP32 में 18 x 12 बिट्स ADC इनपुट चैनल हैं (जबकि ESP8266 में केवल 1x 10 बिट्स ADC है)। ये वे GPIO हैं जिन्हें ADC और संबंधित चैनलों के रूप में इस्तेमाल किया जा सकता है:
- ADC1_CH0 (जीपीआईओ 36)
- ADC1_CH1 (जीपीआईओ 37)
- ADC1_CH2 (जीपीआईओ 38)
- ADC1_CH3 (जीपीआईओ 39)
- ADC1_CH4 (जीपीआईओ 32)
- ADC1_CH5 (जीपीआईओ 33)
- ADC1_CH6 (जीपीआईओ 34)
- ADC1_CH7 (जीपीआईओ 35)
- ADC2_CH0 (जीपीआईओ 4)
- ADC2_CH1 (जीपीआईओ 0)
- ADC2_CH2 (जीपीआईओ 2)
- ADC2_CH3 (जीपीआईओ 15)
- ADC2_CH4 (जीपीआईओ 13)
- ADC2_CH5 (जीपीआईओ 12)
- ADC2_CH6 (जीपीआईओ 14)
- ADC2_CH7 (जीपीआईओ 27)
- ADC2_CH8 (जीपीआईओ 25)
- ADC2_CH9 (जीपीआईओ 26)
टिप्पणी: वाई-फाई का उपयोग करते समय ADC2 पिन का उपयोग नहीं किया जा सकता है। इसलिए, यदि आप वाई-फाई का उपयोग कर रहे हैं और आपको ADC2 GPIO से मान प्राप्त करने में परेशानी हो रही है, तो आप इसके बजाय ADC1 GPIO का उपयोग करने पर विचार कर सकते हैं। इससे आपकी समस्या हल हो जानी चाहिए।
ADC इनपुट चैनलों में 12-बिट रिज़ॉल्यूशन होता है। इसका मतलब है कि आप 0 से 4095 तक की एनालॉग रीडिंग प्राप्त कर सकते हैं, जिसमें 0 का मतलब 0V और 4095 का मतलब 3.3V है। आप कोड और ADC रेंज पर अपने चैनलों का रिज़ॉल्यूशन भी सेट कर सकते हैं।
ESP32 ADC पिन का व्यवहार रैखिक नहीं होता। आप शायद 0 और 0.1V या 3.2 और 3.3V के बीच अंतर नहीं कर पाएंगे। ADC पिन का उपयोग करते समय आपको इसे ध्यान में रखना होगा। आपको निम्न चित्र में दिखाए गए व्यवहार के समान व्यवहार मिलेगा।डिजिटल से एनालॉग कनवर्टर (DAC)
डिजिटल सिग्नल को एनालॉग वॉल्यूम में बदलने के लिए ESP2 पर 8 x 32 बिट्स DAC चैनल हैंtagई सिग्नल आउटपुट। ये DAC चैनल हैं:
- डीएसी1 (जीपीआईओ25)
- डीएसी2 (जीपीआईओ26)
आरटीसी जीपीआईओ
ESP32 पर RTC GPIO सपोर्ट है। RTC लो-पावर सबसिस्टम को रूट किए गए GPIO का उपयोग तब किया जा सकता है जब ESP32 डीप स्लीप में हो। इन RTC GPIO का उपयोग ESP32 को डीप स्लीप से जगाने के लिए किया जा सकता है जब अल्ट्रा लो
पावर (ULP) सह-प्रोसेसर चल रहा है। निम्नलिखित GPIO को बाहरी वेक अप स्रोत के रूप में इस्तेमाल किया जा सकता है।
- आरटीसी_GPIO0 (GPIO36)
- आरटीसी_GPIO3 (GPIO39)
- आरटीसी_GPIO4 (GPIO34)
- आरटीसी_GPIO5 (GPIO35)
- आरटीसी_GPIO6 (GPIO25)
- आरटीसी_GPIO7 (GPIO26)
- आरटीसी_GPIO8 (GPIO33)
- आरटीसी_GPIO9 (GPIO32)
- आरटीसी_GPIO10 (GPIO4)
- आरटीसी_GPIO11 (GPIO0)
- आरटीसी_GPIO12 (GPIO2)
- आरटीसी_GPIO13 (GPIO15)
- आरटीसी_GPIO14 (GPIO13)
- आरटीसी_GPIO15 (GPIO12)
- आरटीसी_GPIO16 (GPIO14)
- आरटीसी_GPIO17 (GPIO27)
पीडब्लूएम
ESP32 LED PWM कंट्रोलर में 16 स्वतंत्र चैनल हैं जिन्हें अलग-अलग गुणों वाले PWM सिग्नल उत्पन्न करने के लिए कॉन्फ़िगर किया जा सकता है। सभी पिन जो आउटपुट के रूप में कार्य कर सकते हैं उन्हें PWM पिन के रूप में इस्तेमाल किया जा सकता है (GPIOs 34 से 39 PWM उत्पन्न नहीं कर सकते हैं)।
PWM सिग्नल सेट करने के लिए, आपको कोड में इन मापदंडों को परिभाषित करना होगा:
- सिग्नल की आवृत्ति;
- साइकिल शुल्क;
- पीडब्लूएम चैनल;
- GPIO जहाँ आप सिग्नल आउटपुट करना चाहते हैं।
आई2सी
ESP32 में दो I2C चैनल हैं और किसी भी पिन को SDA या SCL के रूप में सेट किया जा सकता है। Arduino IDE के साथ ESP32 का उपयोग करते समय, डिफ़ॉल्ट I2C पिन निम्न हैं:
- जीपीआईओ 21 (एसडीए)
- जीपीआईओ 22 (एससीएल)
यदि आप वायर लाइब्रेरी का उपयोग करते समय अन्य पिन का उपयोग करना चाहते हैं, तो आपको बस कॉल करना होगा:
वायर.begin(एसडीए, एससीएल);
एसपीआई
डिफ़ॉल्ट रूप से, SPI के लिए पिन मैपिंग इस प्रकार है:
एसपीआई | मोसी | मीसो | सीएलके | CS |
वीएसपीआई | जीपीआईओ 23 | जीपीआईओ 19 | जीपीआईओ 18 | जीपीआईओ 5 |
एचएसपीआई | जीपीआईओ 13 | जीपीआईओ 12 | जीपीआईओ 14 | जीपीआईओ 15 |
बीच में आता है
सभी GPIO को इंटरप्ट के रूप में कॉन्फ़िगर किया जा सकता है।
स्ट्रैपिंग पिन
ESP32 चिप में निम्नलिखित स्ट्रैपिंग पिन हैं:
- GPIO 0 (बूट मोड में प्रवेश करने के लिए LOW होना आवश्यक है)
- GPIO 2 (बूट के दौरान फ्लोटिंग या LOW होना चाहिए)
- जीपीआईओ 4
- GPIO 5 (बूट के दौरान उच्च होना चाहिए)
- GPIO 12 (बूट के दौरान LOW होना चाहिए)
- GPIO 15 (बूट के दौरान उच्च होना चाहिए)
इनका उपयोग ESP32 को बूटलोडर या फ्लैशिंग मोड में डालने के लिए किया जाता है। बिल्ट-इन USB/सीरियल वाले ज़्यादातर डेवलपमेंट बोर्ड पर, आपको इन पिन की स्थिति के बारे में चिंता करने की ज़रूरत नहीं है। बोर्ड पिन को फ्लैशिंग या बूट मोड के लिए सही स्थिति में रखता है। ESP32 बूट मोड चयन के बारे में ज़्यादा जानकारी यहाँ पाई जा सकती है।
हालाँकि, यदि आपके पास उन पिनों से जुड़े परिधीय उपकरण हैं, तो आपको नया कोड अपलोड करने, ESP32 को नए फ़र्मवेयर के साथ फ्लैश करने या बोर्ड को रीसेट करने में परेशानी हो सकती है। यदि आपके पास स्ट्रैपिंग पिनों से जुड़े कुछ परिधीय उपकरण हैं और आपको कोड अपलोड करने या ESP32 को फ्लैश करने में परेशानी हो रही है, तो ऐसा इसलिए हो सकता है क्योंकि वे परिधीय उपकरण ESP32 को सही मोड में प्रवेश करने से रोक रहे हैं। सही दिशा में आपका मार्गदर्शन करने के लिए बूट मोड चयन दस्तावेज़ पढ़ें। रीसेट करने, फ्लैश करने या बूट करने के बाद, वे पिन अपेक्षित रूप से काम करते हैं।
बूट पर पिन उच्च
कुछ GPIO बूट या रीसेट के समय अपनी स्थिति को HIGH में बदल देते हैं या PWM सिग्नल आउटपुट करते हैं।
इसका मतलब यह है कि यदि आपके आउटपुट इन GPIO से जुड़े हैं तो ESP32 के रीसेट या बूट होने पर आपको अप्रत्याशित परिणाम मिल सकते हैं।
- जीपीआईओ 1
- जीपीआईओ 3
- जीपीआईओ 5
- GPIO 6 से GPIO 11 (ESP32 एकीकृत SPI फ़्लैश मेमोरी से जुड़ा हुआ - उपयोग करने के लिए अनुशंसित नहीं है)।
- जीपीआईओ 14
- जीपीआईओ 15
सक्षम करें (EN)
सक्षम (EN) 3.3V रेगुलेटर का सक्षम पिन है। इसे ऊपर खींचा जाता है, इसलिए 3.3V रेगुलेटर को अक्षम करने के लिए इसे ग्राउंड से कनेक्ट करें। इसका मतलब है कि आप अपने ESP32 को पुनः आरंभ करने के लिए पुशबटन से जुड़े इस पिन का उपयोग कर सकते हैं, उदाहरण के लिएampले.
GPIO खींचा गया करंट
ESP40 डेटाशीट में "अनुशंसित परिचालन स्थितियाँ" अनुभाग के अनुसार प्रति GPIO द्वारा ली गई पूर्ण अधिकतम धारा 32mA है।
ESP32 बिल्ट-इन हॉल इफेक्ट सेंसर
ESP32 में एक अंतर्निर्मित हॉल इफेक्ट सेंसर भी है जो अपने आस-पास के चुंबकीय क्षेत्र में होने वाले परिवर्तनों का पता लगाता है
ESP32 Arduino आईडीई
Arduino IDE के लिए एक ऐड-ऑन है जो आपको Arduino IDE और इसकी प्रोग्रामिंग भाषा का उपयोग करके ESP32 को प्रोग्राम करने की अनुमति देता है। इस ट्यूटोरियल में हम आपको दिखाएंगे कि Arduino IDE में ESP32 बोर्ड कैसे इंस्टॉल करें, चाहे आप Windows, Mac OS X या Linux का उपयोग कर रहे हों।
पूर्वापेक्षाएँ: Arduino IDE स्थापित
इस इंस्टॉलेशन प्रक्रिया को शुरू करने से पहले, आपको अपने कंप्यूटर पर Arduino IDE इंस्टॉल करना होगा। Arduino IDE के दो संस्करण हैं जिन्हें आप इंस्टॉल कर सकते हैं: संस्करण 1 और संस्करण 2।
आप निम्न लिंक पर क्लिक करके Arduino IDE डाउनलोड और इंस्टॉल कर सकते हैं: arduino.cc/en/मुख्य/सॉफ्टवेयर
हम कौन सा Arduino IDE संस्करण सुझाते हैं? फिलहाल, कुछ हैं plugins ESP32 के लिए (SPIFFS की तरह) Fileसिस्टम अपलोडर प्लगइन) जो अभी तक Arduino 2 पर समर्थित नहीं हैं। इसलिए, यदि आप भविष्य में SPIFFS प्लगइन का उपयोग करने का इरादा रखते हैं, तो हम लीगेसी संस्करण 1.8.X को स्थापित करने की सलाह देते हैं। आपको इसे खोजने के लिए बस Arduino सॉफ़्टवेयर पृष्ठ पर नीचे स्क्रॉल करना होगा।
Arduino IDE में ESP32 ऐड-ऑन स्थापित करना
अपने Arduino IDE में ESP32 बोर्ड स्थापित करने के लिए, इन अगले निर्देशों का पालन करें:
- अपने Arduino IDE में, पर जाएँ File> वरीयताएँ
- “अतिरिक्त बोर्ड प्रबंधक” में निम्नलिखित दर्ज करें URLएस" फ़ील्ड:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
उसके बाद ओके बटन दबाएं:टिप्पणी: यदि आपके पास पहले से ही ESP8266 बोर्ड हैं URL, आप अलग कर सकते हैं URLs को अल्पविराम से इस प्रकार जोड़ें:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json,
http://arduino.esp8266.com/stable/package_esp8266com_index.json
बोर्ड मैनेजर खोलें। टूल्स > बोर्ड > बोर्ड मैनेजर पर जाएँ…निम्न को खोजें ESP32 and press install button for the “ESP32 by Espressif Systems“:
बस, कुछ सेकंड बाद यह इंस्टॉल हो जाएगा।
टेस्ट कोड अपलोड करें
ESP32 बोर्ड को अपने कंप्यूटर से जोड़ें: अपने Arduino IDE को खोलते हुए, इन चरणों का पालन करें:
- टूल्स > बोर्ड मेनू में अपना बोर्ड चुनें (मेरे मामले में यह ESP32 DEV मॉड्यूल है)
- पोर्ट का चयन करें (यदि आपको अपने Arduino IDE में COM पोर्ट दिखाई नहीं देता है, तो आपको CP210x USB से UART ब्रिज VCP ड्राइवर्स स्थापित करने की आवश्यकता है):
- निम्नलिखित ex खोलेंampले अंडर File > पूर्वampलेस > वाईफ़ाई
(ESP32) > WiFiScan - आपके Arduino IDE में एक नया स्केच खुलता है:
- Arduino IDE में अपलोड बटन दबाएँ। कोड संकलित होने और आपके बोर्ड पर अपलोड होने तक कुछ सेकंड प्रतीक्षा करें।
- यदि सब कुछ अपेक्षा के अनुरूप हुआ तो आपको "अपलोडिंग पूर्ण" संदेश दिखाई देगा।
- Arduino IDE सीरियल मॉनिटर को 115200 की बॉड दर पर खोलें:
- ESP32 ऑन-बोर्ड सक्षम बटन दबाएं और आपको अपने ESP32 के पास उपलब्ध नेटवर्क दिखाई देंगे:
समस्या निवारण
यदि आप अपने ESP32 पर एक नया स्केच अपलोड करने का प्रयास करते हैं और आपको यह त्रुटि संदेश मिलता है "एक गंभीर त्रुटि हुई: ESP32 से कनेक्ट करने में विफल: समय समाप्त हो गया... कनेक्ट हो रहा है..."। इसका मतलब है कि आपका ESP32 फ्लैशिंग/अपलोडिंग मोड में नहीं है।
सही बोर्ड नाम और COM पोर्ट का चयन करने के बाद, इन चरणों का पालन करें:
अपने ESP32 बोर्ड में “BOOT” बटन को दबाए रखें
- अपना स्केच अपलोड करने के लिए Arduino IDE में “अपलोड” बटन दबाएँ:
- जब आप अपने Arduino IDE में “Connecting….” संदेश देखें, तो “BOOT” बटन से उंगली हटा लें:
- उसके बाद, आपको “अपलोडिंग पूर्ण” संदेश दिखाई देगा
बस इतना ही। आपके ESP32 पर नया स्केच चलना चाहिए। ESP32 को पुनः आरंभ करने और नया अपलोड किया गया स्केच चलाने के लिए “ENABLE” बटन दबाएँ।
जब भी आप कोई नया स्केच अपलोड करना चाहेंगे, आपको उस बटन अनुक्रम को हर बार दोहराना होगा।
प्रोजेक्ट 1 ESP32 इनपुट आउटपुट
इस आरंभिक मार्गदर्शिका में आप सीखेंगे कि Arduino IDE के साथ ESP32 का उपयोग करके बटन स्विच जैसे डिजिटल इनपुट को कैसे पढ़ें और LED जैसे डिजिटल आउटपुट को कैसे नियंत्रित करें।
आवश्यक शर्तें
हम Arduino IDE का उपयोग करके ESP32 को प्रोग्राम करेंगे। इसलिए, आगे बढ़ने से पहले सुनिश्चित करें कि आपके पास ESP32 बोर्ड ऐड-ऑन इंस्टॉल है:
- Arduino IDE में ESP32 ऐड-ऑन स्थापित करना
ESP32 नियंत्रण डिजिटल आउटपुट
सबसे पहले, आपको वह GPIO सेट करना होगा जिसे आप OUTPUT के रूप में नियंत्रित करना चाहते हैं। pinMode() फ़ंक्शन का उपयोग इस प्रकार करें:
पिनमोड(GPIO, आउटपुट);
डिजिटल आउटपुट को नियंत्रित करने के लिए आपको बस digitalWrite() फ़ंक्शन का उपयोग करना होगा, जो तर्क के रूप में, आपके द्वारा संदर्भित GPIO (इंट नंबर) और स्थिति, या तो HIGH या LOW को स्वीकार करता है।
डिजिटलराइट(GPIO, स्थिति);
GPIO 6 से 11 (एकीकृत SPI फ़्लैश से जुड़े) और GPIO 34, 35, 36 और 39 (केवल इनपुट GPIO) को छोड़कर सभी GPIO को आउटपुट के रूप में उपयोग किया जा सकता है;
ESP32 GPIO के बारे में अधिक जानें: ESP32 GPIO संदर्भ गाइड
ESP32 डिजिटल इनपुट पढ़ें
सबसे पहले, pinMode() फ़ंक्शन का उपयोग करके उस GPIO को सेट करें जिसे आप INPUT के रूप में पढ़ना चाहते हैं, इस प्रकार:
पिनमोड(GPIO, इनपुट);
किसी डिजिटल इनपुट, जैसे कि बटन, को पढ़ने के लिए आप digitalRead() फ़ंक्शन का उपयोग करते हैं, जो उस GPIO (इंट नंबर) को तर्क के रूप में स्वीकार करता है, जिसका आप संदर्भ दे रहे हैं।
डिजिटलरीड(GPIO);
GPIO 32 से 6 (एकीकृत SPI फ़्लैश से जुड़े) को छोड़कर, सभी ESP11 GPIO को इनपुट के रूप में उपयोग किया जा सकता है।
ESP32 GPIO के बारे में अधिक जानें: ESP32 GPIO संदर्भ गाइड
प्रोजेक्ट एक्सample
आपको डिजिटल इनपुट और डिजिटल आउटपुट का उपयोग करने का तरीका दिखाने के लिए, हम एक सरल प्रोजेक्ट बनाएंगेampएक पुशबटन और एक एलईडी के साथ ले। हम पुशबटन की स्थिति को पढ़ेंगे और उसके अनुसार एलईडी को प्रकाशित करेंगे जैसा कि निम्नलिखित चित्र में दिखाया गया है।
आवश्यक भाग
सर्किट बनाने के लिए आवश्यक भागों की सूची यहां दी गई है:
- ईएसपी32 डेवकिट V1
- 5 मिमी एलईडी
- 220 ओम अवरोधक
- बटन दबाओ
- 10k ओम रोकनेवाला
- ब्रेडबोर्ड
- जम्पर तार
योजनाबद्ध आरेख
आगे बढ़ने से पहले, आपको एक एलईडी और एक पुशबटन के साथ एक सर्किट को इकट्ठा करना होगा।
हम LED को GPIO 5 से और पुशबटन को GPIO से जोड़ेंगे 4.कोड
Arduino IDE में Project_1_ESP32_Inputs_Outputs.ino कोड खोलेंकोड कैसे काम करता है
निम्नलिखित दो पंक्तियों में, आप पिन निर्दिष्ट करने के लिए चर बनाते हैं:
बटन GPIO 4 से जुड़ा है और LED GPIO 5 से जुड़ा है। ESP32 के साथ Arduino IDE का उपयोग करते समय, 4 GPIO 4 के अनुरूप होता है और 5 GPIO 5 के अनुरूप होता है।
इसके बाद, आप बटन की स्थिति को बनाए रखने के लिए एक वैरिएबल बनाते हैं। डिफ़ॉल्ट रूप से, यह 0 (दबाया नहीं गया) होता है।
int बटनस्टेट = 0;
सेटअप() में, आप बटन को इनपुट के रूप में, और एलईडी को आउटपुट के रूप में प्रारंभ करते हैं।
इसके लिए, आप pinMode() फ़ंक्शन का उपयोग करते हैं जो आपके द्वारा संदर्भित पिन और मोड: INPUT या OUTPUT को स्वीकार करता है।
पिनमोड(बटनपिन, इनपुट);
पिनमोड(ledPin, आउटपुट);
लूप() में आप बटन की स्थिति पढ़ते हैं और उसके अनुसार एलईडी सेट करते हैं।
अगली पंक्ति में, आप बटन स्थिति को पढ़ते हैं और उसे buttonState वेरिएबल में सहेजते हैं।
जैसा कि हमने पहले देखा, आप digitalRead() फ़ंक्शन का उपयोग करते हैं।
बटनस्टेट = डिजिटलरीड(बटनपिन);
निम्न if कथन, जाँचता है कि बटन की स्थिति HIGH है या नहीं। यदि यह है, तो यह digitalWrite() फ़ंक्शन का उपयोग करके LED को चालू करता है जो ledPin को तर्क के रूप में स्वीकार करता है, और स्थिति HIGH है।
यदि (बटनस्टेट == उच्च)यदि बटन की स्थिति HIGH नहीं है, तो आप LED को बंद कर दें। बस digitalWrite() फ़ंक्शन में LOW को दूसरे तर्क के रूप में सेट करें।
कोड अपलोड करना
अपलोड बटन पर क्लिक करने से पहले, टूल्स > बोर्ड पर जाएं, और बोर्ड का चयन करें: DOIT ESP32 DEVKIT V1 बोर्ड।
टूल्स > पोर्ट पर जाएँ और वह COM पोर्ट चुनें जिससे ESP32 कनेक्ट है। फिर, अपलोड बटन दबाएँ और “अपलोड हो गया” संदेश का इंतज़ार करें।नोट: यदि आपको डिबगिंग विंडो पर बहुत सारे बिंदु (कनेक्ट हो रहे हैं…__…__) और “ESP32 से कनेक्ट करने में विफल: पैकेट हेडर के लिए प्रतीक्षा करते समय समय समाप्त हो गया” संदेश दिखाई देता है, तो इसका मतलब है कि आपको बिंदुओं के बाद ESP32 ऑन-बोर्ड बूट बटन दबाना होगा
दिखाई देने लगें.समस्या निवारण
प्रदर्शन
कोड अपलोड करने के बाद, अपने सर्किट का परीक्षण करें। जब आप पुशबटन दबाएंगे तो आपका LED जलना चाहिए:और जब आप इसे छोड़ दें तो इसे बंद कर दें:
प्रोजेक्ट 2 ESP32 एनालॉग इनपुट
यह प्रोजेक्ट दिखाता है कि Arduino IDE का उपयोग करके ESP32 के साथ एनालॉग इनपुट कैसे पढ़ा जाए।
एनालॉग रीडिंग, पोटेंशियोमीटर या एनालॉग सेंसर जैसे परिवर्तनीय प्रतिरोधकों से मान पढ़ने के लिए उपयोगी है।
एनालॉग इनपुट (ADC)
ESP32 के साथ एनालॉग मान पढ़ने का मतलब है कि आप अलग-अलग वॉल्यूम को माप सकते हैंtag0 V और 3.3 V के बीच का स्तर.
वॉल्यूमtagमापा गया वोल्टेज फिर 0 और 4095 के बीच एक मान को सौंपा जाता है, जिसमें 0 V 0 के अनुरूप होता है, और 3.3 V 4095 के अनुरूप होता है। कोई भी वॉल्यूमtag0 V और 3.3 V के बीच के वोल्टेज को बीच में संगत मान दिया जाएगा।एडीसी गैर-रैखिक है
आदर्श रूप से, आप ESP32 ADC पिन का उपयोग करते समय एक रैखिक व्यवहार की अपेक्षा करेंगे।
हालाँकि, ऐसा नहीं होता। आपको जो व्यवहार मिलेगा वह निम्न चार्ट में दिखाया गया है:इस व्यवहार का अर्थ है कि आपका ESP32 3.3 V और 3.2 V में अंतर करने में सक्षम नहीं है।
आपको दोनों वॉल्यूम के लिए समान मान मिलेगाtagईएस: 4095.
बहुत कम वॉल्यूम के लिए भी यही होता हैtage मान: 0 V और 0.1 V के लिए आपको समान मान मिलेगा: 0. ESP32 ADC पिन का उपयोग करते समय आपको इसे ध्यान में रखना होगा।
analogRead() फ़ंक्शन
Arduino IDE का उपयोग करके ESP32 के साथ एनालॉग इनपुट पढ़ना analogRead() फ़ंक्शन का उपयोग करने जितना ही सरल है। यह तर्क के रूप में, वह GPIO स्वीकार करता है जिसे आप पढ़ना चाहते हैं:
एनालॉगरीड(GPIO);
DEVKIT V15board (1 GPIOs वाला संस्करण) में केवल 30 उपलब्ध हैं।
अपने ESP32 बोर्ड पिनआउट को पकड़ें और ADC पिन का पता लगाएँ। नीचे दिए गए चित्र में इन्हें लाल बॉर्डर से हाइलाइट किया गया है।इन एनालॉग इनपुट पिन में 12-बिट रिज़ॉल्यूशन होता है। इसका मतलब है कि जब आप एनालॉग इनपुट पढ़ते हैं, तो इसकी रेंज 0 से 4095 तक हो सकती है।
नोट: वाई-फाई का उपयोग करते समय ADC2 पिन का उपयोग नहीं किया जा सकता है। इसलिए, यदि आप वाई-फाई का उपयोग कर रहे हैं और आपको ADC2 GPIO से मान प्राप्त करने में परेशानी हो रही है, तो आप इसके बजाय ADC1 GPIO का उपयोग करने पर विचार कर सकते हैं, इससे आपकी समस्या हल हो जाएगी।
यह देखने के लिए कि सब कुछ एक साथ कैसे जुड़ा हुआ है, हम एक सरल उदाहरण बनाएंगेampएक पोटेंशियोमीटर से एक एनालॉग मान पढ़ने के लिए।
आवश्यक भाग
इस पूर्व के लिएampले, आपको निम्नलिखित भागों की आवश्यकता है:
- ESP32 DEVKIT V1 बोर्ड
- तनाव नापने का यंत्र
- ब्रेडबोर्ड
- जम्पर तार
ढांच के रूप में
अपने ESP32 में एक पोटेंशियोमीटर वायर करें। पोटेंशियोमीटर का मध्य पिन GPIO 4 से जुड़ा होना चाहिए। आप संदर्भ के रूप में निम्नलिखित योजनाबद्ध आरेख का उपयोग कर सकते हैं।कोड
हम Arduino IDE का उपयोग करके ESP32 को प्रोग्राम करेंगे, इसलिए आगे बढ़ने से पहले सुनिश्चित करें कि आपके पास ESP32 ऐड-ऑन स्थापित है:(यदि आपने यह चरण पहले ही कर लिया है, तो आप अगले चरण पर जा सकते हैं।)
Arduino IDE में ESP32 ऐड-ऑन स्थापित करना
Arduino IDE में Project_2_ESP32_Inputs_Outputs.ino कोड खोलेंयह कोड केवल पोटेंशियोमीटर से मान पढ़ता है और उन मानों को सीरियल मॉनिटर में प्रिंट करता है।
कोड में, आप GPIO को परिभाषित करके शुरू करते हैं जिससे पोटेंशियोमीटर जुड़ा हुआ है। इस उदाहरण मेंampले, GPIO 4.setup() में, 115200 की बॉड दर पर एक धारावाहिक संचार आरंभ करें।
loop() में, potPin से एनालॉग इनपुट पढ़ने के लिए analogRead() फ़ंक्शन का उपयोग करें।
अंत में, पोटेंशियोमीटर से पढ़े गए मानों को सीरियल मॉनिटर में प्रिंट करें।
दिए गए कोड को अपने ESP32 पर अपलोड करें। सुनिश्चित करें कि आपने टूल्स मेनू में सही बोर्ड और COM पोर्ट चुना है।
पूर्व का परीक्षणample
कोड अपलोड करने और ESP32 रीसेट बटन दबाने के बाद, 115200 की बॉड दर पर सीरियल मॉनिटर खोलें। पोटेंशियोमीटर को घुमाएं और मानों को बदलते हुए देखें।आपको मिलने वाला अधिकतम मान 4095 होगा तथा न्यूनतम मान 0 होगा।
ऊपर लपेटकर
इस लेख में आपने सीखा कि Arduino IDE के साथ ESP32 का उपयोग करके एनालॉग इनपुट कैसे पढ़ें। संक्षेप में:
- ESP32 DEVKIT V1 DOIT बोर्ड (30 पिन वाला संस्करण) में 15 ADC पिन हैं जिनका उपयोग आप एनालॉग इनपुट पढ़ने के लिए कर सकते हैं।
- इन पिनों का रिज़ॉल्यूशन 12 बिट्स का है, जिसका अर्थ है कि आप 0 से 4095 तक मान प्राप्त कर सकते हैं।
- Arduino IDE में मान पढ़ने के लिए, आप बस analogRead() फ़ंक्शन का उपयोग करें।
- ESP32 ADC पिन का व्यवहार रैखिक नहीं होता। आप शायद 0 और 0.1V या 3.2 और 3.3V के बीच अंतर नहीं कर पाएंगे। ADC पिन का उपयोग करते समय आपको यह बात ध्यान में रखनी होगी।
प्रोजेक्ट 3 ESP32 PWM (एनालॉग आउटपुट)
इस ट्यूटोरियल में हम आपको दिखाएंगे कि Arduino IDE का उपयोग करके ESP32 के साथ PWM सिग्नल कैसे उत्पन्न करें।ampअब हम एक सरल सर्किट का निर्माण करेंगे जो ESP32 के LED PWM नियंत्रक का उपयोग करके LED को मंद कर देगा।ESP32 एलईडी PWM नियंत्रक
ईएसपी32 में 16 स्वतंत्र चैनलों वाला एक एलईडी पीडब्लूएम नियंत्रक है, जिसे विभिन्न गुणों वाले पीडब्लूएम सिग्नल उत्पन्न करने के लिए कॉन्फ़िगर किया जा सकता है।
Arduino IDE का उपयोग करके PWM के साथ LED को मंद करने के लिए आपको निम्नलिखित चरणों का पालन करना होगा:
- सबसे पहले, आपको एक PWM चैनल चुनना होगा। 16 से 0 तक 15 चैनल हैं।
- फिर, आपको PWM सिग्नल आवृत्ति सेट करने की आवश्यकता है। LED के लिए, 5000 Hz की आवृत्ति का उपयोग करना ठीक है।
- आपको सिग्नल का ड्यूटी साइकिल रिज़ॉल्यूशन भी सेट करना होगा: आपके पास 1 से 16 बिट तक का रिज़ॉल्यूशन है। हम 8-बिट रिज़ॉल्यूशन का उपयोग करेंगे, जिसका अर्थ है कि आप 0 से 255 तक के मान का उपयोग करके एलईडी की चमक को नियंत्रित कर सकते हैं।
- इसके बाद, आपको यह निर्दिष्ट करना होगा कि सिग्नल किस GPIO या GPIOs पर दिखाई देगा। इसके लिए आप निम्न फ़ंक्शन का उपयोग करेंगे:
ledcAttachPin(GPIO, चैनल)
यह फ़ंक्शन दो तर्क स्वीकार करता है। पहला GPIO है जो सिग्नल आउटपुट करेगा, और दूसरा चैनल है जो सिग्नल उत्पन्न करेगा। - अंत में, PWM का उपयोग करके LED चमक को नियंत्रित करने के लिए, आप निम्नलिखित फ़ंक्शन का उपयोग करते हैं:
ledcWrite(चैनल, ड्यूटीसाइकिल)
यह फ़ंक्शन PWM सिग्नल उत्पन्न करने वाले चैनल और ड्यूटी साइकिल को तर्क के रूप में स्वीकार करता है।
आवश्यक भाग
इस ट्यूटोरियल का अनुसरण करने के लिए आपको इन भागों की आवश्यकता होगी:
- ESP32 DEVKIT V1 बोर्ड
- 5mm एलईडी
- 220 ओम अवरोधक
- ब्रेडबोर्ड
- जम्पर तार
ढांच के रूप में
अपने ESP32 में एक LED को वायर करें जैसा कि नीचे दिए गए योजनाबद्ध आरेख में दिखाया गया है। LED को GPIO से कनेक्ट किया जाना चाहिए 4.टिप्पणी: आप अपनी इच्छानुसार किसी भी पिन का उपयोग कर सकते हैं, बशर्ते वह आउटपुट के रूप में कार्य कर सके। सभी पिन जो आउटपुट के रूप में कार्य कर सकते हैं, उन्हें PWM पिन के रूप में उपयोग किया जा सकता है। ESP32 GPIO के बारे में अधिक जानकारी के लिए, पढ़ें: ESP32 पिनआउट संदर्भ: आपको कौन से GPIO पिन का उपयोग करना चाहिए?
कोड
हम Arduino IDE का उपयोग करके ESP32 को प्रोग्राम करेंगे, इसलिए आगे बढ़ने से पहले सुनिश्चित करें कि आपके पास ESP32 ऐड-ऑन स्थापित है:(यदि आपने यह चरण पहले ही कर लिया है, तो आप अगले चरण पर जा सकते हैं।)
Arduino IDE में ESP32 ऐड-ऑन स्थापित करना
Arduino IDE में Project_3_ESP32_PWM.ino कोड खोलेंआप सबसे पहले उस पिन को परिभाषित करते हैं जिससे LED जुड़ी होती है। इस मामले में LED GPIO 4 से जुड़ी होती है।
फिर, आप PWM सिग्नल गुण सेट करते हैं। आप 5000 हर्ट्ज की आवृत्ति निर्धारित करते हैं, सिग्नल उत्पन्न करने के लिए चैनल 0 चुनते हैं, और 8 बिट का रिज़ॉल्यूशन सेट करते हैं। आप अलग-अलग PWM सिग्नल उत्पन्न करने के लिए इनसे अलग अन्य गुण चुन सकते हैं।
setup() में, आपको ledcSetup() फ़ंक्शन का उपयोग करके पहले से परिभाषित गुणों के साथ LED PWM को कॉन्फ़िगर करना होगा, जो तर्क के रूप में, ledChannel, आवृत्ति और रिज़ॉल्यूशन को निम्नानुसार स्वीकार करता है:
इसके बाद, आपको वह GPIO चुनना होगा जिससे आप सिग्नल प्राप्त करेंगे। इसके लिए ledcAttachPin() फ़ंक्शन का उपयोग करें जो तर्क के रूप में उस GPIO को स्वीकार करता है जहाँ से आप सिग्नल प्राप्त करना चाहते हैं, और वह चैनल जो सिग्नल उत्पन्न कर रहा है। इस उदाहरण मेंampले, हमें ledPin GPIO में सिग्नल मिलेगा, जो GPIO 4 से मेल खाता है। सिग्नल उत्पन्न करने वाला चैनल ledChannel है, जो चैनल 0 से मेल खाता है।
लूप में, आप LED की चमक बढ़ाने के लिए ड्यूटी चक्र को 0 और 255 के बीच बदलेंगे।
और फिर, चमक को कम करने के लिए 255 और 0 के बीच।
एलईडी की चमक निर्धारित करने के लिए, आपको बस ledcWrite() फ़ंक्शन का उपयोग करना होगा जो सिग्नल उत्पन्न करने वाले चैनल और ड्यूटी साइकिल को तर्क के रूप में स्वीकार करता है।
चूंकि हम 8-बिट रिज़ॉल्यूशन का उपयोग कर रहे हैं, इसलिए ड्यूटी साइकिल को 0 से 255 तक के मान का उपयोग करके नियंत्रित किया जाएगा। ध्यान दें कि ledcWrite() फ़ंक्शन में हम उस चैनल का उपयोग करते हैं जो सिग्नल उत्पन्न कर रहा है, न कि GPIO का।
पूर्व का परीक्षणample
कोड को अपने ESP32 पर अपलोड करें। सुनिश्चित करें कि आपने सही बोर्ड और COM पोर्ट चुना है। अपने सर्किट को देखें। आपके पास एक डिमर LED होना चाहिए जो चमक को बढ़ाता और घटाता है।
प्रोजेक्ट 4 ESP32 PIR मोशन सेंसर
यह परियोजना दिखाती है कि PIR मोशन सेंसर का उपयोग करके ESP32 के साथ गति का पता कैसे लगाया जाए। जब गति का पता चलता है तो बजर अलार्म बजाएगा, और जब पूर्व निर्धारित समय (जैसे 4 सेकंड) तक कोई गति नहीं पाई जाती है तो अलार्म बंद हो जाएगा।
HC-SR501 मोशन सेंसर कैसे काम करता है
.HC-SR501 सेंसर का कार्य सिद्धांत चलती वस्तु पर अवरक्त विकिरण के परिवर्तन पर आधारित है। HC-SR501 सेंसर द्वारा पता लगाए जाने के लिए, वस्तु को दो आवश्यकताओं को पूरा करना होगा:
- वस्तु अवरक्त मार्ग से प्रकाश उत्सर्जित कर रही है।
- वस्तु गतिशील या हिल रही है
इसलिए:
यदि कोई वस्तु अवरक्त किरण उत्सर्जित कर रही है, लेकिन गतिशील नहीं है (उदाहरण के लिए, कोई व्यक्ति बिना हिले-डुले स्थिर खड़ा है), तो सेंसर द्वारा इसका पता नहीं लगाया जा सकता।
यदि कोई वस्तु गतिशील है, लेकिन अवरक्त किरण उत्सर्जित नहीं कर रही है (जैसे, रोबोट या वाहन), तो सेंसर द्वारा इसका पता नहीं लगाया जा सकता।
टाइमर का परिचय
इस पूर्व मेंampहम टाइमर भी पेश करेंगे। हम चाहते हैं कि गति का पता लगने के बाद एलईडी एक पूर्व निर्धारित संख्या में सेकंड के लिए चालू रहे। एक देरी() फ़ंक्शन का उपयोग करने के बजाय जो आपके कोड को ब्लॉक करता है और आपको निर्धारित संख्या में सेकंड के लिए कुछ और करने की अनुमति नहीं देता है, हमें एक टाइमर का उपयोग करना चाहिए।विलंब() फ़ंक्शन
आपको delay() फ़ंक्शन से परिचित होना चाहिए क्योंकि इसका व्यापक रूप से उपयोग किया जाता है। इस फ़ंक्शन का उपयोग करना बहुत सरल है। यह एक तर्क के रूप में एक एकल int संख्या स्वीकार करता है।
यह संख्या मिलीसेकंड में उस समय को दर्शाती है जो प्रोग्राम को कोड की अगली पंक्ति पर जाने तक प्रतीक्षा करनी पड़ती है।जब आप delay(1000) करते हैं तो आपका प्रोग्राम उस लाइन पर 1 सेकंड के लिए रुक जाता है।
delay() एक ब्लॉकिंग फ़ंक्शन है। ब्लॉकिंग फ़ंक्शन किसी प्रोग्राम को तब तक कुछ और करने से रोकता है जब तक कि वह विशेष कार्य पूरा न हो जाए। यदि आपको एक ही समय में कई कार्य करने हैं, तो आप delay() का उपयोग नहीं कर सकते।
अधिकांश परियोजनाओं के लिए आपको विलंब का उपयोग करने से बचना चाहिए और इसके बजाय टाइमर का उपयोग करना चाहिए।
मिलिस() फ़ंक्शन
millis() नामक फ़ंक्शन का उपयोग करके आप प्रोग्राम के शुरू होने के बाद से बीते मिलीसेकंड की संख्या बता सकते हैं।यह फ़ंक्शन क्यों उपयोगी है? क्योंकि कुछ गणित का उपयोग करके, आप आसानी से यह सत्यापित कर सकते हैं कि आपके कोड को ब्लॉक किए बिना कितना समय बीत चुका है।
आवश्यक भाग
इस ट्यूटोरियल का अनुसरण करने के लिए आपको निम्नलिखित भागों की आवश्यकता होगी
- ESP32 DEVKIT V1 बोर्ड
- पीआईआर मोशन सेंसर (HC-SR501)
- सक्रिय बजर
- जम्पर तार
- ब्रेडबोर्ड
ढांच के रूप मेंटिप्पणी: कार्यशील वॉल्यूमtagHC-SR501 का वोल्टेज 5V है। इसे पावर देने के लिए Vin पिन का उपयोग करें।
कोड
इस ट्यूटोरियल के साथ आगे बढ़ने से पहले आपको अपने Arduino IDE में ESP32 ऐड-ऑन इंस्टॉल करना होगा। यदि आपने पहले से ऐसा नहीं किया है, तो Arduino IDE पर ESP32 इंस्टॉल करने के लिए निम्न में से किसी एक ट्यूटोरियल का पालन करें। (यदि आपने पहले से ही यह चरण पूरा कर लिया है, तो आप अगले चरण पर जा सकते हैं।)
Arduino IDE में ESP32 ऐड-ऑन स्थापित करना
Arduino IDE में Project_4_ESP32_PIR_Motion_Sensor.ino कोड खोलें।
प्रदर्शन
कोड को अपने ESP32 बोर्ड पर अपलोड करें। सुनिश्चित करें कि आपने सही बोर्ड और COM पोर्ट चुना है।कोड संदर्भ चरण अपलोड करें।
सीरियल मॉनिटर को 115200 बॉड दर पर खोलें।अपना हाथ पीआईआर सेंसर के सामने ले जाएँ। बजर चालू हो जाना चाहिए, और सीरियल मॉनिटर में संदेश छप जाएगा जिसमें लिखा होगा "गति का पता चला! बजर अलार्म"।
4 सेकंड के बाद बजर बंद हो जाना चाहिए।
प्रोजेक्ट 5 ESP32 स्विच Web सर्वर
इस प्रोजेक्ट में आप एक स्टैंडअलोन बनाएंगे web ESP32 के साथ सर्वर जो Arduino IDE प्रोग्रामिंग वातावरण का उपयोग करके आउटपुट (दो एलईडी) को नियंत्रित करता है। web सर्वर मोबाइल रिस्पॉन्सिव है और इसे स्थानीय नेटवर्क पर ब्राउज़र के रूप में किसी भी डिवाइस से एक्सेस किया जा सकता है। हम आपको दिखाएंगे कि इसे कैसे बनाया जाता है web सर्वर और कोड चरण-दर-चरण कैसे काम करता है।
परियोजना खत्मview
परियोजना पर सीधे जाने से पहले, यह रेखांकित करना महत्वपूर्ण है कि हमारा web सर्वर ऐसा करेगा, ताकि बाद में चरणों का पालन करना आसान हो जाए।
- द web आपके द्वारा बनाया गया सर्वर ESP32 GPIO 26 और GPIO 27 से जुड़े दो एलईडी को नियंत्रित करता है;
- आप ESP32 तक पहुंच सकते हैं web स्थानीय नेटवर्क में ब्राउज़र पर ESP32 आईपी पता टाइप करके सर्वर;
- अपने बटन पर क्लिक करके web सर्वर से आप प्रत्येक एलईडी की स्थिति को तुरन्त बदल सकते हैं।
आवश्यक भाग
इस ट्यूटोरियल के लिए आपको निम्नलिखित भागों की आवश्यकता होगी:
- ESP32 DEVKIT V1 बोर्ड
- 2x 5मिमी एलईडी
- 2x 200 ओम अवरोधक
- ब्रेडबोर्ड
- जम्पर तार
ढांच के रूप में
सर्किट बनाने से शुरुआत करें। दो LED को ESP32 से कनेक्ट करें जैसा कि नीचे दिए गए योजनाबद्ध आरेख में दिखाया गया है - एक LED GPIO 26 से जुड़ी है, और दूसरी GPIO 27 से।
टिप्पणी: हम 32 पिन वाले ESP36 DEVKIT DOIT बोर्ड का उपयोग कर रहे हैं। सर्किट को असेंबल करने से पहले, सुनिश्चित करें कि आप जिस बोर्ड का उपयोग कर रहे हैं, उसके पिनआउट की जाँच करें।कोड
यहां हम ESP32 बनाने वाला कोड प्रदान करते हैं web सर्वर. कोड Project_5_ESP32_Switch _ खोलेंWebarduino IDE में _Server.ino है, लेकिन इसे अभी अपलोड न करें। इसे अपने लिए काम करने लायक बनाने के लिए आपको कुछ बदलाव करने होंगे।
हम Arduino IDE का उपयोग करके ESP32 को प्रोग्राम करेंगे, इसलिए आगे बढ़ने से पहले सुनिश्चित करें कि आपके पास ESP32 ऐड-ऑन स्थापित है:(यदि आपने यह चरण पहले ही कर लिया है, तो आप अगले चरण पर जा सकते हैं।)
Arduino IDE में ESP32 ऐड-ऑन स्थापित करना
अपने नेटवर्क क्रेडेंशियल सेट करना
आपको अपने नेटवर्क क्रेडेंशियल के साथ निम्न पंक्तियों को संशोधित करने की आवश्यकता है: SSID और पासवर्ड। कोड में अच्छी तरह से टिप्पणी की गई है कि आपको कहां बदलाव करने चाहिए।कोड अपलोड करना
अब, आप कोड अपलोड कर सकते हैं और web सर्वर तुरंत काम करेगा.
ESP32 पर कोड अपलोड करने के लिए अगले चरणों का पालन करें:
- अपने ESP32 बोर्ड को अपने कंप्यूटर में प्लग करें;
- Arduino IDE में टूल्स > बोर्ड में अपना बोर्ड चुनें (हमारे मामले में हम ESP32 DEVKIT DOIT बोर्ड का उपयोग कर रहे हैं);
- टूल्स > पोर्ट में COM पोर्ट का चयन करें।
- Arduino IDE में अपलोड बटन दबाएं और कुछ सेकंड प्रतीक्षा करें जब तक कोड संकलित होकर आपके बोर्ड पर अपलोड न हो जाए।
- “अपलोडिंग पूर्ण” संदेश की प्रतीक्षा करें।
ESP IP पता ढूँढना
कोड अपलोड करने के बाद, सीरियल मॉनिटर को 115200 बॉड दर पर खोलें।ESP32 EN बटन (रीसेट) दबाएँ। ESP32 वाई-फाई से कनेक्ट होता है, और सीरियल मॉनिटर पर ESP IP पता आउटपुट करता है। उस IP पते को कॉपी करें, क्योंकि आपको ESP32 तक पहुँचने के लिए इसकी आवश्यकता है web सर्वर.
तक पहुंच Web सर्वर
तक पहुंचने के लिए web सर्वर पर जाएं, अपना ब्राउज़र खोलें, ESP32 आईपी पता पेस्ट करें, और आपको निम्न पृष्ठ दिखाई देगा।
टिप्पणी: आपका ब्राउज़र और ESP32 एक ही LAN से जुड़े होने चाहिए।यदि आप सीरियल मॉनिटर पर नज़र डालें, तो आप देख सकते हैं कि बैकग्राउंड में क्या हो रहा है। ESP को एक नए क्लाइंट (इस मामले में, आपका ब्राउज़र) से HTTP अनुरोध प्राप्त होता है।
आप HTTP अनुरोध के बारे में अन्य जानकारी भी देख सकते हैं.
प्रदर्शन
अब आप जांच कर सकते हैं कि आपका web सर्वर ठीक से काम कर रहा है। एलईडी को नियंत्रित करने के लिए बटन पर क्लिक करें।साथ ही, आप सीरियल मॉनिटर पर नज़र डालकर देख सकते हैं कि बैकग्राउंड में क्या चल रहा है। उदाहरण के लिएampजब आप GPIO 26 को चालू करने के लिए बटन पर क्लिक करते हैं, तो ESP32 को /26/on पर एक अनुरोध प्राप्त होता है URL.
जब ESP32 उस अनुरोध को प्राप्त करता है, तो यह GPIO 26 से जुड़ी एलईडी को चालू करता है और इसकी स्थिति को अपडेट करता है web पृष्ठ.
GPIO 27 के लिए बटन इसी तरह काम करता है। जाँचें कि यह ठीक से काम कर रहा है या नहीं।
कोड कैसे काम करता है
इस अनुभाग में हम कोड पर करीब से नज़र डालेंगे कि यह कैसे काम करता है।
पहली चीज जो आपको करने की ज़रूरत है वह है वाईफाई लाइब्रेरी को शामिल करना।जैसा कि पहले बताया गया है, आपको निम्नलिखित पंक्तियों में डबल कोट्स के अंदर अपना ssid और पासवर्ड डालना होगा।
फिर, आप अपना web सर्वर को पोर्ट 80 पर ले जाएं।
निम्न पंक्ति HTTP अनुरोध के शीर्षलेख को संग्रहीत करने के लिए एक चर बनाती है:
इसके बाद, आप अपने आउटपुट की वर्तमान स्थिति को संग्रहीत करने के लिए सहायक चर बनाते हैं। यदि आप अधिक आउटपुट जोड़ना चाहते हैं और इसकी स्थिति को सहेजना चाहते हैं, तो आपको अधिक चर बनाने की आवश्यकता है।
आपको अपने प्रत्येक आउटपुट को एक GPIO भी असाइन करना होगा। यहाँ हम GPIO 26 और GPIO 27 का उपयोग कर रहे हैं। आप किसी भी अन्य उपयुक्त GPIO का उपयोग कर सकते हैं।
स्थापित करना()
अब, आइए setup() में चलते हैं। सबसे पहले, हम डिबगिंग उद्देश्यों के लिए 115200 की बॉड दर पर एक सीरियल संचार शुरू करते हैं।आप अपने GPIO को OUTPUT के रूप में भी परिभाषित करते हैं और उन्हें LOW पर सेट करते हैं।
निम्नलिखित पंक्तियाँ WiFi.begin(ssid, password) के साथ वाई-फाई कनेक्शन शुरू करती हैं, सफल कनेक्शन की प्रतीक्षा करती हैं और सीरियल मॉनिटर में ESP IP पता प्रिंट करती हैं।
कुंडली()
लूप() में हम प्रोग्राम करते हैं कि क्या होता है जब एक नया क्लाइंट कनेक्शन स्थापित करता है web सर्वर.
ESP32 हमेशा निम्न पंक्ति के साथ आने वाले क्लाइंट को सुनता रहता है:जब क्लाइंट से कोई अनुरोध प्राप्त होता है, तो हम आने वाले डेटा को सहेज लेंगे। जब तक क्लाइंट कनेक्टेड रहेगा, तब तक इसके बाद आने वाला while लूप चलता रहेगा। हम कोड के अगले हिस्से को बदलने की अनुशंसा नहीं करते हैं जब तक कि आपको ठीक से पता न हो कि आप क्या कर रहे हैं।
यदि और अन्य कथनों का अगला भाग यह जाँचता है कि आपके कंप्यूटर में कौन सा बटन दबाया गया था। web पेज पर जाकर आउटपुट को नियंत्रित करता है। जैसा कि हमने पहले देखा है, हम अलग-अलग पेज पर अनुरोध करते हैं। URLयह बटन दबाये जाने पर निर्भर करता है।
उदाहरणार्थampले, यदि आपने GPIO 26 ON बटन दबाया है, तो ESP32 /26/ON पर एक अनुरोध प्राप्त करता है URL (हम देख सकते हैं कि यह जानकारी सीरियल मॉनिटर पर HTTP हेडर पर है)। इसलिए, हम जाँच सकते हैं कि हेडर में GET /26/on अभिव्यक्ति है या नहीं। यदि इसमें है, तो हम output26state वैरिएबल को ON में बदल देते हैं, और ESP32 LED को चालू कर देता है।
यह अन्य बटनों के लिए भी इसी तरह काम करता है। इसलिए, यदि आप अधिक आउटपुट जोड़ना चाहते हैं, तो आपको उन्हें शामिल करने के लिए कोड के इस भाग को संशोधित करना चाहिए।
HTML प्रदर्शित करना web पेज
अगली चीज़ जो आपको करने की ज़रूरत है, वह है web पेज बनाने के लिए ESP32 आपके ब्राउज़र को कुछ HTML कोड के साथ एक प्रतिक्रिया भेजेगा। web पृष्ठ.
द web पेज को इस एक्सप्रेसिंग client.println() का उपयोग करके क्लाइंट को भेजा जाता है। आपको तर्क के रूप में वह दर्ज करना चाहिए जिसे आप क्लाइंट को भेजना चाहते हैं।
पहली चीज़ जो हमें भेजनी चाहिए वह हमेशा निम्न पंक्ति है, जो यह संकेत देती है कि हम HTML भेज रहे हैं।फिर, निम्न पंक्ति बनाती है web पेज किसी भी में उत्तरदायी web ब्राउज़र.
और फ़ेविकॉन पर अनुरोधों को रोकने के लिए निम्नलिखित का उपयोग किया जाता है। - आपको इस लाइन के बारे में चिंता करने की आवश्यकता नहीं है।
स्टाइलिंग Web पेज
इसके बाद, हमारे पास बटन और स्टाइल के लिए कुछ CSS टेक्स्ट है web पृष्ठ उपस्थिति.
हम हेल्वेटिका फ़ॉन्ट चुनते हैं, प्रदर्शित की जाने वाली सामग्री को ब्लॉक के रूप में परिभाषित करते हैं और केंद्र में संरेखित करते हैं।हम अपने बटनों को #4CAF50 रंग, बिना बॉर्डर, सफ़ेद रंग में टेक्स्ट और इस पैडिंग के साथ स्टाइल करते हैं: 16px 40px. हम टेक्स्ट-डेकोरेशन को भी न के बराबर सेट करते हैं, फ़ॉन्ट साइज़, मार्जिन और कर्सर को पॉइंटर पर परिभाषित करते हैं.
हम दूसरे बटन के लिए भी स्टाइल परिभाषित करते हैं, जिसमें बटन के सभी गुण पहले से परिभाषित हैं, लेकिन एक अलग रंग के साथ। यह ऑफ बटन के लिए स्टाइल होगा।
सेटिंग Web पेज प्रथम शीर्षक
अगली पंक्ति में आप अपने लेख का पहला शीर्षक निर्धारित कर सकते हैं। web पेज. यहाँ हमारे पास “ESP32” है Web सर्वर”, लेकिन आप इस पाठ को अपनी इच्छानुसार बदल सकते हैं।बटन और संगत स्थिति प्रदर्शित करना
फिर, आप GPIO 26 की वर्तमान स्थिति को प्रदर्शित करने के लिए एक पैराग्राफ़ लिखते हैं। जैसा कि आप देख सकते हैं कि हम output26State वैरिएबल का उपयोग करते हैं, ताकि जब यह वैरिएबल बदले तो स्टेट तुरंत अपडेट हो जाए।फिर, हम GPIO की वर्तमान स्थिति के आधार पर चालू या बंद बटन प्रदर्शित करते हैं। यदि GPIO की वर्तमान स्थिति बंद है, तो हम चालू बटन दिखाते हैं, यदि नहीं, तो हम बंद बटन प्रदर्शित करते हैं।
हम GPIO 27 के लिए भी यही प्रक्रिया अपनाते हैं।
कनेक्शन बंद करना
अंत में, जब प्रतिक्रिया समाप्त हो जाती है, तो हम हेडर वेरिएबल को साफ़ कर देते हैं, और client.stop() के साथ क्लाइंट के साथ कनेक्शन बंद कर देते हैं।
ऊपर लपेटकर
इस ट्यूटोरियल में हमने आपको दिखाया है कि कैसे निर्माण किया जाए web ESP32 के साथ सर्वर। हमने आपको एक सरल उदाहरण दिखाया हैampएक रिले है जो दो एल.ई.डी. को नियंत्रित करता है, लेकिन विचार यह है कि उन एल.ई.डी. को एक रिले, या किसी अन्य आउटपुट से प्रतिस्थापित किया जाए जिसे आप नियंत्रित करना चाहते हैं।
प्रोजेक्ट 6 आरजीबी एलईडी Web सर्वर
इस परियोजना में हम आपको दिखाएंगे कि कैसे एक ESP32 बोर्ड के साथ RGB LED को दूर से नियंत्रित किया जाए web सर्वर में रंग चयनकर्ता (कलर पिकर) लगा हुआ है।
परियोजना खत्मview
आरंभ करने से पहले, आइए देखें कि यह परियोजना कैसे काम करती है:
- ईएसपी32 web सर्वर एक रंग चयनकर्ता प्रदर्शित करता है.
- जब आप कोई रंग चुनते हैं, तो आपका ब्राउज़र एक अनुरोध करता है URL जिसमें चयनित रंग के R, G, और B पैरामीटर शामिल हैं।
- आपका ESP32 अनुरोध प्राप्त करता है और प्रत्येक रंग पैरामीटर के लिए मान को विभाजित करता है।
- फिर, यह RGB LED को नियंत्रित करने वाले GPIO को संगत मान के साथ एक PWM सिग्नल भेजता है।
आरजीबी एलईडी कैसे काम करते हैं?
एक सामान्य कैथोड आरजीबी एलईडी में, सभी तीन एलईडी एक नकारात्मक कनेक्शन (कैथोड) साझा करते हैं। किट में शामिल सभी सामान्य-कैथोड आरजीबी हैं।विभिन्न रंग कैसे बनाएं?
आरजीबी एलईडी के साथ आप निश्चित रूप से लाल, हरा और नीला प्रकाश उत्पन्न कर सकते हैं, और प्रत्येक एलईडी की तीव्रता को कॉन्फ़िगर करके आप अन्य रंग भी उत्पन्न कर सकते हैं।
उदाहरणार्थampले, पूरी तरह से नीली रोशनी पैदा करने के लिए, आप नीली एलईडी को सबसे ज़्यादा तीव्रता पर और हरी और लाल एलईडी को सबसे कम तीव्रता पर सेट करेंगे। सफ़ेद रोशनी के लिए, आप तीनों एलईडी को सबसे ज़्यादा तीव्रता पर सेट करेंगे।
रंगों का मिश्रण
अन्य रंग बनाने के लिए, आप तीन रंगों को अलग-अलग तीव्रता में मिला सकते हैं। प्रत्येक LED की तीव्रता को समायोजित करने के लिए आप PWM सिग्नल का उपयोग कर सकते हैं।
क्योंकि एलईडी एक दूसरे के बहुत करीब होते हैं, इसलिए हमारी आंखें तीन रंगों को अलग-अलग देखने के बजाय रंगों के संयोजन का परिणाम देखती हैं।
रंगों को कैसे संयोजित किया जाए, इस बारे में विचार पाने के लिए निम्नलिखित चार्ट पर नजर डालें।
यह सबसे सरल रंग मिश्रण चार्ट है, लेकिन इससे आपको यह पता चलता है कि यह कैसे काम करता है और विभिन्न रंग कैसे उत्पन्न किए जाते हैं।आवश्यक भाग
इस परियोजना के लिए आपको निम्नलिखित भागों की आवश्यकता होगी:
- ESP32 DEVKIT V1 बोर्ड
- आरजीबी एलईडी
- 3x 220 ओम प्रतिरोधक
- जम्पर तार
- ब्रेडबोर्ड
ढांच के रूप मेंकोड
हम Arduino IDE का उपयोग करके ESP32 को प्रोग्राम करेंगे, इसलिए आगे बढ़ने से पहले सुनिश्चित करें कि आपके पास ESP32 ऐड-ऑन स्थापित है:(यदि आपने यह चरण पहले ही कर लिया है, तो आप अगले चरण पर जा सकते हैं।)
- Arduino IDE में ESP32 ऐड-ऑन स्थापित करना
सर्किट को असेंबल करने के बाद, कोड खोलें
प्रोजेक्ट_6_RGB_LED_WebArduino IDE में _Server.ino.
कोड अपलोड करने से पहले, अपने नेटवर्क क्रेडेंशियल्स डालना न भूलें ताकि ईएसपी आपके स्थानीय नेटवर्क से कनेक्ट हो सके।कोड कैसे काम करता है
ESP32 स्केच WiFi.h लाइब्रेरी का उपयोग करता है।निम्नलिखित पंक्तियाँ अनुरोध से R, G, और B पैरामीटर्स को रखने के लिए स्ट्रिंग वेरिएबल्स को परिभाषित करती हैं।
अगले चार चरों का उपयोग बाद में HTTP अनुरोध को डिकोड करने के लिए किया जाता है।
GPIO के लिए तीन वैरिएबल बनाएं जो स्ट्रिप R, G, और B पैरामीटर को नियंत्रित करेंगे। इस मामले में हम GPIO 13, GPIO 12, और GPIO 14 का उपयोग कर रहे हैं।
इन GPIO को PWM सिग्नल आउटपुट करने की आवश्यकता होती है, इसलिए हमें पहले PWM गुणों को कॉन्फ़िगर करना होगा। PWM सिग्नल आवृत्ति को 5000 हर्ट्ज पर सेट करें। फिर, प्रत्येक रंग के लिए एक PWM चैनल संबद्ध करें
और अंत में, PWM चैनलों का रिज़ॉल्यूशन 8-बिट पर सेट करें
सेटअप() में, PWM चैनलों को PWM गुण निर्दिष्ट करें
PWM चैनलों को संबंधित GPIOs से जोड़ें
निम्नलिखित कोड अनुभाग आपके रंग चयनकर्ता को प्रदर्शित करता है web पेज पर जाकर आपके द्वारा चुने गए रंग के आधार पर अनुरोध करता है।
जब आप कोई रंग चुनते हैं, तो आपको निम्नलिखित प्रारूप वाला अनुरोध प्राप्त होता है।
इसलिए, हमें R, G, और B पैरामीटर प्राप्त करने के लिए इस स्ट्रिंग को विभाजित करने की आवश्यकता है। पैरामीटर redString, greenString, और blueString चर में सहेजे जाते हैं और उनके मान 0 से 255 के बीच हो सकते हैं।ESP32 के साथ स्ट्रिप को नियंत्रित करने के लिए, HTTP से डिकोड किए गए मानों के साथ PWM सिग्नल उत्पन्न करने के लिए ledcWrite() फ़ंक्शन का उपयोग करें अनुरोध।
टिप्पणी: ESP32 के साथ PWM के बारे में अधिक जानें: प्रोजेक्ट 3 ESP32 PWM (एनालॉग आउटपुट)
ESP8266 के साथ पट्टी को नियंत्रित करने के लिए, हमें बस उपयोग करने की आवश्यकता है
HTPP अनुरोध से डिकोड किए गए मानों के साथ PWM सिग्नल उत्पन्न करने के लिए analogWrite() फ़ंक्शन।
एनालॉगवाइट(रेडपिन, रेडस्ट्रिंग.toInt());
एनालॉगवाइट(ग्रीनपिन, ग्रीनस्ट्रिंग.toInt());
analogWrite(ब्लूपिन, ब्लूस्ट्रिंग.toInt())
क्योंकि हमें मान स्ट्रिंग वेरिएबल में मिलते हैं, इसलिए हमें toInt() विधि का उपयोग करके उन्हें पूर्णांक में परिवर्तित करना होगा।
प्रदर्शन
अपने नेटवर्क क्रेडेंशियल्स डालने के बाद, सही बोर्ड और COM पोर्ट का चयन करें और कोड को अपने ESP32 पर अपलोड करें।कोड संदर्भ चरण अपलोड करें।
अपलोड करने के बाद, 115200 की बॉड दर पर सीरियल मॉनिटर खोलें और ESP सक्षम/रीसेट बटन दबाएँ। आपको बोर्ड आईपी पता मिल जाना चाहिए।अपना ब्राउज़र खोलें और ESP IP पता डालें। अब, RGB LED के लिए रंग चुनने के लिए कलर पिकर का उपयोग करें।
फिर, रंग को प्रभावी बनाने के लिए आपको “रंग बदलें” बटन दबाना होगा।आरजीबी एलईडी बंद करने के लिए, काले रंग का चयन करें।
सबसे मजबूत रंग (रंग चयनकर्ता के शीर्ष पर) वे हैं जो बेहतर परिणाम देंगे।
प्रोजेक्ट 7 ESP32 रिले Web सर्वर
ESP32 के साथ रिले का उपयोग करना AC घरेलू उपकरणों को दूर से नियंत्रित करने का एक शानदार तरीका है। यह ट्यूटोरियल बताता है कि ESP32 के साथ रिले मॉड्यूल को कैसे नियंत्रित किया जाए।
हम देखेंगे कि रिले मॉड्यूल कैसे काम करता है, रिले को ESP32 से कैसे जोड़ा जाता है और रिले मॉड्यूल कैसे बनाया जाता है। web रिले को दूर से नियंत्रित करने के लिए सर्वर का उपयोग किया जाता है।
रिले का परिचय
रिले एक विद्युत संचालित स्विच है और किसी भी अन्य स्विच की तरह, इसे चालू या बंद किया जा सकता है, जिससे करंट प्रवाहित हो या न हो। इसे कम वोल्टेज से नियंत्रित किया जा सकता हैtagESP3.3 GPIO द्वारा प्रदान की गई 32V की तरह, और हमें उच्च वॉल्यूम को नियंत्रित करने की अनुमति देता हैtagजैसे 12V, 24V या मेन्स वॉल्यूमtag(यूरोप में 230V और अमेरिका में 120V)।बाईं ओर, उच्च वॉल्यूम को जोड़ने के लिए तीन सॉकेट के दो सेट हैंtages, और दाईं ओर पिन (कम-वॉल्यूमtagई) ESP32 GPIO से कनेक्ट करें.
मुख्य खंडtagई कनेक्शनपिछली तस्वीर में दिखाए गए रिले मॉड्यूल में दो कनेक्टर हैं, जिनमें से प्रत्येक में तीन सॉकेट हैं: सामान्य (COM), सामान्य रूप से बंद (NC), और सामान्य रूप से खुला (NO)।
- COM: उस धारा को कनेक्ट करें जिसे आप नियंत्रित करना चाहते हैं (मुख्य धारा)tagइ)।
- NC (सामान्य रूप से बंद): सामान्य रूप से बंद कॉन्फ़िगरेशन का उपयोग तब किया जाता है जब आप रिले को डिफ़ॉल्ट रूप से बंद रखना चाहते हैं। NC और COM पिन जुड़े हुए हैं, जिसका अर्थ है कि करंट तब तक बहता रहता है जब तक कि आप सर्किट को खोलने और करंट के प्रवाह को रोकने के लिए ESP32 से रिले मॉड्यूल को सिग्नल नहीं भेजते।
- NO (सामान्य रूप से खुला): सामान्य रूप से खुला विन्यास इसके विपरीत काम करता है: NO और COM पिनों के बीच कोई कनेक्शन नहीं होता है, इसलिए सर्किट तब तक टूटा रहता है जब तक कि आप सर्किट को बंद करने के लिए ESP32 से संकेत नहीं भेजते।
पिन नियंत्रित करेंकम वॉल्यूमtagई साइड में चार पिन का एक सेट और तीन पिन का एक सेट है। पहले सेट में मॉड्यूल को पावर देने के लिए VCC और GND शामिल हैं, और इनपुट 1 (IN1) और इनपुट 2 (IN2) क्रमशः नीचे और ऊपर रिले को नियंत्रित करने के लिए हैं।
अगर आपके रिले मॉड्यूल में सिर्फ़ एक चैनल है, तो आपके पास सिर्फ़ एक IN पिन होगा। अगर आपके पास चार चैनल हैं, तो आपके पास चार IN पिन होंगे, और इसी तरह आगे भी।
आप IN पिन को जो सिग्नल भेजते हैं, वह यह निर्धारित करता है कि रिले सक्रिय है या नहीं। जब इनपुट लगभग 2V से नीचे चला जाता है, तो रिले चालू हो जाता है। इसका मतलब है कि आपके सामने निम्नलिखित परिदृश्य होंगे:
- सामान्यतः बंद विन्यास (एनसी):
- उच्च संकेत - विद्युत धारा प्रवाहित हो रही है
- कम संकेत - विद्युत धारा प्रवाहित नहीं हो रही है
- सामान्य रूप से खुला विन्यास (NO):
- उच्च संकेत - विद्युत धारा प्रवाहित नहीं हो रही है
- कम संकेत - प्रवाहित धारा
आपको सामान्य रूप से बंद विन्यास का उपयोग तब करना चाहिए जब विद्युत धारा अधिकांश समय प्रवाहित होनी चाहिए, तथा आप इसे कभी-कभी ही रोकना चाहते हों।
जब आप चाहते हैं कि धारा कभी-कभी प्रवाहित हो (उदाहरण के लिए) तो सामान्य रूप से खुले विन्यास का उपयोग करेंampले, अल चालू करेंamp कभी-कभी)।
बिजली आपूर्ति चयनपिनों के दूसरे सेट में GND, VCC, और JD-VCC पिन होते हैं।
JD-VCC पिन रिले के इलेक्ट्रोमैग्नेट को शक्ति प्रदान करता है। ध्यान दें कि मॉड्यूल में VCC और JD-VCC पिन को जोड़ने वाला जम्पर कैप है; यहाँ दिखाया गया एक पीला है, लेकिन आपका एक अलग रंग हो सकता है।
जम्पर कैप के साथ, VCC और JD-VCC पिन जुड़े हुए हैं। इसका मतलब है कि रिले इलेक्ट्रोमैग्नेट को सीधे ESP32 पावर पिन से बिजली मिलती है, इसलिए रिले मॉड्यूल और ESP32 सर्किट एक दूसरे से भौतिक रूप से अलग नहीं होते हैं।
जम्पर कैप के बिना, आपको JD-VCC पिन के माध्यम से रिले के इलेक्ट्रोमैग्नेट को पावर देने के लिए एक स्वतंत्र पावर स्रोत प्रदान करने की आवश्यकता है। यह कॉन्फ़िगरेशन मॉड्यूल के बिल्ट-इन ऑप्टोकपलर के साथ रिले को ESP32 से भौतिक रूप से अलग करता है, जो इलेक्ट्रिकल स्पाइक्स के मामले में ESP32 को नुकसान से बचाता है।
ढांच के रूप मेंचेतावनी: उच्च वॉल्यूम का उपयोगtagबिजली आपूर्ति में व्यवधान से गंभीर चोट लग सकती है।
इसलिए, उच्च आपूर्ति मात्रा के बजाय 5 मिमी एलईडी का उपयोग किया जाता हैtagप्रयोग में ई बल्ब। यदि आप मेन्स वॉल्यूम से परिचित नहीं हैंtagकिसी ऐसे व्यक्ति से पूछें जो आपकी मदद कर सके। ESP को प्रोग्राम करते समय या अपने सर्किट को वायर करते समय सुनिश्चित करें कि सब कुछ मेन्स वॉल्यूम से डिस्कनेक्ट हो गया हैtage.ESP32 के लिए लाइब्रेरी स्थापित करना
इसे बनाने के लिए web सर्वर, हम ESPAsync का उपयोग करते हैंWebसर्वर लाइब्रेरी और AsyncTCP लाइब्रेरी.
ESPAsync स्थापित करनाWebसर्वर लाइब्रेरी
स्थापित करने के लिए अगले चरणों का पालन करें ईएसपीएसिंकWebसर्वर पुस्तकालय:
- ESPAsync डाउनलोड करने के लिए यहां क्लिक करेंWebसर्वर लाइब्रेरी। आपके पास होना चाहिए
आपके डाउनलोड फ़ोल्डर में एक .zip फ़ोल्डर - .zip फ़ोल्डर को अनज़िप करें और आपको ESPAsync मिल जाएगाWebसर्वर-मास्टर फ़ोल्डर
- ESPAsync से अपने फ़ोल्डर का नाम बदलेंWebसर्वर-मास्टर से ESPAsyncWebसर्वर
- ESPAsync को स्थानांतरित करेंWebसर्वर फ़ोल्डर को अपने Arduino IDE इंस्टॉलेशन लाइब्रेरीज़ फ़ोल्डर में ले जाएँ
वैकल्पिक रूप से, अपने Arduino IDE में, आप Sketch > Include पर जा सकते हैं
लाइब्रेरी > .ZIP लाइब्रेरी जोड़ें… और उस लाइब्रेरी का चयन करें जिसे आपने अभी डाउनलोड किया है।
ESP32 के लिए AsyncTCP लाइब्रेरी स्थापित करना
द ईएसपीएसिंकWebसर्वर पुस्तकालय की आवश्यकता है एसिंक्रोनसTCP पुस्तकालय में काम करने के लिए।
उस लाइब्रेरी को स्थापित करने के लिए अगले चरण:
- AsyncTCP लाइब्रेरी डाउनलोड करने के लिए यहाँ क्लिक करें। आपके डाउनलोड फ़ोल्डर में एक .zip फ़ोल्डर होना चाहिए
- .zip फ़ोल्डर को अनज़िप करें और आपको AsyncTCP-master फ़ोल्डर मिल जाएगा
1. अपने फ़ोल्डर का नाम AsyncTCP-master से बदलकर AsyncTCP कर दें
3. AsyncTCP फ़ोल्डर को अपने Arduino IDE इंस्टॉलेशन लाइब्रेरी फ़ोल्डर में ले जाएँ
4. अंत में, अपने Arduino IDE को पुनः खोलें
वैकल्पिक रूप से, अपने Arduino IDE में, आप Sketch > Include पर जा सकते हैं
लाइब्रेरी > .ZIP लाइब्रेरी जोड़ें… और उस लाइब्रेरी का चयन करें जिसे आपने अभी डाउनलोड किया है।
कोड
हम Arduino IDE का उपयोग करके ESP32 को प्रोग्राम करेंगे, इसलिए आगे बढ़ने से पहले सुनिश्चित करें कि आपके पास ESP32 ऐड-ऑन स्थापित है:(यदि आपने यह चरण पहले ही कर लिया है, तो आप अगले चरण पर जा सकते हैं।)
Arduino IDE में ESP32 ऐड-ऑन स्थापित करना
आवश्यक लाइब्रेरीज़ स्थापित करने के बाद, कोड Project_7_ESP32_Relay_ खोलेंWebArduino IDE में _Server.ino.
कोड अपलोड करने से पहले, अपने नेटवर्क क्रेडेंशियल्स डालना न भूलें ताकि ईएसपी आपके स्थानीय नेटवर्क से कनेक्ट हो सके।प्रदर्शन
आवश्यक परिवर्तन करने के बाद, कोड को अपने ESP32 पर अपलोड करें।कोड संदर्भ चरण अपलोड करें।
115200 की बॉड दर पर सीरियल मॉनिटर खोलें और इसका आईपी पता प्राप्त करने के लिए ESP32 EN बटन दबाएँ। फिर, अपने स्थानीय नेटवर्क में एक ब्राउज़र खोलें और एक्सेस प्राप्त करने के लिए ESP32 आईपी पता टाइप करें। web सर्वर.
115200 की बॉड दर पर सीरियल मॉनिटर खोलें और इसका आईपी पता प्राप्त करने के लिए ESP32 EN बटन दबाएँ। फिर, अपने स्थानीय नेटवर्क में एक ब्राउज़र खोलें और एक्सेस प्राप्त करने के लिए ESP32 आईपी पता टाइप करें। web सर्वर.टिप्पणी: आपका ब्राउज़र और ESP32 एक ही LAN से जुड़े होने चाहिए।
आपको अपने कोड में परिभाषित रिले की संख्या के अनुसार दो बटन के साथ कुछ इस प्रकार प्राप्त होना चाहिए।अब, आप अपने स्मार्टफोन का उपयोग करके अपने रिले को नियंत्रित करने के लिए बटन का उपयोग कर सकते हैं।
प्रोजेक्ट_8_आउटपुट_स्टेट_सिंक्रोनाइज़ेशन_ Web_सर्वर
यह प्रोजेक्ट दिखाता है कि ESP32 या ESP8266 आउटपुट को कैसे नियंत्रित किया जाए web सर्वर और एक भौतिक बटन एक साथ। आउटपुट स्थिति को अपडेट किया जाता है web पृष्ठ को भौतिक बटन के माध्यम से बदला जाए या नहीं web सर्वर.
परियोजना खत्मview
आइये एक नजर डालते हैं कि यह परियोजना कैसे काम करती है।ESP32 या ESP8266 होस्ट करता है web सर्वर जो आपको आउटपुट की स्थिति को नियंत्रित करने की अनुमति देता है;
- वर्तमान आउटपुट स्थिति प्रदर्शित होती है web सर्वर;
- ईएसपी एक भौतिक पुशबटन से भी जुड़ा होता है जो समान आउटपुट को नियंत्रित करता है;
- यदि आप भौतिक पुशबटन का उपयोग करके आउटपुट स्थिति बदलते हैं, तो इसकी वर्तमान स्थिति भी अपडेट हो जाती है web सर्वर.
संक्षेप में, यह परियोजना आपको एक ही आउटपुट का उपयोग करके नियंत्रित करने की अनुमति देती है web सर्वर और पुश बटन एक साथ काम करते हैं। जब भी आउटपुट स्थिति बदलती है, web सर्वर अद्यतन है.
आवश्यक भाग
सर्किट बनाने के लिए आवश्यक भागों की सूची यहां दी गई है:
- ESP32 DEVKIT V1 बोर्ड
- 5 मिमी एलईडी
- 220ओहम प्रतिरोधक
- बटन दबाओ
- 10k ओम रोकनेवाला
- ब्रेडबोर्ड
- जम्पर तार
ढांच के रूप मेंESP32 के लिए लाइब्रेरी स्थापित करना
इसे बनाने के लिए web सर्वर, हम ESPAsync का उपयोग करते हैंWebसर्वर लाइब्रेरी और AsyncTCP लाइब्रेरी.(यदि आपने पहले ही यह चरण पूरा कर लिया है, तो आप अगले चरण पर जा सकते हैं.)
ESPAsync स्थापित करनाWebसर्वर लाइब्रेरी
ESPAsync को स्थापित करने के लिए अगले चरणों का पालन करेंWebसर्वर लाइब्रेरी:
- ESPAsync डाउनलोड करने के लिए यहां क्लिक करेंWebसर्वर लाइब्रेरी। आपके पास होना चाहिए
आपके डाउनलोड फ़ोल्डर में एक .zip फ़ोल्डर - .zip फ़ोल्डर को अनज़िप करें और आपको ESPAsync मिल जाएगाWebसर्वर-मास्टर फ़ोल्डर
- ESPAsync से अपने फ़ोल्डर का नाम बदलेंWebसर्वर-मास्टर से ESPAsyncWebसर्वर
- ESPAsync को स्थानांतरित करेंWebसर्वर फ़ोल्डर को अपने Arduino IDE इंस्टॉलेशन लाइब्रेरीज़ फ़ोल्डर में ले जाएँ
वैकल्पिक रूप से, अपने Arduino IDE में, आप Sketch > Include पर जा सकते हैं
लाइब्रेरी > .ZIP लाइब्रेरी जोड़ें… और उस लाइब्रेरी का चयन करें जिसे आपने अभी डाउनलोड किया है।
ESP32 के लिए AsyncTCP लाइब्रेरी स्थापित करना
ईएसपीएसिंकWebसर्वर लाइब्रेरी को काम करने के लिए AsyncTCP लाइब्रेरी की आवश्यकता होती है। उस लाइब्रेरी को स्थापित करने के लिए अगले चरणों का पालन करें:
- AsyncTCP लाइब्रेरी डाउनलोड करने के लिए यहाँ क्लिक करें। आपके डाउनलोड फ़ोल्डर में एक .zip फ़ोल्डर होना चाहिए
- .zip फ़ोल्डर को अनज़िप करें और आपको AsyncTCP-master फ़ोल्डर मिल जाएगा
- अपने फ़ोल्डर का नाम AsyncTCP-master से बदलकर AsyncTCP करें
- AsyncTCP फ़ोल्डर को अपने Arduino IDE इंस्टॉलेशन लाइब्रेरीज़ फ़ोल्डर में ले जाएँ
- अंत में, अपने Arduino IDE को पुनः खोलें
वैकल्पिक रूप से, अपने Arduino IDE में, आप Sketch > Include पर जा सकते हैं
लाइब्रेरी > .ZIP लाइब्रेरी जोड़ें… और उस लाइब्रेरी का चयन करें जिसे आपने अभी डाउनलोड किया है।
कोड
हम Arduino IDE का उपयोग करके ESP32 को प्रोग्राम करेंगे, इसलिए आगे बढ़ने से पहले सुनिश्चित करें कि आपके पास ESP32 ऐड-ऑन स्थापित है:(यदि आपने यह चरण पहले ही कर लिया है, तो आप अगले चरण पर जा सकते हैं।)
Arduino IDE में ESP32 ऐड-ऑन स्थापित करना
आवश्यक लाइब्रेरीज़ स्थापित करने के बाद, कोड खोलें
प्रोजेक्ट_8_आउटपुट_स्टेट_सिंक्रोनाइज़ेशन_WebArduino IDE में _Server.ino.
कोड अपलोड करने से पहले, अपने नेटवर्क क्रेडेंशियल्स डालना न भूलें ताकि ईएसपी आपके स्थानीय नेटवर्क से कनेक्ट हो सके।
कोड कैसे काम करता है
बटन स्थिति और आउटपुट स्थिति
ledState वैरिएबल LED आउटपुट स्थिति को रखता है। डिफ़ॉल्ट रूप से, जब web सर्वर शुरू होता है, यह कम है।
बटनस्टेट और लास्टबटनस्टेट का उपयोग यह पता लगाने के लिए किया जाता है कि पुशबटन दबाया गया था या नहीं।बटन (web सर्वर)
हमने index_html वेरिएबल पर बटन बनाने के लिए HTML को शामिल नहीं किया।
ऐसा इसलिए है क्योंकि हम वर्तमान एलईडी स्थिति के आधार पर इसे बदलने में सक्षम होना चाहते हैं जिसे पुशबटन के साथ भी बदला जा सकता है।
इसलिए, हमने बटन %BUTTONPLACEHOLDER% के लिए एक प्लेसहोल्डर बनाया है जिसे बाद में कोड पर बटन बनाने के लिए HTML टेक्स्ट से बदल दिया जाएगा (यह प्रोसेसर() फ़ंक्शन में किया जाता है)।प्रोसेसर()
प्रोसेसर() फ़ंक्शन HTML टेक्स्ट पर किसी भी प्लेसहोल्डर को वास्तविक मानों से बदल देता है। सबसे पहले, यह जाँचता है कि HTML टेक्स्ट में कोई भी प्लेसहोल्डर है या नहीं
प्लेसहोल्डर्स %BUTTONPLACEHOLDER%.फिर, outputState() फ़ंक्शन को कॉल करें जो वर्तमान आउटपुट स्थिति लौटाता है। हम इसे outputStateValue वैरिएबल में सेव करते हैं।
इसके बाद, बटन को सही स्थिति में प्रदर्शित करने के लिए HTML टेक्स्ट बनाने हेतु उस मान का उपयोग करें:
आउटपुट स्थिति बदलने के लिए HTTP GET अनुरोध (जावास्क्रिप्ट)
जब आप बटन दबाते हैं, तो toggleCheckbox() फ़ंक्शन कॉल किया जाता है। यह फ़ंक्शन अलग-अलग पर अनुरोध करेगा URLएलईडी को चालू या बंद करने के लिए बटन दबाएं।एलईडी चालू करने के लिए, यह /update?state=1 पर अनुरोध करता है URL:
अन्यथा, यह /update?state=0 पर अनुरोध करता है URL.
स्टेट अपडेट करने के लिए HTTP GET अनुरोध (जावास्क्रिप्ट)
आउटपुट स्थिति को अद्यतन रखने के लिए web सर्वर पर, हम निम्नलिखित फ़ंक्शन को कॉल करते हैं जो /state पर एक नया अनुरोध करता है URL हर सेकंड.अनुरोध संभालें
फिर, हमें यह देखना होगा कि जब ESP32 या ESP8266 को उन पर अनुरोध प्राप्त होते हैं तो क्या होता है URLs.
जब रूट पर कोई अनुरोध प्राप्त होता है /URL, हम प्रोसेसर के साथ-साथ HTML पेज भी भेजते हैं।निम्न पंक्तियाँ जाँचती हैं कि आपको /update?state=1 या /update?state=0 पर अनुरोध प्राप्त हुआ है या नहीं URL और तदनुसार ledState को बदलता है.
जब /state पर कोई अनुरोध प्राप्त होता है URL, हम वर्तमान आउटपुट स्थिति भेजते हैं:
कुंडली()
लूप() में, हम पुशबटन को डिबाउंस करते हैं और ledState के मान के आधार पर LED को चालू या बंद करते हैं चर।प्रदर्शन
कोड को अपने ESP32 बोर्ड पर अपलोड करें.कोड संदर्भ चरण अपलोड करें.
फिर, 115200 की बॉड दर पर सीरियल मॉनिटर खोलें। आईपी पता प्राप्त करने के लिए ऑन-बोर्ड EN/RST बटन दबाएं।अपने स्थानीय नेटवर्क पर ब्राउज़र खोलें, और ESP IP पता टाइप करें। आपके पास पहुँच होनी चाहिए web सर्वर पर नीचे दिखाए अनुसार क्लिक करें।
टिप्पणी: आपका ब्राउज़र और ESP32 एक ही LAN से जुड़े होने चाहिए।आप बटन को टॉगल कर सकते हैं web सर्वर को एलईडी चालू करने के लिए कहें।
आप उसी एलईडी को फिजिकल पुशबटन से भी नियंत्रित कर सकते हैं। इसकी स्थिति हमेशा स्वचालित रूप से अपडेट होती रहेगी web सर्वर.
प्रोजेक्ट 9 ESP32 DHT11 Web सर्वर
इस प्रोजेक्ट में, आप सीखेंगे कि एसिंक्रोनस ESP32 कैसे बनाया जाता है web DHT11 वाला सर्वर जो Arduino IDE का उपयोग करके तापमान और आर्द्रता प्रदर्शित करता है।
आवश्यक शर्तें
द web सर्वर हम रीडिंग को रिफ्रेश करने की आवश्यकता के बिना स्वचालित रूप से अपडेट करेंगे web पृष्ठ.
इस परियोजना से आप सीखेंगे:
- डीएचटी सेंसर से तापमान और आर्द्रता कैसे पढ़ें;
- एक अतुल्यकालिक बनाएँ web सर्वर का उपयोग कर ईएसपीएसिंकWebसर्वर लाइब्रेरी;
- सेंसर रीडिंग को रिफ्रेश करने की आवश्यकता के बिना स्वचालित रूप से अपडेट करें web पृष्ठ.
अतुल्यकालिक Web सर्वर
निर्माण करने के लिए web सर्वर हम उपयोग करेंगे ईएसपीएसिंकWebसर्वर लाइब्रेरी जो एक अतुल्यकालिक निर्माण करने का एक आसान तरीका प्रदान करता है web सर्वर. एक अतुल्यकालिक निर्माण web सर्वर में कई फायदे हैंtagजैसा कि लाइब्रेरी GitHub पेज पर बताया गया है, जैसे:
- “एक ही समय में एक से अधिक कनेक्शन संभालें”;
- “जब आप प्रतिक्रिया भेजते हैं, तो आप तुरंत अन्य कनेक्शनों को संभालने के लिए तैयार होते हैं, जबकि सर्वर पृष्ठभूमि में प्रतिक्रिया भेजने का ध्यान रखता है”;
- “टेम्प्लेट को संभालने के लिए सरल टेम्पलेट प्रसंस्करण इंजन”;
आवश्यक भाग
इस ट्यूटोरियल को पूरा करने के लिए आपको निम्नलिखित भागों की आवश्यकता होगी:
- ESP32 विकास बोर्ड
- DHT11 मॉड्यूल
- ब्रेडबोर्ड
- जम्पर तार
ढांच के रूप मेंलाइब्रेरीज़ स्थापित करना
इस परियोजना के लिए आपको कुछ लाइब्रेरीज़ स्थापित करने की आवश्यकता है:
- द डीएचटी और यह एडाफ्रूट यूनिफाइड सेंसर DHT सेंसर से पढ़ने के लिए ड्राइवर लाइब्रेरी।
- ईएसपीएसिंकWebसर्वर और एसिंक्रोनस टीसीपी अतुल्यकालिक निर्माण के लिए पुस्तकालय web सर्वर.
इन लाइब्रेरीज़ को स्थापित करने के लिए निम्नलिखित निर्देशों का पालन करें:
DHT सेंसर लाइब्रेरी स्थापित करना
Arduino IDE का उपयोग करके DHT सेंसर से पढ़ने के लिए, आपको स्थापित करने की आवश्यकता है DHT सेंसर लाइब्रेरीलाइब्रेरी स्थापित करने के लिए अगले चरणों का पालन करें।
- DHT सेंसर लाइब्रेरी डाउनलोड करने के लिए यहाँ क्लिक करें। आपके डाउनलोड फ़ोल्डर में एक .zip फ़ोल्डर होना चाहिए
- .zip फ़ोल्डर को अनज़िप करें और आपको DHT-sensor-library-master फ़ोल्डर मिल जाएगा
- अपने फ़ोल्डर का नाम DHT-sensor-library-master से बदलकर DHT_sensor कर दें
- DHT_sensor फ़ोल्डर को अपने Arduino IDE इंस्टॉलेशन लाइब्रेरी फ़ोल्डर में ले जाएं
- अंत में, अपने Arduino IDE को पुनः खोलें
Adafruit Unified Sensor ड्राइवर स्थापित करना
आपको यह भी स्थापित करना होगा Adafruit यूनिफाइड सेंसर ड्राइवर लाइब्रेरी DHT सेंसर के साथ काम करने के लिए। लाइब्रेरी को स्थापित करने के लिए अगले चरणों का पालन करें।
- Adafruit Unified Sensor लाइब्रेरी डाउनलोड करने के लिए यहाँ क्लिक करें। आपके डाउनलोड फ़ोल्डर में एक .zip फ़ोल्डर होना चाहिए
- .zip फ़ोल्डर को अनज़िप करें और आपको Adafruit_sensor-master फ़ोल्डर मिल जाएगा
- अपने फ़ोल्डर का नाम Adafruit_sensor-master से बदलकर Adafruit_sensor करें
- Adafruit_sensor फ़ोल्डर को अपने Arduino IDE इंस्टॉलेशन लाइब्रेरीज़ फ़ोल्डर में ले जाएँ
- अंत में, अपने Arduino IDE को पुनः खोलें
ESPAsync स्थापित करनाWebसर्वर लाइब्रेरी
स्थापित करने के लिए अगले चरणों का पालन करें ईएसपीएसिंकWebसर्वर पुस्तकालय:
- ESPAsync डाउनलोड करने के लिए यहां क्लिक करेंWebसर्वर लाइब्रेरी। आपके पास होना चाहिए
आपके डाउनलोड फ़ोल्डर में एक .zip फ़ोल्डर - .zip फ़ोल्डर को अनज़िप करें और आपको यह करना चाहिए
ESPAsync प्राप्त करेंWebसर्वर-मास्टर फ़ोल्डर - ESPAsync से अपने फ़ोल्डर का नाम बदलेंWebसर्वर-मास्टर से ESPAsyncWebसर्वर
- ESPAsync को स्थानांतरित करेंWebसर्वर फ़ोल्डर को अपने Arduino IDE इंस्टॉलेशन लाइब्रेरीज़ फ़ोल्डर में ले जाएँ
ESP32 के लिए Async TCP लाइब्रेरी स्थापित करना
द ईएसपीएसिंकWebसर्वर पुस्तकालय की आवश्यकता है एसिंक्रोनसTCP लाइब्रेरी को काम करने के लिए सेट करें। उस लाइब्रेरी को स्थापित करने के लिए अगले चरणों का पालन करें:
- AsyncTCP लाइब्रेरी डाउनलोड करने के लिए यहाँ क्लिक करें। आपके डाउनलोड फ़ोल्डर में एक .zip फ़ोल्डर होना चाहिए
- .zip फ़ोल्डर को अनज़िप करें और आपको AsyncTCP-master फ़ोल्डर मिल जाएगा
- अपने फ़ोल्डर का नाम AsyncTCP-master से बदलकर AsyncTCP करें
- AsyncTCP फ़ोल्डर को अपने Arduino IDE इंस्टॉलेशन लाइब्रेरीज़ फ़ोल्डर में ले जाएँ
- अंत में, अपने Arduino IDE को पुनः खोलें
कोड
हम Arduino IDE का उपयोग करके ESP32 को प्रोग्राम करेंगे, इसलिए आगे बढ़ने से पहले सुनिश्चित करें कि आपके पास ESP32 ऐड-ऑन स्थापित है:(यदि आपने यह चरण पहले ही कर लिया है, तो आप अगले चरण पर जा सकते हैं।)
Arduino IDE में ESP32 ऐड-ऑन स्थापित करना
आवश्यक लाइब्रेरीज़ स्थापित करने के बाद, कोड खोलें
प्रोजेक्ट_9_ESP32_DHT11_WebArduino IDE में _Server.ino.
कोड अपलोड करने से पहले, अपने नेटवर्क क्रेडेंशियल्स डालना न भूलें ताकि ईएसपी आपके स्थानीय नेटवर्क से कनेक्ट हो सके।कोड कैसे काम करता है
अगले पैराग्राफ में हम बताएंगे कि कोड कैसे काम करता है। अगर आप ज़्यादा जानना चाहते हैं तो पढ़ते रहें या अंतिम परिणाम देखने के लिए डेमो सेक्शन पर जाएँ।
पुस्तकालयों का आयात करना
सबसे पहले, आवश्यक लाइब्रेरीज़ आयात करें। WiFi, ESPAsyncWebसर्वर और ESPAsyncTCP का निर्माण करना आवश्यक है web सर्वर। DHT11 या DHT22 सेंसर से पढ़ने के लिए Adafruit_Sensor और DHT लाइब्रेरी की आवश्यकता होती है।चर परिभाषा
वह GPIO परिभाषित करें जिससे DHT डेटा पिन जुड़ा हुआ है। इस मामले में, यह GPIO 4 से जुड़ा हुआ है।फिर, आप जिस DHT सेंसर प्रकार का उपयोग कर रहे हैं उसे चुनें। हमारे उदाहरण मेंampले, हम DHT22 का उपयोग कर रहे हैं। यदि आप किसी अन्य प्रकार का उपयोग कर रहे हैं, तो आपको बस अपने सेंसर को अनकमेंट करना होगा और बाकी सभी पर टिप्पणी करनी होगी।
पहले परिभाषित प्रकार और पिन के साथ एक DHT ऑब्जेक्ट को इंस्टैंसिएट करें।एक Async बनाएँWebपोर्ट 80 पर सर्वर ऑब्जेक्ट.
तापमान और आर्द्रता फ़ंक्शन पढ़ें
हमने दो फ़ंक्शन बनाए हैं: एक तापमान पढ़ने के लिए (readDHTTemperature()) और दूसरा आर्द्रता पढ़ने के लिए (readDHTHumidity())।सेंसर रीडिंग प्राप्त करना dht ऑब्जेक्ट पर readTemperature() और readHumidity() विधियों का उपयोग करने जितना ही सरल है। सेंसर रीडिंग प्राप्त करना dht ऑब्जेक्ट पर readTemperature() और readHumidity() विधियों का उपयोग करने जितना ही सरल है।
हमारे पास एक शर्त भी है जो सेंसर द्वारा रीडिंग प्राप्त करने में विफल होने की स्थिति में दो डैश (–) लौटाती है।
रीडिंग स्ट्रिंग प्रकार के रूप में लौटाई जाती हैं। फ़्लोट को स्ट्रिंग में बदलने के लिए, String() फ़ंक्शन का उपयोग करें
डिफ़ॉल्ट रूप से, हम तापमान को सेल्सियस डिग्री में पढ़ रहे हैं। फ़ारेनहाइट डिग्री में तापमान प्राप्त करने के लिए, सेल्सियस में तापमान पर टिप्पणी करें और फ़ारेनहाइट में तापमान को अनकमेंट करें, ताकि आपके पास निम्नलिखित हो:
कोड अपलोड करें
अब, कोड को अपने ESP32 पर अपलोड करें। सुनिश्चित करें कि आपने सही बोर्ड और COM पोर्ट चुना है।कोड संदर्भ चरण अपलोड करें।
अपलोड करने के बाद, 115200 की बॉड दर पर सीरियल मॉनिटर खोलें। ESP32 रीसेट बटन दबाएँ। ESP32 IP पता सीरियल में प्रिंट होना चाहिए निगरानी करना।प्रदर्शन
ब्राउज़र खोलें और ESP32 IP पता टाइप करें। web सर्वर को नवीनतम सेंसर रीडिंग प्रदर्शित करनी चाहिए।
टिप्पणी: आपका ब्राउज़र और ESP32 एक ही LAN से जुड़े होने चाहिए।
ध्यान दें कि तापमान और आर्द्रता रीडिंग स्वचालित रूप से अपडेट हो जाती हैं, बिना रीफ्रेश करने की आवश्यकता के। web पृष्ठ.
प्रोजेक्ट_10_ESP32_OLED_डिस्प्ले
यह प्रोजेक्ट दिखाता है कि Arduino IDE का उपयोग करके ESP0.96 के साथ 1306 इंच SSD32 OLED डिस्प्ले का उपयोग कैसे किया जाए।
पेश है 0.96 इंच OLED डिस्प्ले
द ओएलईडी डिस्प्ले इस ट्यूटोरियल में हम SSD1306 मॉडल का उपयोग करेंगे: एक मोनोकलर, 0.96 इंच डिस्प्ले जिसमें 128 × 64 पिक्सल हैं, जैसा कि निम्नलिखित चित्र में दिखाया गया है।OLED डिस्प्ले को बैकलाइट की आवश्यकता नहीं होती है, जिसके परिणामस्वरूप अंधेरे वातावरण में बहुत अच्छा कंट्रास्ट मिलता है। इसके अतिरिक्त, इसके पिक्सेल केवल तभी ऊर्जा की खपत करते हैं जब वे चालू होते हैं, इसलिए अन्य डिस्प्ले की तुलना में OLED डिस्प्ले कम बिजली की खपत करता है।
चूंकि OLED डिस्प्ले I2C संचार प्रोटोकॉल का उपयोग करता है, इसलिए वायरिंग बहुत सरल है। आप संदर्भ के रूप में निम्न तालिका का उपयोग कर सकते हैं।
ओएलईडी पिन | ESP32 |
विन | 3.3 वी |
जीएनडी | जीएनडी |
एससीएल | जीपीआईओ 22 |
एसडीए | जीपीआईओ 21 |
ढांच के रूप मेंSSD1306 OLED लाइब्रेरी – ESP32 स्थापित करना
ESP32 के साथ OLED डिस्प्ले को नियंत्रित करने के लिए कई लाइब्रेरी उपलब्ध हैं।
इस ट्यूटोरियल में हम दो Adafruit लाइब्रेरीज़ का उपयोग करेंगे: Adafruit_SSD1306 लाइब्रेरी और Adafruit_GFX लाइब्रेरी.
उन लाइब्रेरीज़ को स्थापित करने के लिए अगले चरणों का पालन करें।
- अपना Arduino IDE खोलें और Sketch > Include Library > Manage Libraries पर जाएँ। लाइब्रेरी मैनेजर खुल जाना चाहिए।
- खोज बॉक्स में “SSD1306” टाइप करें और Adafruit से SSD1306 लाइब्रेरी स्थापित करें।
- Adafruit से SSD1306 लाइब्रेरी स्थापित करने के बाद, खोज बॉक्स में “GFX” टाइप करें और लाइब्रेरी स्थापित करें।
- लाइब्रेरीज़ स्थापित करने के बाद, अपने Arduino IDE को पुनः प्रारंभ करें।
कोड
आवश्यक लाइब्रेरीज़ स्थापित करने के बाद, Arduino IDE में Project_10_ESP32_OLED_Display.ino खोलें। कोड
हम Arduino IDE का उपयोग करके ESP32 को प्रोग्राम करेंगे, इसलिए आगे बढ़ने से पहले सुनिश्चित करें कि आपके पास ESP32 ऐड-ऑन स्थापित है: (यदि आपने यह चरण पहले ही कर लिया है, तो आप अगले चरण पर जा सकते हैं।)
Arduino IDE में ESP32 ऐड-ऑन स्थापित करनाकोड कैसे काम करता है
पुस्तकालयों का आयात करना
सबसे पहले, आपको आवश्यक लाइब्रेरीज़ को आयात करना होगा। I2C का उपयोग करने के लिए Wire लाइब्रेरी और डिस्प्ले पर लिखने के लिए Adafruit लाइब्रेरीज़: Adafruit_GFX और Adafruit_SSD1306.OLED डिस्प्ले को प्रारंभ करें
फिर, आप अपनी OLED चौड़ाई और ऊंचाई को परिभाषित करते हैं। इस उदाहरण मेंampले, हम 128×64 OLED डिस्प्ले का उपयोग कर रहे हैं। यदि आप अन्य आकार का उपयोग कर रहे हैं, तो आप इसे SCREEN_WIDTH, और SCREEN_HEIGHT चर में बदल सकते हैं।फिर, I2C संचार प्रोटोकॉल (&Wire) के साथ पहले से परिभाषित चौड़ाई और ऊंचाई के साथ एक डिस्प्ले ऑब्जेक्ट को आरंभीकृत करें।
(-1) पैरामीटर का मतलब है कि आपके OLED डिस्प्ले में रीसेट पिन नहीं है। अगर आपके OLED डिस्प्ले में रीसेट पिन है, तो इसे GPIO से कनेक्ट किया जाना चाहिए। उस स्थिति में, आपको GPIO नंबर को पैरामीटर के रूप में पास करना चाहिए।
सेटअप() में, डिबगिंग उद्देश्यों के लिए सीरियल मॉनिटर को 115200 के बॉड रूट पर आरंभ करें।OLED डिस्प्ले को begin() विधि से इस प्रकार आरम्भ करें:
यह स्निपेट सीरियल मॉनिटर पर एक संदेश भी प्रिंट करता है, यदि हम डिस्प्ले से कनेक्ट नहीं कर पाते हैं।
यदि आप किसी भिन्न OLED डिस्प्ले का उपयोग कर रहे हैं, तो आपको OLED पता बदलने की आवश्यकता हो सकती है। हमारे मामले में, पता 0x3C है।
डिस्प्ले को आरंभीकृत करने के बाद, दो सेकंड का विलंब जोड़ें, ताकि OLED को पाठ लिखने से पहले आरंभीकृत होने के लिए पर्याप्त समय मिल सके:
स्पष्ट प्रदर्शन, फ़ॉन्ट आकार, रंग सेट करें और पाठ लिखें
डिस्प्ले को आरंभ करने के बाद, क्लियरडिस्प्ले() विधि से डिस्प्ले बफर को साफ़ करें:
पाठ लिखने से पहले, आपको पाठ का आकार, रंग और OLED में पाठ को प्रदर्शित करने का स्थान निर्धारित करना होगा।
setTextSize() विधि का उपयोग करके फ़ॉन्ट आकार सेट करें:setTextColor() विधि से फ़ॉन्ट रंग सेट करें:
WHITE सफेद फ़ॉन्ट और काली पृष्ठभूमि सेट करता है।
setCursor(x,y) विधि का उपयोग करके वह स्थान निर्धारित करें जहाँ से पाठ शुरू होता है। इस मामले में, हम पाठ को (0,0) निर्देशांक पर शुरू करने के लिए सेट कर रहे हैं - ऊपरी बाएँ कोने पर।अंत में, आप println() विधि का उपयोग करके पाठ को डिस्प्ले पर भेज सकते हैं, इस प्रकार
फिर, आपको स्क्रीन पर पाठ प्रदर्शित करने के लिए display() विधि को कॉल करना होगा।
एडाफ्रूट ओएलईडी लाइब्रेरी पाठ को आसानी से स्क्रॉल करने के लिए उपयोगी विधियां प्रदान करती है।
- startscrollright(0x00, 0x0F): पाठ को बाएं से दाएं स्क्रॉल करें
- startscrollleft(0x00, 0x0F): पाठ को दाएं से बाएं स्क्रॉल करें
- startscrolldiagright(0x00, 0x07): पाठ को बाएं निचले कोने से दाएं ऊपरी कोने तक स्क्रॉल करें startscrolldiagleft(0x00, 0x07): पाठ को दाएं निचले कोने से बाएं ऊपरी कोने तक स्क्रॉल करें
कोड अपलोड करें
अब, कोड को अपने ESP32 पर अपलोड करें।कोड संदर्भ चरण अपलोड करें।
कोड अपलोड करने के बाद, OLED स्क्रॉलिंग टेक्स्ट प्रदर्शित करेगा।
दस्तावेज़ / संसाधन
![]() |
LAFVIN ESP32 बेसिक स्टार्टर किट [पीडीएफ] निर्देश पुस्तिका ESP32 बेसिक स्टार्टर किट, ESP32, बेसिक स्टार्टर किट, स्टार्टर किट |