সুচিপত্র:

NODEMCU LUA ESP8266 MCP23008 8 বিট পোর্ট এক্সপেন্ডার আইসি: 6 ধাপ
NODEMCU LUA ESP8266 MCP23008 8 বিট পোর্ট এক্সপেন্ডার আইসি: 6 ধাপ

ভিডিও: NODEMCU LUA ESP8266 MCP23008 8 বিট পোর্ট এক্সপেন্ডার আইসি: 6 ধাপ

ভিডিও: NODEMCU LUA ESP8266 MCP23008 8 বিট পোর্ট এক্সপেন্ডার আইসি: 6 ধাপ
ভিডিও: LDmicro 18: Ublox NEO-6M GPS Alarm Clock (Microcontroller PLC Ladder Programming with LDmicro) 2024, নভেম্বর
Anonim
NODEMCU LUA ESP8266 MCP23008 8 বিট পোর্ট এক্সপেন্ডার আইসি সহ
NODEMCU LUA ESP8266 MCP23008 8 বিট পোর্ট এক্সপেন্ডার আইসি সহ

MCP23008 সিরিয়াল ইন্টারফেস সহ 8-বিট I/O এক্সপেন্ডার এবং 1.8 থেকে 5.5 ভোল্টের মধ্যে কাজ করে, তাই ESP8266, Arduino, Raspberry Pi, PIC Chips এবং আরও অনেক কিছুর জন্য আদর্শ।

যদি আপনি MCP23017 এ আমার অন্যান্য নির্দেশযোগ্য দেখে থাকেন, আপনি হয়তো ভাবছেন যে আমি MCP23008 এর জন্য কেন একটি করছি, কারণ এটি সত্যিই একই জিনিসের একটি ছোট সংস্করণ।

কারণগুলি হল যে এর রেজিস্টারগুলি নাম এবং সংখ্যা উভয় ক্ষেত্রেই আলাদা এবং আমি কীভাবে তৈরি লাইব্রেরি মডিউল ব্যবহার করতে হয় তা দেখাতে চাই। NodeMCU লুয়া ব্যবহার করার সময় সবাই পারদর্শী নয়, তাই আমি MCP23008 ব্যবহার করার পাশাপাশি প্রোগ্রামিংয়ের এই দিকটি দেখাতে চাই।

লাইব্রেরি এবং প্রোগ্রাম github.com এ পাওয়া যায়।

MCP23008 এর জন্য ডেটশীট মাইক্রোচিপ থেকে পাওয়া যায়।

ধাপ 1: MCP23008 তারের

MCP23008 তারের
MCP23008 তারের

MCP23008 IC একটি সহজ বিন্যাস এবং একটি বোর্ড তৈরি করা এর জন্য বাস্তবিকভাবে সহজ। আপনি একটি রুটি বোর্ডে সার্কিট স্থাপন করতে পারেন।

আমার বোর্ডে পিন সংযোগ

  • পিন 18 (VDD) থেকে 3v3
  • GND থেকে 9 (VSS) পিন করুন
  • পিন 7 (NC) থেকে GND (প্রয়োজনীয় নয়)
  • পিন 1 (এসসিএল) থেকে ইএসপি জিপিআইও 2
  • পিন 2 (SDA) থেকে ESP GPIO0
  • GND থেকে 5 (A0) পিন করুন
  • GND থেকে 4 (A1) পিন করুন
  • GND থেকে 3 (A2) পিন করুন
  • পিন 6 (RESET) থেকে 3v3

পোর্ট পোর্টে Gnd- এ পড়ার জন্য পিন সংযুক্ত করুন (পিন 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 গর্ত) ভেরো স্ট্রিপ বোর্ড ব্যবহার করেছি। এটি কিছুটা শক্ত, কিন্তু যেহেতু আপনার প্রয়োজনীয় বেশিরভাগ পিনগুলি আইসি -র উভয় পাশে রয়েছে, এটি যা করতে হবে তার জন্য এটি পর্যাপ্ত।

আমি পোর্ট A এর জন্য 8 টি পিন এবং 8 টি হেডার সকেট ব্যবহার করেছি যাতে আমি আমার বিভিন্ন মডিউল এবং বিভিন্ন প্রকল্পের জন্য অন্যান্য ওয়্যারিং প্লাগ করতে পারি। আমি অতিরিক্ত Gnd এবং 3.3V পিন যোগ করেছি কারণ আমি মনে করি সর্বদা মডিউলগুলিকে সংযুক্ত করার সময় এগুলির অভাব রয়েছে।

ধাপ 3: একটি লাইব্রেরি মডিউল ব্যবহার করা

একটি লাইব্রেরি মডিউল ব্যবহার করে
একটি লাইব্রেরি মডিউল ব্যবহার করে

লাইব্রেরি মডিউলগুলিতে সাধারণত সাব-রুটিন, ফাংশন এবং ভেরিয়েবলের একটি নির্বাচন থাকে যা অন্য প্রোগ্রাম দ্বারা অ্যাক্সেস করা যায়। প্রোগ্রাম নিজেই চালায় না, কিন্তু কলিং প্রোগ্রাম দ্বারা এর কাজগুলি অ্যাক্সেস করা যায়। এর অর্থ হল আপনি লাইব্রেরির মধ্যে আপনার উপ-রুটিন রাখতে পারেন এবং যখনই তাদের প্রয়োজন হয় তখন তাদের কল করতে পারেন, একটি ছোট কলিং প্রোগ্রাম তৈরি করুন। আপনার যদি একই উপ-রুটিন ব্যবহার করে বিভিন্ন প্রোগ্রাম থাকে তবে এটি আরও মূল্যবান হয়ে ওঠে, আপনাকে প্রতিটি প্রোগ্রামে সাব-রুটিন অন্তর্ভুক্ত করার দরকার নেই।

