विषयसूची:

ESP01 के साथ कम लागत वाला स्वचालन: 19 कदम
ESP01 के साथ कम लागत वाला स्वचालन: 19 कदम

वीडियो: ESP01 के साथ कम लागत वाला स्वचालन: 19 कदम

वीडियो: ESP01 के साथ कम लागत वाला स्वचालन: 19 कदम
वीडियो: ESP8266 ESP01 वाईफ़ाई-यूएआरटी | एलडीमाइक्रो-रोबोरेमो प्रोग्रामिंग 2024, नवंबर
Anonim
Image
Image
एमसीपी२३०१६
एमसीपी२३०१६

आज, हम 16 रिले के साथ ESP01 का उपयोग करके स्वचालन पर चर्चा करेंगे। यह एक सुपर सस्ता डिज़ाइन मॉडल है जहां आप मॉड्यूल को गुणा कर सकते हैं और 128 रिले तक प्राप्त कर सकते हैं, क्योंकि इस माइक्रोकंट्रोलर में आठ पोर्ट विस्तारक रखना संभव है।

हमारे सर्किट में, आपके पास स्मार्टफोन पर एक एप्लिकेशन होगा जो ESP01 के साथ संचार करता है। इसमें 16 बंदरगाहों के साथ एक विस्तारक होगा, प्रत्येक रिले से जुड़ा होगा। हमारे पास एक 3v3 समायोज्य स्रोत भी है। इसलिए हम एंड्रॉइड एप्लिकेशन के माध्यम से ईएसपी01 का उपयोग करके 16-चैनल रिले मॉड्यूल को नियंत्रित करेंगे, जिसे मैं आपको उपलब्ध कराता हूं।

चरण 1: याद रखने की युक्ति

मेरे दोस्तों, यह नोट करना महत्वपूर्ण है कि मैंने इस चिप का उपयोग MCP23016 नामक सर्किट में किया था। आपके लिए ESP32, ESP8266 और ARDUINO के लिए IOS का EXPANSOR वीडियो देखना भी महत्वपूर्ण है, जिसमें मैं डिवाइस का परीक्षण करता हूं और दिखाता हूं कि यह इन तीन प्रकार के बोर्डों के लिए काम करता है।

चरण 2: MCP23016

यहां हमारे पास MCP23016 की एक छवि है, जो 28 पिन वाली एक चिप है। यह उल्लेख करना महत्वपूर्ण है कि MCP23017 मॉडल भी है, जो अधिक सामान्य है और इसमें एक रोकनेवाला और संधारित्र की आवश्यकता नहीं है, क्योंकि इसमें एक आंतरिक घड़ी है। इससे यह आसान हो जाता है, लेकिन इसकी पिनिंग इस वीडियो में हम जो दिखा रहे हैं उससे अलग है।

चरण 3: पता

पता
पता

MCP23016 के पते को परिभाषित करने के लिए, हम पिन A0, A1 और A2 का उपयोग करते हैं। पता बदलने के लिए आप उन्हें केवल उच्च या निम्न पर छोड़ सकते हैं।

पता इस प्रकार बनाया जाएगा:

एमसीपी_पता = 20 + (ए2 ए1 ए0)

जहाँ A2 A1 A0 उच्च / निम्न मान ले सकता है, एक बाइनरी संख्या 0 से 7 रूपों तक।

उदाहरण के लिए:

A2> GND, A1> GND, A0> GND (मतलब 000, तो 20 + 0 = 20)

या अन्यथा, A2> High, A1> GND, A0> High (मतलब 101, फिर 20 + 5 = 25)

चरण 4: आदेश

आदेश
आदेश

संचार के लिए आदेशों वाली एक तालिका यहां दी गई है:

चरण 5: श्रेणियाँ

GP0 / GP1 - डेटा पोर्ट रजिस्टर

दो रजिस्टर हैं जो दो GPIO पोर्ट तक पहुंच प्रदान करते हैं।

रजिस्टर रीडिंग उस पोर्ट पर पिन की स्थिति प्रदान करता है।

बिट = 1> उच्च बिट = 0> कम

IODIR0 / IODIR1

दो रजिस्टर हैं जो पिन मोड को नियंत्रित करते हैं। (इनपुट या आउटपुट)

बिट = 1> इनपुट बिट = 0> आउटपुट

चरण 6: संचार के लिए संरचना

संचार के लिए संरचना
संचार के लिए संरचना

यहां हम चिप के पते के बारे में बात करते हैं, और कमांड और डेटा तक पहुंचते हैं, जो एक तरह का प्रोटोकॉल है जिसे सूचना भेजने के लिए किया जाना चाहिए।

चरण 7: कार्यक्रम

कार्यक्रम
कार्यक्रम

हम एक प्रोग्राम करेंगे जिसमें अधिक GPIO का उपयोग करने के लिए ESP01 को MCP23016 के साथ संचार करना शामिल है। ये 16 नए GPIO जो हमारे पास होंगे वे एक 16-चैनल रिले मॉड्यूल को नियंत्रित करने जा रहे हैं।

Android एप्लिकेशन के माध्यम से ESP01 को कमांड भेजे जाएंगे।

चरण 8: MCP23016

एमसीपी२३०१६
एमसीपी२३०१६

चरण 9: ईएसपी-01

ईएसपी-01
ईएसपी-01
ईएसपी-01
ईएसपी-01

यह एक 16-रिले बोर्ड है।

चरण 10: बढ़ते ESP01

बढ़ते ESP01
बढ़ते ESP01

चरण 11: पुस्तकालय और चर

हम i2c संचार के लिए और एक्सेस प्वाइंट और वेबसर्वर बनाने के लिए जिम्मेदार पुस्तकालयों को शामिल करेंगे। हम चिप और बंदरगाहों के पते को परिभाषित करते हैं। अंत में, हम एमसीपी पिन के मूल्यों को संग्रहीत करने के लिए चर को परिभाषित करते हैं।

#include // प्रतिक्रिया दें संचार i2c.#include // प्रतिक्रिया पोर CRAR o एक्सेसपॉइंट eo वेबसर्वर WiFiServer सर्वर (80);//वेबसर्वर पैरा acessarmos através do aplicativo //endereço I2C do MCP23016 #define MCPAddress 0x20 // GP0 0x00 को परिभाषित करें // डेटा पोर्ट रजिस्टर 0 # GP1 0x01 को परिभाषित करें // डेटा पोर्ट रजिस्टर 1 # परिभाषित करें IODIR0 0x06 // I / O दिशा रजिस्टर 0 # परिभाषित करें IODIR1 0x07 // I / O दिशा रजिस्टर 1 // गार्डा ओएस वेलोरेस डॉस पिनोस क्या एमसीपी uint8_t currentValueGP0 = 0; uint8_t वर्तमानValueGP1 = 0;

चरण 12: सेटअप

हम ESP01 को इनिशियलाइज़ करते हैं और पोर्ट को कॉन्फ़िगर करते हैं। हम एक्सेस प्वाइंट को भी कॉन्फ़िगर करते हैं और सर्वर को इनिशियलाइज़ करते हैं।

