Самая быстрая связь от NodeMCU до Arduino Nano

Для одного из моих проектов мне нужно передать данные с NodeMCU на мой Arduino Nano, в режиме реального времени я использовал S-Bus, но это меня совершенно не устраивает, так как происходит небольшая задержка. Я передаю файл JSON с 4 знаковыми 16 - битными целыми числами.

Теперь мне нужно знать,какой самый быстрый и надежный способ передачи данных из NodeMCU в Arduino Nano. Любое подробное описание или даже предложение будет очень полезно. Заранее спасибо !

, 👍1

Обсуждение

что делает Nano, чего NodeMCU не может сделать сам по себе?, @Juraj

Что именно вы подразумеваете под "небольшой задержкой"? А какой библиотекой S Bus вы пользовались? Как библиотека, которую я нашел, использует UART внизу, так и интерфейс, который вы использовали со скоростью передачи в бодах? использование двоичного протокола будет намного быстрее, @chrisl


1 ответ


Лучший ответ:

0

Если дело доходит до скорости и надежности, вы должны выбрать интерфейс, который обрабатывается аппаратно с обеих сторон. Для arduino nano у вас есть следующие опции (NodeMCU поддерживает их все):

  • UART:
    • не очень быстро (порядка 10 кбит/с), но это полный дуплекс (асинхронная связь в обоих направлениях).
    • реализация тривиальна из-за Serial.h
    • большое расстояние (порядка метров)
  • I2C:
    • тоже не очень быстро (порядка 100 кбит/с), но не в полнодуплексном режиме
    • реализация проста, потому что и ведомый, и ведущий реализованы в библиотеке arduino
    • только на небольшом расстоянии (порядка см)
  • SPI:
    • довольно быстрый (>1 Мбит/с), полный дуплекс>
    • реализация может потребовать некоторого опыта (насколько я знаю, подчиненный режим не поддерживается SPI.h).
    • большое расстояние (порядка метров)

Какой из них является лучшим вариантом, все еще зависит от ваших конкретных требований, но лично мне очень нравится SPI, потому что он очень быстрый и стабильный.

,

SPI является полнодуплексным. Все эти протоколы могут достигать скорости мегабит в секунду (за исключением UART при использовании программного обеспечения).h, который имеет верхний предел около 9600 бод)., @Majenko

@Majenko, вы правы насчет того, что SPI является полным дуплексом, я отредактирую свой ответ. Но я сомневаюсь, что вы сможете надежно запускать UART или I2C со скоростью Мбит/с *на atmega328. Кроме того, SPI может работать со скоростью >10 Мбит/с, я просто сделал консервативные оценки, @Sim Son

Убедитесь, что вы можете надежно запустить его со скоростью Mbaud. Почему бы тебе этого не сделать? Тот факт, что это 8-разрядный микроконтроллер, не означает, что аппаратная периферия тоже работает медленно. Это скорее вопрос того, можете ли вы обрабатывать полученные данные достаточно быстро, чтобы Mbaud мог иметь какой-либо смысл в реальном мире. До тех пор, пока процент ошибок скорости передачи данных на обоих концах соединения находится в пределах допустимых величин (что может просто означать выбор правильной скорости передачи данных для запуска), вы можете перейти в диапазон 1-4 Мбод. Тактовая частота 16 МГц ограничивает ваш верхний предел больше, чем что-либо другое., @Majenko