দ্রষ্টব্য: mcp23008.lua প্রোগ্রামটি অন্যান্য প্রোগ্রামের মতো ESP8266 মেমরিতে লোড করা প্রয়োজন।

লাইব্রেরি কাজ করছে তা দেখানোর জন্য আমি এখানে github.com প্রোগ্রামগুলির পাশাপাশি একটি সহজ প্রোগ্রাম (test.lua) অন্তর্ভুক্ত করেছি।

আপনার প্রোগ্রামে লাইব্রেরি অন্তর্ভুক্ত করার অন্তত 2 টি উপায় রয়েছে।

প্রয়োজন ("mcp23008")

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

অথবা

mcp = প্রয়োজন ("mcp23008")

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

উপরের দুটিই একই কাজ করে, কিন্তু দ্বিতীয় পদ্ধতিটি আপনাকে প্রোগ্রামের নামের পরিবর্তে আপনার নিজের পরিবর্তনশীল ব্যবহার করতে দেয়।

ধাপ 4: কিট কার প্রোগ্রাম

কিট কার প্রোগ্রাম
কিট কার প্রোগ্রাম

আমি KittCar23008.lua প্রোগ্রাম এবং KittLib.lua অন্তর্ভুক্ত করেছি যা লাইব্রেরি ব্যবহার করে কিভাবে এইভাবে প্রোগ্রাম লিখতে হয় তার পার্থক্য দেখায়। উভয় প্রোগ্রাম একই কাজ করে।

8 টি LED প্লাগ ইন ইবে থেকে একটি কিট হিসাবে পাওয়া যায় এবং এটি একটি 8 চ্যানেল প্রবাহিত ওয়াটার লাইট LED DIY কিট, চীন থেকে 99p হিসাবে পরিচিত। আপনি নিজেই এটি বিক্রি করতে হবে।

দ্রষ্টব্য: যদি KittLib.lua প্রোগ্রামটি চালাতে আপনার কোন সমস্যা হয়, তাহলে MCP23008 RESET পিনটি Gnd এর সাথে মুহূর্তের সাথে সংযুক্ত করার চেষ্টা করুন। আমি জানি এটি একটি সরাসরি শর্ট সার্কিট দেবে (যেহেতু এটি 3.3V এর সাথে সংযুক্ত) এবং আপনাকে অন্য সবকিছু পুনরায় সেট করতে হবে। এটি 10 ওহম প্রতিরোধকের মাধ্যমে Gnd এর সাথে সংযোগ করে কাজ করে, সম্ভবত এটি করার একটি ভাল উপায়।

আমি এটাও খুঁজে পেয়েছি যে Kit. Lib.lua test.lua চালানোর পরে কোন সমস্যা ছাড়াই চলবে (আমাকে জিজ্ঞাসা করো না কেন?)

আমি KittLib.lua প্রোগ্রাম সমস্যা সমাধানের জন্য বিভিন্ন উপায় চেষ্টা করেছি, কিন্তু এখন পর্যন্ত এটি কেন ক্র্যাশ হয় তার কোন যৌক্তিক কারণ খুঁজে পাচ্ছি না। কেউ কি কোন ধারনা আছে?

আমি নিজে এই সমস্ত প্রোগ্রাম লিখিনি, তাই আমি বলতে পারছি না কেন একটি সমস্যা আছে, যদিও কোডিং দেখার পর, স্পষ্টতই কিছু ভুল বলে মনে হচ্ছে না।

ধাপ 5: 7 সেগমেন্ট LED

7 সেগমেন্ট LED
7 সেগমেন্ট LED

উপরে KittCar.lua প্রোগ্রামের মতো, আমি একটি 7 সেগমেন্ট LED ডিসপ্লে চালানোর জন্য একটি স্বতন্ত্র এবং একটি লাইব্রেরি নির্ভর প্রোগ্রাম অন্তর্ভুক্ত করেছি।

আবার, উভয় প্রোগ্রাম একই কাজ করে, কিন্তু কিভাবে নিজের বা অন্য কারো লেখা লাইব্রেরি মডিউল ব্যবহার করতে হয় তা প্রদর্শন করুন।

ধাপ 6: উপসংহার

উপসংহার
উপসংহার

আমি লুয়া পরিবেশে কোড মডিউলগুলি কীভাবে ব্যবহার করতে হয় তা দেখানোর চেষ্টা করেছি এবং একই সময়ে এটি একটি নির্দিষ্ট আইসিতে প্রয়োগ করব।

যদিও এটি করতে আমার সমস্যা হয়েছে, আমি মনে করি যে এই মডিউলগুলি কীভাবে কাজ করে তা দেখানোর পাশাপাশি বাস্তব জীবনের প্রয়োগ প্রদর্শন করার জন্য যথেষ্ট আছে।

প্রস্তাবিত: