Самая низкая задержка при запуске нескольких Arduino с использованием NRF24L01+

Я собираю установку с несколькими зеркальными камерами. Мне нужно синхронизировать камеры, чтобы делать фотографии с минимально возможной задержкой. Единственным ограничением является то, что мы хотим иметь возможность при необходимости обращаться к каждой камере индивидуально.

Я видел в других сообщениях: Выбор беспроводной технологии с минимально возможной задержкой

NRF24L01+ кажется хорошим выбором. В ответе на это сообщение говорится: отправка 32-байтовой полезной нагрузки... 283 мкс в режиме 2 Мбит/с.

Учитывая, что esp8266 имеет тактовую частоту 80/160 МГц, меня не слишком беспокоит задержка, возникающая при обработке сигналов.

Большая часть многоадресной информации предназначена для массивов датчиков, поэтому несколько выходов с одним входом. Мне нужны ресурсы для одиночного выхода и нескольких входов для сетей NRF24L01+.

Дополнительным бонусом esp8266 является то, что задачи, не критичные по времени, такие как ведение журнала и проверка ошибок, могут выполняться через Wi-Fi, поэтому NRF24L01+ будет предназначен исключительно для одностороннего запуска.

Если бы каждая камера имела собственную плату на базе esp8266 с подключенным аппаратным обеспечением NRF24L01+ и ей был присвоен адрес в программном обеспечении от 0 до 255, можно ли передать один 32-байтовый пакет данных, где каждый бит будет представлять адрес камеры и иметь все приемные устройства получают один и тот же сигнал, выполнить операцию «И» против его адреса и при необходимости запустить триггер?

, 👍1

Обсуждение

Из другого ответа на аналогичный вопрос упомянули модуль NRF24LE1. По сути это программируемый NRF24L01+. Интересно, почему это так и не взлетело? Кажется очень полезным для простого запуска/сбора данных., @Geordie


1 ответ


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

1

Да, это должно сработать, однако подумайте также о следующих вопросах:

  • Что делать, если одна (или несколько) камер не получают сигнал? Возможно, вам придется добавить сигнал ACK, но, конечно, это уменьшит задержку (намного). Если вам не нужен сигнал ACK
  • Чтобы предотвратить подтверждение, вы можете отправить сигнал много раз (и камеры, которые уже обработали сигнал, не будут реагировать в течение фиксированного периода времени). Конечно, другие камеры (по крайней мере) 283 нас его получат позже.
  • Если надежность важна, вы можете попробовать использовать менее высокую скорость, задержка увеличится, но и реальность тоже.

Кроме того, вы, вероятно, сможете активировать камеры еще быстрее, если сначала отправите байты адреса (4 байта). И затем отправить сигнал съемки, который в принципе может быть 1 бит. Вы можете использовать для этого один из битов, если 128 камер будет достаточно. Или отправьте еще один байт, содержащий сигнал о стрельбе.

,

Спасибо! Итак, чтобы это работало с аппаратной точки зрения, все, что мне нужно сделать, это убедиться, что все приемники NRF24L01+ используют один и тот же канал/адрес (а не мой программный адрес) и отключить автоматическое подтверждение? Хорошая идея разделить адрес и команду., @Geordie

Кроме того, поскольку настройка каждого приемника через Wi-Fi не имеет критического значения по времени, существуют ли какие-либо другие более простые интерфейсы, такие как 433/900 МГц?, @Geordie

Я никогда не работал с 433/900 МГц. Я думаю, что вам, вероятно, лучше отправить сигнал «стрелять» несколько раз вместо (сложного) протокола ACK. Думаю, сам протокол не изменится, если использовать другую частоту., @Michel Keijzers