Самая быстрая связь от NodeMCU до Arduino Nano
Для одного из моих проектов мне нужно передать данные с NodeMCU на мой Arduino Nano, в режиме реального времени я использовал S-Bus, но это меня совершенно не устраивает, так как происходит небольшая задержка. Я передаю файл JSON с 4 знаковыми 16 - битными целыми числами.
Теперь мне нужно знать,какой самый быстрый и надежный способ передачи данных из NodeMCU в Arduino Nano. Любое подробное описание или даже предложение будет очень полезно. Заранее спасибо !
@Pritam Sarkar, 👍1
Обсуждение1 ответ
Лучший ответ:
Если дело доходит до скорости и надежности, вы должны выбрать интерфейс, который обрабатывается аппаратно с обеих сторон. Для 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
- Как отправить команду AT на sim800l с помощью SoftwareSerial
- Проблема последовательной связи с общей землей SIM800L
- Модули HC-12 перестали принимать, не могу понять почему
- Откуда берутся эти ненужные символы (из serial)?
- Невозможно получить данные при использовании нескольких SoftSerial на Arduino Nano.
- Получение мусорных значений при отправке объекта Json из Arduino Uno в NodeMCU с использованием SoftwareSerial
- Нет данных GPS Neo 6M DFRduino Nano
- Загрузка Arduino Nano дает ошибку: avrdude: stk500_recv(): programmer is not responding
что делает Nano, чего NodeMCU не может сделать сам по себе?, @Juraj
Что именно вы подразумеваете под "небольшой задержкой"? А какой библиотекой S Bus вы пользовались? Как библиотека, которую я нашел, использует UART внизу, так и интерфейс, который вы использовали со скоростью передачи в бодах? использование двоичного протокола будет намного быстрее, @chrisl