Предотвращение помех при использовании радиопередатчиков и приемников

Я хочу использовать подход «прослушивание перед разговором» для передачи данных от датчиков, подключенных к паре передатчика и приемника, на MCU, подключенный к передатчику и приемнику, что означает, что датчик будет передавать данные только после того, как его попросят. сделать это с помощью MCU, но проблема, с которой я сталкиваюсь, заключается в том, что мои приемники не смогут узнать, поступает ли информация, которую они получают, от одного из моих передатчиков или от какого-то другого передатчика 433 в этом районе. Приемник, который я хочу использовать здесь есть описание продуктачто, кажется, предполагает, что может быть метод сопряжения моих передатчиков и приемников, но как? Если я передаю информацию об идентификаторе передатчика, например, если передатчик передает 4 бита, я делаю первые два бита всегда равными «11», чтобы приемник знал, что информация исходит от одного из передатчиков, который он должен слушать, смогу ли я тогда фильтровать данные Я не хочу на AVR?

@DaveTweed кажется, что это связано, но не дубликат.
@Kortuk: Посмотрите историю изменений другого вопроса (и обратите внимание на временные метки).
@DaveTweed А, да, пользователь подумал, что вы просто продолжали редактировать, чтобы добавить больше к вопросу. Это намного лучше, задавайте каждый вопрос дискретно. Спасибо за объяснение!

Ответы (1)

Эти типы передатчиков и приемников работают только на одном канале. Приемники обычно используют форму активной регулировки усиления (АРУ), поэтому усиление будет увеличиваться до тех пор, пока что-то (обычно шум) не будет получено. Усиление снижается до соответствующего уровня, когда начинается передача.

Как правило, наилучшей практикой является:

  • Согласуйте битрейт между двумя системами (например, 4800 бит/с). Как правило, пары приемник/передатчик дадут вам некоторое представление об этом.
  • Передайте преамбулу 10101010 (обычно где-то между 8 и 40 битами) перед началом основной передачи. У этого есть две цели: он позволяет АРУ установиться в хорошей точке и может быть обнаружен микроконтроллером, чтобы он знал, что передача начинается.
  • Передайте синхрослово, например 0xD5F7, и слушайте только те пакеты, которые имеют правильное синхрослово. Длина слова синхронизации варьируется.
  • Используйте остальную часть пакета данных, чтобы детализировать адрес, направление и данные.

Я обнаружил, что библиотека VirtualWire для Arduino на самом деле является хорошим и наглядным примером того, как это сделать. Может быть, взгляните, даже если вы работаете с другим семейством микроконтроллеров.

Еще одна вещь, которую стоит рассмотреть, — это кодирование битов. Вы можете просто отправить 1 как 1 и 0 как 0. Однако есть более сложные схемы. Манчестерское кодирование гарантирует, что каждый бит передаваемых данных имеет по крайней мере один переход сигнала. Это имеет два важных эффекта:

  1. Независимо от отправленных данных, будет отправлено одинаковое количество максимумов и минимумов. Это означает, что АРУ может работать правильно и в сигнале отсутствует смещение по постоянному току.
  2. Поскольку для каждого бита существует переход, можно легко восстановить тактовую частоту по сигналу, даже если она неизвестна. Это действительно означает, что вам больше не нужно использовать внешний кварц в передатчиках — внутренний генератор достаточно точен.
+1 за преамбулу.. вы также можете добавить SOM, если хотите.