Inhaltsverzeichnis:

NODEMCU LUA ESP8266 mit MCP23008 8-Bit-Port-Expander-IC - Gunook
NODEMCU LUA ESP8266 mit MCP23008 8-Bit-Port-Expander-IC - Gunook

Video: NODEMCU LUA ESP8266 mit MCP23008 8-Bit-Port-Expander-IC - Gunook

Video: NODEMCU LUA ESP8266 mit MCP23008 8-Bit-Port-Expander-IC - Gunook
Video: ESP8266 NodeMCU Interface - MCP23017 i/o expender with LED Example! 2024, November
Anonim
NODEMCU LUA ESP8266 mit MCP23008 8-Bit-Port-Expander-IC
NODEMCU LUA ESP8266 mit MCP23008 8-Bit-Port-Expander-IC

Der MCP23008 ist ein 8-Bit-I/O-Expander mit serieller Schnittstelle und arbeitet zwischen 1,8 und 5,5 Volt, ist also ideal für ESP8266, Arduino, Raspberry Pi, PIC-Chips und mehr.

Wenn Sie mein anderes Instructable auf dem MCP23017 gesehen haben, fragen Sie sich vielleicht, warum ich auch eines für das MCP23008 mache, da es wirklich eine kleinere Version derselben Sache ist.

Die Gründe dafür sind, dass sich die Register sowohl im Namen als auch in der Anzahl unterscheiden, und ich möchte zeigen, wie man ein fertiges Bibliotheksmodul verwendet. Nicht jeder ist mit NodeMCU lua vertraut, daher möchte ich diesen Aspekt der Programmierung sowie die Verwendung des MCP23008 zeigen.

Die Bibliothek und Programme sind unter github.com verfügbar.

Das Datenblatt für den MCP23008 ist von Microchip erhältlich.

Schritt 1: Verdrahten des MCP23008

Verkabelung des MCP23008
Verkabelung des MCP23008

Der MCP23008 IC hat ein einfaches Layout und der Aufbau einer Platine ist für ihn relativ einfach. Sie können die Schaltung auch auf einem Brotbrett aufbauen.

Pin-Anschlüsse auf meinem Board

  • Pin 18 (VDD) auf 3v3
  • Pin 9 (VSS) an GND
  • Pin 7 (NC) auf GND (nicht erforderlich)
  • Pin 1 (SCL) an ESP GPIO2
  • Pin 2 (SDA) an ESP GPIO0
  • Pin 5 (A0) an GND
  • Pin 4 (A1) an GND
  • Pin 3 (A2) an GND
  • Pin 6 (RESET) auf 3v3

Zu lesende Pins mit Gnd an Port A verbinden (Pins 10 - 17)

Hinweis: Hier werden alle Adresspins mit Gnd verbunden, um den MCP23008 an der Adresse 0x20 auf dem I2C-Adressbus zu verwenden.

Wenn Sie die Adresse 0x21 verwenden, wäre A0 mit 3,3 V verbunden, während A1 und A2 mit Gnd verbunden sind.

Wenn Sie die Adresse 0x22 verwenden, müsste A1 auf ähnliche Weise mit 3,3 V verbunden werden, wobei A0 und A2 mit Gnd verbunden sind.

etc…

Schritt 2: Konstruieren einer Platine

Aufbau eines Boards
Aufbau eines Boards

Ich habe ein 25 mm x 64 mm (9 Reihen x 25 Löcher) Vero-Streifenbrett verwendet, um mein Brett zu konstruieren. Es ist etwas eng, aber da sich die meisten Pins, die Sie benötigen, auf beiden Seiten des ICs befinden, ist es für seine Aufgabe ausreichend.

Ich habe 8 Pins und 8 Header-Buchsen für Port A verwendet, damit ich meine verschiedenen Module sowie andere Verkabelungen für verschiedene Projekte anschließen kann. Ich habe zusätzliche Gnd- und 3,3-V-Pins hinzugefügt, da diese beim Verbinden von Modulen immer knapp werden.

Schritt 3: Verwenden eines Bibliotheksmoduls

Verwenden eines Bibliotheksmoduls
Verwenden eines Bibliotheksmoduls

Bibliotheksmodule enthalten normalerweise eine Auswahl von Unterprogrammen, Funktionen und Variablen, auf die von einem anderen Programm zugegriffen werden kann. Das Programm selbst läuft nicht, aber auf seine Funktionen kann das aufrufende Programm zugreifen. Dies bedeutet, dass Sie Ihre Unterprogramme in der Bibliothek haben und sie jederzeit aufrufen können, um ein kleines Aufrufprogramm zu erstellen. Es wird wertvoller, wenn Sie viele verschiedene Programme haben, die dieselben Unterprogramme verwenden, Sie müssen die Unterprogramme nicht in jedes Programm aufnehmen.

Hinweis: Das Programm mcp23008.lua muss wie die anderen Programme in den ESP8266-Speicher geladen werden.

Ich habe hier die github.com-Programme sowie ein einfaches Programm (test.lua) eingefügt, um zu zeigen, dass die Bibliothek funktioniert.

Es gibt mindestens 2 Möglichkeiten, die Bibliothek in Ihr Programm aufzunehmen.

erfordern ("mcp23008")

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

oder

mcp = erfordern ("mcp23008")

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

Beide oben genannten tun dasselbe, aber die zweite Methode ermöglicht es Ihnen, Ihre eigene Variable anstelle des Programmnamens zu verwenden.

Schritt 4: Kitt Car-Programm

Kitt-Auto-Programm
Kitt-Auto-Programm

Ich habe das Programm KittCar23008.lua und KittLib.lua eingefügt, das die Bibliothek verwendet, um die Unterschiede beim Schreiben von Programmen auf diese Weise aufzuzeigen. Beide Programme machen dasselbe.

Das 8-LED-Plug-In ist bei Ebay als Bausatz erhältlich und ist als 8-Kanal-Flowing Water Light LED-DI-Bausatz, 99p aus China bekannt. Sie müssen es selbst löten.

Hinweis: Wenn beim Ausführen des Programms KittLib.lua ein Problem auftritt, versuchen Sie, den RESET-Pin des MCP23008 kurzzeitig mit Gnd zu verbinden. Ich weiß, dass dies zu einem direkten Kurzschluss führt (da es an 3,3 V angeschlossen ist) und Sie alles andere zurücksetzen müssen. Es funktioniert auch, indem es über einen 10-Ohm-Widerstand an Gnd angeschlossen wird, wahrscheinlich eine bessere Möglichkeit, dies zu tun.

Ich habe auch festgestellt, dass KittLib.lua nach dem Ausführen von test.lua ohne Probleme laufen würde (Fragen Sie mich nicht warum?)

Ich habe verschiedene Möglichkeiten ausprobiert, um das Programmproblem KittLib.lua zu lösen, konnte aber bisher keinen logischen Grund für den Absturz finden. Hat jemand eine Idee?

Ich habe nicht alle diese Programme selbst geschrieben, daher kann ich nicht sagen, warum es ein Problem gibt, obwohl nach einem Blick auf die Codierung offensichtlich nichts falsch zu sein scheint.

Schritt 5: 7-Segment-LED

7-Segment-LED
7-Segment-LED

Wie beim obigen KittCar.lua-Programm habe ich ein eigenständiges und ein bibliotheksabhängiges Programm zum Ansteuern einer 7-Segment-LED-Anzeige hinzugefügt.

Auch hier machen beide Programme dasselbe, demonstrieren jedoch, wie Sie ein Bibliotheksmodul verwenden, das entweder von Ihnen selbst oder von jemand anderem geschrieben wurde.

Schritt 6: Fazit

Abschluss
Abschluss

Ich habe versucht zu demonstrieren, wie man Codemodule innerhalb der Lua-Umgebung verwendet und gleichzeitig auf einen bestimmten IC anwendet.

Obwohl ich damit ein Problem hatte, denke ich, dass es genug gibt, um zu zeigen, wie diese Module funktionieren, sowie um eine reale Anwendung zu demonstrieren.

Empfohlen: