Obsah:

NODEMCU LUA ESP8266 s integrovaným 8bitovým portem expandéru MCP23008: 6 kroků
NODEMCU LUA ESP8266 s integrovaným 8bitovým portem expandéru MCP23008: 6 kroků

Video: NODEMCU LUA ESP8266 s integrovaným 8bitovým portem expandéru MCP23008: 6 kroků

Video: NODEMCU LUA ESP8266 s integrovaným 8bitovým portem expandéru MCP23008: 6 kroků
Video: #136 New Wemos D1 Mini Shields: ESP-12S and ESP8285 2024, Listopad
Anonim
NODEMCU LUA ESP8266 s integrovaným expandérem 8 bitových portů MCP23008
NODEMCU LUA ESP8266 s integrovaným expandérem 8 bitových portů MCP23008

MCP23008 je 8bitový I/O expandér se sériovým rozhraním a pracuje mezi 1,8 a 5,5 volty, takže je ideální pro čipy ESP8266, Arduino, Raspberry Pi, PIC a další.

Pokud jste viděli můj další Instructable na MCP23017, možná si říkáte, proč také dělám jeden pro MCP23008, protože je to opravdu menší verze stejné věci.

Důvodem je, že jeho registry se liší jak jménem, tak číslem, a chtěl bych ukázat, jak používat hotový modul knihovny. Ne každý je zběhlý v používání NodeMCU lua, takže bych chtěl ukázat tento aspekt programování a také jak používat MCP23008.

Knihovna a programy jsou k dispozici na github.com.

Datový list pro MCP23008 je k dispozici od společnosti Microchip.

Krok 1: Zapojení MCP23008

Zapojení MCP23008
Zapojení MCP23008

MCP23008 IC má jednoduché rozložení a sestavení desky je pro ni skutečně snadné. Obvod můžete také nastavit na desce chleba.

Pin Connections na mé desce

  • Kolík 18 (VDD) na 3v3
  • Pin 9 (VSS) na GND
  • Pin 7 (NC) na GND (není nutné)
  • Pin 1 (SCL) na ESP GPIO2
  • Pin 2 (SDA) na ESP GPIO0
  • Kolík 5 (A0) na GND
  • Pin 4 (A1) na GND
  • Pin 3 (A2) na GND
  • Pin 6 (RESET) na 3v3

Připojte piny ke čtení do Gnd na portu A (piny 10 - 17)

Poznámka: zde jsou všechny adresové piny připojeny k Gnd, aby používaly MCP23008 na adrese 0x20 na adresové sběrnici I2C.

Pokud byste používali adresu 0x21, pak by A0 bylo připojeno k 3,3 V, s A1 a A2 připojeno ke Gnd.

Podobně pokud by se použila adresa 0x22, pak by A1 muselo být připojeno k 3,3 V s A0 a A2 připojeno ke Gnd.

atd…

Krok 2: Konstrukce desky

Konstrukce desky
Konstrukce desky

Na konstrukci desky jsem použil desku Vero s pruhy 25 mm x 64 mm (9 řad x 25 otvorů). Je to trochu těsné, ale protože většina pinů, které potřebujete, je na obou stranách integrovaného obvodu, je adekvátní tomu, co má dělat.

Použil jsem 8 pinů a 8 konektorových konektorů pro port A, abych mohl zapojit své různé moduly a další zapojení pro různé projekty. Přidal jsem další piny Gnd a 3.3V, protože jsem zjistil, že při spojování modulů je vždy nedostatek.

Krok 3: Použití modulu knihovny

Pomocí modulu knihovny
Pomocí modulu knihovny

Moduly knihovny obvykle obsahují výběr dílčích rutin, funkcí a proměnných, ke kterým má přístup jiný program. Samotný program neběží, ale k jeho funkcím má přístup volající program. To znamená, že můžete mít své dílčí rutiny v knihovně a vyvolat je, kdykoli je budete potřebovat, čímž vytvoříte malý volací program. Stává se cennějším, pokud máte mnoho různých programů používajících stejné dílčí rutiny, nemusíte tyto podprogramy zahrnovat do každého programu.

Poznámka: Program mcp23008.lua je třeba načíst do paměti ESP8266 jako ostatní programy.

Zahrnul jsem sem programy github.com a jednoduchý program (test.lua), který ukazuje, že knihovna funguje.

Existují alespoň 2 způsoby, jak zahrnout knihovnu do vašeho programu.

vyžadovat ("mcp23008")

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

nebo

mcp = vyžadovat ("mcp23008")

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

Oba výše uvedené dělají totéž, ale druhá metoda vám umožňuje místo názvu programu použít vlastní proměnnou.

Krok 4: Program Kitt Car

Program Kitt Car
Program Kitt Car

Zahrnul jsem program KittCar23008.lua a KittLib.lua, který pomocí knihovny ukazuje rozdíly v tom, jak psát programy tímto způsobem. Oba programy dělají totéž.

8 LED zástrčka je k dispozici od Ebay jako sada a je známá jako 8kanálová sada LED DIY Kit pro tekoucí vodu, 99p z Číny. Musíte to pájet sami.

Poznámka: Pokud máte problém se spuštěním programu KittLib.lua, zkuste na chvíli připojit pin MCP23008 RESET ke Gnd. Vím, že to způsobí přímý zkrat (protože je připojen k 3,3 V) a musíte resetovat vše ostatní. Funguje to také tak, že se připojíte ke Gnd přes odpor 10 ohmů, pravděpodobně lepší způsob, jak to udělat.

Také jsem zjistil, že KittLib.lua poběží bez problémů po spuštění test.lua (Neptejte se mě proč?)

Zkoušel jsem různé způsoby, jak vyřešit problém s programem KittLib.lua, ale zatím jsem nenašel žádný logický důvod, proč se zhroutí. Máte někdo nějaké nápady?

Nenapsal jsem všechny tyto programy sám, takže nejsem schopen říci, proč je problém, ačkoli po pohledu na kódování se nezdá, že by bylo něco zjevně špatně.

Krok 5: 7 Segmentová LED

7 Segmentová LED
7 Segmentová LED

Stejně jako u programu KittCar.lua výše jsem zahrnoval samostatný a na knihovně závislý program pro řízení 7segmentového LED displeje.

Oba programy opět dělají totéž, ale ukazují, jak používat modul knihovny, který jste napsali vy nebo někdo jiný.

Krok 6: Závěr

Závěr
Závěr

Pokusil jsem se ukázat, jak používat moduly kódu v prostředí Lua a současně je aplikovat na konkrétní IC.

I když jsem s tím měl problém, myslím si, že je toho dost na to, aby se ukázalo, jak tyto moduly fungují, a také na ukázku aplikace v reálném životě.

Doporučuje: