Подключите 4 передатчика HC-12 к 1 приемнику HC-12

В настоящее время я получаю данные от модулей HC-12 через USB-TTL, которые работают в паре . Но я хочу получать данные одновременно от 4 модулей Hc-12 до одного модуля HC-12 через USB-TTL.

, 👍0

Обсуждение

итак, в чем же заключается ваш вопрос?, @jsotola

как я могу подключить 4 передающих модуля HC-12 к 1 приемному модулю HC-12, @salar ahmed

Я действительно не понимаю. Это беспроводные модули, они уже "подключены", пока находятся в зоне действия. Какие у вас проблемы с приемом сигналов ?, @Mat

да, у меня возникли проблемы с приемом сигналов. несмотря на то, что и приемный, и передающий модули имеют одинаковый размер канала и скорость передачи в бодах, @salar ahmed

Ну-ка, покажи схему того, как у тебя все подключено, и покажи соответствующие фрагменты кода для приемника и передатчика. (Пожалуйста, [отредактируйте] свой вопрос по этому поводу.) Здесь недостаточно информации., @Mat

для этого нет кода . проверьте технические характеристики HC-12, @salar ahmed

https://www.elecrow.com/download/HC-12.pdf, @salar ahmed


2 ответа


1

Когда HC-12 передает сигнал, все остальные HC-12 в его диапазоне (используя ту же частоту) принимают сигнал. Поэтому, если вы хотите, чтобы ваш передатчик разговаривал с одним конкретным HC-12, а затем с другим и так далее, вы должны создать своего рода "протокол сообщений".

Допустим, у вас есть Arduino с HC-12 и 4 кнопками и вы хотите включить-выключить 4 лампы, каждая из которых подключена к HC-12. Вы можете использовать двоичное представление, то есть байт, на котором каждый бит имеет значение.

Бит 0 -> при 1 ->> включите свет при 0 выключите>>

Бит 1-2 -> дайте номер HC-12>

Поэтому 00000111 -> сообщение для HC12 номер 4, скажите ему, чтобы включить свет. ВСЕ HC-12 получат сообщение. Поэтому каждый должен проверить входящий байт, чтобы узнать, "это для меня" или "нет". Если вы хотите, чтобы один HC-12 получал от многих HC-12, это одно и то же: сообщение должно содержать "идентификатор" "отправителя".

,

1

Проблема с несколькими передатчиками в основном связана с риском столкновения. В сетевых контекстах, таких как Ethernet, существует протокол обнаружения столкновений, позволяющий приемопередатчику знать о возникновении проблемы, но в случае HC-12 этого не существует, поэтому вам нужно что-то другое.

В воздушных контекстах, подобных этому, другие решения могут сводить к минимуму вероятность столкновений, ограничивающих себя низким процентом пропускной способности (например: не более 10% от общего времени), и просто игнорировать потерянные пакеты.

Однако, если вы не можете игнорировать потерянные пакеты, вам необходимо реализовать протокол синхронизации между приемником и передатчиками. Решением было бы создать своего рода маркерную шину, где ваш приемник будет опрашивать каждого передатчика по очереди, чтобы узнать, есть ли у него что-то для отправки.

Однако, поскольку не рекомендуется (а иногда даже не законно) использовать большие отрезки времени, следует избегать непрерывного опроса всех передатчиков.

В этом случае я предлагаю, чтобы каждый передатчик мог "разбудить" приемник, отправив автоматическое сообщение. Если это не вызывает реакции, это интерпретируется как обнаружение столкновения. Затем передатчик ожидает определенной задержки (каждая из которых имеет разное значение задержки) - или случайной задержки.

Когда получатель получает этот пакет, он обрабатывает его, затем опрашивает все другие передатчики, а затем возвращается в спящий режим до следующего раза.

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

,

почему вы перепостили свой ответ, который удалили сами? вы можете редактировать и удалять свои сообщения., @Juraj