Inhoudsopgave:

NODEMCU LUA ESP8266 met MCP23008 8 bit poortexpander IC - Ajarnpa
NODEMCU LUA ESP8266 met MCP23008 8 bit poortexpander IC - Ajarnpa

Video: NODEMCU LUA ESP8266 met MCP23008 8 bit poortexpander IC - Ajarnpa

Video: NODEMCU LUA ESP8266 met MCP23008 8 bit poortexpander IC - Ajarnpa
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

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

Bedrading van de MCP23008
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

Een bord maken
Een bord maken

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

Een bibliotheekmodule gebruiken
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

Kitt Car-programma
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

7 Segment-LED
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

Conclusie
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: