Не вистачає GPIO портів на ESP8266

Відповідь:

Для того щоб розширити наявні GPIO, можливо скористатися (і так зазвичай роблять) i2c-розширювачем портів.

Але основна проблема не у тому щоб читати/записувати значення GPIO через i2c, а в тому, як оперативно отримувати переривання події на входах розширювача.

Так от, кожен GPIO-розширювач має спеціальний пін-вихід. Цей пін встановлюється в логічну одиницю, якщо відбулася зміна стану портів розширювача, які налаштовано як входи (наприклад, кнопки).

Звісно ж, є і інший шлях – постійно читати шину i2c і самостійно знімати такі дані. Але це не вихід, бо тоді контролер буде зайнятий тільки цим.

З настанов дизайну відомо, що затримка інтерфейсів користувача має бути не більше ніж 400 мс.

Для декількох кнопок (або інших входів) можна використовувати один GPIO з перериванням на NodeMCU.

Приклад такого рішення PCA9538 – i2c GPIO port extender