- सामग्री की आवश्यकता:
- PIC माइक्रोकंट्रोलर प्रोग्रामिंग:
- ESP8266 लाइब्रेरी में कार्य:
- नमूना कार्यक्रम:
- सिमुलेशन उत्पादन:
- आउटपुट सत्यापन:
- ESP8266 लाइब्रेरी में कार्य जोड़ना:
इस लेख में, आइए चर्चा करें कि एक PIC माइक्रोकंट्रोलर के साथ वाईफ़ाई मॉड्यूल ESP8266 को कैसे इंटरफ़ेस करें । अब तक आप ESP8266 मॉड्यूल को स्टैंडअलोन माइक्रोकंट्रोलर के रूप में उपयोग कर रहे होंगे या हो सकता है कि इसका उपयोग Arduino लाइब्रेरी के साथ कर रहा हो। लेकिन, जब हार्डकोर एंबेडेड सिस्टम प्रोजेक्ट्स की बात आती है, तो हमें यह जानना चाहिए कि इसे PIC माइक्रोकंट्रोलर्स के साथ भी कैसे इस्तेमाल किया जाए। इससे आपको अपनी परियोजनाओं को डिज़ाइन के परिप्रेक्ष्य में अनुकूलित करने में मदद मिलेगी और साथ ही साथ यह सस्ता भी होगा।
ESP8266 मॉड्यूल एक डिफ़ॉल्ट फर्मवेयर के साथ आता है जो इसमें लोड होता है, इसलिए हम एटी कमांड्स का उपयोग करके मॉड्यूल को प्रोग्राम कर सकते हैं। इन आदेशों को एक धारावाहिक संचार चैनल के माध्यम से भेजा जाना है। इस चैनल को PIC माइक्रोकंट्रोलर में USART मॉड्यूल का उपयोग करके PIC और ESP8266 मॉड्यूल के बीच स्थापित किया गया है । पूरे कामकाज की निगरानी और 16x2 एलसीडी डिस्प्ले का उपयोग करके उपयोगकर्ता को सूचित किया जाएगा। इसलिए, यह ट्यूटोरियल मानता है कि आपको PIC में USART मॉड्यूल के बारे में कुछ बुनियादी ज्ञान है, PIC के साथ एलसीडी को इंटरफैस करना और ESP8266 में AT कमांड्स का उपयोग करना। यदि आप नहीं करते हैं तो आप पहले से जानने के लिए लिंक किए गए ट्यूटोरियल पर वापस गिर सकते हैं।
सामग्री की आवश्यकता:
इस ट्यूटोरियल को पूरा करने के लिए आपको निम्नलिखित हार्डवेयर की आवश्यकता होगी
- PIC16F877A
- 20MHz क्रिस्टल थरथरानवाला
- 7805 है
- LM317
- ईएसपी 8266
- 16 * 2 एलसीडी डिस्प्ले
- PicKit3 प्रोग्रामर
- प्रतिरोधों (1K, 220ohm, 360ohm)
- कैपेसिटर (1uF, 0.1uF, 33pF)
- जम्पर के तार
- PIC और ESP मॉड्यूल को पावर देने के लिए 12V एडाप्टर
हार्डवेयर:
परियोजना का पूरा योजनाबद्ध नीचे यहाँ दिखाया गया है
स्कीमैटिक्स में दो वोल्टेज रेगुलेटर सर्किट होते हैं, एक + 5V रेगुलेटर होता है जो कि PIC माइक्रोकंट्रोलर को पावर देने के लिए इस्तेमाल किया जाता है और दूसरा 3.3V रेगुलेटर होता है जो ESP8266 मॉड्यूल को पावर देता है। 7805 (रैखिक वोल्टेज नियामक आईसी) का उपयोग करके + 5V को विनियमित किया जाता है। 3.3V को LM317 (चर वोल्टेज नियामक) का उपयोग करके विनियमित किया जाता है। ESP8266 मॉड्यूल बहुत अधिक वर्तमान (~ 800mA) की खपत करता है इसलिए यदि आप अपनी खुद की बिजली की आपूर्ति डिजाइन कर रहे हैं तो सुनिश्चित करें कि यह इस तरह के उच्च वर्तमान को स्रोत बना सकता है। यह भी सुनिश्चित करें कि PIC और ESP8266 मॉड्यूल के ग्राउंड पिन एक साथ जुड़े हुए हैं।
तो अब हम जानते हैं कि PIC + 5V पर काम करता है और ESP8266 3.3V वोल्ट पर काम करता है। इन दो मॉड्यूलों के बीच USART संचार स्थापित करने के लिए हमें 5V - 3.3V तर्क कनवर्टर सर्किट की आवश्यकता होती है जैसा कि ऊपर दिए गए चित्र में दिखाया गया है। यह सर्किट और कुछ नहीं बल्कि एक संभावित विभक्त है जो बस आने वाले + 5 वी को 3.3V में परिवर्तित करता है। यह ESV8266 के 3.3V सहन करने योग्य आरएक्स पिन + 5 वी प्राप्त करने से रोकेगा।
मैंने दो अलग-अलग perf बोर्डों पर PIC और ESP मॉड्यूल बनाए हैं, जैसा कि इन ट्यूटोरियल में दिखाया गया है। इस तरह मैं उन्हें अधिक समान परियोजनाओं के लिए सार्वभौमिक रूप से उपयोग कर सकता हूं
- PIC का उपयोग करके एलईडी हार्डवेयर
- ESP8266 के साथ आरंभ करना
आप उसी का अनुसरण कर सकते हैं, या अपनी शैली में अपना बोर्ड बना सकते हैं या उपरोक्त सर्किट को ब्रेडबोर्ड से जोड़ सकते हैं।
PIC माइक्रोकंट्रोलर प्रोग्रामिंग:
क्रमिक रूप से ESP8266 मॉड्यूल के लिए USART का उपयोग करते हुए "AT कमांड" भेजने के लिए PIC माइक्रोकंट्रोलर को प्रोग्राम करने के लिए हमें एक लाइब्रेरी का उपयोग करना होगा। यह लाइब्रेरी आपको बहुत परेशानी से बचाएगी, जैसे कि ESP8266 निर्देश मॉड्यूल का उपयोग प्रत्येक और प्रत्येक एटी कमांड के लिए जाँच करने के लिए और फिर उन्हें ईएसपी मॉड्यूल में संचारित करने का एक तरीका खोजें। यह लाइब्रेरी मुफ्त सॉफ्टवेयर है जो मूल रूप से कैमिल स्टैप्स द्वारा विकसित किया गया था और बाद में इसे सर्किट डाइजेस्ट द्वारा सुधार और संशोधित किया गया था ताकि इसका उपयोग हमारे PIC16F877A माइक्रोकंट्रोलर के साथ किया जा सके। आप द्वारा इसे यहां पर डाउनलोड किया जा सकता है
लाइब्रेरी अभी भी विकास के अधीन है, लेकिन आप ESP8266 फर्मवेयर में अधिकांश महत्वपूर्ण एटी कमांड का उपयोग कर सकते हैं। यदि आपको कोई ऐसी कमांड मिलती है, जिसकी आपको आवश्यकता है, तो वह अनुपलब्ध है, तो मुझे टिप्पणी अनुभाग में बताएं और मैं इसे आपके लिए जोड़ने का प्रयास करूंगा। यह ट्यूटोरियल आपको सभी आदेशों (अब तक) की व्याख्या करेगा जो इस पुस्तकालय के माध्यम से उपयोग किया जा सकता है। इसके अलावा पुस्तकालय के लिए अपने स्वयं के कार्यों को जोड़ने के लिए भी मार्गदर्शन करेंगे।
ESP8266 लाइब्रेरी में कार्य:
- Initialize_ESP8266 (): यह फ़ंक्शन ESP8266 मॉड्यूल के साथ संचार करने के लिए PIC के USART मॉड्यूल का प्रारंभ करेगा। यह बॉड दर 115200 पर सेट करता है और USART संचार के लिए PIC के Rx और Tx पिन को तैयार करता है।
- _esp8266_putch (): इस फ़ंक्शन का उपयोग ESP8266 मॉड्यूल के लिए एकल वर्ण भेजने के लिए किया जाता है। उदाहरण के लिए, _esp8266_putch ('a') अक्षर को ESPmodule में क्रमिक रूप से भेजेगा।
- _esp8266_getch (): इस फ़ंक्शन का उपयोग ESP मॉड्यूल से एकल वर्ण प्राप्त करने के लिए किया जाता है। उदाहरण के लिए यदि ईएसपी "ओके" प्रिंट कर रहा है और हम चार = _esp8266_getch () का उपयोग करते हैं। फिर चर 'ओ' को चर में संग्रहित किया जाएगा।
- ESP8266_send_string (): यह फ़ंक्शन _esp8266_putch () का स्ट्रिंग संस्करण है। यह ESP8266 मॉड्यूल के लिए एक पूर्ण स्ट्रिंग भेज सकता है। उदाहरण के लिए, ESP8266_send_string ("AT / r / n") ESP8266 मॉड्यूल को कमांड "AT" भेजेगा।
- esp8266_isStarted (): इसका उपयोग यह जांचने के लिए किया जाता है कि PIC ESP मॉड्यूल के साथ संचार कर सकता है या नहीं। यह "एटी" कमांड भेजता है और "ओके" का इंतजार करता है, अगर यह प्राप्त होता है कि यह सच है और यह गलत रिटर्न देता है।
- esp8266_restart (): ESP8266 मॉड्यूल को रीसेट करता है और रिटर्न सही होने पर रिसेट सफल होता है और सफल न होने पर गलत रिटर्न देता है।
- esp8266_mode (): ESP8266 मॉड्यूल के कार्य मोड को सेट करने के लिए उपयोग किया जाता है। जैसा कि हम जानते हैं कि यह तीन अलग-अलग तरीकों से काम कर सकता है।
स्टेशन मोड |
|
मृदु तरीका |
|
दोनों स्टेशन और एपी मोड |
- esp8266_connect (): आपको वाईफ़ाई सिग्नल से कनेक्ट करने की अनुमति देता है। उदाहरण के लिए esp8266_connect ("होम", "12345678") , आपके मॉड्यूल को घर पर नामित वाईफाई सिग्नल से कनेक्ट करने की अनुमति देगा, जिसका पासवर्ड 12345678 है।
- esp8266_disconnect (): यह फ़ंक्शन किसी भी वाईफाई कनेक्शन से मॉड्यूल को डिस्कनेक्ट करता है जो पहले जुड़ा हुआ था
- esp8266_ip (): IP पता प्राप्त करता है और उसे वापस करता है। यदि आप ESP8266 मॉड्यूल का IP पता जानना चाहते हैं तो इस फ़ंक्शन का उपयोग करें।
- esp8266_start (): इस फ़ंक्शन का उपयोग टीसीपी या यूडीपी संचार शुरू करने के लिए किया जाता है। उदाहरण के लिए esp8266_start ( "टीसीपी", "192.168.101.110", 80) । उस आईपी और पोर्ट 80 में एक टीसीपी नेटवर्क शुरू करेंगे।
- esp8266_send (): इस फ़ंक्शन का उपयोग टीसीपी / यूडीपी नेटवर्क को जानकारी भेजने के लिए किया जाता है। इस आदेश का उपयोग करके HTML स्क्रिप्ट भेजी जाएगी। फिर यह स्क्रिप्ट आईपी पते में दिखाई देगी जिसमें संचार पूर्व में स्थापित किया गया था।
- esp8266_config_softAP (): इस फ़ंक्शन का उपयोग softAP को कॉन्फ़िगर करने के लिए किया जाता है। उदाहरण के लिए esp8266_config_softAP ("कार्यालय", "12345678"); कार्यालय नाम से एक Wifi सिग्नल बनाएगा और इसे एक्सेस करने के लिए पासवर्ड 12345678 का उपयोग करना चाहिए।
- esp8266_get_stationIP (): यह फ़ंक्शन आपको क्लाइंट के आईपी / मैक पते को लौटाएगा जो आपके सॉफ्टएप से जुड़े हैं।
नमूना कार्यक्रम:
अब जब हमने लाइब्रेरी के प्रत्येक कमांड के कार्यों को समझ लिया है तो हमें एक छोटे सैंपल प्रोग्राम पर ध्यान दें। इस कार्यक्रम में हम जाँचेंगे कि क्या ESP8266 और PIC के बीच का कनेक्शन सफल है और फिर एक पसंदीदा नाम और पासवर्ड के साथ एक WIFI नेटवर्क (सॉफ्टएप) बनाएं। पूरा कार्यक्रम और उसी के अनुकरण को आपकी समझ के लिए समझाया जाएगा।
फिर अगर आपने एलसीडी और PIC USART ट्यूटोरियल के साथ हमारे PIC इंटरफेस को नहीं पढ़ा है, तो कृपया आगे बढ़ने से पहले पढ़ें, क्योंकि तभी यह आपके लिए समझ में आएगा।
चूंकि हम ESP8266 के साथ PIC को इंटरफ़ेस करने के लिए बस शुरू कर रहे हैं, मैंने यह सुनिश्चित करने के लिए एक एलसीडी का उपयोग किया है कि चीजें ठीक से काम कर रही हैं।
do {Lcd_Set_Cursor (1,1); Lcd_Print_String ("ईएसपी नहीं मिला"); } जबकि (; esp8266_isStarted ()); // तब तक प्रतीक्षा करें जब तक ईएसपी वापस "ओके" Lcd_Set_Cursor (1,1) न भेजें; Lcd_Print_String ("ईएसपी जुड़ा हुआ है"); __delay_ms (1500); Lcd_Clear ();
जब हम ESP8266 मॉड्यूल के लिए "एटी" भेजते हैं तो यह "ओके" के साथ वापस आ जाता है। यह हमें सुनिश्चित करता है कि ESP8266 मॉड्यूल सफलतापूर्वक जुड़ा हुआ है। फ़ंक्शन esp8266_isStarted () उसी के लिए उपयोग किया जाता है। हम PIC से सिग्नल AT भेजते हैं और हम ESP मॉड्यूल के जिंदा होने तक इंतजार करते हैं और हमें ओके भेजते हैं। यदि हमें ओके मिलता है तो हम प्रदर्शित करते हैं कि एलसीडी पर "ईएसपी जुड़ा हुआ है"।
esp8266_mode (2); Lcd_Set_Cursor (1,1); Lcd_Print_String ("ईएसपी सेट एपी"); __delay_ms (1500); Lcd_Clear ();
कोड की उपरोक्त पंक्तियों का उपयोग "सॉफ्ट एपी" मोड में काम करने के लिए ईएसपी मॉड्यूल को सेट करने के लिए किया जाता है। फ़ंक्शन esp8266_mode (2); मॉड्यूल पर "आदेश + AT + CWMODE = 3" पर एटी भेजता है और "ओके" के साथ जवाब देने के लिए मॉड्यूल की प्रतीक्षा करता है
/ * एपी नाम और पासवर्ड कॉन्फ़िगर करें * / esp8266_config_softAP ("सर्किटडाइगस्ट", "619007123"); Lcd_Set_Cursor (1,1); Lcd_Print_String ("एपी कॉन्फ़िगर"); __delay_ms (1500); Lcd_Clear (); / * एपी कॉन्फ़िगर * /
कोड के इस सेगमेंट का उपयोग सॉफ्टएप को कॉन्फ़िगर करने के लिए किया जाता है। यहां हमने SSID को "सर्किटडिगेस्ट" और पासवर्ड को "619007123" नाम दिया है। यह इंगित करने के लिए कि प्रक्रिया पूरी हो गई है हम मॉड्यूल के लिए "ओके" के साथ जवाब देने के लिए इंतजार करेंगे और फिर एपी को एलसीडी स्क्रीन पर कॉन्फ़िगर करेंगे।
यही कारण है कि अब हमने PIC MCU के साथ ESP8266 मॉड्यूल को बाधित किया है और अपनी पसंद के नाम और पासवर्ड के साथ सॉफ्टएप को कॉन्फ़िगर किया है। हमेशा की तरह इस कोड का अनुकरण करें और देखें कि यह कैसे काम करता है।
सिमुलेशन उत्पादन:
हम आउटपुट को अनुकरण करने के लिए प्रोटियस सॉफ्टवेयर का उपयोग कर रहे हैं। उसी के लिए डिज़ाइन फ़ाइल को अनुलग्नक में पाया जा सकता है।
चूंकि हमारे पास प्रोटियस लाइब्रेरी में ESP8266 मॉड्यूल नहीं है इसलिए हमारे पास सीरियल टर्मिनल का उपयोग होता है और PIC मॉड्यूल के लिए एक उपयोगकर्ता के रूप में वापस प्रतिक्रिया करता है। एक बार पूरा होने वाला स्क्रीन नीचे अनुकरण होगा
हमारे कोड का आउटपुट वर्चुअल टर्मिनल में दिखाया गया है। सिमुलेशन का पूरा काम नीचे दिए गए वीडियो में बताया जाएगा।
आउटपुट सत्यापन:
एक बार जब प्रोग्राम को सिमुलेशन का उपयोग करके सत्यापित किया जाता है, तो इसे अपने PIC माइक्रोकंट्रोलर में डंप करें। उपरोक्त योजना (हार्डवेयर अनुभाग) में दिखाए गए अनुसार कनेक्शन बनाएं। आपको एलसीडी डिस्प्ले के माध्यम से अपनी प्रगति को ट्रैक करने में सक्षम होना चाहिए।
एक बार एलसीडी का कहना है कि एपी को कॉन्फ़िगर किया गया है हम फोन या लैपटॉप में वाईफ़ाई सेटिंग्स का उपयोग करके जांच कर सकते हैं। मेरा लैपटॉप हमारे कार्यक्रम के अनुसार निम्नलिखित संकेत दिखाता है।
वह यह है कि हम लोगों ने PIC Microcontroller के साथ ESP8266 मॉड्यूल को सफलतापूर्वक बाधित किया है। यह एक बहुत ही बुनियादी इंटरफ़ेस है और यदि आप ESP8266 का उपयोग करके किसी भी जटिल परियोजनाओं को करना चाहते हैं, तो आपको अपने स्वयं के पुस्तकालयों को जोड़ना होगा या कम से कम अपने स्वयं के कार्यों को जोड़ना होगा। मेरा विश्वास करो ऐसा करना बहुत आसान है, मैं उसी के लिए एक संक्षिप्त अंतर्दृष्टि दूंगा।
ESP8266 लाइब्रेरी में कार्य जोड़ना:
अपने स्वयं के फ़ंक्शन को जोड़ने से आपको ESP8266 मॉड्यूल के लिए किसी भी "एटी" कमांड को भेजने में मदद मिलेगी। इसके साथ आगे बढ़ने के लिए आपको ESP8266 मॉड्यूल के इंस्ट्रक्शन सेट डॉक्यूमेंट को पढ़ना होगा। आप सीधे किसी भी एटी कमांड को भेज सकते हैं जो आपको उस निर्देश सेट मैनुअल में मिलती है। लेकिन हमेशा याद रखें कि प्रत्येक एटी कमांड के अंत में "/ r / n" जोड़ें। उदाहरण के लिए यदि आप अपने ईएसपी मॉड्यूल के साथ कई कनेक्शन स्थापित करना चाहते हैं। फिर इंस्ट्रक्शन सेट डॉक्यूमेंटेशन ओपन करें और पाएं हमारा कौन सा एटी कमांड आपके लिए यह काम करेगा। यहां कमांड "AT + CIPMUX = 1" आपको अपने ईएसपी मॉड्यूल के साथ कई कनेक्शन स्थापित करने की अनुमति देगा।
अब आपको बस इतना करना है कि इस "AP + CIPMUX = 1" को सीरियल पोर्ट का उपयोग करके अपने ESP8266 मॉड्यूल पर भेजें। ऐसा करने का कट्टर तरीका केवल कमांड का उपयोग करके है
_esp8266_print ("AT + CIPMUX = 1 \ r \ n" ")
यह काम करेगा लेकिन इसे करने का सबसे अच्छा तरीका नहीं है। आपको यह पढ़ना होगा कि आपका ESP8266 आपके आदेश का क्या जवाब देता है। हमारे मामले में यह "ओके" के साथ जवाब देगा। इसलिए आपको ESP8266 मॉड्यूल से आने वाले डेटा को पढ़ना होगा और पुष्टि करना होगा कि यह "ओके" है। इसके अलावा आप इस फ़ंक्शन को बना सकते हैं जहां "1" या "0" को तर्कों के रूप में पारित किया जा सकता है।
आगे बढ़ो और पुस्तकालय के लिए अपने स्वयं के कार्यों को बनाने की कोशिश करो। लेकिन अगर आपको सहायता की जरूरत है तो कृपया टिप्पणी अनुभाग का उपयोग करने के लिए स्वतंत्र हो जाएं और मैं आपकी सहायता करूंगा।