विषयसूची:

NODEMCU LUA ESP8266 MCP23008 8 बिट पोर्ट एक्सपैंडर आईसी के साथ: 6 कदम
NODEMCU LUA ESP8266 MCP23008 8 बिट पोर्ट एक्सपैंडर आईसी के साथ: 6 कदम

वीडियो: NODEMCU LUA ESP8266 MCP23008 8 बिट पोर्ट एक्सपैंडर आईसी के साथ: 6 कदम

वीडियो: NODEMCU LUA ESP8266 MCP23008 8 बिट पोर्ट एक्सपैंडर आईसी के साथ: 6 कदम
वीडियो: NodeMCU V3 ESP8266 - обзор, подключение и прошивка в Arduino IDE 2024, नवंबर
Anonim
NODEMCU LUA ESP8266 MCP23008 8 बिट पोर्ट एक्सपैंडर आईसी के साथ
NODEMCU LUA ESP8266 MCP23008 8 बिट पोर्ट एक्सपैंडर आईसी के साथ

MCP23008 सीरियल इंटरफ़ेस के साथ 8-बिट I/O विस्तारक है और 1.8 और 5.5 वोल्ट के बीच संचालित होता है, इसलिए ESP8266, Arduino, रास्पबेरी पाई, PIC चिप्स और बहुत कुछ के लिए आदर्श है।

यदि आपने MCP23017 पर मेरे अन्य इंस्ट्रक्शनल को देखा है, तो आप सोच रहे होंगे कि मैं MCP23008 के लिए भी एक क्यों कर रहा हूँ, क्योंकि यह वास्तव में उसी चीज़ का एक छोटा संस्करण है।

इसका कारण यह है कि इसके रजिस्टर नाम और संख्या दोनों में भिन्न हैं और मैं दिखाना चाहता हूं कि तैयार पुस्तकालय मॉड्यूल का उपयोग कैसे करें। NodeMCU lua का उपयोग करते समय हर कोई कुशल नहीं है, इसलिए मैं प्रोग्रामिंग के इस पहलू के साथ-साथ MCP23008 का उपयोग कैसे करना चाहता हूं, यह दिखाना चाहता हूं।

पुस्तकालय और कार्यक्रम github.com पर उपलब्ध हैं।

MCP23008 के लिए डेटाशीट माइक्रोचिप से उपलब्ध है।

चरण 1: MCP23008 को तार देना

एमसीपी२३००८ की वायरिंग
एमसीपी२३००८ की वायरिंग

MCP23008 IC एक साधारण लेआउट का है और इसके लिए बोर्ड बनाना वास्तव में आसान है। आप सर्किट को ब्रेड बोर्ड पर भी सेट कर सकते हैं।

मेरे बोर्ड पर पिन कनेक्शन

  • पिन 18 (VDD) से 3v3
  • पिन 9 (VSS) से GND
  • पिन 7 (NC) से GND (आवश्यक नहीं)
  • पिन 1 (SCL) से ESP GPIO2
  • पिन 2 (SDA) से ESP GPIO0
  • पिन 5 (A0) से GND
  • पिन 4 (A1) से GND
  • पिन 3 (A2) से GND
  • पिन 6 (रीसेट) से 3v3

पोर्ट ए पर जीएनडी को पढ़ने के लिए पिन कनेक्ट करें (पिन 10 - 17)

नोट: यहां I2C एड्रेस बस में 0x20 पते पर MCP23008 का उपयोग करने के लिए सभी एड्रेस पिन Gnd से जुड़े हैं।

यदि आप पता 0x21 का उपयोग कर रहे थे तो A0 को 3.3V से जोड़ा जाएगा, A1 और A2 को Gnd से जोड़ा जाएगा।

इसी तरह यदि पता 0x22 का उपयोग कर रहे हैं तो A1 को 3.3V से A0 और A2 को Gnd से जोड़ना होगा।

आदि…

चरण 2: एक बोर्ड का निर्माण

एक बोर्ड का निर्माण
एक बोर्ड का निर्माण

मैंने अपने बोर्ड के निर्माण के लिए 25 मिमी x 64 मिमी (9 पंक्तियों x 25 छेद) वेरो स्ट्रिप बोर्ड का उपयोग किया। यह थोड़ा कड़ा है, लेकिन चूंकि आपको अधिकांश पिन आईसी के दोनों तरफ हैं, इसलिए इसे जो करना है उसके लिए पर्याप्त है।

मैंने पोर्ट ए के लिए 8 पिन और 8 हेडर सॉकेट का उपयोग किया है ताकि मैं अपने विभिन्न मॉड्यूल के साथ-साथ विभिन्न परियोजनाओं के लिए अन्य वायरिंग में प्लग कर सकूं। मैंने अतिरिक्त Gnd और 3.3V पिन जोड़े हैं क्योंकि मुझे लगता है कि मॉड्यूल को एक साथ जोड़ने पर इनकी हमेशा कमी होती है।

चरण 3: लाइब्रेरी मॉड्यूल का उपयोग करना

लाइब्रेरी मॉड्यूल का उपयोग करना
लाइब्रेरी मॉड्यूल का उपयोग करना

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

नोट: mcp23008.lua प्रोग्राम को अन्य प्रोग्रामों की तरह ESP8266 मेमोरी में लोड करने की आवश्यकता है।

मैंने यह दिखाने के लिए कि पुस्तकालय काम कर रहा है, मैंने यहां github.com प्रोग्राम के साथ-साथ एक साधारण प्रोग्राम (test.lua) शामिल किया है।

आपके प्रोग्राम में लाइब्रेरी को शामिल करने के कम से कम 2 तरीके हैं।

आवश्यकता है ("एमसीपी २३००८")

mcp23008.begin(0x0, gpio2, gpio0, i2c. SLOW)

या

एमसीपी = की आवश्यकता है ("एमसीपी २३००८")

mcp.begin(0x0, gpio2, gpio0, i2c. SLOW)

उपरोक्त दोनों एक ही काम करते हैं, लेकिन दूसरी विधि आपको प्रोग्राम के नाम के बजाय अपने स्वयं के चर का उपयोग करने की अनुमति देती है।

चरण 4: किट कार कार्यक्रम

किट कार कार्यक्रम
किट कार कार्यक्रम

मैंने KittCar23008.lua प्रोग्राम और KittLib.lua को शामिल किया है जो इस तरह से प्रोग्राम लिखने के तरीके में अंतर दिखाने के लिए लाइब्रेरी का उपयोग करता है। दोनों कार्यक्रम एक ही काम करते हैं।

8 एलईडी प्लग ईबे से एक किट के रूप में उपलब्ध है और इसे 8 चैनल फ्लोइंग वॉटर लाइट एलईडी DIY किट, चीन से 99p के रूप में जाना जाता है। आपको इसे स्वयं सोल्डर करना होगा।

नोट: यदि आपको KittLib.lua प्रोग्राम को चलाने में कोई समस्या है, तो MCP23008 RESET पिन को पल भर में Gnd से कनेक्ट करने का प्रयास करें। मुझे पता है कि यह एक सीधा शॉर्ट सर्किट देगा (क्योंकि यह 3.3V से जुड़ा है) और आपको बाकी सब कुछ रीसेट करना होगा। यह 10 ओम रेसिस्टर के माध्यम से Gnd से जुड़कर भी काम करता है, शायद इसे करने का एक बेहतर तरीका है।

मैंने यह भी पाया कि KittLib.lua test.lua चलाने के बाद बिना किसी समस्या के चलेगा (मुझसे मत पूछो क्यों?)

मैंने KittLib.lua कार्यक्रम की समस्या को हल करने के लिए विभिन्न तरीकों की कोशिश की है, लेकिन अभी तक कोई तार्किक कारण नहीं मिला है कि यह क्रैश क्यों होता है। खुराक किसी के पास कोई विचार है?

ये सभी प्रोग्राम मैंने खुद नहीं लिखे हैं, इसलिए मैं यह नहीं बता पा रहा हूं कि समस्या क्यों है, हालांकि कोडिंग को देखने के बाद, स्पष्ट रूप से कुछ भी गलत नहीं लगता है।

चरण 5: 7 खंड एलईडी

7 खंड एलईडी
7 खंड एलईडी

ऊपर KittCar.lua प्रोग्राम की तरह, मैंने 7 सेगमेंट एलईडी डिस्प्ले को चलाने के लिए एक स्टैंडअलोन और एक लाइब्रेरी डिपेंडेंट प्रोग्राम को शामिल किया है।

फिर से, दोनों प्रोग्राम एक ही काम करते हैं, लेकिन प्रदर्शित करते हैं कि पुस्तकालय मॉड्यूल का उपयोग कैसे करें या तो स्वयं या किसी और द्वारा लिखित।

चरण 6: निष्कर्ष

निष्कर्ष
निष्कर्ष

मैंने लुआ पर्यावरण के भीतर कोड मॉड्यूल का उपयोग करने का तरीका प्रदर्शित करने का प्रयास किया है, और इसे एक ही समय में एक विशिष्ट आईसी पर लागू किया है।

भले ही मुझे ऐसा करने में समस्या हुई हो, मुझे लगता है कि यह दिखाने के लिए पर्याप्त है कि ये मॉड्यूल कैसे काम करते हैं और साथ ही वास्तविक जीवन अनुप्रयोग का प्रदर्शन भी करते हैं।

सिफारिश की: