Задумал решить вопрос подачи индивидуального звукового сигнала нескольким коллегам во время работы на высоте. Короче пейджер каждому. собрал макет, использовал arduiino nano и приемный модуль XY-MK-5V. Передатчик XY-EST/ Радиоканал со скетчем из примера, заработал сразу. Прежде, чем покупать еще модули хочется быть уверенным в надежности такого канала. Пожалуйста подскажите. Достаточно ли варианта селекции вызова путем передачи-проверки "своего"символа? Код (Text): #include <VirtualWire.h> #define BUZZER01_pin 13 void setup() { pinMode (BUZZER01_pin, OUTPUT); vw_setup(2000); vw_rx_start(); } void loop() { uint8_t buf[VW_MAX_MESSAGE_LEN]; uint8_t buflen = VW_MAX_MESSAGE_LEN; if (vw_get_message(buf, &buflen)) { if (buf[0] != 'z') // каждому пейджеру свой символ,здесь z { return; } digitalWrite(BUZZER01_pin,1); delay(500); digitalWrite(BUZZER01_pin, LOW); delay(500); ; } }
Вот тут на таком наборе получают 100 метров при прямой видимости и четвертьволновой антенне http://vanceance.blogspot.ru/2014/01/xy-mk-5v-arduino.html
По поводу дальности укв-связи у меня нет проблем и вопросов. Знаю, что чем точнее настроена антенна -тем сильнее полезный сигнал и меньше уровень помех. ( В 1968 г. у меня был позывной UB5EDG). Я хотел узнать о надежности селекции разных каналов передачи. Каждый пейджер будет иметь в скетче свою букву (символ), которая будет в сигнале передатчика. Сигнал поступает на все пейджеры сразу, но включиться должен только один из них ( который распознал свою букву). if (buf[0] != 'z') return; Если это слишком примитивный способ кодирования, то подскажите пожалуйста более продвинутый вариант.
Продвинутый вариант - это как минимум какая-нибуль контрольная сумма в посылке. Upd, VirtualWire реализует контрольную сумму, так что над этим думать не надо. Одного байта для идентификации в принципе достаточно, если никто на этой частоте шуметь не будет (а судя по всему эти приемники ловят все, что есть в эфире, без разбора). Так что лучше подумать над более надежным протоколом с подтверждением приема, повторами через случайное время, выслушиванием эфира для поиска паузы под передачу и более надежным кодированием. А если хочется более надежной радиосвязи без построения своего протокола, то можно выбрать радиомодули с уже реализованным протоколом передачи данных, включающим повторные посылки в случае неудачной передачи, квитирование и прочие радости, вроде APC220 или NRF24L01 и кучи подобных.
спасибо! именно это я хотел знать. Пейджеры должны работать в условиях лифтовой шахты. Придется отказаться от этих модулей.
Помехоустойчивый протокол можно реализовать и самому. Это не так сложно, как кажется. А вот работа в шахте лифта - это отдельный вопрос. Тут экспериментировать надо с частотами и мощностью передатчиков. В теории, чем выше частота, тем лучше проницаемость. В этом отношении теоретически вроде как лучше радиомодули с частотой 2400 МГц, а частота около 433 для открытых пространств или в пределах одного помещения. Но на практике все может оказаться и по другому, поскольку еще есть и помехи.
Может быть, я глубоко неправ, но исходил я из следующего. Современный дом представляет из себя типичную клетку Фарадея, поскольку стены его пронизаны сеткой всякого железа (особенно частую сетку дает арматура в железобетоне). Чем выше частота, тем меньше длина волны, тем меньшие ячейки клетки способна преодолеть радиопередача.
Есть неточность. Радиоволны до гига обладают большей дифракцией, т.е. способностью огибать препятствия, в то же время радиоволны диапазона 2,4 подобны световому лучу- только по прямой. огибать препятствия не умеют. а других вариантов, кроме умощнения сигнала нет. В моем случае ведь нет постоянного радиоканала - только короткие включения. может какой-то программный или схемный трюк есть, чтобы использовать "ненадежные" модули на 433 при коротких включениях?
Так надо всего лишь усложнить протокол. 1. Пакет данных должен содержать не только идентификатор получателя, но и идентификатор отправителя. 2. При приеме проверяется не только свой-чужой, но и структура пакета данных, что это "родной" пакет, и что идентификатор отправителя из "дозволенных". 3. Если пакет принят, и он правильный, обратно передается подтверждение, также с указанием идентификаторов отправителя и получателя. 4. Если подтверждение от адресата не получено, пакет посылается еще раз. И так пока не будет получено корректное подтверждение, не истечет время, выделенное на передачу, или пока не будет достигнуто предельное количество попыток передачи. А насчет мощности, это экспериментировать надо, насколько в конкретных условиях добивает.
Как-то очень мудрено и хотя я не программист, думаю что это како-то не то. как же можно квитировать сигнал пейджером, который работает только на прием? мне попроще протокол. Мне нужно дать сигнал "второму" и чтобы он не попал к "пятому" ! Вопросы прохождения меня не волнуют - я их решу.
Если нет обратной связи, то остается просто несколько раз повторить посылку, чтобы гарантировать доставку. Ну и проверять при приеме, что пакет корректный и от "разрешенного" отправителя.