جدول المحتويات:

NODEMCU LUA ESP8266 مع MCP23008 8 Bit Port Expander IC: 6 خطوات
NODEMCU LUA ESP8266 مع MCP23008 8 Bit Port Expander IC: 6 خطوات

فيديو: NODEMCU LUA ESP8266 مع MCP23008 8 Bit Port Expander IC: 6 خطوات

فيديو: NODEMCU LUA ESP8266 مع MCP23008 8 Bit Port Expander IC: 6 خطوات
فيديو: Getting extra outputs on the NodeMCU (ESP8266) with a 74HC595 shift register 2024, شهر نوفمبر
Anonim
NODEMCU LUA ESP8266 مع MCP23008 8 Bit Port Expander IC
NODEMCU LUA ESP8266 مع MCP23008 8 Bit Port Expander IC

MCP23008 عبارة عن أداة توسيع I / O ذات 8 بت مع واجهة تسلسلية وتعمل بين 1.8 و 5.5 فولت ، لذا فهي مثالية لشرائح ESP8266 و Arduino و Raspberry Pi و PIC Chips والمزيد.

إذا كنت قد رأيت Instructable الآخر الخاص بي على MCP23017 ، فقد تتساءل عن سبب قيامي أيضًا بعمل واحد من أجل MCP23008 ، لأنه في الحقيقة إصدار أصغر من نفس الشيء.

الأسباب هي أن سجلاتها مختلفة في الاسم والرقم وأود أن أوضح كيفية استخدام وحدة مكتبة جاهزة. ليس كل شخص ماهرًا عند استخدام NodeMCU lua ، لذلك أود أن أوضح هذا الجانب من البرمجة وكذلك كيفية استخدام MCP23008.

المكتبة والبرامج متوفرة في github.com.

تتوفر ورقة البيانات الخاصة بـ MCP23008 من Microchip.

الخطوة 1: توصيل الأسلاك MCP23008

الأسلاك MCP23008
الأسلاك 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

قم بتوصيل المسامير لتتم قراءتها على Gnd على المنفذ A (دبابيس 10-17)

ملاحظة: هنا جميع دبابيس العنوان متصلة بـ Gnd لاستخدام MCP23008 على العنوان 0x20 في ناقل عنوان I2C.

إذا كنت تستخدم العنوان 0x21 ، فسيتم توصيل A0 بـ 3.3 فولت ، مع توصيل A1 و A2 بـ Gnd.

وبالمثل ، إذا كنت تستخدم العنوان 0x22 ، فسيتعين توصيل A1 بـ 3.3 فولت مع توصيل A0 و A2 بـ Gnd.

إلخ…

الخطوة 2: بناء مجلس

بناء مجلس
بناء مجلس

لقد استخدمت لوح شريط Vero مقاس 25 مم × 64 مم (9 صفوف × 25 فتحة) لبناء لوحي. إنه ضيق بعض الشيء ، ولكن نظرًا لأن معظم المسامير التي تحتاجها موجودة على جانبي IC ، فهي مناسبة لما يجب عليها القيام به.

لقد استخدمت 8 دبابيس و 8 مآخذ توصيل للمنفذ A حتى أتمكن من توصيل الوحدات النمطية المختلفة بالإضافة إلى الأسلاك الأخرى لمشاريع مختلفة. لقد أضفت دبابيس Gnd و 3.3V إضافية حيث أجد أن هناك دائمًا نقصًا في هذه عند توصيل الوحدات معًا.

الخطوة 3: استخدام وحدة المكتبة

باستخدام وحدة المكتبة
باستخدام وحدة المكتبة

تحتوي وحدات المكتبة عادةً على مجموعة مختارة من الإجراءات الفرعية والوظائف والمتغيرات التي يمكن الوصول إليها بواسطة برنامج آخر. البرنامج نفسه لا يعمل ، ولكن يمكن الوصول إلى وظائفه عن طريق البرنامج المتصل. هذا يعني أنه يمكنك الحصول على إجراءاتك الفرعية داخل المكتبة واستدعائها متى احتجت إليها ، وإجراء برنامج اتصال صغير. يصبح الأمر أكثر قيمة إذا كان لديك العديد من البرامج المختلفة التي تستخدم نفس الإجراءات الفرعية ، فلن تحتاج إلى تضمين الإجراءات الفرعية في كل برنامج.

ملاحظة: يحتاج برنامج mcp23008.lua إلى التحميل في ذاكرة ESP8266 مثل البرامج الأخرى.

لقد قمت بتضمين برامج github.com هنا بالإضافة إلى برنامج بسيط (test.lua) لإظهار أن المكتبة تعمل.

هناك طريقتان على الأقل لتضمين المكتبة في برنامجك.

تتطلب ("mcp23008")

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

أو

mcp = يتطلب ("mcp23008")

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

كلا الأمرين أعلاه يفعل نفس الشيء ، لكن الطريقة الثانية تسمح لك باستخدام المتغير الخاص بك بدلاً من اسم البرنامج.

الخطوة الرابعة: برنامج Kitt Car

برنامج Kitt Car
برنامج Kitt Car

لقد قمت بتضمين برنامج KittCar23008.lua و KittLib.lua الذي يستخدم المكتبة لإظهار الاختلافات في كيفية كتابة البرامج بهذه الطريقة. كلا البرنامجين يفعلون نفس الشيء.

يتوفر قابس 8 LED من Ebay كمجموعة ويعرف بـ 8 قنوات متدفقة للمياه LED DIY Kit ، 99p من الصين. عليك لحامها بنفسك.

ملاحظة: إذا كانت لديك مشكلة في محاولة تشغيل برنامج KittLib.lua ، فحاول توصيل دبوس RESET MCP23008 بـ Gnd للحظات. أعلم أن هذا سيعطي دائرة قصر مباشرة (لأنه متصل بـ 3.3 فولت) وعليك إعادة ضبط كل شيء آخر. إنه يعمل أيضًا عن طريق الاتصال بـ Gnd من خلال مقاوم 10 أوم ، ربما تكون طريقة أفضل للقيام بذلك.

لقد وجدت أيضًا أن KittLib.lua سيعمل بدون مشاكل بعد إجراء test.lua (لا تسألني لماذا؟)

لقد جربت طرقًا مختلفة لحل مشكلة برنامج KittLib.lua ، لكن حتى الآن لا يمكنني العثور على أي سبب منطقي لسبب تعطلها. هل لدى أي شخص أي أفكار؟

لم أكتب كل هذه البرامج بنفسي ، لذلك لا أستطيع أن أقول سبب وجود مشكلة ، على الرغم من أنه بعد النظر في الترميز ، لا يبدو أن هناك أي خطأ واضح.

الخطوة 5: 7 الجزء LED

7 الجزء LED
7 الجزء LED

كما هو الحال مع برنامج KittCar.lua أعلاه ، فقد قمت بتضمين برنامج مستقل ومعتمد على المكتبة لتشغيل شاشة LED ذات 7 أجزاء.

مرة أخرى ، يقوم كلا البرنامجين بنفس الشيء ، لكن يوضحان كيفية استخدام وحدة مكتبة إما كتبها بنفسك أو كتبها شخص آخر.

الخطوة السادسة: الخاتمة

استنتاج
استنتاج

لقد حاولت توضيح كيفية استخدام وحدات التعليمات البرمجية داخل بيئة Lua ، وتطبيقها على IC محدد في نفس الوقت.

على الرغم من أنني واجهت مشكلة في القيام بذلك ، أعتقد أن هناك ما يكفي لإظهار كيفية عمل هذه الوحدات بالإضافة إلى إظهار تطبيق واقعي.

موصى به: