5.4. Расширение цифровых портов для NodeMCU ESP8266 с помощью микросхемы MCP23017
Введем светодиодную индикацию и звуковую сигнализацию и при использовании в качестве контроллера умного дома модуля Nodemcu. Количество выводов у модуля Nodemcu гораздо меньше, чем у Arduino Mega, поэтому нам понадобится микросхема расширителя входов  MCP23017.  Микросхема MCP23017 добавляет 16 портов,которые можно настроить как на вход,так и на выход (рис. 5.7). Микросхема использует популярную двухпроводную шину I2C.
MCP23017
 
Рис. 5.7. Выводы микросхемы MCP23017

Адрес микросхемы MCP23017 для протокола I2C можно установить комбинацией сигналов на цифровых входах A0 – A2 (рис. 5.8), что позволяет к микроконтроллеру подключиь одновременно 8 микросхем MCP23017, соответственно 16*8=128 контактов.


 
Рис. 5.8. Установка адреса микросхемы MCP23017

Микросхема имеет 2 банка портов A (GPA0- GPA7) и  B (GPB0- GPAB), каждый из которых можно настроить на ввод или вывод.
В листинге 5.3. показан пример настройки банков выводов A и B.

Листинг 5.3

// подключение библиотеки Wire.h 
#include <Wire.h> 
byte input=0;
void setup()
{
  Serial.begin(9600);
  Wire.begin(0,2);     // запуск I2C 
  Wire.beginTransmission(0x20);  // i2c – адрес (A0-0,A1-0,A2-0)
  Wire.write(0x00); // IODIRA register
  Wire.write(0x00); // настроить PORT A как output
  Wire.endTransmission();
}
 
void loop()
{
  // чтение данных из PORT B
  Wire.beginTransmission(0x20);
  Wire.write(0x13);
  Wire.endTransmission();
  Wire.requestFrom(0x20, 1);
  input=Wire.read();
 
  // записать полученные данные в PORT A
  Wire.beginTransmission(0x20);
  Wire.write(0x12); // address PORT A
  Wire.write(input);    // PORT A
  Wire.endTransmission();
  delay(100); // пауза
}


Использование микросхемы MCP23017 позволит расширить количество цифровых контактов модуля Nodemcu на 16 и позволит организовать светодиодную индикацию и звуковую сигнализацию о критических параметрах датчиков.  



1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33 


Вверх