शून्य सेटअप () {Serial.begin (९६००); देरी (1000); वायर.बेगिन (0, 2); // ESP01 वायर.सेटक्लॉक (200000); कॉन्फ़िगरपोर्ट (IODIR0, OUTPUT); कॉन्फ़िगरपोर्ट (IODIR1, OUTPUT); राइटब्लॉकडाटा (GP0, 0x00); राइटब्लॉकडाटा (GP1, 0x00); सेटअपवाईफाई (); //configuração एक्सेस प्वाइंट सर्वर करते हैं। शुरू ();//inicializa o सर्वर }

चरण 13: लूप

यहां मैं जांचता हूं कि कोई क्लाइंट सर्वर से जुड़ा है या नहीं। हम पहली अनुरोध पंक्ति भी पढ़ते हैं। हम हेरफेर के लिए डेटा निकालते हैं, डिफ़ॉल्ट प्रतिक्रिया शीर्षलेख को परिभाषित करते हैं, और क्लाइंट को यह प्रतिक्रिया भेजते हैं।

शून्य लूप () {वाईफाई क्लाइंट क्लाइंट = सर्वर उपलब्ध (); // वेरिफ़िका से उम क्लाइंट फ़ॉई कनेक्टैडो अगर (! क्लाइंट) {वापसी; } स्ट्रिंग अनुरोध = client.readStringUntil('\r');// फ़ज़ ए लेइटुरा दा प्राइमिरा लिन्हा दा रिक्विसिस्को / * / एमआर या ओ हेडर प्रीफ़िक्सो पैरा कृपाण से एक आवश्यकता है जो एक एस्पेरडा पैरा ओएस रिलेज़ है */ if(req.indexOf ("/ एमआर")! = -1) {parserData (req); //a partir da requição extrai os dados para manipulação } else{ Serial.println("invalid request"); वापसी; } क्लाइंट.फ्लश (); स्ट्रिंग s = "HTTP/1.1 200 OK\r\n"; // काबेकाल्हो पैड्राओ डे प्रतिक्रिया क्लाइंट।प्रिंट; // ग्राहकों की देरी के लिए एक प्रतिक्रिया के माध्यम से (1); } // अंत लूप

चरण 14: पार्सरडेटा

पार्सरडेटा
पार्सरडेटा

अनुरोध से, हम रिले से संबंधित डेटा की तलाश करते हैं। फिर हम डेटा को MCP23016 पर भेजते हैं।

//a partir da requireção busca os dados Referente aos relésvoid parserData(String data) { uint8_t रिले = -1; uint8_t जीपी = -1; uint8_t मान = -1; इंट इंडेक्स = डेटा.इंडेक्सऑफ ("/ एमआर"); // बसका ओ इंडेक्स एमआर प्रीफिक्सो करते हैं अगर (डेटा [इंडेक्स + 5] == '/') // / एमआर 01/1, ओन्डे 0 = जीपी; 1 = रील; 1 = एस्टाडो (चालू / बंद) {जीपी = डेटा [सूचकांक + 3] - '0'; रिले = डेटा [इंडेक्स+4]-'0'; मूल्य = डेटा [सूचकांक + 6] - '0'; // एनविया ओएस डैडोस पैरा ओ एमसीपी २३०१६ // [रिले -1] पोर्क ओ एमसीपी वै डे ०-७ ओएस पिनोस राइटपिनडाटा (रिले -1, वैल्यू, जीपी); } }

चरण 15: पोर्ट कॉन्फ़िगर करें

हम GPIO पिन मोड (GP0 या GP1) सेट करते हैं।

// कॉन्फ़िगरेशन ओ मोडो डॉस पिनोस जीपीआईओ (जीपी0 या जीपी1) // कोमो पैरामेट्रो पासामोस: // पोर्ट: जीपी 0 या जीपी 1 // इनपुट पैरा टोडोस के रूप में जीपी ट्रैबलहरम कोमो एंट्री // कस्टम um valor de 0-255 संकेतक ओ मोडो दास पोर्टस (1 = INPUT, 0 = OUTPUT) // पूर्व: 0x01 या B00000001 कहां 1: इंडिका क्यू एपेनस ओ GPX.0 ट्रैबलहारा कोमो एंटरडा, ओ रेस्टेंट कोमो कहाएक शून्य कॉन्फ़िगरपोर्ट (uint8_t पोर्ट, uint8_t कस्टम) {अगर (कस्टम == INPUT) {लिखेंब्लॉकडाटा (पोर्ट, 0xFF); } और अगर (कस्टम == आउटपुट) {लिखेंब्लॉकडाटा (पोर्ट, 0x00); } और {लिखेंब्लॉकडाटा (पोर्ट, कस्टम); } }

चरण 16: पिनडाटा लिखें

कोड के इस भाग में, हम वांछित पिन की स्थिति बदलते हैं और डेटा को MCP को भेजते हैं।

// मुदा ओ एस्टाडो डी उम पिनो डेसेजाडो, पासंडो कोमो पैरामेट्रो: // पिन = पिनो डेसेजाडो; मान = 0/1 (चालू/बंद); जीपी = 0/1 (पोर्ट एमसीपी करते हैं) शून्य लिखेंपिनडाटा (इंट पिन, इंट वैल्यू, uint8_t जीपी) {uint8_t statusGP = 0; if(gp == GP0) statusGP = currentValueGP0; अन्य स्थितिGP = currentValueGP1; अगर (मान == 0) { statusGP &= ~(B00000001 << (पिन)); // मुदा ओ पिनो पैरा कम } और अगर (मान == 1) { statusGP |= (B00000001 << (पिन)); // मूड ओ पिनो पैरा हाई} अगर (जीपी == जीपी 0) currentValueGP0 = statusGP; अन्य करंटवैल्यूGP1 = statusGP; // एनविया ओएस डैडोस पैरा ओ एमसीपी राइटब्लॉकडाटा (जीपी, स्टेटसजीपी); देरी(10); }

चरण 17: WriteBlockData और सेटअपवाईफाई

यहां, हम i2c बस के माध्यम से MCP23016 को डेटा भेजते हैं। अगला, हम एक्सेस प्वाइंट को सक्षम करने के लिए गुणों को कॉन्फ़िगर करते हैं। अंत में, हमने एक्सेस प्वाइंट मोड के लिए वाईफाई को कॉन्फ़िगर किया और एसएसआईडी और पासवर्ड के साथ एक एपी बनाया।

// एनविया डैडोस पैरा ओ एमसीपी२३०१६ एट्रावेस डो बैरामेंटो आई२सी//रेग: रजिस्ट्रार वायर.राइट (पोर्ट); वायर.राइट (डेटा); वायर.एंडट्रांसमिशन (); देरी(10); }

// कॉन्फिगुरा के रूप में उपयोग करने के लिए उपयोग किया जाता है या एक्सेस प्वाइंटविहीन सेटअपवाईफाई () {वाईफाई.मोड(वाईफाई_एपी); WiFi.softAP ("ESP01_RELAY", "12345678"); }

चरण 18: ऐप

अनुप्रयोग
अनुप्रयोग
अनुप्रयोग
अनुप्रयोग
अनुप्रयोग
अनुप्रयोग
अनुप्रयोग
अनुप्रयोग

एप्लिकेशन बनाने के लिए, हम MIT ऐप आविष्कारक 2 का उपयोग करते हैं, जिसे लिंक के माध्यम से एक्सेस किया जा सकता है:

ai2.appinventor.mit.edu/

एप्लिकेशन में दो स्क्रीन होते हैं जिनमें प्रत्येक में आठ जोड़े बटन होते हैं, जो प्रत्येक रिले की स्थिति को दर्शाता है।

उपयोग किए जाने वाले कुछ प्रोग्रामिंग ब्लॉक निम्नलिखित हैं:

महत्वपूर्ण: ईएसपी का डिफ़ॉल्ट आईपी पता, एक्सेस प्वाइंट के रूप में 192.168.4.1. है

1. जब स्क्रीन इनिशियलाइज़ होती है, तो हम आईपी को मेमोरी में स्टोर करते हैं और बटन की स्थिति (चालू / बंद) को पुनर्प्राप्त करने के लिए प्रक्रिया को कॉल करते हैं।

2. दूसरी स्क्रीन पर कॉल करें

1. किसी एक रिले के ON बटन पर क्लिक करते समय, हम बटन (ग्रीन ब्लॉक) में दृश्य परिवर्तन करेंगे। WebViewer1. GoToUrl URL में MR01/1 डेटा को लिंक करके हमारे ESP01 के लिए अनुरोध करता है।

2. किसी एक रिले के ऑफ बटन पर क्लिक करते समय, हम बटन (हरे रंग के ब्लॉक) में दृश्य परिवर्तन करेंगे। WebViewer1. GoToUrl URL में MR01 / 0 डेटा को लिंक करके हमारे ESP01 से अनुरोध करता है।

इस प्रक्रिया का उपयोग बटनों (रिले) की स्थिति को पुनर्प्राप्त करने के लिए किया जाता है, क्योंकि स्क्रीन को बदलते समय, यह निर्माण पैटर्न पर वापस आ जाता है।

प्रत्येक बटन जोड़े के लिए पीला ब्लॉक दोहराता है।

चरण 19: डाउनलोड करें

डाउनलोड के लिए प्रोजेक्ट फ़ाइलें यहां दी गई हैं:

एमआईटी ऐप आविष्कारक 2 परियोजना फ़ाइल - डाउनलोड

Android पर इंस्टॉल करने के लिए एप्लिकेशन APK - डाउनलोड

अन्य फ़ाइलें डाउनलोड करें:

पीडीएफ

मैं नहीं

सिफारिश की: