Несколько узлов с одинаковым адресом приема и передачи.

Я хочу сделать сеть на ардуино и чипах nrf24l01. Сеть будет такой:

  • 1 мастер Arduino
  • несколько (без конкретного количества) подчиненных узлов

Я хочу, чтобы все узлы имели одинаковый адрес получения и один и тот же адрес передачи, а мастер Arduino понимал, какой из них отправляет сообщение, из самого сообщения. Например:

Мастер: Получение: 0xABCDABCD71 Передача: 0xABCDABCD01

Подчиненный 1 Получение: 0xABCDABCD01 Передача: 0xABCDABCD71

Раб 2 Получение: 0xABCDABCD01 Передача: 0xABCDABCD71

Раб 3 Получение: 0xABCDABCD01 Передача: 0xABCDABCD71

Раб 4 Получение: 0xABCDABCD01 Передача: 0xABCDABCD71

Когда мастер отправит сообщение, все узлы получат его. Я хочу спросить:

  • Возможно ли это?
  • Будут ли какие-либо проблемы?
  • Есть ли другой способ добавить больше узлов в будущем без изменения кода?

, 👍2

Обсуждение

Это будет работать. Единственной возможной проблемой могут быть коллизии, если узлы отправляют много данных (здесь могут помочь разные интервалы повторной передачи)., @Gerben

Как правило, иметь одинаковый адрес RX на всех подчиненных узлах — плохая идея, за исключением случаев, когда подчиненные устройства предназначены только для приема. Если вы хотите получать данные от определенного узла, то они должны иметь разные адреса, используйте ACK_PAYLOAD и опрашиваете каждый по очереди., @MichaelT

Можем ли мы сделать это только для нескольких подчиненных устройств для одного приемника данных? Я хочу получить данные 13 IMU (gy9250) на одном приемнике nrf24lo1, возможно ли это?, @Wajhee uddin


1 ответ


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

1

а также комментарий №1, другой момент — это пакеты подтверждения, которые подчиненные устройства будут отправлять обратно главному устройству для подтверждения получения сообщения. Поскольку все подчиненные устройства отправляют подтверждение примерно в одно и то же время, у главного устройства не будет возможности узнать, какое подтверждение пришло от какого клиента, и, таким образом, кому нужна повторная передача. Обойти это можно, отключив подтверждение для клиентов и заставив главное устройство передавать максимальное количество раз независимо от этого. Существует форк rf24 с широковещательным режимом, что упрощает указание не ждать подтверждения перед повторной передачей

,

Использование [этого](http://tmrh20.github.io/RF24) в качестве базовой библиотеки и [этого](http://tmrh20.github.io/RF24Network/) в качестве упрощающей накладки (на самом деле есть еще RF24Mesh) сделает это очень легко возможным., @Avamander