Spisu treści:

NODEMCU LUA ESP8266 z 8-bitowym ekspanderem portów MCP23008 IC: 6 kroków
NODEMCU LUA ESP8266 z 8-bitowym ekspanderem portów MCP23008 IC: 6 kroków

Wideo: NODEMCU LUA ESP8266 z 8-bitowym ekspanderem portów MCP23008 IC: 6 kroków

Wideo: NODEMCU LUA ESP8266 z 8-bitowym ekspanderem portów MCP23008 IC: 6 kroków
Wideo: PCF8574P PIR and LED 2024, Listopad
Anonim
NODEMCU LUA ESP8266 z 8-bitowym ekspanderem portów MCP23008
NODEMCU LUA ESP8266 z 8-bitowym ekspanderem portów MCP23008

MCP23008 to 8-bitowy ekspander we/wy z interfejsem szeregowym i działa od 1,8 do 5,5 V, więc jest idealny do układów ESP8266, Arduino, Raspberry Pi, PIC i innych.

Jeśli widziałeś mój inny Instructable na MCP23017, możesz się zastanawiać, dlaczego robię go również dla MCP23008, ponieważ jest to naprawdę mniejsza wersja tego samego.

Powodem jest to, że jego rejestry różnią się zarówno nazwą, jak i numerem, dlatego chciałbym pokazać, jak korzystać z gotowego modułu bibliotecznego. Nie każdy jest biegły w używaniu NodeMCU lua, więc chciałbym pokazać ten aspekt programowania, a także jak korzystać z MCP23008.

Biblioteka i programy dostępne są na github.com.

Arkusz danych dla MCP23008 jest dostępny w Microchip.

Krok 1: Okablowanie MCP23008

Okablowanie MCP23008
Okablowanie MCP23008

Układ scalony MCP23008 ma prosty układ, a zbudowanie płytki jest dla niego naprawdę łatwe. Możesz także ustawić obwód na płytce do krojenia chleba.

Przypnij połączenia na mojej tablicy

  • Pin 18 (VDD) do 3v3
  • Pin 9 (VSS) do GND
  • Pin 7 (NC) do GND (nie konieczne)
  • Pin 1 (SCL) do ESP GPIO2
  • Pin 2 (SDA) do ESP GPIO0
  • Pin 5 (A0) do GND
  • Pin 4 (A1) do GND
  • Pin 3 (A2) do GND
  • Pin 6 (RESET) do 3v3

Podłącz piny do odczytu do Gnd na porcie A (piny 10 - 17)

Uwaga: tutaj wszystkie piny adresowe są podłączone do Gnd, aby używać MCP23008 pod adresem 0x20 na magistrali adresowej I2C.

Jeśli używasz adresu 0x21, to A0 byłoby podłączone do 3,3 V, a A1 i A2 podłączone do Gnd.

Podobnie w przypadku korzystania z adresu 0x22 to A1 musiałoby być podłączone do 3,3V z A0 i A2 podłączonymi do Gnd.

itp…

Krok 2: Konstruowanie planszy

Konstruowanie tablicy
Konstruowanie tablicy

Do budowy mojej deski użyłem płyty Vero o wymiarach 25 mm x 64 mm (9 rzędów x 25 otworów). Jest trochę ciasny, ale ponieważ większość potrzebnych pinów znajduje się po obu stronach układu scalonego, jest odpowiedni do tego, co ma robić.

Użyłem 8 pinów i 8 gniazd nagłówkowych dla portu A, dzięki czemu mogę podłączyć różne moduły, a także inne okablowanie do różnych projektów. Dodałem dodatkowe piny Gnd i 3.3V, ponieważ stwierdzam, że zawsze ich brakuje podczas łączenia modułów.

Krok 3: Korzystanie z modułu bibliotecznego

Korzystanie z modułu bibliotecznego
Korzystanie z modułu bibliotecznego

Moduły biblioteczne zwykle zawierają wybór podprogramów, funkcji i zmiennych, do których może uzyskać dostęp inny program. Sam program nie działa, ale jego funkcje mogą być dostępne przez program wywołujący. Oznacza to, że możesz mieć swoje podprogramy w bibliotece i wywoływać je, kiedy tylko ich potrzebujesz, tworząc mały program wywołujący. Staje się to bardziej wartościowe, jeśli masz wiele różnych programów używających tych samych podprogramów, nie musisz uwzględniać podprogramów w każdym programie.

Uwaga: program mcp23008.lua należy załadować do pamięci ESP8266 tak jak inne programy.

Umieściłem tutaj programy github.com, a także prosty program (test.lua), aby pokazać, że biblioteka działa.

Istnieją co najmniej 2 sposoby włączenia biblioteki do twojego programu.

wymagać ("mcp23008")

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

lub

mcp = wymagaj ("mcp23008")

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

Oba powyższe robią to samo, ale druga metoda pozwala na użycie własnej zmiennej zamiast nazwy programu.

Krok 4: Program samochodowy Kitt

Program samochodowy Kitt
Program samochodowy Kitt

Dołączyłem program KittCar23008.lua oraz KittLib.lua, który wykorzystuje bibliotekę do pokazania różnic w sposobie pisania programów w ten sposób. Oba programy robią to samo.

Wtyczka 8 LED jest dostępna w serwisie eBay jako zestaw i jest znana jako 8-kanałowy zestaw do samodzielnego montażu LED Flowing Water, 99p z Chin. Musisz sam to przylutować.

Uwaga: Jeśli masz problem z uruchomieniem programu KittLib.lua, spróbuj chwilowo podłączyć pin MCP23008 RESET do Gnd. Wiem, że to da bezpośrednie zwarcie (ponieważ jest podłączone do 3,3V) i musisz zresetować wszystko inne. Działa również poprzez podłączenie do Gnd przez rezystor 10 omów, prawdopodobnie lepszy sposób na zrobienie tego.

Odkryłem również, że KittLib.lua będzie działał bez problemów po uruchomieniu test.lua (nie pytaj mnie dlaczego?)

Próbowałem różnych sposobów rozwiązania problemu z programem KittLib.lua, ale jak dotąd nie mogę znaleźć logicznego powodu, dla którego się zawiesza. Czy ktoś ma jakieś pomysły?

Nie pisałem wszystkich tych programów sam, więc nie jestem w stanie powiedzieć, dlaczego jest problem, chociaż po przyjrzeniu się kodowaniu wydaje się, że nie ma nic wyraźnie złego.

Krok 5: 7-segmentowa dioda LED

7-segmentowa dioda LED
7-segmentowa dioda LED

Podobnie jak w przypadku powyższego programu KittCar.lua, dołączyłem samodzielny i zależny od biblioteki program do obsługi 7-segmentowego wyświetlacza LED.

Ponownie, oba programy robią to samo, ale demonstrują, jak używać modułu bibliotecznego napisanego przez siebie lub kogoś innego.

Krok 6: Wniosek

Wniosek
Wniosek

Próbowałem zademonstrować, jak używać modułów kodu w środowisku Lua i jednocześnie zastosować je do konkretnego układu scalonego.

Chociaż miałem z tym problem, myślę, że wystarczy pokazać, jak działają te moduły, a także zademonstrować aplikację z prawdziwego życia.

Zalecana: