Съдържание:

NODEMCU LUA ESP8266 с MCP23008 8 -битов порт разширител IC: 6 стъпки
NODEMCU LUA ESP8266 с MCP23008 8 -битов порт разширител IC: 6 стъпки

Видео: NODEMCU LUA ESP8266 с MCP23008 8 -битов порт разширител IC: 6 стъпки

Видео: NODEMCU LUA ESP8266 с MCP23008 8 -битов порт разширител IC: 6 стъпки
Видео: ESP8266 NodeMCU Interface - MCP23017 i/o expender with LED Example! 2024, Ноември
Anonim
NODEMCU LUA ESP8266 С MCP23008 8 -битов порт разширител IC
NODEMCU LUA ESP8266 С MCP23008 8 -битов порт разширител IC

MCP23008 е 8-битов I/O разширител със сериен интерфейс и работи между 1,8 и 5,5 волта, така че е идеален за ESP8266, Arduino, Raspberry Pi, PIC чипове и др.

Ако сте виждали другия ми Instructable на MCP23017, може би се чудите защо го правя и за MCP23008, тъй като това наистина е по -малка версия на същото нещо.

Причините са, че регистрите му са различни както по име, така и по номер и бих искал да покажа как да се използва готов модул на библиотеката. Не всеки е умел да използва NodeMCU lua, затова бих искал да покажа този аспект на програмирането, както и как да използвам MCP23008.

Библиотеката и програмите са достъпни на github.com.

Информационният лист за MCP23008 е достъпен от Microchip.

Стъпка 1: Окабеляване на MCP23008

Окабеляване на MCP23008
Окабеляване на MCP23008

IC MCP23008 е с просто оформление и изграждането на дъска е наистина лесно за него. Можете също така да настроите веригата на дъска за хляб.

Pin връзки на дъската ми

  • ПИН 18 (VDD) към 3v3
  • ПИН 9 (VSS) към GND
  • Pin 7 (NC) към GND (не е необходимо)
  • Пин 1 (SCL) към ESP GPIO2
  • ПИН 2 (SDA) към ESP GPIO0
  • Щифт 5 (A0) към GND
  • Щифт 4 (A1) към GND
  • Щифт 3 (A2) към GND
  • Pin 6 (RESET) към 3v3

Свържете щифтовете за четене към Gnd на порт A (щифтове 10 - 17)

Забележка: тук всички адресни щифтове са свързани към Gnd, за да използват MCP23008 на адрес 0x20 на адресната шина I2C.

Ако сте използвали адрес 0x21, тогава A0 ще бъде свързан към 3.3V, като A1 и A2 са свързани към Gnd.

По същия начин, ако се използва адрес 0x22, тогава A1 трябва да бъде свързан към 3.3V с A0 и A2, свързани към Gnd.

и т.н…

Стъпка 2: Изграждане на борд

Изграждане на борд
Изграждане на борд

Използвах 25 mm x 64 mm (9 реда x 25 отвора) Vero лента за изграждане на дъската. Това е малко стегнато, но тъй като повечето от щифтовете, от които се нуждаете, са от двете страни на ИС, той е подходящ за това, което трябва да направи.

Използвал съм 8 пина и 8 гнезда за заглавки за порт А, за да мога да включа различните си модули, както и други кабели за различни проекти. Добавих допълнителни Gnd и 3.3V щифтове, тъй като намирам, че винаги има недостиг на тези при свързване на модули заедно.

Стъпка 3: Използване на библиотечен модул

Използване на библиотечен модул
Използване на библиотечен модул

Библиотечните модули обикновено съдържат селекция от подпрограми, функции и променливи, които могат да бъдат достъпни от друга програма. Самата програма не работи, но нейните функции могат да бъдат достъпни от извикващата програма. Това означава, че можете да имате своите подпрограми в библиотеката и да ги извиквате, когато имате нужда от тях, като правите малка програма за обаждания. Става по-ценно, ако имате много различни програми, използващи едни и същи подпрограми, не е нужно да включвате подпрограмите във всяка програма.

Забележка: Програмата mcp23008.lua трябва да се зареди в паметта на ESP8266, както другите програми.

Тук съм включил програмите github.com, както и проста програма (test.lua), за да покажа, че библиотеката работи.

Има поне 2 начина да включите библиотеката във вашата програма.

require ("mcp23008")

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

или

mcp = изисква ("mcp23008")

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

И двете по -горе правят едно и също нещо, но вторият метод ви позволява да използвате своя собствена променлива вместо името на програмата.

Стъпка 4: Програма Kitt Car

Кит програма за кола
Кит програма за кола

Включих програмата KittCar23008.lua и KittLib.lua, която използва библиотеката, за да покаже разликите в начина на писане на програми по този начин. И двете програми правят едно и също нещо.

Вграденият 8 LED вход се предлага от Ebay като комплект и е известен като 8 -канален течащ LED Light LED DIY Kit, 99p от Китай. Трябва да го запоите сами.

Забележка: Ако имате проблем при опит за стартиране на програмата KittLib.lua, опитайте да свържете за кратко MTP23008 RESET извода към Gnd. Знам, че това ще даде директно късо съединение (тъй като е свързано към 3.3V) и трябва да нулирате всичко останало. Той също така работи чрез свързване към Gnd чрез 10 омов резистор, вероятно по -добър начин да го направите.

Също така открих, че KittLib.lua ще работи без проблеми след стартиране на test.lua (Не ме питайте защо?)

Опитах различни начини за решаване на проблема с програмата KittLib.lua, но засега не мога да намеря логична причина защо се срива. Някой има ли идеи?

Аз лично не съм написал всички тези програми, така че не мога да кажа защо има проблем, въпреки че след като разгледах кодирането, не изглежда да има нещо очевидно нередно.

Стъпка 5: 7 Сегмент LED

7 Сегмент LED
7 Сегмент LED

Както при програмата KittCar.lua по -горе, аз включих самостоятелна и библиотечно зависима програма за управление на 7 -сегментен LED дисплей.

Отново и двете програми правят едно и също нещо, но демонстрират как да използвате библиотечен модул, написан от вас или от някой друг.

Стъпка 6: Заключение

Заключение
Заключение

Опитах се да демонстрирам как да използвам кодови модули в средата Lua и да ги прилагам към конкретна интегрална схема едновременно.

Въпреки че имах проблем с това, мисля, че има достатъчно, за да покажа как работят тези модули, както и да демонстрирам приложение в реалния живот.

Препоръчано: