Inhaltsverzeichnis:
- Schritt 1: Verdrahten des MCP23008
- Schritt 2: Konstruieren einer Platine
- Schritt 3: Verwenden eines Bibliotheksmoduls
- Schritt 4: Kitt Car-Programm
- Schritt 5: 7-Segment-LED
- Schritt 6: Fazit
Video: NODEMCU LUA ESP8266 mit MCP23008 8-Bit-Port-Expander-IC - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:21
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
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
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
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
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
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
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:
Heimwerken -- Einen Spinnenroboter herstellen, der mit einem Smartphone mit Arduino Uno gesteuert werden kann – wikiHow
Heimwerken || Wie man einen Spider-Roboter herstellt, der mit einem Smartphone mit Arduino Uno gesteuert werden kann: Während man einen Spider-Roboter baut, kann man so viele Dinge über Robotik lernen. Wie die Herstellung von Robotern ist sowohl unterhaltsam als auch herausfordernd. In diesem Video zeigen wir Ihnen, wie Sie einen Spider-Roboter bauen, den wir mit unserem Smartphone (Androi
Bewegungsaktivierte Cosplay Wings mit Circuit Playground Express - Teil 1: 7 Schritte (mit Bildern)
Bewegungsaktivierte Cosplay-Flügel mit Circuit Playground Express - Teil 1: Dies ist Teil 1 eines zweiteiligen Projekts, in dem ich Ihnen meinen Prozess zur Herstellung eines Paars automatisierter Feenflügel zeige. Der erste Teil des Projekts ist der Mechanik der Flügel, und der zweite Teil macht es tragbar und fügt die Flügel hinzu
Raspberry Pi mit Node.js mit der Cloud verbinden – wikiHow
So verbinden Sie Raspberry Pi mit Node.js mit der Cloud: Dieses Tutorial ist nützlich für alle, die einen Raspberry Pi mit Node.js mit der Cloud, insbesondere mit der AskSensors IoT-Plattform, verbinden möchten. Sie haben keinen Raspberry Pi? Wenn Sie derzeit keinen Raspberry Pi besitzen, empfehle ich Ihnen, sich einen Raspberry Pi zuzulegen
DIY Circuit Activity Board mit Büroklammern - HERSTELLER - STEM: 3 Schritte (mit Bildern)
DIY Circuit Activity Board mit Büroklammern | HERSTELLER | STEM: Mit diesem Projekt können Sie den Weg des elektrischen Stroms ändern, um durch verschiedene Sensoren zu laufen. Mit diesem Design können Sie zwischen dem Aufleuchten einer blauen LED oder dem Aktivieren eines Summers wechseln. Sie haben auch die Wahl, einen lichtabhängigen Widerstand mit
So bauen Sie Ihr eigenes Anemometer mit Reed-Schaltern, Hall-Effekt-Sensor und einigen Schrott auf Nodemcu. - Teil 1 - Hardware: 8 Schritte (mit Bildern)
So bauen Sie Ihr eigenes Anemometer mit Reed-Schaltern, Hall-Effekt-Sensor und einigen Schrott auf Nodemcu. - Teil 1 - Hardware: EinführungSeit ich mit dem Studium von Arduino und der Maker-Kultur begonnen habe, habe ich gerne nützliche Geräte aus Schrott- und Schrottstücken wie Kronkorken, PVC-Stücken, Getränkedosen usw. gebaut. Ich liebe es, eine Sekunde zu geben Leben für jedes Stück oder jeden Kumpel