реклама на сайте
подробности

 
 
> Передача сигналов по радиоканалу., Передача на частоте 433.92 МГц
Masterskaia
сообщение Nov 6 2009, 11:28
Сообщение #1





Группа: Участник
Сообщений: 14
Регистрация: 6-11-09
Пользователь №: 53 452



Описание устройства:
Есть 50 столиков и одна барная стойка. Клиент, сидящий за столиком №3, нажимает на кнопку передатчика. У бармена, любым удобным для меня способом, появляется сигнал о том, что официанта вызывает столик №3.
У меня есть готовая конструкция такого устройства. В конструкции один большой недостаток. Если на столике №2 и №3 одновременно нажали на кнопку, то к бармену поступит только один сигнал, второй потеряется или вообще не поступит ни один сигнал, так как передатчики работают на одной частоте и могут перекрыть друг друга.
Я решил поступить иначе. Буду использовать кнопки с обратной связью. Допустим, столик №3 нажал кнопку, и столик №2 нажал кнопку. Устройство у бармена постоянно по очереди опрашивает все кнопки. Если кнопка №2 была нажата, то при опросе этой кнопки она незамедлительно передаст код. Тем временем кнопка №3 то же была нажата, но пока на неё не поступит её же код, идентификация, она не передаст в эфир свой код обратно на приёмник.
Из всего проекта я не могу решить только одну проблему, о которой я и пишу ниже. Надеюсь на Вашу помощь.
Проект пишу на языке С, он мне достаточно хорошо знаком.

Опишу свою задачу:
1) Цель проекта.
2) Аппаратура.
3) Проделанная работа.
4) Полученный результат.
5) Вопрос.

Цель проекта:
Необходимо по радиоканалу (433.92 МГц) передать сигнал в COM порт компьютера с предварительным редактированием данных.

Аппаратура:
Передатчик – набор брелков от гаражных ворот, автосигнализаций, и ещё от чего то, с частотой 433.92 Мгц.
Приёмник – микросхема RX5000 с преобразователем уровня с 3 вольт до 5 вольт и подключённая к Atmega 8 к UART.
Принципиальная схема:
Прикрепленное изображение


Проделанная работа:
1) Создал проект в CVAVR с именем UART. Сгенерировал первоначальные настройки

Прикрепленное изображение
Прикрепленное изображение


Программа сгенерировала код в который я вставил в бесконечный цикл только вот эту строку:

Код
while (1) //бесконечный цикл
      {
      putchar(getchar()); // Вывод данных в терминал
      };


2) Скомпилировал код программы, стёр микроконтроллер, прошил скомпилированный файл. Прошил фузы и Лок биты:


Lock bits:
LB1=1
LB2=1
BLB01=1
BLB02=1
BLB11=1
BLB12=1


Fuse bit:
CKSEL0=1
CKSEL1=0
CKSEL2=1
CKSEL3=1
SUT0=1
SUT1=1
BODEN=1
BODLEVEL=1
BOOTRST=1
BOOTSZ0=1
BOOTSZ1=1
EESAVE=1
CKOPT=1
WDTON=1
RSTDISBL=1




Включил терминал на ПК, настроил COM порт согласно настройкам МК – 9600, 8N1. В терминал сразу же стал передаваться «мусор» шум эфира. Как только я нажимал кнопки различных передатчиков, в терминал поступали упорядоченные символы. При доскональном рассмотрении ситуации я нашел конец и начало передаваемой передачи кода.
Вернусь немного назад. У меня есть рабочая прошивка устройства, на которой я проверял работу всех имеющихся у меня пультов. Правда схема МК немного отличалась от моей схемы. Отличие состояло в том, что выход приёмника подключен не на вход UART, а к выводам PD2(INT0) и PD3(INT1) через сопротивления. Ниже привожу часть схемы.

Прикрепленное изображение


С этой рабочей прошивкой и этой схемой я принимал на терминал вот такие сигналы в ASCII
0001A46F>
0001A46F>
0002867E<
02C467CE>
02C467FE>
0001A46F>
0001A46F>
И вот такой сигнал я принял в HEX стандарте.
30 0 30 31 41 34 36 46 3E 0D 0A


Полученный результат.
Вернёмся к моему варианту. Как я уже говорил, при включении МК у меня в терминал выводился «мусор» И после нажатия на кнопки различных передатчиков я принимал упорядоченный набор символов. Но этот упорядоченный набор меня ввёл в тупик. Вот он в HEX стандарте при передаче вот этого кода 0001A46F>

F8 F8 F8 C0 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 C0 C0 C0 C0 C0
F8 F8 F8 C0 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 C0 C0 80 C0 C0
F8 F8 F8 C0 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 C0 C0 C0 C0 C0
F8 F8 F8 80 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 F8 C0 80 C0 C0 C0

Я не могу дать объяснение этому сигналу и соответственно сделать какие то выводы.

Вопросы:
1) Что я в своём проекте мог сделать не так?
2) Как мне организовать проект, что бы я выход приёмника смог подключить к любому входу МК, кроме входа UART, а с выхода UART мог передать полученный сигнал от приёмника в терминал?
3) Смогу ли я при решении вопроса №2 предварительно записать принятый с приёмника сигнал в переменную и сделать с ним необходимые мне вычисления?
4) Как мне определить начало и конец посылки сигнала? Я представляю себе определение начала и конца сигнала по стартовому и стоповому биту. Так как они равны 0 то я могу из всего переданного сигнала программой написанной для ПК выделить только один, нужный мне сигнал.
5) Какие есть способы получения нужного мне сигнала из всей повторяющейся посылки?
Прошу всех желающий откликнутся и привести в пример рабочий кусок кода с описанием. Это мой первый проект с AVR, не считая включения светодиодов и кнопок.


--------------------
Всегда в поиске...
Go to the top of the page
 
+Quote Post
3 страниц V  < 1 2 3  
Start new topic
Ответов (30 - 42)
rx3apf
сообщение Nov 6 2009, 16:44
Сообщение #31


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(Masterskaia @ Nov 6 2009, 19:29) *
Меня непосредственно интересует HCS301 KEELOQ Code так как есть возможность приобрести таких кнопок от гаражных ворот сотни по 10$ за штуку. А если учесть, что они используют один и тот же протокол шифрования, то осталось только разобраться в этом протоколе, написать свою программу дешифрования и результат налицо. Теперь понятно почему у меня в рабочем проекте и прошивке все брелки с этой HCS301 прекрасно отображают свой код в терминале. Где бы только найти протокол этого KEELOQ laughing.gif

Там в аппликухах все должно быть. Алгоритм собственно шифрования вряд ли нужен, ведь требуется определить номер брелка, а все эти наворот с плавающим кодом - они для другого... Себестоимость комплектующих для решения на CC2500+ATmega8 будет даже меньше (тем более что вряд ли годится корпус автомобильного брелка), а будет обратный канал...

Сообщение отредактировал rx3apf - Nov 6 2009, 16:45
Go to the top of the page
 
+Quote Post
defunct
сообщение Nov 6 2009, 17:28
Сообщение #32


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(rx3apf @ Nov 6 2009, 18:44) *
Себестоимость комплектующих для решения на CC2500+ATmega8 будет даже меньше

У CC2500 очень жесткие требования к кварцу, по ДШ нужен строго 26-27Mhz, а их найти довольно проблематично.
Как думаете, если поставить 25Mhz будет работать?
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Nov 6 2009, 17:41
Сообщение #33


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(defunct @ Nov 6 2009, 20:28) *
У CC2500 очень жесткие требования к кварцу, по ДШ нужен строго 26-27Mhz, а их найти довольно проблематично.
Как думаете, если поставить 25Mhz будет работать?

Вероятно да. Но это за пределами спецификации, я такое делать сильно не рекомендую. На самом деле, никакой проблемы нет. Более того, настоятельно не рекомендую искать дешевый ширпотреб в HC-49, слишком велика вероятность того, что либо будет неприлично большое начальное отклонение частоты либо, впридачу, еще и кварц окажется на третюю гармонику. Качественный SMDшный кварц с куда большей вероятностью окажется тем, что нужен, а стоить будет не сильно дороже. И все равно, нужно прикинуть возможный разброс номинала несущей, при необходимости сделать калибровку, особенно при узкой полосе. Либо использовать CC1100 на 433 MHz, допуск при прочих равных будет пропорционально больше. Ну и в любом случае помнить о том, что в диапазоне хватает всякой дряни - на 433 брелки и LPDшки, а на 2.4 - bluetooth и WiFi, причем в ресторане-то этого добра может оказаться еще больше...
Go to the top of the page
 
