Innehållsförteckning:

NODEMCU LUA ESP8266 Med MCP23008 8 Bit Port Expander IC: 6 steg
NODEMCU LUA ESP8266 Med MCP23008 8 Bit Port Expander IC: 6 steg

Video: NODEMCU LUA ESP8266 Med MCP23008 8 Bit Port Expander IC: 6 steg

Video: NODEMCU LUA ESP8266 Med MCP23008 8 Bit Port Expander IC: 6 steg
Video: Введение в плату разработки NodeMCU ESP8266 WiFi с примером HTTP-клиента 2024, November
Anonim
NODEMCU LUA ESP8266 Med MCP23008 8 Bit Port Expander IC
NODEMCU LUA ESP8266 Med MCP23008 8 Bit Port Expander IC

MCP23008 är en 8-bitars I/O-expander med seriellt gränssnitt och fungerar mellan 1,8 och 5,5 volt, så den är idealisk för ESP8266, Arduino, Raspberry Pi, PIC-chips och mer.

Om du har sett min andra Instructable på MCP23017 kanske du undrar varför jag också gör en för MCP23008, eftersom det verkligen är en mindre version av samma sak.

Orsakerna är att dess register är olika både i namn och nummer och jag skulle vilja visa hur man använder en färdig biblioteksmodul. Inte alla är skickliga när de använder NodeMCU lua, så jag skulle vilja visa denna aspekt av programmering samt hur man använder MCP23008.

Biblioteket och programmen finns på github.com.

Databladet för MCP23008 är tillgängligt från Microchip.

Steg 1: Anslut MCP23008

Anslutning av MCP23008
Anslutning av MCP23008

MCP23008 IC har en enkel layout och att bygga en bräda är väldigt enkelt för den. Du kan också ställa in kretsen på en brödbräda.

Pin Anslutningar på mitt kort

  • Pin 18 (VDD) till 3v3
  • Pin 9 (VSS) till GND
  • Stift 7 (NC) till GND (Ej nödvändigt)
  • Pin 1 (SCL) till ESP GPIO2
  • Pin 2 (SDA) till ESP GPIO0
  • Pin 5 (A0) till GND
  • Stift 4 (A1) till GND
  • Pin 3 (A2) till GND
  • Pin 6 (RESET) till 3v3

Anslut stiften som ska läsas till Gnd på port A (stift 10 - 17)

Obs! Här är alla adresspinnar anslutna till Gnd för att använda MCP23008 på adressen 0x20 på I2C -adressbussen.

Om du använde adressen 0x21 skulle A0 vara ansluten till 3.3V, med A1 & A2 ansluten till Gnd.

På samma sätt om du använder adressen 0x22 måste A1 anslutas till 3.3V med A0 och A2 ansluten till Gnd.

etc…

Steg 2: Konstruera en styrelse

Konstruera en styrelse
Konstruera en styrelse

Jag använde en 25 mm x 64 mm (9 rader x 25 hål) Vero bandskiva för att konstruera min bräda. Det är lite tätt, men eftersom de flesta stiften du behöver är på vardera sidan av IC, är det tillräckligt för vad det måste göra.

Jag har använt 8 stift och 8 huvuduttag för port A så att jag kan koppla in mina olika moduler samt andra ledningar för olika projekt. Jag har lagt till extra Gnd- och 3.3V -stift eftersom jag tycker att det alltid är brist på dessa när man ansluter moduler.

Steg 3: Använda en biblioteksmodul

Använda en biblioteksmodul
Använda en biblioteksmodul

Biblioteksmoduler innehåller normalt ett urval av underrutiner, funktioner och variabler som kan nås av ett annat program. Själva programmet körs inte, men dess funktioner kan nås av det anropande programmet. Det betyder att du kan ha dina underrutiner i biblioteket och ringa upp dem när du behöver dem, vilket gör ett litet samtalsprogram. Det blir mer värdefullt om du har många olika program som använder samma underrutiner, du behöver inte inkludera delrutinerna i varje program.

Obs! Programmet mcp23008.lua måste laddas in i ESP8266 -minnet som de andra programmen.

Jag har inkluderat github.com -programmen här samt ett enkelt program (test.lua) för att visa att biblioteket fungerar.

Det finns minst 2 sätt att inkludera biblioteket i ditt program.

kräver ("mcp23008")

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

eller

mcp = require ("mcp23008")

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

Båda ovanstående gör samma sak, men den andra metoden låter dig använda din egen variabel istället för programnamnet.

Steg 4: Kitt Car Program

Kitt bilprogram
Kitt bilprogram

Jag har inkluderat programmet KittCar23008.lua och KittLib.lua som använder biblioteket för att visa skillnaderna i hur man skriver program på detta sätt. Båda programmen gör samma sak.

Den 8 LED -kontakten är tillgänglig från Ebay som ett kit och är känd som en 8 -kanals flytande vattenljus LED DIY Kit, 99p från Kina. Du måste lödda det själv.

Obs! Om du har problem med att försöka köra KittLib.lua -programmet kan du försöka ansluta MCP23008 RESET -stift till Gnd en stund. Jag vet att detta kommer att ge en direkt kortslutning (eftersom den är ansluten till 3,3V) och du måste återställa allt annat. Det fungerar också genom att ansluta till Gnd via ett 10 ohm motstånd, förmodligen ett bättre sätt att göra det.

Jag fann också att KittLib.lua skulle köras utan problem efter att ha kört test.lua (Fråga mig inte varför?)

Jag har försökt olika sätt att lösa KittLib.lua -programproblemet, men hittills har jag inte hittat någon logisk anledning till att det kraschar. Är det någon som har några idéer?

Jag har inte skrivit alla dessa program själv, så jag kan inte säga varför det är ett problem, men efter att ha tittat på kodningen verkar det inte vara något uppenbart fel.

Steg 5: 7 Segment -LED

7 LED -segment
7 LED -segment

Som med KittCar.lua -programmet ovan har jag inkluderat ett fristående och ett bibliotekberoende program för att driva en 7 -segment LED -display.

Återigen gör båda programmen samma sak, men visar hur man använder en biblioteksmodul antingen skriven av dig själv eller någon annan.

Steg 6: Slutsats

Slutsats
Slutsats

Jag har försökt visa hur man använder kodmoduler i Lua -miljön och samtidigt tillämpa den på en specifik IC.

Även om jag har haft problem med att göra detta, så tror jag att det finns tillräckligt med för att visa hur dessa moduler fungerar liksom att visa en verklig applikation.

Rekommenderad: