INHOUDSOPGAWE:

NODEMCU LUA ESP8266 Met MCP23008 8 Bit Port Expander IC: 6 stappe
NODEMCU LUA ESP8266 Met MCP23008 8 Bit Port Expander IC: 6 stappe

Video: NODEMCU LUA ESP8266 Met MCP23008 8 Bit Port Expander IC: 6 stappe

Video: NODEMCU LUA ESP8266 Met MCP23008 8 Bit Port Expander IC: 6 stappe
Video: ESP8266/NodeMCU: Введение и начало работы — Полное руководство, часть 1 — TN0005 2024, November
Anonim
NODEMCU LUA ESP8266 Met MCP23008 8 Bit Port Expander IC
NODEMCU LUA ESP8266 Met MCP23008 8 Bit Port Expander IC

Die MCP23008 is 'n 8-bis I/O-uitbreider met seriële koppelvlak en werk tussen 1,8 en 5,5 volt, en is dus ideaal vir die ESP8266, Arduino, Raspberry Pi, PIC Chips en meer.

As u my ander Instructable op die MCP23017 gesien het, wonder u miskien waarom ek ook een vir die MCP23008 doen, aangesien dit eintlik 'n kleiner weergawe van dieselfde ding is.

Die redes is dat die registers in naam en nommer verskil, en ek wil wys hoe u 'n gereedgemaakte biblioteekmodule kan gebruik. Nie almal is vaardig in die gebruik van NodeMCU lua nie, so ek wil hierdie aspek van programmering wys en hoe om die MCP23008 te gebruik.

Die biblioteek en programme is beskikbaar by github.com.

Die datablad vir die MCP23008 is beskikbaar by Microchip.

Stap 1: Bedrading van die MCP23008

Bedrading van die MCP23008
Bedrading van die MCP23008

Die MCP23008 IC het 'n eenvoudige uitleg, en dit is baie maklik om 'n bord te bou. U kan ook die kring op 'n broodbord opstel.

Speld verbindings op my bord vas

  • Speld 18 (VDD) tot 3v3
  • Speld 9 (VSS) aan GND
  • Speld 7 (NC) tot GND (nie nodig nie)
  • Speld 1 (SCL) aan ESP GPIO2
  • Speld 2 (SDA) aan ESP GPIO0
  • Speld 5 (A0) aan GND vas
  • Speld 4 (A1) aan GND vas
  • Speld 3 (A2) aan GND
  • Speld 6 (HERSTEL) op 3v3

Verbind penne wat gelees moet word met Gnd op poort A (penne 10 - 17)

Let wel: hier is al die adrespenne gekoppel aan Gnd om die MCP23008 op adres 0x20 op die I2C -adresbus te gebruik.

As u adres 0x21 gebruik, sou A0 gekoppel wees aan 3.3V, met A1 en A2 gekoppel aan Gnd.

As adres 0x22 ook gebruik word, moet A1 gekoppel wees aan 3.3V met A0 en A2 gekoppel aan Gnd.

ens …

Stap 2: Bou 'n bord

Die bou van 'n raad
Die bou van 'n raad

Ek het 'n 25 mm x 64 mm (9 rye x 25 gate) Vero -strookbord gebruik om my bord te bou. Dit is 'n bietjie styf, maar aangesien die meeste penne wat u benodig, aan weerskante van die IC is, is dit voldoende vir wat dit moet doen.

Ek het 8 penne en 8 kopstukke vir poort A gebruik, sodat ek my verskillende modules sowel as ander bedrading vir verskillende projekte kan aansluit. Ek het ekstra Gnd- en 3.3V -penne bygevoeg, aangesien ek vind dat daar altyd 'n tekort is wanneer modules aan mekaar gekoppel word.

Stap 3: Gebruik 'n biblioteekmodule

Gebruik 'n biblioteekmodule
Gebruik 'n biblioteekmodule

Biblioteekmodules bevat gewoonlik 'n verskeidenheid subroetines, funksies en veranderlikes wat deur 'n ander program verkry kan word. Die program self loop nie, maar die funksies daarvan kan verkry word deur die oproepprogram. Dit beteken dat u u sub-roetines in die biblioteek kan hê en dit kan oproep wanneer u dit ook al nodig het, met 'n klein oproepprogram. Dit word meer waardevol as u baie verskillende programme het wat dieselfde subroetines gebruik, en u hoef nie die subroetines in elke program op te neem nie.

Let wel: die mcp23008.lua -program moet net soos die ander programme in die ESP8266 -geheue gelaai word.

Ek het die github.com -programme hier sowel as 'n eenvoudige program (test.lua) ingesluit om aan te toon dat die biblioteek werk.

Daar is ten minste 2 maniere om die biblioteek in u program op te neem.

vereis ("mcp23008")

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

of

mcp = vereis ("mcp23008")

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

Beide hierbo doen dieselfde, maar met die tweede metode kan u u eie veranderlike gebruik in plaas van die programnaam.

Stap 4: Kitt Car -program

Kitt Car -program
Kitt Car -program

Ek het die KittCar23008.lua -program en KittLib.lua ingesluit, wat die biblioteek gebruik om die verskille in hoe om programme op hierdie manier te skryf, aan te toon. Beide programme doen dieselfde.

Die 8 LED -inprop is beskikbaar by Ebay as 'n stel en staan bekend as 'n 8 -kanaals vloeiende waterlig LED DIY -kit, 99p uit China. U moet dit self soldeer.

Opmerking: as u 'n probleem ondervind om die KittLib.lua -program te begin, probeer dan om die MCP23008 RESET -pen kort op Gnd te koppel. Ek weet dat dit 'n direkte kortsluiting sal gee (aangesien dit gekoppel is aan 3.3V) en dat u alles anders moet herstel. Dit werk ook deur aan te sluit op Gnd via 'n weerstand van 10 ohm, waarskynlik 'n beter manier om dit te doen.

Ek het ook agtergekom dat KittLib.lua sonder probleme sou loop nadat test.lua uitgevoer is (vra my nie hoekom nie?)

Ek het verskillende maniere probeer om die KittLib.lua -programprobleem op te los, maar kon tot dusver geen logiese rede vind waarom dit ineenstort nie. Het iemand dalk 'n idee?

Ek het nie al hierdie programme self geskryf nie, en ek kan nie sê hoekom daar 'n probleem is nie, hoewel daar blykbaar niks verkeerd is nie.

Stap 5: 7 Segment LED

7 segment LED
7 segment LED

Soos met die KittCar.lua -program hierbo, het ek 'n selfstandige en biblioteekafhanklike program ingesluit om 'n 7 -segment LED -skerm te bestuur.

Weereens doen beide programme dieselfde, maar demonstreer hoe u 'n biblioteekmodule kan gebruik, óf deur u self of deur iemand anders geskryf.

Stap 6: Gevolgtrekking

Afsluiting
Afsluiting

Ek het probeer demonstreer hoe om kode -modules in die Lua -omgewing te gebruik, en dit terselfdertyd op 'n spesifieke IC toe te pas.

Alhoewel ek 'n probleem ondervind het, dink ek dat daar genoeg is om aan te toon hoe hierdie modules werk, sowel as om 'n werklike toepassing aan te toon.

Aanbeveel: