Исчерпание GPIO и поиск предложений

Я работаю над проектом, используя NodeMCU, и у меня быстро заканчиваются контакты GPIO. Я пытаюсь решить, каким путем пойти, чтобы завершить это.

Прямо сейчас у меня есть MCU, подключенный к термопаре MAX31856 PT100 (SPI), выходу PWM, транзистору (действующему как переключатель), одной кнопке и одному светодиоду. Мне нужно добавить как минимум еще 2 MAX31856, дисплей (либо I2C, либо SPI) и поворотный энкодер/кнопку.

Я изучил расширители GPIO, но сомневаюсь, что доступные библиотеки для дополнительного оборудования будут работать через расширители. У меня есть Mega, которая без сомнения будет работать, но тогда у меня будут проблемы с WiFi & MQTT. Я посмотрел на Mega со встроенным Wi-Fi, но я так запутался, читая, как его программировать, настраивать DIP-переключатели и т. д., что это не кажется правильным выбором.

Кто-нибудь может подсказать?

, 👍0

Обсуждение

MAX31856 — это SPI, поэтому используйте дисплей SPI., @Juraj

Я бы переместил менее используемое интерфейсное оборудование в приложение, чтобы снизить стоимость и освободить контакты. я бы также использовать i2c все. Вы можете использовать GPIO10 в качестве входа. вы можете использовать A0 для кнопки. Вы можете использовать GPIO3 для ввода и GPIO1 для вывода, если вы не используете Serial. Вы можете использовать GPIO0 для кнопки поворотного энкодера, если она никогда не нажималась при загрузке., @dandavis


1 ответ


1

Мне приходят в голову два основных решения:

  1. Расширитель GPIO (как вы упомянули). Их действительно легко использовать в качестве цифровых входов или выходов. Таким образом, вы можете подключить кнопку, светодиод, транзистор и, возможно, даже дисплей (вы не указали тип дисплея, поэтому я предполагаю, что это стандартный ЖК-дисплей 1602 или 2004 года). Также к расширителю можно подключить сигналы SPI-CS, но это зависит от используемых библиотек...
  2. Вспомогательный Arduino, например, Nano. Arduino можно использовать для измерения температуры и прочего, а NodeMCU — для связи. В этом случае вам необходимо реализовать какую-либо связь между этими двумя платами (SPI, I2C или UART).
,