Как выбрать использование библиотеки softserial в проекте Arduino?

Я хочу реализовать проект, в котором имеется множественная связь Arduino через UART, и одним из ограничений этого проекта является использование Arduino Nano (маленького и дешевого). Мне нужно установить 4 экземпляра последовательного порта на Nano, чтобы подключить другие nano для приема и записи. Я искал последовательный порт nano, у которого есть только один аппаратный последовательный порт, поэтому после того, как я нашел множество библиотек softserial, таких как pre-bulite softserial и altsoftserial NeoSWSerial, NeoHWSerial и NeoICSerial. Поскольку библиотека тоже библиотека, я не знаю, какая из них поможет завершить мой проект.

, 👍1

Обсуждение

что не так с последовательной библиотекой программного обеспечения Arduino? в каком смысле у тебя это не работает?, @Jaromanda X

Является ли использование UART жестким требованием? Если нет, рассмотрите возможность использования соединения I2C, которое использует одно соединение и адреса для связи со многими устройствами., @Nefrin


1 ответ


5

Я думаю, ваша проблема в том, что вам нужно 4 последовательных порта.

С серийным программным обеспечением этого просто не произойдет:

  • SoftwareSerial может получать данные только через один последовательный порт в любой момент времени.
  • AltSoftSerial ограничен определенными контактами и только одним экземпляром, поскольку существует только один набор контактов.
  • NeoSWSerial находится между ними. Более эффективен, чем SoftwareSerial, но все же (насколько я могу судить) ограничен одним экземпляром (он использует прерывание таймера для управления связью, поэтому может использовать любые контакты)

Если вам нужна связь между множеством устройств через последовательный порт, вам потребуются либо устройства с большим количеством аппаратных последовательных портов (например, Arduino Mega), либо реализация системы с многоточечной шиной (например, RS-485), для которой нужен только один порт. последовательный порт для связи со многими устройствами. Однако требуется дополнительное внешнее оборудование.

,

Хороший ответ. Другой аппаратный вариант — расширитель SPI-UART., @caligari