Përmbajtje:

NODEMCU LUA ESP8266 Me MCP23008 8 Bit Port Expander IC: 6 Hapa
NODEMCU LUA ESP8266 Me MCP23008 8 Bit Port Expander IC: 6 Hapa

Video: NODEMCU LUA ESP8266 Me MCP23008 8 Bit Port Expander IC: 6 Hapa

Video: NODEMCU LUA ESP8266 Me MCP23008 8 Bit Port Expander IC: 6 Hapa
Video: ESP Basic Series - Ep.2 - PCF8574 Driver - Mutually exclussive 8x Switch 2024, Nëntor
Anonim
NODEMCU LUA ESP8266 Me MCP23008 8 Bit Port Expander IC
NODEMCU LUA ESP8266 Me MCP23008 8 Bit Port Expander IC

MCP23008 është një Zgjerues I/O 8-Bit me Ndërfaqe Seriale dhe funksionon midis 1.8 dhe 5.5 volt, kështu që është ideal për ESP8266, Arduino, Raspberry Pi, patate të skuqura PIC dhe më shumë.

Nëse e keni parë Instructable -in tim tjetër në MCP23017, mund të pyesni veten pse po bëj edhe unë një për MCP23008, pasi është vërtet një version më i vogël i së njëjtës gjë.

Arsyet janë se regjistrat e tij janë të ndryshëm si në emër ashtu edhe në numër dhe unë do të doja të tregoja se si të përdorim një modul bibliotekar të gatshëm. Jo të gjithë janë të aftë kur përdorin NodeMCU lua, kështu që unë do të doja të tregoja këtë aspekt të programimit, si dhe mënyrën e përdorimit të MCP23008.

Biblioteka dhe programet janë në dispozicion në github.com.

Fleta e të dhënave për MCP23008 është në dispozicion nga Microchip.

Hapi 1: Instalimi i telave MCP23008

Instalimi i telave MCP23008
Instalimi i telave MCP23008

IC MCP23008 është me një plan urbanistik të thjeshtë dhe ndërtimi i një bordi është realisht i lehtë për të. Ju gjithashtu mund të vendosni qarkun në një dërrasë bukë.

Pin Connections në tabelën time

  • Pin 18 (VDD) në 3v3
  • Pin 9 (VSS) në GND
  • Pin 7 (NC) në GND (Jo e nevojshme)
  • Pin 1 (SCL) në ESP GPIO2
  • Pin 2 (SDA) në ESP GPIO0
  • Pin 5 (A0) në GND
  • Pin 4 (A1) në GND
  • Pin 3 (A2) në GND
  • Pin 6 (RESET) në 3v3

Lidhni kunjat që do të lexohen me Gnd në Portin A (kunjat 10 - 17)

Shënim: këtu të gjitha kunjat e adresave janë të lidhura me Gnd për të përdorur MCP23008 në adresën 0x20 në autobusin e adresave I2C.

Nëse po përdorni adresën 0x21, atëherë A0 do të lidhej me 3.3V, me A1 & A2 të lidhur me Gnd.

Në mënyrë të ngjashme nëse përdorni adresën 0x22 atëherë A1 do të duhet të lidhet me 3.3V me A0 dhe A2 të lidhur me Gnd.

etj…

Hapi 2: Ndërtimi i një bordi

Ndërtimi i një bordi
Ndërtimi i një bordi

Kam përdorur një tabelë me shirita Vero 25 mm x 64 mm (9 rreshta x 25 vrima) për të ndërtuar tabelën time. Shtë pak e ngushtë, por pasi shumica e kunjave që ju nevojiten janë në të dyja anët e IC, është e përshtatshme për atë që duhet të bëjë.

Kam përdorur 8 kunja dhe 8 priza për kokën për portin A në mënyrë që të mund të lidh modulet e mia të ndryshme, si dhe instalime elektrike të tjera për projekte të ndryshme. Kam shtuar kunja shtesë Gnd dhe 3.3V pasi gjej se gjithmonë ka mungesë të këtyre kur lidh modulet së bashku.

Hapi 3: Përdorimi i një Moduli të Bibliotekës

