Სარჩევი:

NODEMCU LUA ESP8266 MCP23008 8 ბიტიანი პორტი გაფართოების IC: 6 ნაბიჯი
NODEMCU LUA ESP8266 MCP23008 8 ბიტიანი პორტი გაფართოების IC: 6 ნაბიჯი

ვიდეო: NODEMCU LUA ESP8266 MCP23008 8 ბიტიანი პორტი გაფართოების IC: 6 ნაბიჯი

ვიდეო: NODEMCU LUA ESP8266 MCP23008 8 ბიტიანი პორტი გაფართოების IC: 6 ნაბიჯი
ვიდეო: Logic Gates Learning Kit #2 - Transistor Demo 2024, ნოემბერი
Anonim
NODEMCU LUA ESP8266 MCP23008 8 ბიტიანი პორტი Expander IC
NODEMCU LUA ESP8266 MCP23008 8 ბიტიანი პორტი Expander IC

MCP23008 არის 8 ბიტიანი I/O გაფართოება სერიული ინტერფეისით და მუშაობს 1.8 და 5.5 ვოლტს შორის, ამიტომ იდეალურია ESP8266, Arduino, Raspberry Pi, PIC ჩიპსებისთვის და სხვა.

თუ თქვენ გინახავთ ჩემი სხვა ინსტრუქცია MCP23017– ზე, შეიძლება გაგიკვირდეთ, რატომ ვაკეთებ მეც ერთს MCP23008– ისთვის, რადგან ეს მართლაც იგივე საქმის უფრო პატარა ვერსიაა.

მიზეზები ისაა, რომ მისი რეგისტრები განსხვავებულია როგორც სახელით, ასევე რიცხვით და მე მინდა ვაჩვენო როგორ გამოვიყენო მზა ბიბლიოთეკის მოდული. ყველა არ არის კომპეტენტური NodeMCU lua– ს გამოყენებისას, ამიტომ მსურს ვაჩვენო პროგრამირების ეს ასპექტი, ასევე ის, თუ როგორ გამოვიყენო MCP23008.

ბიბლიოთეკა და პროგრამები ხელმისაწვდომია github.com– ზე.

MCP23008– ის მონაცემთა ცხრილი ხელმისაწვდომია მიკროჩიპისგან.

ნაბიჯი 1: გაყვანილობა MCP23008

გაყვანილობა MCP23008
გაყვანილობა MCP23008

MCP23008 IC არის მარტივი განლაგებით და დაფის აგება მისთვის რეალურად ადვილია. თქვენ ასევე შეგიძლიათ ჩართოთ წრე პურის დაფაზე.

ჩამაგრეთ კავშირი ჩემს დაფაზე

  • მიამაგრეთ 18 (VDD) 3v3– მდე
  • მიამაგრეთ 9 (VSS) GND– ში
  • Pin 7 (NC) to GND (არ არის საჭირო)
  • მიამაგრეთ 1 (SCL) ESP GPIO2– ში
  • მიამაგრეთ 2 (SDA) ESP GPIO0– ში
  • მიამაგრეთ 5 (A0) GND– ზე
  • მიამაგრეთ 4 (A1) GND– ში
  • მიამაგრეთ 3 (A2) GND– ზე
  • მიამაგრეთ 6 (გადატვირთვა) 3v3– მდე

დააკავშირეთ წასაკითხი ქინძისთავები Gnd– თან პორტში (ქინძისთავები 10 - 17)

შენიშვნა: აქ ყველა მისამართის ქინძი დაკავშირებულია Gnd– თან MCP23008– ის გამოსაყენებლად 0x20 მისამართზე I2C მისამართის ავტობუსში.

თუ თქვენ იყენებდით მისამართს 0x21, მაშინ A0 დაკავშირებული იქნებოდა 3.3V– თან, A1 & A2 კი Gnd– თან.

ანალოგიურად, თუ იყენებთ მისამართს 0x22, მაშინ A1 უნდა იყოს დაკავშირებული 3.3V– თან A0 და A2 Gnd– თან.

და ა.შ…

ნაბიჯი 2: დაფის მშენებლობა

დაფის მშენებლობა
დაფის მშენებლობა

მე გამოვიყენე 25 მმ x 64 მმ (9 სტრიქონი x 25 ხვრელი) Vero ზოლის დაფა ჩემი დაფის ასაგებად. ეს ცოტა მჭიდროა, მაგრამ რადგანაც საჭირო ქინძისთავების უმეტესობა არის IC– ის ორივე მხარეს, ის ადეკვატურია იმისთვის, რაც უნდა გააკეთოს.

მე გამოვიყენე 8 ქინძისთავი და 8 სათაურის ბუდე A პორტისთვის, რათა შევაერთო ჩემი სხვადასხვა მოდული, ასევე სხვა გაყვანილობა სხვადასხვა პროექტებისთვის. მე დავამატე დამატებითი Gnd და 3.3V ქინძისთავები, რადგან ვხვდები, რომ მოდულების ერთმანეთთან შეერთებისას ყოველთვის არის მათი დეფიციტი.

ნაბიჯი 3: ბიბლიოთეკის მოდულის გამოყენება

ბიბლიოთეკის მოდულის გამოყენება
ბიბლიოთეკის მოდულის გამოყენება

ბიბლიოთეკის მოდულები ჩვეულებრივ შეიცავს რამოდენიმე ქვე-რუტინას, ფუნქციებსა და ცვლადებს, რომელთა წვდომა შესაძლებელია სხვა პროგრამით. პროგრამა თავად არ მუშაობს, მაგრამ მის ფუნქციებზე წვდომა შესაძლებელია დარეკვის პროგრამით. ეს ნიშნავს, რომ თქვენ შეგიძლიათ გქონდეთ ბიბლიოთეკაში თქვენი ქვე-რუტინები და გამოიძახოთ ისინი, როცა დაგჭირდებათ, შექმნით მცირე ზარის პროგრამას. ის უფრო ღირებული გახდება, თუ თქვენ გაქვთ მრავალი განსხვავებული პროგრამა ერთიდაიგივე ქვე-რუტინების გამოყენებით, თქვენ არ გჭირდებათ ქვე-რუტინების ჩართვა ყველა პროგრამაში.

შენიშვნა: mcp23008.lua პროგრამა სხვა პროგრამების მსგავსად უნდა იყოს ჩატვირთული ESP8266 მეხსიერებაში.

მე აქ ჩავრთე github.com პროგრამები, ასევე მარტივი პროგრამა (test.lua) იმის საჩვენებლად, რომ ბიბლიოთეკა მუშაობს.

ბიბლიოთეკის თქვენს პროგრამაში ჩართვის სულ მცირე 2 გზა არსებობს.

მოითხოვს ("mcp23008")

mcp23008. დასაწყისი (0x0, gpio2, gpio0, i2c. SLOW)

ან

mcp = მოითხოვს ("mcp23008")

mcp. დასაწყისი (0x0, gpio2, gpio0, i2c. SLOW)

ყოველივე ზემოთქმული ერთსა და იმავეს აკეთებს, მაგრამ მეორე მეთოდი საშუალებას გაძლევთ გამოიყენოთ თქვენი საკუთარი ცვლადი პროგრამის სახელის ნაცვლად.

ნაბიჯი 4: Kitt Car პროგრამა

კიტ მანქანის პროგრამა
კიტ მანქანის პროგრამა

მე ჩავრთე KittCar23008.lua პროგრამა და KittLib.lua, რომელიც იყენებს ბიბლიოთეკას, რათა აჩვენოს განსხვავებები პროგრამების წერის ამგვარად. ორივე პროგრამა ერთსა და იმავეს აკეთებს.

8 LED დანამატი ხელმისაწვდომია Ebay– დან როგორც ნაკრები და ცნობილია როგორც 8 არხიანი წყლის მსუბუქი LED წვრილმანი ნაკრები, 99p ჩინეთიდან. თქვენ თვითონ უნდა შეაერთოთ.

შენიშვნა: თუ თქვენ გაქვთ პრობლემა KittLib.lua პროგრამის გაშვების მცდელობისას, სცადეთ MCP23008 RESET pin- ის Gnd მომენტალურად დაკავშირება. მე ვიცი, რომ ეს პირდაპირ მოკლე ჩართვას მისცემს (რადგან ის დაკავშირებულია 3.3V– თან) და თქვენ უნდა გადატვირთოთ ყველაფერი. ის ასევე მუშაობს Gnd– თან 10 ohm რეზისტორის საშუალებით შეერთებით, ალბათ ამის უკეთესი გზაა.

მე ასევე აღმოვაჩინე, რომ KittLib.lua უპრობლემოდ იმუშავებდა test.lua გაშვების შემდეგ (არ მკითხოთ რატომ?)

მე შევეცადე სხვადასხვა გზა KittLib.lua პროგრამის პრობლემის გადასაჭრელად, მაგრამ ჯერჯერობით ვერ ვპოულობ რაიმე ლოგიკურ მიზეზს, თუ რატომ იშლება იგი. ვინმეს გაქვთ რაიმე იდეა?

მე არ დავწერე ყველა ეს პროგრამა მე, ასე რომ მე არ შემიძლია ვთქვა, რატომ არის პრობლემა, თუმცა კოდირების დათვალიერების შემდეგ, როგორც ჩანს, აშკარად არასწორი არაფერია.

ნაბიჯი 5: 7 LED სეგმენტი

7 სეგმენტის LED
7 სეგმენტის LED

როგორც KittCar.lua პროგრამის ზემოთ, მე ჩავრთე დამოუკიდებელი და ბიბლიოთეკაზე დამოკიდებული პროგრამა 7 სეგმენტიანი LED ეკრანის მართვისთვის.

ისევ და ისევ, ორივე პროგრამა აკეთებს ერთსა და იმავეს, მაგრამ აჩვენებს როგორ გამოვიყენოთ ბიბლიოთეკის მოდული თქვენი ან სხვის მიერ დაწერილი.

ნაბიჯი 6: დასკვნა

დასკვნა
დასკვნა

მე შევეცადე მეჩვენებინა როგორ გამოვიყენო კოდის მოდულები ლუას გარემოში და გამოვიყენო იგი კონკრეტულ IC– ზე ერთდროულად.

მიუხედავად იმისა, რომ მე მქონდა პრობლემა ამის გაკეთებაში, მე ვფიქრობ, რომ საკმარისია იმის საჩვენებლად, თუ როგორ მუშაობს ეს მოდულები, ისევე როგორც რეალური ცხოვრების პროგრამის დემონსტრირება.

გირჩევთ: