Innholdsfortegnelse:
- Trinn 1: Koble til MCP23008
- Trinn 2: Konstruere et brett
- Trinn 3: Bruke en biblioteksmodul
- Trinn 4: Kitt Car Program
- Trinn 5: 7 Segment LED
- Trinn 6: Konklusjon
Video: NODEMCU LUA ESP8266 Med MCP23008 8 Bit Port Expander IC: 6 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:25
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
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
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
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
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
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
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:
Lag SAMD21-baserte kort USB-port i en maskinvare-seriell port !: 3 trinn
Gjøre SAMD21-baserte kort USB-port til en maskinvare-serieport !: Det er standard i dag å bruke en Arduino (eller annen kompatibel) USB-port som en emulert seriell port. Dette er veldig nyttig for feilsøking, sending og mottak av data fra våre elskelige tavler. Jeg jobbet med uChip da jeg gikk gjennom datashash
NODEMCU Lua ESP8266 med sanntidsklokke (RTC) og EEPROM: 7 trinn
NODEMCU Lua ESP8266 Med sanntidsklokke (RTC) og EEPROM: Det er viktig å få riktig tid hvis du vil beholde en datalogg. Det er forskjellige måter å få tid fra kilder på Internett. Du kan spørre hvorfor ikke bruke ESP8266 til å holde tid for deg? Vel, du kan, den har sin egen interne RTC (sanntid
NODEMCU LUA ESP8266 Kjøring av en M5450B7 LED -skjermdriver IC: 5 trinn (med bilder)
NODEMCU LUA ESP8266 Kjøring av en M5450B7 LED -skjermdriver IC: M5450B7 er en 40 -pins DIP LED -skjermdriver IC. Det ser ganske dyrt ut, men det er relativt enkelt å kontrollere og programmere. Det er 34 utgangspinner som kan ha en LED tilkoblet til hver enkelt. Enheten synker strøm i stedet for å levere den, så c
NODEMCU LUA ESP8266 Med CD4017 tiårsteller: 4 trinn (med bilder)
NODEMCU LUA ESP8266 Med CD4017 Decade Counter: CD4017 er en tiårsteller / skillelinje. Dette betyr at når den mottar en puls, teller den den og sender en utgang til den riktige pinnen. Det er en ganske enkel IC å bruke, og du kan enten bygge kretsen på et brødbrett eller kjøpe en fra Ebay for
NODEMCU LUA ESP8266 Med MCP23017 16 Bit Port Expander IC: 6 trinn (med bilder)
NODEMCU LUA ESP8266 Med MCP23017 16 Bit Port Expander IC: MCP23017 er en relativt enkel IC å lage et kort for siden den har Port A og B på hver side av brikken og pinnene er i rekkefølge. På samme måte er I2C adressebussen alle sammen også. Det er 2 pinner på denne IC som ikke er brukt som den