Duke përdorur një modul bibliotekar
Duke përdorur një modul bibliotekar

Modulet e bibliotekës normalisht përmbajnë një përzgjedhje të nën-rutinave, funksioneve dhe variablave që mund të arrihen nga një program tjetër. Vetë programi nuk funksionon, por funksionet e tij mund të arrihen nga programi i thirrjes. Kjo do të thotë që ju mund të keni nën-rutinat tuaja brenda bibliotekës dhe t'i thërrisni ato sa herë që keni nevojë për to, duke bërë një program të vogël thirrjesh. Bëhet më e vlefshme nëse keni shumë programe të ndryshme që përdorin të njëjtat nën-rutina, nuk keni nevojë të përfshini nën-rutinat në çdo program.

Shënim: programi mcp23008.lua duhet të ngarkohet në kujtesën ESP8266 si programet e tjera.

Unë kam përfshirë programet github.com këtu, si dhe një program të thjeshtë (test.lua) për të treguar se biblioteka po funksionon.

Ka të paktën 2 mënyra për të përfshirë bibliotekën në programin tuaj.

kërkojnë ("mcp23008")

mcp23008.filloj (0x0, gpio2, gpio0, i2c. NGJAL)

ose

mcp = kërkoj ("mcp23008")

mcp.filloj (0x0, gpio2, gpio0, i2c. NDALO)

Të dyja më sipër bëjnë të njëjtën gjë, por metoda e dytë ju lejon të përdorni ndryshoren tuaj në vend të emrit të programit.

Hapi 4: Programi i Kitt Car

Programi i Kitt Car
Programi i Kitt Car

Unë kam përfshirë programin KittCar23008.lua dhe KittLib.lua i cili përdor bibliotekën për të treguar dallimet në mënyrën e shkrimit të programeve në këtë mënyrë. Të dy programet bëjnë të njëjtën gjë.

Shtojca 8 LED është e disponueshme nga Ebay si një çantë dhe njihet si një Kit DIY LED me ujë të rrjedhshëm me 8 kanale, 99p nga Kina. Duhet ta lidhësh vetë.

Shënim: Nëse keni një problem duke u përpjekur të ekzekutoni programin KittLib.lua, provoni të lidhni kunjin MCP23008 RESET me Gnd në çast. Unë e di se kjo do të japë një qark të shkurtër të drejtpërdrejtë (pasi është i lidhur me 3.3V) dhe ju duhet të rivendosni gjithçka tjetër. Gjithashtu funksionon duke u lidhur me Gnd përmes një rezistence 10 ohm, ndoshta një mënyrë më e mirë për ta bërë atë.

Unë gjithashtu zbulova se KittLib.lua do të punonte pa probleme pas drejtimit të test.lua (Mos më pyet pse?)

Unë kam provuar mënyra të ndryshme për të zgjidhur problemin e programit KittLib.lua, por deri më tani nuk mund të gjej ndonjë arsye logjike pse rrëzohet. A ka dikush ndonje ide?

Unë nuk i kam shkruar të gjitha këto programe vetë, kështu që nuk jam në gjendje të them pse ka një problem, edhe pse pas shikimit të kodimit, nuk duket të ketë ndonjë gjë të qartë të gabuar.

Hapi 5: 7 Segmenti LED

7 segment LED
7 segment LED

Ashtu si me programin KittCar.lua më lart, unë kam përfshirë një program të pavarur dhe një bibliotekë të varur për të drejtuar një ekran LED me 7 segmente.

Përsëri, të dy programet bëjnë të njëjtën gjë, por demonstrojnë se si të përdorni një modul bibliotekë të shkruar nga ju ose dikush tjetër.

Hapi 6: Përfundimi

Përfundim
Përfundim

Unë jam përpjekur të demonstroj se si të përdor modulet e kodit brenda mjedisit Lua, dhe ta zbatoj atë në një IC të veçantë në të njëjtën kohë.

Edhe pse kam pasur një problem duke e bërë këtë, unë mendoj se ka mjaft për të treguar se si funksionojnë këto module, si dhe duke demonstruar një aplikim të jetës reale.

Recommended: