Страница 1 из 4

Блок чтения кода радио датчиков 433 МГц.

Добавлено: 12 апр 2016, 07:09
Max
Предлагаю создать блок для работы (чтения, записи, обработки) с распространенными беспроводными датчиками на 433 МГц (так же касается датчиков на 315МГц) разного назначения (датчики дыма, движения, герконовые и т.д.). Такие датчики используются в домашних GSM сигнализациях.
Блок был бы очень полезен для конструкций типа "Умный дом" и интеграции с уже установленными подобными системами.
К тому же, эти датчики свободно продаются и доступны для всех начинающих и опытных конструкторов.
P.S. Блок либо самодельный (для тех, кто хорошо знает вопрос и протокол связи), либо Разработчик создаст. И вообще, возможно ли создать такой блок?

Блок чтения кода радио датчиков 433 МГц.

Добавлено: 04 май 2016, 12:21
Boroda
Ну сделать пользовательский блок несложно, единственная проблема - в приемнике необходимо использовать аппаратный 16-разрядный таймер с тиками 1 мкс (ну +- можно поиграться) и необходимо довольно часто (максимум через 80мкс) запускать подпрограмму сканирования выхода приемника. В приложении кусок кода для самописного протокола (прием-пердача) на PicBasic, который легко переносится на СИ. Нужно немного поиграться с таймингами и данными, чтоб получился протокол SC2262 или EV1527).

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




Блок чтения кода радио датчиков 433 МГц.

Добавлено: 04 май 2016, 22:52
Boroda
Вот нарисовал тут пользовательский блок для приема сигнала с кодеров SC2262 или EV1527. Описание и рекомендации внутри, надеюсь Автор FLProg доработает как надо. Я, к сожалению, с AVR и СИ не дружу, всю свою сознательную жизнь кодил под ПИКи на Бейсике и АСМе.
7204753.jpg
версия FLProg 1.11.1

Оптимизировал код, обновил версию

Блок чтения кода радио датчиков 433 МГц.

Добавлено: 05 май 2016, 01:16
Boroda
Ну а эта версия СИ+FBD должна более лояльно относиться к загроможденности программы, т.к. фильтр входных импульсов выполнен на стандартных таймерах.

Блок чтения кода радио датчиков 433 МГц.

Добавлено: 05 май 2016, 02:14
Boroda
Ну и еще одна версия с выходом Unsigned Long и String. Немного оптимизировал код.

Блок чтения кода радио датчиков 433 МГц.

Добавлено: 05 май 2016, 17:32
Boroda
Перевел все на СИ, объединил блоки, привязал к глобальному таймеру micros(). Работает намного стабильнее. На этом, я думаю, надо закончить.

Блок чтения кода радио датчиков 433 МГц.

Добавлено: 06 май 2016, 21:10
CraCk
Может все это сделать на библиотеках? Может будет работать понадежней?
https://dzrmo.wordpress.com/2012....android
https://github.com/smartin....s1527.h
http://statusorel.ru/technol....ch.html
https://github.com/sui77/rc-switch

Блок чтения кода радио датчиков 433 МГц.

Добавлено: 07 май 2016, 15:23
Boroda
Да и так хорошо работает. К библиотекам отношусь скептически, не оптимально люди-человеки иногда делают, да и Delay() очень любят использовать. Поэтому стараюсь писАть сам.

Блок чтения кода радио датчиков 433 МГц.

Добавлено: 10 май 2016, 20:04
vovka1973
Boroda писал(а):Да и так хорошо работает. К библиотекам отношусь скептически, не оптимально люди-человеки иногда делают, да и Delay() очень любят использовать. Поэтому стараюсь писАть сам.
Для приема блок работает отлично ,не могли бы вы сделать блок для передачи?

Блок чтения кода радио датчиков 433 МГц.

Добавлено: 11 май 2016, 15:10
CraCk
vovka1973 писал(а):Для приема блок работает отлично
Какой датчик пробовали подключать?
vovka1973 писал(а):не могли бы вы сделать блок для передачи?
Да было бы неплохо. Можна тогда делать беспроводные датчики и привязывать к китайским сигнализациям.

Попробовал подключить пульт от сигналки 1527. Очень плохо работает. Код отправляет в уарт через 3-4 раза, при щелканье одной кнопкой. Если щелкать четыре кнопки одна за другой с интервалом 1 сек. то тогда срабатывает через раз. Иногда с одной кнопки принимает разные значения. Ростояние пульта от приемника 40см.

Блок чтения кода радио датчиков 433 МГц.

Добавлено: 11 май 2016, 17:10
Boroda
CraCk, попробуйте нормальный приемник поставить, а не китайскую поделку с катушками за 15 рублей. Причем его надо запитать через катушку 100мкГ и поставить кондеры 100мкФ и 0,1, иначе он забивается генератором Ардуины. Нормальный приемник раскачивается со второй-пятой посылки, а китайские модули с десятой и ловят метров на 10. Да и вообще протокол 2262 и 1527 совсем никудышный. Нет преамбулы для раскачки приемника, нет контрольной суммы. Посмотрите во втором сообщении картинку - так должен выглядель нормальнай протокол (преамбула,адрес, данные,контрольная сумма). По такому принципу парнишке собирал приемник/передатчик, так он на несколько километров связь 433 кидал. Все это было сделано на PIC12F629 - аналог тини13.

Добавлено (11.05.2016, 16:34)
---------------------------------------------
И резисторы надо посмотрель частотозадающие, может длина импульсов в посылке другая. А может у Вас что-то тяжелое еще в программе крутится. К моему блоку процессор должен обращаться хотябы раз в 80-100 мкс.

Добавлено (11.05.2016, 17:10)
---------------------------------------------
Должен нормально работать с 1527 с резистором 330кОм. Дома буду, расширю диапазон принимаемых импульсов до 2,2мс.

Блок чтения кода радио датчиков 433 МГц.

Добавлено: 11 май 2016, 21:03
Boroda
Расширил диапазон ширины принимаемых импульсов. Должен нормально принимать сигналы с 1527 с резисторами 300..470кОм и с 2262 с резисторами 2,2..4,7МОм. Тестируйте. В архиве блок, проект FLProg_1.11.1  и тест китайского приемника (с ним работает только на расстоянии 10 см).

Добавлено (11.05.2016, 21:03)
---------------------------------------------
Модули SYN480R и SYN115 должны быть не хуже DRA887RX и DRA888TX.
DRA тут 10 комплектов за 900 рублей (самое дешевое, что нашел), ну а SYN на ebay полно.

Блок чтения кода радио датчиков 433 МГц.

Добавлено: 12 май 2016, 15:04
CraCk
Boroda
Тестируйте.
Все заработало!!! Данные цифры летят ка с пулемета) Иногда проскакивают другие цифры. Еще проблема flprog монитора, он не успевает обрабатывать такое количество данных. При отпускание кнопки на брелке. Данные в мониторе еще продолжают приходить. В IDE мониторе такого нет.
Boroda
Нормальный приемник раскачивается со второй-пятой посылки, а китайские модули с десятой и ловят метров на 10Какая цена такой и сигнал.
Но для домашних поделок хватитает и транзисторного приемника. И еще, блок будет работать с приемником в диапазоне 315мГц?
Boroda писал(а):Модули SYN480R и SYN115 должны быть не хуже DRA887RX и DRA888TX.
А такие модули подойдут?
http://ru.aliexpress.com/item....2060402
Boroda
В архиве блок, проект FLProg_1.11.1  и тест китайского приемника (с ним работает только на расстоянии 10 см)
У меня работает на 10м без прямой видимости и без антенны.  Попробуйте модную зеленую катушку покрутить, возможно частота сбита.
Вот реализация на таких приемниках радиореле.
https://www.youtube.com/watch?v=qp1SpD9vGn4
https://www.youtube.com/watch?v=R8oyZ5E3hEY
Boroda
Да и вообще протокол 2262 и 1527 совсем никудышный
На форуме очень не хватает знатоков по радиочастотной связи знающих программирование. А автор программы не успевает за всеми хотелками пользователей. Если есть желание и время, можете реализовать в Flprog разные протоколы беспроводной передачи данных, в том числе и Rolling code?

Блок чтения кода радио датчиков 433 МГц.

Добавлено: 12 май 2016, 18:13
vovka1973

Но для домашних поделок хватитает и транзисторного приемника. И еще, блок будет работать с приемником в диапазоне 315мГц?
У меня работает ! Ну а как с передачей быть, кто нибудь знает?

Блок чтения кода радио датчиков 433 МГц.

Добавлено: 12 май 2016, 20:14
Boroda
CraCk писал(а):А такие модули подойдут?
Подойдут.
CraCk писал(а):реализовать в Flprog разные протоколы беспроводной передачи данных
С делаю чуть попозже.
vovka1973 писал(а):Ну а как с передачей быть, кто нибудь знает?
Сделаю чуть попозже. Хотите датчики к какой-то системе сделать?

Блок чтения кода радио датчиков 433 МГц.

Добавлено: 12 май 2016, 23:02
Boroda
Тестируйте передатчик 2262.

Блок чтения кода радио датчиков 433 МГц.

Добавлено: 13 май 2016, 00:45
CraCk
Можете по простому обяснить разницу между протоколом 2262 и 1527. Отличаються только количеством передаваемых данных?
По этих протоколах можна передавать данные от датчиков например температуру?
Ели я хочу скопировать какой нибудь датчик, я получаю данные в виде long int. После этого можно передавать цифры в блок TX прямо на сигналку?

Блок чтения кода радио датчиков 433 МГц.

Добавлено: 13 май 2016, 10:03
Boroda
Вот как-то так выглядит протокол 2262/1527.
5334764.jpg
Температуру или еще какие-либо данные передать с помощью него сложно, только дискретные сигналы (сработало/не сработало). Для данных сделаю другие блоки приема/передачи на 1,2,3,4,5 интов с адресом и контрольной суммой. С помощью инта спокойно можно передавать и влажность, и температуру с точностью до двух знаков после запятой (+/-327.67). В передатчике (Float*100) -> Int, в приемнике Int->Float и результат делим на 100.

Блок чтения кода радио датчиков 433 МГц.

Добавлено: 13 май 2016, 15:11
CraCk
Boroda писал(а):Тестируйте передатчик 2262.
В вашем блоке написано что 
Подаваемое на вход число ULong не более 16777215 (24 бит единиц)
А в даташите 2262
PT2262 is a remote control encoder paired with PT2272 utilizing CMOS Technology. Itencodes data and address pins into a serial coded waveform suitable for RF or IR
modulation. PT2262 has a maximum of 12 bits of tri-state address pins providing up to
531,441 (or 312) address codes; thereby, drastically reducing any code collision and
unauthorized code scanning possibilities.
Так понимаю 12 бит и число не более 531441.
Как понимать?
Еще в примере Вы создали симметричный генератор 50мсек. Это значение моно менять, или оно разное для разных радиочастот.

Блок чтения кода радио датчиков 433 МГц.

Добавлено: 13 май 2016, 17:08
Boroda
В 2262 1 бит это 2 импульса (короткий_короткий - 0, длинный_длинный - 1, короткий_длинный - F), таким образом комбинаций получается 3^12. При этом для настройки используется всего 12 ног. В 1527 один бит это 1 импульс. Я их приравнял и принимаю 24 импульса отдельно, и передаю 24 импульса отдельно, поэтому число комбинаций получается 2^24=16777215, как у 1527 с учетом битов кнопок ((2^20)*(2^4)). Генератор - период передачи посылок. У стандартного пульта 2262 период около 80мс. В моем варианте 100мс.