Съдържание:
- Стъпка 1: Окабеляване на MCP23008
- Стъпка 2: Изграждане на борд
- Стъпка 3: Използване на библиотечен модул
- Стъпка 4: Програма Kitt Car
- Стъпка 5: 7 Сегмент LED
- Стъпка 6: Заключение
Видео: NODEMCU LUA ESP8266 с MCP23008 8 -битов порт разширител IC: 6 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:54
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
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
Както при програмата KittCar.lua по -горе, аз включих самостоятелна и библиотечно зависима програма за управление на 7 -сегментен LED дисплей.
Отново и двете програми правят едно и също нещо, но демонстрират как да използвате библиотечен модул, написан от вас или от някой друг.
Стъпка 6: Заключение
Опитах се да демонстрирам как да използвам кодови модули в средата Lua и да ги прилагам към конкретна интегрална схема едновременно.
Въпреки че имах проблем с това, мисля, че има достатъчно, за да покажа как работят тези модули, както и да демонстрирам приложение в реалния живот.
Препоръчано:
Raspberry Pi - PCA9536 Разширител за вход/изход Java Урок: 4 стъпки
Raspberry Pi-PCA9536 входно/изходен разширител Java урок: PCA9536 е 8-пиново CMOS устройство, което осигурява 4 бита общо предназначение за паралелен вход/изход (GPIO) за I2C-bus/SMBus приложения. Състои се от 4-битов регистър за конфигуриране, който служи за целите на избора на вход или изход, 4-битов
Еднопосочен разширител на обхват на WIFI: 5 стъпки (със снимки)
Еднопосочен WIFI Range Extender: Лесно приемайте WIFI сигнали от далеч, използвайки стандартен USB WIFI адаптер и малко изобретателност. Тази проста идея не изисква модификации на USB WIFI адаптер или вашия компютър. Прост начин да увеличите силата на сигнала и обхвата на вашия WIF
IR дистанционно разширител (част-2): 3 стъпки
IR Remote Extender (Part-2): Здравейте момчета! Върнах се с Part-2 на IR Remote Extender Instructable. За момчета, които не са прочели първата част Щракнете ТУК. Нека започнем
IR дистанционно разширител (част 1): 4 стъпки
IR Remote Extender (Част 1): Здравейте всички! Този проект описва как да се изгради удължител/ретранслатор за дистанционно управление за управление на вашите електронни уреди от отдалечено място. Модул за IR детектор получава IR сигнал от дистанционно управление и два IR LED са повторно излъчване на знака
PCF8591 (i2c аналогов I/O разширител) Бързо и лесно използване: 9 стъпки
PCF8591 (i2c Analog I/O Expander) Бързо и лесно използване: Библиотека за използване на i2c pcf8591 IC с arduino и esp8266. Тази IC може да контролира (до 4) аналогов вход и/или 1 аналогов изход, като измерва напрежението, да чете стойността на термистора или да избледнява светодиод. Може да чете аналогова стойност и да записва аналогова стойност само с 2 проводника (перфектно