+Quote Post
mempfis_
сообщение Nov 6 2009, 17:47
Сообщение #34


Профессионал
*****

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Цитата(rx3apf @ Nov 6 2009, 20:44) *
Себестоимость комплектующих для решения на CC2500+ATmega8 будет даже меньше (тем более что вряд ли годится корпус автомобильного брелка), а будет обратный канал...


Стоит также посмотреть на Silabsовские приёмо-передатчики аналоги rf12 - si4421a например.
Корпус у них удобный для пайки вручную и управление лёгкое. У нас на м48+si4421a построена сеть датчиков с базовой станцией способной работать на 16 каналах с опросом до 16 датчиков на каждом канале (кол-во определяется только программой).
Go to the top of the page
 
+Quote Post
demaven
сообщение Nov 9 2009, 01:40
Сообщение #35


Частый гость
**

Группа: Свой
Сообщений: 108
Регистрация: 10-05-05
Из: Киргизия Бишкек
Пользователь №: 4 886



Уважаемые, а можно ли подавать на вход передатчика сигнал с уарта? Где вероятность, что вы примете его правильно, ведь в этом сигнале МОЖЕТ присутствовать ПОСТОЯННАЯ составляющая, и, скорее всего, она там будет!!! Для передачи по радиоканалу, как и по длинным линиям, необходимо преобразовать сигнал так, чтобы в нем отсутствовала постоянная составляющая. В радиобрелках часто передают манчестером, это хорошо видно осциллографом, есть сигналы только двух длительностей, а в уарте они могут быть и трех и более.
Go to the top of the page
 
+Quote Post
sensor_ua
сообщение Nov 9 2009, 05:55
Сообщение #36


Профессионал
*****

Группа: Свой
Сообщений: 1 266
Регистрация: 22-04-05
Из: Киев
Пользователь №: 4 387



Цитата
Для передачи по радиоканалу, как и по длинным линиям, необходимо преобразовать сигнал так, чтобы в нем отсутствовала постоянная составляющая.
Существует немало передатчиков, в которых есть соответствующее преобразование и даже пакетирование, например тот же СС2500. Если такого преобразования на борту нет, то об этом и не пишут в DS:) Только длинные линии тут ни при чём - просто определённая схемотехника демодуляторов (а-ля data slicer http://www.maxim-ic.com/appnotes.cfm/an_pk/3435 http://www.maxim-ic.com/appnotes.cfm/an_pk/3671) наиболее эффективна при постоянной составляющей модулирующего сигнала близкой к нулю.


--------------------
aka Vit
Go to the top of the page
 
+Quote Post
niXto
сообщение Nov 9 2009, 09:43
Сообщение #37


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 24-06-09
Из: Беларусь
Пользователь №: 50 607



Цитата(demaven @ Nov 9 2009, 04:40) *
Уважаемые, а можно ли подавать на вход передатчика сигнал с уарта? Где вероятность, что вы примете его правильно, ведь в этом сигнале МОЖЕТ присутствовать ПОСТОЯННАЯ составляющая, и, скорее всего, она там будет!!! Для передачи по радиоканалу, как и по длинным линиям, необходимо преобразовать сигнал так, чтобы в нем отсутствовала постоянная составляющая. В радиобрелках часто передают манчестером, это хорошо видно осциллографом, есть сигналы только двух длительностей, а в уарте они могут быть и трех и более.

Можно, но дальность и помехоустойчивость будут ГОРАЗДО меньше, чем при том же манчестере, не говоря уже о FSK который юзается в большинстве чипов трансиверов
Go to the top of the page
 
+Quote Post
Masterskaia
сообщение Nov 9 2009, 13:24
Сообщение #38





Группа: Участник
Сообщений: 14
Регистрация: 6-11-09
Пользователь №: 53 452



И так, продолжая тему я закинул техзадание своим коллегам, умным головам. Хочу паралельно в теме выложить зарядку для головы. У кого есть желание, свободное время прошу принять участие в разработке. Как я уже говорил в первом посте, идея взята с готовой конструкции. Есть работающая прошивка в которой написана программа-дешифратор к брелкам с протоколом KEELOQ.
Задача: Найти тот самый кусок кода с дешифровкой и по аналогии написать его на С.
Основной принцип работы программы будет следующий: Сигнас с передатчика поступает в первый UART или на любой порт МК. Программа-дешифратор обрабатывает полученный сигнал и записывает его в переменную. А далле с этой переменной можно делать всё, что душе угодно.
И так, у кого есть желание поработать мозгами я могу выложить архив рабочего устройства, с принципиальной схемой, прошивкой и кратким описанием работы устройства.


--------------------
Всегда в поиске...
Go to the top of the page
 
+Quote Post
Qwertty
сообщение Nov 9 2009, 23:17
Сообщение #39


Местный
***

Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527



Цитата(Masterskaia @ Nov 9 2009, 16:24) *
Есть работающая прошивка в которой написана программа-дешифратор к брелкам с протоколом KEELOQ.
Задача: Найти тот самый кусок кода с дешифровкой и по аналогии написать его на С.

Желающих вряд ли найдете. Разве что переместив тему в "Предлагаю работу" smile.gif
А так не понятно зачем Вам декодировать Keeloq? В посыке от hcs301 ( в большинстве дешевых сигналок и ворот используется именно она) и так есть все что нужно для счастья - 28 битный серийный номер, состояние кнопок, состояние батареи и признак повторной посылки. Незакодированные! Берите и пользуйтесь. А "плавучая" часть пусть живет сама по себе.
Go to the top of the page
 
+Quote Post
demaven
сообщение Nov 10 2009, 01:12
Сообщение #40


Частый гость
**

Группа: Свой
Сообщений: 108
Регистрация: 10-05-05
Из: Киргизия Бишкек
Пользователь №: 4 886



У родителя темы две проблемы - надежность идентификации и борьба с коллизиями. С надежностью связи вроде ясно, передавать не уарт, а нечто другое, кодов не великое множество, но несколько штучек есть, остаются коллизии. Один из способов - повтор передачи через случайный промежуток времени с признаком повтора. Этот способ не требует двунаправленной связи, но коллизии сохраняются. Если есть двунаправленная связь, то коллизии не страшны, опрос по номеру и вперед. На каком оборудовании - дело второе.
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Nov 10 2009, 09:44
Сообщение #41


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(demaven @ Nov 10 2009, 04:12) *
Один из способов - повтор передачи через случайный промежуток времени с признаком повтора. Этот способ не требует двунаправленной связи, но коллизии сохраняются.

Увеличивая скорость передачи и уменьшая длину пакета, вероятность коллизий можно многократно уменьшить, а используя повтор с действительно хорошей рандомизацией - снизить ее вероятность практически до нуля. Но это не решает проблем жамминга (учитывая, что диапазон загажен сверх всякой меры). Поэтому без обратного канала задача нереализуема. Если, конечно, нужна хоть минимальная надежность системы...
Go to the top of the page
 
+Quote Post
Andrew_KMR
сообщение Nov 29 2009, 01:23
Сообщение #42


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 11-12-07
Из: г.Кемерово
Пользователь №: 33 175



А почему не применить скажем nRF2401, на 2.4ГГц...?!
Есть возможность использовать режим работы сразу с двумя каналами приёма/передачи.
А nRF24L01 так вобще может сразу с 6-ю подобными устройствами обмениваться.
Что касаемо KeeLoq, могу выложить код приёма посылок от HCS300, написан на ассемблере,
приёмником был RR10 от TELECONTROLLI.
Go to the top of the page
 
+Quote Post
V_G
сообщение Nov 29 2009, 02:55
Сообщение #43


Профессионал
*****

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



Подкину еще бензинчика в огонь
1. А если не зацикливаться на AVR, а посмотреть в сторну rfpic http://www.trt.ru/products/microchip/rfpic.htm
Там весьма демократичные цены
2. Я на 128 меге на 16 МГц делал 32-канальный программный дешифратор манчестера (1200 бод). При параллельном поступлении на все каналы информации вполне успевали декодировать 23-24 канала. В реальной ситуации (с разбежкой по времени) все 32 канала пашут вполне надежно, так что проц 1 каналом манчестера сильно загрузить сложно.
3. Xmega32 имеет корпус как у меги 16 (qfp44) и 5 комовских портов
Go to the top of the page
 
+Quote Post

3 страниц V  < 1 2 3
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 20:52
Рейтинг@Mail.ru


Страница сгенерированна за 0.01471 секунд с 7
ELECTRONIX ©2004-2016