- अवयव आवश्यक
- ESP8266 वाई-फाई मॉड्यूल
- सीरियल कम्युनिकेशन के लिए ESP8266 के साथ LPC2148 को जोड़ना
- सर्किट आरेख और कनेक्शन
- ESP8266 के इंटरफेस के लिए LPC2148 में UART0 प्रोग्रामिंग में शामिल कदम
- एलपीसी 2148 के साथ ईएसपी 8266 आईओटी वेबसर्वर का उपयोग करके एलईडी को नियंत्रित करना
ESP8266 वाई-फाई ट्रांसीवर एक माइक्रोकंट्रोलर को नेटवर्क से कनेक्ट करने का एक तरीका प्रदान करता है। यह IoT परियोजनाओं में व्यापक रूप से उपयोग किया जाता है क्योंकि यह सस्ता, छोटा और उपयोग में आसान है। हमने पहले रास्पबेरी वेबसर्वर और Arduino वेबसर्वर का उपयोग करके वेबसर्वर बनाने के लिए इसका उपयोग किया है।
इस ट्यूटोरियल में हम ARM7-LPC2148 माइक्रोकंट्रोलर के साथ ESP8266 वाई-फाई मॉड्यूल को इंटरफेस करेंगे और LPC2148 से जुड़े एलईडी को नियंत्रित करने के लिए एक वेबसर्वर बनाएंगे। वर्कफ़्लो इस तरह जाएगा:
- AP मोड में ESP8266 को कॉन्फ़िगर करने के लिए LPC2148 से ESP8266 पर AT कमांड भेजें
- ESP8266 एक्सेस प्वाइंट के साथ लैपटॉप या कंप्यूटर वाई-फाई से कनेक्ट करें
- ईएसपी 8266 वेबसर्वर के एक्सेस प्वाइंट आईपी पते के साथ पीसी में एक HTML वेबपेज बनाएं
- ESP8266 से प्राप्त मूल्य के अनुसार एलईडी को नियंत्रित करने के लिए LPC2148 के लिए एक कार्यक्रम बनाएं
यदि आपका पूरी तरह से नया ESP8266 वाई-फाई मॉड्यूल ईएसपी 8266 वाई-फाई मॉड्यूल से परिचित होने के लिए नीचे दिए गए लिंक पर जाएं।
- ESP8266 वाई-फाई ट्रांसीवर (भाग 1) के साथ शुरुआत करना
- ESP8266 (भाग 2) के साथ आरंभ करना: AT कमांड का उपयोग करना
- ESP8266 (भाग 3) के साथ आरंभ करना: Arduino IDE के साथ ESP8266 प्रोग्रामिंग करना और इसकी मेमोरी को चमकाना
अवयव आवश्यक
हार्डवेयर:
- ARM7-LPC2148
- ESP8266 वाई-फाई मॉड्यूल
- FTDI (UART TTL को USB)
- एलईडी
- 3.3V वोल्टेज नियामक आईसी
- ब्रेड बोर्ड
सॉफ्टवेयर:
- KEIL uVision
- फ्लैश मैजिक टूल
- पोटीन
ESP8266 वाई-फाई मॉड्यूल
ESP8266 एम्बेडेड परियोजनाओं के लिए व्यापक रूप से इस्तेमाल किया जाने वाला वाई-फाई मॉड्यूल है जो 3.3V की कम शक्ति की आवश्यकता है। यह ESP8266 और UART पोर्ट वाले किसी भी माइक्रोकंट्रोलर के बीच धारावाहिक संचार और डेटा हस्तांतरण के लिए केवल दो तारों TX और RX का उपयोग करता है।
ESP8266 वाई-फाई मॉड्यूल के लिए पिन आरेख
- GND, ग्राउंड (0 V)
- TX, डेटा बिट X को संचारित करें
- GPIO 2, सामान्य प्रयोजन इनपुट / आउटपुट नंबर 2
- CH_PD, चिप पावर-डाउन
- GPIO 0, सामान्य-उद्देश्य इनपुट / आउटपुट नंबर 0
- आरएसटी, रीसेट
- RX, डेटा बिट X प्राप्त करें
- VCC, वोल्टेज (+3.3 V)
ESP8266 सर्किट बोर्ड की स्थापना
ESP8266 को 3.3V की निरंतर आपूर्ति की आवश्यकता है और यह ब्रेडबोर्ड के अनुकूल नहीं है। इसलिए ESP8266 पर हमारे पिछले ट्यूटोरियल में, हमने 3.3V वोल्ट रेगुलेटर, एक RESET पुश बटन और स्विचिंग मोड (AT कमांड या फ्लैश मोड) के लिए जम्पर सेटअप के साथ ESP8266 के लिए एक सर्किट बोर्ड बनाया। यह भी सही बोर्ड का उपयोग किए बिना ब्रेडबोर्ड पर सेटअप किया जा सकता है।
यहां हमने अपने ईएसपी 8266 वाई-फाई बोर्ड बनाने के लिए ब्रेडबोर्ड पर सभी घटकों को मिलाया
नीचे दिए गए लिंक के द्वारा विभिन्न माइक्रोकंट्रोलर्स के साथ ESP8266 का अंतर सीखें:
- ESP8266 (भाग 3) के साथ आरंभ करना: Arduino IDE के साथ ESP8266 प्रोग्रामिंग करना और इसकी मेमोरी को चमकाना
- ESM8266 को STM32F103C8 के साथ जोड़ना: एक वेबसर्वर बनाना
- MSP430 लॉन्चपैड और ESP8266 का उपयोग करके ईमेल भेजना
- PIC16F877A माइक्रोकंट्रोलर के साथ ईएसपी 8266 को इंटरफैस करना
- Arduino और ESP8266 का उपयोग कर IOT आधारित डंपस्टर मॉनिटरिंग
सभी ईएसपी 8266 आधारित परियोजनाएं यहां पाई जा सकती हैं।
सीरियल कम्युनिकेशन के लिए ESP8266 के साथ LPC2148 को जोड़ना
LPC2148 के साथ ESP8266 को इंटरफ़ेस करने के लिए हमें ESP8266 Wi-Fi मॉड्यूल को कॉन्फ़िगर करने के लिए LPC2148 से ESP8266 पर AT कमांड भेजने के लिए इन दोनों उपकरणों के बीच UART सीरियल संचार स्थापित करना होगा। ESP8266 के बारे में अधिक जानने के लिए AT कमांड लिंक का अनुसरण करें।
तो LPC2148 में UART संचार का उपयोग करने के लिए हमें LART2148 में UART पोर्ट को इनिशियलाइज़ करना होगा। LPC2148 में दो इनबिल्ट UART पोर्ट्स (UART0 और UART1) हैं।
LPC2148 में UART पिन
UART_Port |
TX_PIN |
RX_PIN |
UART0 |
P0.0 |
P0.1 |
UART1 |
P0.8 |
P0.9 |
LPC2148 में UART0 की शुरुआत
जैसा कि हम जानते हैं कि LPC2148 के पिन सामान्य प्रयोजन के पिन हैं, इसलिए हमें LART0 का उपयोग करने के लिए PINSEL0 रजिस्टर का उपयोग करने की आवश्यकता है। UART0 को आरंभ करने से पहले UART सुविधा का उपयोग करने के लिए LPC2148 में उपयोग किए गए इन UART रजिस्टरों के बारे में जानें।
UPC रजिस्टर LPC2148 में
नीचे दी गई तालिका प्रोग्रामिंग में प्रयुक्त कुछ महत्वपूर्ण रजिस्टर दिखाती है। हमारे भविष्य के ट्यूटोरियल में हम LPC2148 में UART के लिए उपयोग किए जाने वाले अन्य रजिस्टरों के बारे में संक्षेप में देखेंगे।
UART0 के लिए x-0 और UART1 के लिए x-1:
रजिस्टर करें |
रजिस्टर का नाम |
उपयोग |
UxRBR |
बफ़र रजिस्टर प्राप्त करें |
इसमें हाल ही में प्राप्त मूल्य शामिल हैं |
UxTHR |
ट्रांसमिट होल्डिंग रजिस्टर |
डेटा को प्रेषित किया जाना है |
UxLCR |
लाइन कंट्रोल रजिस्टर |
इसमें UART फ्रेम प्रारूप (डेटा बिट्स की संख्या, स्टॉप बिट) शामिल हैं |
UxDLL |
विभाजक कुंडी LSB |
UART के बॉड दर जनरेटर मूल्य का LSB |
UxDLM |
डिविज़र लैच MSB |
UART बॉड दर जनरेटर मूल्य के MSB |
UxIER |
इंटरप्ट इनेबल रजिस्टर |
इसका उपयोग UART0 या UART1 इंटरप्ट स्रोतों को सक्षम करने के लिए किया जाता है |
UxIIR |
बाधित पहचान रजिस्टर |
इसमें वह स्थिति कोड होता है जिसमें लंबित व्यवधानों की प्राथमिकता और स्रोत होता है |
सर्किट आरेख और कनेक्शन
LPC2148, ESP8266 और FTDI के बीच कनेक्शन नीचे दिखाया गया है
LPC2148 |
ईएसपी 8266 |
एफटीडीआई |
TX (P0.0) |
RX |
एनसी |
RX (P0.1) |
टेक्सास |
RX |
ESP8266 एक 3.3V वोल्टेज रेगुलेटर के माध्यम से संचालित होता है और FTDI & LPC2148 USB से संचालित होता है।
FTDI यहाँ क्यों है?इस ट्यूटोरियल में हमने FTDI (USB से UART TTL) के RX पिन को ESP8266 TX पिन से जोड़ा है जो आगे LPC2148 RX पिन से जुड़ा है, ताकि हम किसी भी टर्मिनल सॉफ्टवेयर जैसे putty, Arduino IDE से ESP8266 मॉड्यूल की प्रतिक्रिया देख सकें । लेकिन इसके लिए ईएसपी 8266 वाई-फाई मॉड्यूल की बॉड दर के अनुसार बॉड दर निर्धारित करें। (मेरा बॉड रेट 9600 है)।
ESP8266 के इंटरफेस के लिए LPC2148 में UART0 प्रोग्रामिंग में शामिल कदम
नीचे LPC2148 के साथ ESP8266 को जोड़ने के लिए प्रोग्रामिंग चरण दिए गए हैं जो इसे IoT के अनुकूल बनाएंगे।
चरण 1: - सबसे पहले हमें PINSEL0 रजिस्टर में UART0 TX और RX पिन को इनिशियलाइज़ करना होगा।
(TX के रूप में P0.0 और RX के रूप में P0.1) PINSEL0 = PINSEL0 - 0x00000005;
चरण 2: - U0LCR (लाइन कंट्रोल रजिस्टर) में अगला, DLAB (डिवाइज़र लैच एक्सेस बिट) को 1 पर सेट करें क्योंकि यह उन्हें सक्षम बनाता है और फिर स्टॉप बिट्स की संख्या 1 और 8-बिट की डेटा फ़्रेम लंबाई निर्धारित करता है।
U0LCR = 0x83;
चरण 3: - अब नोट किया जाने वाला महत्वपूर्ण कदम PCLK मूल्य और वांछित बॉड दर के आधार पर U0DLL और U0DLM के मूल्यों को निर्धारित करना है। आम तौर पर ESP8266 के लिए हम 9600 की बॉड दर का उपयोग करते हैं। तो आइए देखते हैं कि UART0 के लिए 9600 बॉड दर कैसे सेट करें।
बॉड दर गणना के लिए सूत्र:
कहाँ पे, PLCK: आवृत्ति में परिधीय घड़ी (मेगाहर्ट्ज)
U0DLM, U0DLL: बॉड दर जनरेटर विभक्त रजिस्टर
बहुवचन, DIVADDVAL: ये रजिस्टर अंश जनरेटर मान हैं
PCLK = 15MHZ के साथ बॉड रेट 9600 के लिए
MULVAL = 1 और DIVADDVAL = 0
256 * U0DLM + U0DLL = 97.65
तो U0DLM = 0 और हमें U0DLL = 97 मिलता है (भिन्न अनुमति नहीं)
इसलिए हम निम्नलिखित कोड का उपयोग करते हैं:
U0DLM = 0x00; U0DLL = 0x61; (97 की हेक्साडेसिमल वैल्यू)
चरण 4: - अंत में, हमें LCR में DLA (डिविज़न लैच एक्सेस) को 0 पर सेट करना होगा।
तो हमारे पास
U0LCR & = 0x0F;
चरण 5: - एक कैरेक्टर को ट्रांसमिट करने के लिए, बाइट को U0THR में भेजे जाने के लिए लोड करें और बाइट के ट्रांसमिट होने तक प्रतीक्षा करें, जो कि THRE बनने के संकेत है।
शून्य UART0_TxChar (char ch) { U0THR = ch; जबकि ((U0LSR & 0x40) == 0); }
चरण 6: - एक स्ट्रिंग को प्रसारित करने के लिए, नीचे फ़ंक्शन का उपयोग किया जाता है। एक-एक करके स्ट्रिंग डेटा भेजने के लिए हमने ऊपर चरण से वर्ण फ़ंक्शन का उपयोग किया।
शून्य UART0_SendString (चार * str) { uint8_t i = 0; जबकि (str! = '\ 0') { UART0_TxChar (str); मैं ++; } }
चरण 7: - एक स्ट्रिंग प्राप्त करने के लिए, इंटरप्ट सर्विस रूटीन फ़ंक्शन का उपयोग यहां किया जाता है क्योंकि एक ESP8266 वाई-फाई मॉड्यूल LPC2148 के RX पिन पर डेटा वापस प्रसारित करेगा जब भी हम AT कमांड भेजते हैं या जब भी कोई ESP8266 LPC2148 को डेटा भेजता है, जैसे हम भेजते हैं ESP8266 के वेबसर्वर को डेटा।
उदाहरण: जब हम LPC2148 ("AT \ r \ n") से ESP8266 पर AT कमांड भेजते हैं, तब हमें वाई-फाई मॉड्यूल से एक उत्तर "OK" मिलता है।
इसलिए हम ESP8266 वाई-फाई मॉड्यूल से प्राप्त मूल्य की जांच करने के लिए यहां एक रुकावट का उपयोग करते हैं क्योंकि ISR इंटरप्ट सर्विस रूटीन की सर्वोच्च प्राथमिकता है।
इसलिए जब भी कोई ESP8266 LPC2148 के RX पिन को डेटा भेजता है तो व्यवधान सेट हो जाता है और ISR फ़ंक्शन निष्पादित हो जाता है।
चरण 8: - UART0 के लिए व्यवधान को सक्षम करने के लिए, निम्नलिखित कोड का उपयोग करें
VICintEnable बाधा इस्तेमाल किया रजिस्टर UART0 के लिए बाधा सक्षम करने के लिए सक्षम vectored है।
VICIntEnable - = (1 << 6);
VICVecCnt10 vectored है बाधा नियंत्रण रजिस्टर कि UART0 के लिए आबंटित करता स्लॉट।
VICVectCntl0 = (1 << 5) - 6;
VICVectaddr0 के आगे बाधित पता रजिस्टर है जिसमें इंटरप्ट सर्विस रूटीन ISR एड्रेस है।
VICVectAddr0 = (अहस्ताक्षरित) UART0_ISR;
फिर हमें RBR रिसिव बफर रजिस्टर के लिए इंटरप्ट असाइन करना होगा। इसलिए इंटरप्ट इनेबल रजिस्टर (U0IER) में हम RBR के लिए सेट करते हैं। इसलिए जब हम डेटा प्राप्त करते हैं तो इंटरप्ट सर्विस रूटीन (ISR) कहा जाता है।
U0IER = IER_RBR;
अंत में, हमारे पास ISR फ़ंक्शन है जिसे ESP8266 वाई-फाई मॉड्यूल से डेटा प्राप्त करने पर कुछ कार्य करने की आवश्यकता होती है। यहाँ हम केवल उस ESP8266 से प्राप्त मान को पढ़ते हैं जो U0RBR में मौजूद है और उन मान को UART0_BUFFER में संग्रहीत करते हैं। अंत में ISR के अंत में VICVectAddr को शून्य या डमी मूल्य के साथ सेट किया जाना चाहिए।
शून्य UART0_ISR () __irq { अहस्ताक्षरित चार IIRValue; IIRValue = U0IIR; IIRValue >> = 1; IIRValue & = 0x02; if (IIRValue == IIR_RDA) { UART_BUFFER = U0RBR; uart0_count ++; if (uart0_count == BUFFER_SIZE) { uart0_count = 0; } } VICVectAddr = 0x0; }
चरण 9: - जैसे कि ESP8266 वाई-फाई मॉड्यूल को एपी मोड में सेट किया जाना चाहिए, हमें UART0_SendString () फ़ंक्शन का उपयोग करके LPC2148 से सम्मानित एटी कमांड भेजना होगा ।
एटी आदेशों जो LPC2148 से ESP8266 के लिए भेजा जाता नीचे दिया गया है। प्रत्येक आदेश भेजने के बाद ESP8266 "ओके" के साथ जवाब देता है
1. ESP8266 पर भेजता है
UART0_SendString ("AT \ r \ n"); delay_ms (3000);
2. AT + CWMODE = 2 (AP मोड में ESP8266 सेट करना) भेजता है।
UART0_SendString ("AT + CWMODE = 2 \ r \ n"); delay_ms (3000);
3. एटी + CIFSR भेजता है (एपी के आईपी पाने के लिए)
UART0_SendString ("AT + CIFSR \ r \ n"); delay_ms (3000);
4. AT + CIPMUX = 1 पर भेजता है (Mutliple Connections के लिए)
UART0_SendString ("AT + CIPMUX = 1 \ r \ n"); delay_ms (3000);
5. AT + CIPSERVER = 1,80 पर भेजता है (खुले पोर्ट के साथ ESP8266 सर्वर को जोड़ने के लिए)
UART0_SendString ("AT + CIPSERVER = 1,80 \ r \ n"); delay_ms (3000);
प्रोग्रामिंग और फ्लैशिंग हेक्स फ़ाइल LPC2148 के लिए
ARM7-LPC2148 प्रोग्राम करने के लिए हमें keil uVision और Flash Magic टूल की आवश्यकता है। माइक्रो यूएसबी पोर्ट के माध्यम से एआरएम 7 स्टिक को प्रोग्राम करने के लिए यहां एक यूएसबी केबल का उपयोग किया जाता है। हम Keil का उपयोग करके कोड लिखते हैं और एक हेक्स फ़ाइल बनाते हैं और फिर HEX फाइल को फ्लैश मैजिक का उपयोग करते हुए ARM7 स्टिक में लाते हैं। काइल uVision और फ्लैश मैजिक को स्थापित करने के बारे में अधिक जानने के लिए और उनका उपयोग कैसे करें लिंक का पालन करें ARM7 LPC2148 माइक्रोकंट्रोलर के साथ शुरुआत करें और इसे Keil uVision का उपयोग करके प्रोग्राम करें।
पूरा कार्यक्रम ट्यूटोरियल के अंत में दिया गया है।
नोट: HEX फाइल को LPC2148 पर अपलोड करते समय आपको ESP8266 वाई-फाई मॉड्यूल और FTDI मॉड्यूल को LPC2148 के साथ कनेक्ट करने की शक्ति नहीं होनी चाहिए।
एलपीसी 2148 के साथ ईएसपी 8266 आईओटी वेबसर्वर का उपयोग करके एलईडी को नियंत्रित करना
चरण 1: - LEX2148 में HEX फाइल अपलोड करने के बाद, USB केबल के माध्यम से PC में FTDI मॉड्यूल कनेक्ट करें और पोटीन टर्मिनल सॉफ्टवेयर खोलें।
सीरियल का चयन करें और फिर अपने पीसी के अनुसार COM पोर्ट का चयन करें या LAPTOP मेरा था (COM3)। बॉड दर 9600 है।
चरण 2: - अब ESP8266 वाई-फाई मॉड्यूल को रीसेट करें या इसे केवल पावर ऑफ और फिर से चालू करें, पोटीन टर्मिनल नीचे दिखाए गए अनुसार ESP8266 वाई-फाई मॉड्यूल की प्रतिक्रिया दिखाएगा। "
चरण 3: - अब LPC2148 पर RESET बटन दबाएँ। उसके बाद LPC2148 ESP8266 पर AT कमांड भेजना शुरू करता है। हम पोटीन टर्मिनल में उस की प्रतिक्रिया देख सकते हैं।
चरण 4: - जैसा कि आप देख सकते हैं कि ESP8266 के ऊपर की छवि MODE 2 में AP मोड में सेट है और APIP का पता 192.168.4.1 है। इस पते पर ध्यान दें क्योंकि यह पता LPC2148 से जुड़ी एलईडी को नियंत्रित करने के लिए वेबपेज एचटीएमएल कोड में हार्ड कोड होगा।
महत्वपूर्ण : जब ESP8266 AP मोड में है तो आपको अपने PC को ESP8266 AP से कनेक्ट करना होगा। मेरे ESP8266 मॉड्यूल के नीचे की छवि देखें AP को ESP_06217B के नाम से दिखाया गया है (यह खुला है और इसका कोई पासवर्ड नहीं है)।
चरण 5: - पीसी को ईएसपी 8266 एपी से कनेक्ट करने के बाद, एक नोटपैड खोलें और निम्नलिखित एचटीएमएल प्रोग्राम वेबपेज को कॉपी-पेस्ट करें । अपने ईएसपी 8266 वाई-फाई मॉड्यूल के अनुसार एपीआईपी पते को बदलना सुनिश्चित करें
सर्किट डाइजेस्ट में आपका स्वागत है
ESP8266 LPC2148 के साथ अंतर: एक एलईडी को नियंत्रित करने के लिए वेबसर्वर बनाना
एलईडी बंद एलईडीइस HTML पेज में, हमने वेबपेज से एलईडी को चालू और बंद करने के लिए दो हाइपरलिंक बटन बनाए हैं ।
आखिर में.html एक्सटेंशन के रूप में नोटपैड दस्तावेज़ को सहेजें
वेबपेज को वेब ब्राउजर में नीचे दिखाया जाएगा।
यहाँ पता AP IP पता 192.168.4.1 है और हम LPC2148 में नीचे दिए गए इस तर्क का उपयोग करके LED चालू और बंद करने के लिए मान @ और% भेजते हैं।
जबकि (1) { यदि (uart0_count! = 0) { COMMAND = UART0_BUFFER; अगर (COMMAND == LEDON) // ESP8266 { IOSET1 = (1 << 20) से प्राप्त मूल्य के आधार पर LED को चालू या बंद करने के लिए तर्क ; // सेट OUTPUT उच्च विलंब_ms (100); } और अगर (COMMAND == LEDOFF) { IOCLR1 = (1 << 20); // सेट आउट कम देरी देरी (100); } } }
इस तरह से ESP8266 और ARM7 माइक्रोकंट्रोलर LPC2148 का उपयोग करके किसी उपकरण को दूरस्थ रूप से नियंत्रित किया जा सकता है। पूरा कोड और स्पष्टीकरण वीडियो नीचे दिया गया है।