Innholdsfortegnelse:

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

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

Video: NODEMCU LUA ESP8266 Med MCP23008 8 Bit Port Expander IC: 6 trinn
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 er en 8-bits I/O-ekspander med serielt grensesnitt og fungerer mellom 1,8 og 5,5 volt, så den er ideell for ESP8266, Arduino, Raspberry Pi, PIC Chips og mer.

Hvis du har sett min andre Instructable på MCP23017, lurer du kanskje på hvorfor jeg også gjør en for MCP23008, siden det egentlig er en mindre versjon av det samme.

Årsakene er at dets registre er forskjellige både i navn og nummer, og jeg vil gjerne vise hvordan du bruker en ferdig bibliotekmodul. Ikke alle er dyktige når de bruker NodeMCU lua, så jeg vil gjerne vise dette aspektet av programmering så vel som hvordan man bruker MCP23008.

Biblioteket og programmene er tilgjengelig på github.com.

Databladet for MCP23008 er tilgjengelig fra Microchip.

Trinn 1: Koble til MCP23008

Kabling av MCP23008
Kabling av MCP23008

MCP23008 IC har en enkel utforming, og det er veldig enkelt å bygge et brett. Du kan også sette opp kretsen på et brødbrett.

Fest tilkoblinger på brettet mitt

  • Pin 18 (VDD) til 3v3
  • Pin 9 (VSS) til GND
  • Pin 7 (NC) til GND (ikke nødvendig)
  • Pin 1 (SCL) til ESP GPIO2
  • Pin 2 (SDA) til ESP GPIO0
  • Pin 5 (A0) til GND
  • Pin 4 (A1) til GND
  • Pin 3 (A2) til GND
  • Pin 6 (RESET) til 3v3

Koble pinner som skal leses til Gnd på port A (pinner 10 - 17)

Merk: her er alle adressepinnene koblet til Gnd for å bruke MCP23008 på adresse 0x20 på I2C -adressebussen.

Hvis du brukte adressen 0x21, ville A0 være koblet til 3.3V, med A1 og A2 koblet til Gnd.

På samme måte hvis du bruker adressen 0x22, må A1 være koblet til 3.3V med A0 og A2 koblet til Gnd.

etc…

Trinn 2: Konstruere et brett

Konstruere et styre
Konstruere et styre

Jeg brukte et 25 mm x 64 mm (9 rader x 25 hull) Vero stripebrett for å konstruere brettet mitt. Det er litt stramt, men ettersom de fleste pinnene du trenger er på hver side av IC, er det tilstrekkelig for det det må gjøre.

Jeg har brukt 8 pins og 8 header -kontakter for port A, slik at jeg kan koble til de forskjellige modulene mine samt andre ledninger for forskjellige prosjekter. Jeg har lagt til ekstra Gnd- og 3.3V -pinner, da jeg synes det alltid er mangel på disse når du kobler moduler sammen.

Trinn 3: Bruke en biblioteksmodul

Bruke en biblioteksmodul
Bruke en biblioteksmodul

Bibliotekmoduler inneholder vanligvis et utvalg av underrutiner, funksjoner og variabler som kan nås av et annet program. Selve programmet kjører ikke, men funksjonene kan nås ved å ringe programmet. Det betyr at du kan ha underrutiner i biblioteket og ringe dem opp når du trenger dem, og lage et lite ringeprogram. Det blir mer verdifullt hvis du har mange forskjellige programmer som bruker de samme delrutinene, du trenger ikke å inkludere delrutinene i hvert program.

Merk: Programmet mcp23008.lua må lastes inn i ESP8266 -minnet som de andre programmene.

Jeg har inkludert github.com -programmene her i tillegg til et enkelt program (test.lua) for å vise at biblioteket fungerer.

Det er minst 2 måter å inkludere biblioteket i programmet ditt.

krever ("mcp23008")

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

eller

mcp = require ("mcp23008")

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

Begge de ovennevnte gjør det samme, men den andre metoden lar deg bruke din egen variabel i stedet for programnavnet.

Trinn 4: Kitt Car Program

Kitt bilprogram
Kitt bilprogram

Jeg har inkludert programmet KittCar23008.lua og KittLib.lua som bruker biblioteket til å vise forskjellene i hvordan man skriver programmer på denne måten. Begge programmene gjør det samme.

Den 8 LED -pluggen er tilgjengelig fra Ebay som et sett og er kjent som et 8 -kanals flytende vannlys LED DIY -sett, 99p fra Kina. Du må lodde det selv.

Merk: Hvis du har problemer med å prøve å kjøre KittLib.lua -programmet, kan du prøve å koble MCP23008 RESET -pin til Gnd et øyeblikk. Jeg vet at dette vil gi en direkte kortslutning (ettersom den er koblet til 3,3V), og du må tilbakestille alt annet. Det fungerer også ved å koble til Gnd gjennom en 10 ohm motstand, sannsynligvis en bedre måte å gjøre det på.

Jeg fant også ut at KittLib.lua ville kjøre uten problemer etter å ha kjørt test.lua (ikke spør meg hvorfor?)

Jeg har prøvd forskjellige måter å løse KittLib.lua -programproblemet på, men har foreløpig ikke funnet noen logisk grunn til at det krasjer. Er det noen som har noen ideer?

Jeg har ikke skrevet alle disse programmene selv, så jeg kan ikke si hvorfor det er et problem, selv om det ikke ser ut til å være noe åpenbart feil etter å ha sett på kodingen.

Trinn 5: 7 Segment LED

7 LED -segmenter
7 LED -segmenter

Som med KittCar.lua -programmet ovenfor, har jeg inkludert et frittstående og et bibliotekavhengig program for å kjøre en 7 -segmenters LED -skjerm.

Igjen, begge programmene gjør det samme, men demonstrerer hvordan du bruker en biblioteksmodul, enten skrevet av deg selv eller noen andre.

Trinn 6: Konklusjon

Konklusjon
Konklusjon

Jeg har prøvd å demonstrere hvordan jeg bruker kodemoduler i Lua -miljøet, og bruker det på en bestemt IC samtidig.

Selv om jeg har hatt et problem med å gjøre dette, tror jeg at det er nok til å vise hvordan disse modulene fungerer, så vel som å demonstrere en virkelig applikasjon.

Anbefalt: