Inhoudsopgave:
- Stap 1: Bedrading van de MCP23008
- Stap 2: Een bord construeren
- Stap 3: Een bibliotheekmodule gebruiken
- Stap 4: Kitt Car-programma
- Stap 5: 7 Segment-LED
- Stap 6: Conclusie
Video: NODEMCU LUA ESP8266 met MCP23008 8 bit poortexpander IC - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:19
De MCP23008 is een 8-bits I/O-expander met seriële interface en werkt tussen 1,8 en 5,5 volt, dus ideaal voor de ESP8266, Arduino, Raspberry Pi, PIC-chips en meer.
Als je mijn andere Instructable op de MCP23017 hebt gezien, vraag je je misschien af waarom ik er ook een doe voor de MCP23008, want het is echt een kleinere versie van hetzelfde.
De redenen zijn dat de registers zowel in naam als aantal verschillend zijn en ik zou graag willen laten zien hoe een kant-en-klare bibliotheekmodule te gebruiken. Niet iedereen is bedreven in het gebruik van NodeMCU lua, dus ik wil dit aspect van programmeren laten zien, evenals hoe de MCP23008 te gebruiken.
De bibliotheek en programma's zijn beschikbaar op github.com.
De datasheet voor de MCP23008 is verkrijgbaar bij Microchip.
Stap 1: Bedrading van de MCP23008
De MCP23008 IC heeft een eenvoudige lay-out en het bouwen van een bord is vrij eenvoudig voor hem. Je kunt de schakeling ook op een breadboard opzetten.
Pin-verbindingen op mijn bord
- Pin 18 (VDD) naar 3v3
- Pin 9 (VSS) naar GND
- Pin 7 (NC) naar GND (niet nodig)
- Pin 1 (SCL) naar ESP GPIO2
- Pin 2 (SDA) naar ESP GPIO0
- Pin 5 (A0) naar GND
- Pin 4 (A1) naar GND
- Pin 3 (A2) naar GND
- Pin 6 (RESET) naar 3v3
Sluit de te lezen pinnen aan op Gnd op poort A (pinnen 10 - 17)
Opmerking: hier zijn alle adrespinnen verbonden met Gnd om de MCP23008 op adres 0x20 op de I2C-adresbus te gebruiken.
Als u adres 0x21 zou gebruiken, zou A0 verbonden zijn met 3,3V, met A1 & A2 verbonden met Gnd.
Evenzo, als adres 0x22 wordt gebruikt, moet A1 worden aangesloten op 3,3V met A0 en A2 aangesloten op Gnd.
enzovoort…
Stap 2: Een bord construeren
Ik heb een Vero-stripbord van 25 mm x 64 mm (9 rijen x 25 gaten) gebruikt om mijn bord te maken. Het is een beetje krap, maar aangezien de meeste pinnen die je nodig hebt aan weerszijden van het IC zitten, is het voldoende voor wat het moet doen.
Ik heb 8 pinnen en 8 header-aansluitingen gebruikt voor poort A, zodat ik mijn verschillende modules en andere bedrading voor verschillende projecten kan aansluiten. Ik heb extra Gnd- en 3.3V-pinnen toegevoegd, omdat ik vind dat hier altijd een tekort aan is bij het verbinden van modules.
Stap 3: Een bibliotheekmodule gebruiken
Bibliotheekmodules bevatten normaal gesproken een selectie van subroutines, functies en variabelen die toegankelijk zijn voor een ander programma. Het programma zelf wordt niet uitgevoerd, maar de functies ervan zijn toegankelijk voor het oproepende programma. Het betekent dat je je subroutines in de bibliotheek kunt hebben en ze kunt oproepen wanneer je ze nodig hebt, waardoor een klein oproepprogramma ontstaat. Het wordt waardevoller als je veel verschillende programma's hebt die dezelfde subroutines gebruiken, je hoeft de subroutines niet in elk programma op te nemen.
Opmerking: het programma mcp23008.lua moet net als de andere programma's in het ESP8266-geheugen worden geladen.
Ik heb de github.com-programma's hier toegevoegd, evenals een eenvoudig programma (test.lua) om te laten zien dat de bibliotheek werkt.
Er zijn minstens 2 manieren om de bibliotheek in uw programma op te nemen.
vereisen ("mcp23008")
mcp23008.begin(0x0, gpio2, gpio0, i2c. SLOW)
of
mcp = vereisen ("mcp23008")
mcp.begin(0x0, gpio2, gpio0, i2c. SLOW)
Beide bovenstaande methoden doen hetzelfde, maar met de tweede methode kunt u uw eigen variabele gebruiken in plaats van de programmanaam.
Stap 4: Kitt Car-programma
Ik heb het programma KittCar23008.lua en KittLib.lua toegevoegd, dat de bibliotheek gebruikt om de verschillen te laten zien in het schrijven van programma's op deze manier. Beide programma's doen hetzelfde.
De 8 LED plug-in is verkrijgbaar bij Ebay als kit en staat bekend als een 8 Channel Flowing Water Light LED DIY Kit, 99p uit China. Die moet je zelf solderen.
Opmerking: als je een probleem hebt met het uitvoeren van het programma KittLib.lua, probeer dan even de MCP23008 RESET-pin op Gnd aan te sluiten. Ik weet dat dit een directe kortsluiting zal geven (omdat deze is aangesloten op 3,3V) en dat je al het andere moet resetten. Het werkt ook door verbinding te maken met Gnd via een weerstand van 10 ohm, waarschijnlijk een betere manier om het te doen.
Ik ontdekte ook dat KittLib.lua zonder problemen zou werken na het uitvoeren van test.lua (vraag me niet waarom?)
Ik heb verschillende manieren geprobeerd om het programmaprobleem KittLib.lua op te lossen, maar tot nu toe kan ik geen logische reden vinden waarom het vastloopt. Heeft iemand een idee?
Ik heb niet al deze programma's zelf geschreven, dus ik kan niet zeggen waarom er een probleem is, hoewel na het bekijken van de codering er niets duidelijk mis lijkt te zijn.
Stap 5: 7 Segment-LED
Net als bij het KittCar.lua-programma hierboven, heb ik een op zichzelf staand en een bibliotheekafhankelijk programma toegevoegd om een 7-segments LED-display aan te sturen.
Nogmaals, beide programma's doen hetzelfde, maar laten zien hoe je een bibliotheekmodule kunt gebruiken die door jezelf of iemand anders is geschreven.
Stap 6: Conclusie
Ik heb geprobeerd te demonstreren hoe codemodules binnen de Lua-omgeving kunnen worden gebruikt en tegelijkertijd op een specifiek IC kunnen worden toegepast.
Hoewel ik hier een probleem mee heb gehad, denk ik dat er genoeg is om te laten zien hoe deze modules werken en om een toepassing in het echte leven te demonstreren.
Aanbevolen:
Digitale klok met netwerktijd met behulp van de ESP8266: 4 stappen (met afbeeldingen)
Digitale netwerkklok met de ESP8266: we leren hoe we een schattige kleine digitale klok kunnen bouwen die communiceert met NTP-servers en de netwerk- of internettijd weergeeft. We gebruiken de WeMos D1 mini om verbinding te maken met een wifi-netwerk, de NTP-tijd te verkrijgen en deze weer te geven op een OLED-module. De video hierboven
NODEMCU LUA ESP8266 Verbinding maken met MySQL-database: 6 stappen
NODEMCU LUA ESP8266 Maak verbinding met MySQL-database: deze instructable is niet voor angsthazen omdat het XAMPP (Apache, MySQL & PHP), HTML en natuurlijk LUA gebruikt. Als je er zeker van bent om deze aan te pakken, lees dan verder! Ik gebruik XAMPP omdat het kan worden ingesteld op een pen drive of je harde schijf en het is geconfigureerd
Draadloze afstandsbediening met 2,4 GHz NRF24L01-module met Arduino - Nrf24l01 4-kanaals / 6-kanaals zenderontvanger voor quadcopter - RC Helikopter - RC-vliegtuig met Arduino: 5 stappen (met afbeeldingen)
Draadloze afstandsbediening met 2,4 GHz NRF24L01-module met Arduino | Nrf24l01 4-kanaals / 6-kanaals zenderontvanger voor quadcopter | RC Helikopter | Rc-vliegtuig met Arduino: een Rc-auto besturen | Quadcopter | Drone | RC vliegtuig | RC-boot, we hebben altijd een ontvanger en zender nodig, stel dat we voor RC QUADCOPTER een 6-kanaals zender en ontvanger nodig hebben en dat type TX en RX is te duur, dus we gaan er een maken op onze
Licht- en kleurmetingen met de Pimoroni Enviro:bit voor de Micro:bit: 5 stappen
Licht- en kleurmetingen Met de Pimoroni Enviro:bit voor de Micro:bit: ik had eerder aan een aantal apparaten gewerkt waarmee licht- en kleurmetingen mogelijk waren en je kunt hier en hier veel vinden over de theorie achter dergelijke metingen. heeft onlangs de enviro:bit uitgebracht, een add-on voor de m
NODEMCU 1.0 (ESP8266) GECONTROLEERD RELAIS MET BLYNK (VIA HET WEB): 5 stappen (met afbeeldingen)
NODEMCU 1.0 (ESP8266) GECONTROLEERD RELAIS MET BEHULP VAN BLYNK (OVER HET WEB): HI GUYS, MIJN NAAM IS P STEVEN LYLE JYOTHI EN DIT IS MIJN EERSTE INSTRUCTIES OVER HET BEDIENEN VAN RELAIS DOOR NODEMCU ESP8266-12E VIA BLYNK VIA DE INTERNETSO LETS MIJN SLECHTE ENGELS