Оглавление:

NODEMCU LUA ESP8266 с 8-битным расширителем портов MCP23008 IC: 6 шагов
NODEMCU LUA ESP8266 с 8-битным расширителем портов MCP23008 IC: 6 шагов

Видео: NODEMCU LUA ESP8266 с 8-битным расширителем портов MCP23008 IC: 6 шагов

Видео: NODEMCU LUA ESP8266 с 8-битным расширителем портов MCP23008 IC: 6 шагов
Видео: 16-битный расширитель портов MCP23017 2024, Ноябрь
Anonim
NODEMCU LUA ESP8266 с 8-битной микросхемой расширителя портов MCP23008
NODEMCU LUA ESP8266 с 8-битной микросхемой расширителя портов MCP23008

MCP23008 - это 8-битный расширитель ввода / вывода с последовательным интерфейсом, работающий от 1,8 до 5,5 вольт, поэтому он идеально подходит для ESP8266, Arduino, Raspberry Pi, PIC Chips и других.

Если вы видели мой другой Instructable на MCP23017, вам может быть интересно, почему я делаю еще один для MCP23008, поскольку это действительно уменьшенная версия того же самого.

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

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

Техническое описание MCP23008 можно получить в Microchip.

Шаг 1. Подключение MCP23008

Подключение MCP23008
Подключение MCP23008

Микросхема MCP23008 имеет простую компоновку, и для нее действительно легко собрать плату. Вы также можете установить схему на макетной плате.

Контакты на моей плате

  • Вывод 18 (VDD) на 3v3
  • Контакт 9 (VSS) к GND
  • Контакт 7 (NC) к GND (не требуется)
  • Контакт 1 (SCL) к ESP GPIO2
  • Контакт 2 (SDA) к ESP GPIO0
  • Контакт 5 (A0) к GND
  • Контакт 4 (A1) к GND
  • Контакт 3 (A2) к GND
  • Контакт 6 (СБРОС) на 3v3

Подключите контакты для чтения к Gnd порта A (контакты 10-17).

Примечание: здесь все контакты адреса подключены к Gnd для использования MCP23008 по адресу 0x20 на шине адреса I2C.

Если бы вы использовали адрес 0x21, то A0 был бы подключен к 3,3 В, а A1 и A2 подключены к Gnd.

Аналогично, если используется адрес 0x22, то A1 должен быть подключен к 3,3 В, а A0 и A2 подключены к Gnd.

так далее…

Шаг 2: создание доски

Построение доски
Построение доски

Я использовал полосовую доску Vero 25 мм x 64 мм (9 рядов x 25 отверстий), чтобы построить свою доску. Он немного тесноват, но поскольку большинство нужных вам контактов находится по обе стороны от ИС, этого достаточно для того, что он должен делать.

Я использовал 8 контактов и 8 разъемов для порта A, чтобы я мог подключать свои различные модули, а также другую проводку для разных проектов. Я добавил дополнительные контакты Gnd и 3,3 В, так как обнаружил, что их всегда не хватает при соединении модулей вместе.

Шаг 3. Использование библиотечного модуля

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

Модули библиотеки обычно содержат набор подпрограмм, функций и переменных, к которым может получить доступ другая программа. Сама программа не запускается, но вызывающая программа может получить доступ к ее функциям. Это означает, что вы можете иметь свои подпрограммы в библиотеке и вызывать их всякий раз, когда они вам нужны, создавая небольшую вызывающую программу. Это становится более ценным, если у вас есть много разных программ, использующих одни и те же подпрограммы, вам не нужно включать подпрограммы в каждую программу.

Примечание: программу mcp23008.lua необходимо загрузить в память ESP8266, как и другие программы.

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

Есть как минимум 2 способа включить библиотеку в вашу программу.

требуется ("mcp23008")

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

или

mcp = require ("mcp23008")

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

Оба вышеуказанных метода делают то же самое, но второй метод позволяет вам использовать вашу собственную переменную вместо имени программы.

Шаг 4: автомобильная программа Китта

Программа Kitt Car
Программа Kitt Car

Я включил программу KittCar23008.lua и KittLib.lua, которая использует библиотеку, чтобы показать различия в том, как писать программы таким образом. Обе программы делают одно и то же.

Штекер на 8 светодиодов доступен на Ebay в виде комплекта и известен как 8-канальный светодиодный комплект для освещения проточной воды, 99p из Китая. Придется самому паять.

Примечание. Если у вас возникли проблемы с запуском программы KittLib.lua, попробуйте на мгновение подключить вывод RESET MCP23008 к Gnd. Я знаю, что это приведет к прямому короткому замыканию (поскольку он подключен к 3,3 В), и вам придется сбросить все остальное. Он также работает при подключении к Gnd через резистор 10 Ом, вероятно, лучший способ сделать это.

Я также обнаружил, что KittLib.lua будет работать без проблем после запуска test.lua (не спрашивайте меня, почему?)

Я пробовал различными способами решить проблему с программой KittLib.lua, но пока не могу найти логической причины, почему она дает сбой. Есть ли у кого-нибудь идеи?

Я сам не написал все эти программы, поэтому я не могу сказать, почему возникла проблема, хотя после просмотра кода, похоже, что-то явно не так.

Шаг 5: 7-сегментный светодиод

7-сегментный светодиод
7-сегментный светодиод

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

Опять же, обе программы делают одно и то же, но демонстрируют, как использовать библиотечный модуль, написанный вами или кем-то другим.

Шаг 6: Заключение

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

Я попытался продемонстрировать, как использовать модули кода в среде Lua и одновременно применять их к конкретной ИС.

Несмотря на то, что у меня возникла проблема с этим, я думаю, что этого достаточно, чтобы показать, как работают эти модули, а также продемонстрировать реальное приложение.

Рекомендуемые: