|
Передача сигналов по радиоканалу., Передача на частоте 433.92 МГц |
|
|
|
Nov 6 2009, 11:28
|

Группа: Участник
Сообщений: 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, не считая включения светодиодов и кнопок.
--------------------
Всегда в поиске...
|
|
|
|
|
 |
Ответов
|
Nov 6 2009, 13:39
|

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

|
Уважаемые участники данной темы, я искренне признателен Вам всем за присланные Вами советы. Но у меня пока остался открытым следующий вопрос: Как мне организовать проект, что бы я выход приёмника смог подключить к любому входу МК, кроме входа UART, а с выхода UART мог передать полученный сигнал от приёмника в терминал?
--------------------
Всегда в поиске...
|
|
|
|
|
Nov 6 2009, 14:08
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Цитата(Masterskaia @ Nov 6 2009, 16:39)  Как мне организовать проект, что бы я выход приёмника смог подключить к любому входу МК, кроме входа UART, а с выхода UART мог передать полученный сигнал от приёмника в терминал? Начать с правильного выбора элементной базы. Отказаться от дорогого и неудобного RX5000 и уж, разумеется, не стоит полагаться на прозрачную передачу через него асинхронной посылки с UART. Программный-то полудуплексный UART на небольшой скорости сделать не просто, а очень просто. На любой ноге (хотя предпочтительно для этого использовать аппаратные средства, типа ICP). Но не стоит так делать, честное слово. Все ж надо делать модем. А еще лучше, по нынешним временам - взять радиотракт с встроенным модемом. Например, Chipcon/TI CC1100 (или CC2500). Он заодно (и в первую очередь, исходя из озвученных требований) решит и проблему обратного канала. Можно взять и микроконтроллер с встроенным трансивером (из того же выводка от TI), но это получится дороже и может оказаться менее удобным. Atmega8 (или 48 или 88) и CC1100 - очень удобная связка. Но в освоении CC11xx несколько сложнее, да. Зато потом, после освоения - полная свобода (говорю как автор десятка изделий на этой связке, с общим тиражом уже под 100K, если не больше).
|
|
|
|
|
Nov 6 2009, 14:26
|

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

|
Цитата(rx3apf @ Nov 6 2009, 16:08)  Начать с правильного выбора элементной базы. Отказаться от дорогого и неудобного RX5000 и уж, разумеется, не стоит полагаться на прозрачную передачу через него асинхронной посылки с UART. Программный-то полудуплексный UART на небольшой скорости сделать не просто, а очень просто. На любой ноге (хотя предпочтительно для этого использовать аппаратные средства, типа ICP). Но не стоит так делать, честное слово. Все ж надо делать модем. А еще лучше, по нынешним временам - взять радиотракт с встроенным модемом. Например, Chipcon/TI CC1100 (или CC2500). Он заодно (и в первую очередь, исходя из озвученных требований) решит и проблему обратного канала. Можно взять и микроконтроллер с встроенным трансивером (из того же выводка от TI), но это получится дороже и может оказаться менее удобным. Atmega8 (или 48 или 88) и CC1100 - очень удобная связка. Но в освоении CC11xx несколько сложнее, да. Зато потом, после освоения - полная свобода (говорю как автор десятка изделий на этой связке, с общим тиражом уже под 100K, если не больше). Только, что ознакомился сописанием CC2500, приглянулась. Но сейчас я не готов приобрести эту микросхему, но обязательно её на неделе опробую. Если Вы разрабатывали конструкции которые используют часть моей задумки, прошу поделиться опытом. У Вас наверное был опыт работы с моими исходными данными и Вы наверное так же стакивались с моими проблеммами. Я уже отключал от МК приёмник и напрямую аппаратный UART МК подключал к терминалу. В терминале я писал что либо и при отправке в МК я незамедлительно получал то же, что и отправил обратно в терминал. Поэтому осмелюсь сделать вывод: МК программно правильно настроен на работу с COM потром. А вот аппаратно не уверен. Так как с приёмника я получаю какую то постоянную последовательность кода, но на совершенно не похожа на то, чего ожидалось получить. Поэтому либо проблемма со скоростью, что мало вероятно, либо, но это вообще абсурд, сигнал с приёмника нужно сначало инвертировать, и только потом отправлять на UART МК. И тогда сразу же следующий вопрос: А как я спогу принятый сигнал на МК преджварительно обработать? В какую переменную или регистр он попадает?
--------------------
Всегда в поиске...
|
|
|
|
|
Nov 6 2009, 14:50
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Цитата(Masterskaia @ Nov 6 2009, 17:26)  Только, что ознакомился сописанием CC2500, приглянулась. Но сейчас я не готов приобрести эту микросхему, но обязательно её на неделе опробую. Если Вы разрабатывали конструкции которые используют часть моей задумки, прошу поделиться опытом. Поскольку я пишу на asm, то вряд ли мои наработки пригодятся. И, естественно, know how никто не раскрывает  Цитата Так как с приёмника я получаю какую то постоянную последовательность кода, но на совершенно не похожа на то, чего ожидалось получить. Поэтому либо проблемма со скоростью, что мало вероятно, либо, но это вообще абсурд, сигнал с приёмника нужно сначало инвертировать, и только потом отправлять на UART МК. И тогда сразу же следующий вопрос: А как я спогу принятый сигнал на МК преджварительно обработать? В какую переменную или регистр он попадает? Лениво вникать в предисторию, поэтому спрошу, как я понял - так что, Вы ожидаете, что принятый приемником RX5000 сигнал брелка можно передать в компьютер через UART непосредственно ? Просто забудьте это как страшный сон, и больше не вспоминайте. Начинать надо с принципов работы кодера в брелке, с формата его выходных данных. Просто в данном случае это не нужно и неинтересно, поскольку для решения поставленной задачи неприменимо (по причине абсолютной необходимости обратного канала. Которая, кстати, проистекает в первую очередь вовсе не из-за гипотетической возможности одномоментного нажатия кнопок на двух брелках)... Цитата И тогда сразу же следующий вопрос: А как я спогу принятый сигнал на МК преджварительно обработать? В какую переменную или регистр он попадает? Это про обработку выхода RX5000 ? Превратить входной сигнал в последовательность "0" и "1", декодировать, превратить в осмысленную посылку для компьютера и передать по UART. А как декодировать - зависит от формата посылки, определяемой кодером. И уж, конечно, это не 115200,8,n,1, и штатный UART тут не в помощь (впрочем, могу представить себе вариант, когда можно было бы применить, в конце концов, UART успешно используют при общении, скажем, с 1-wire).
|
|
|
|
Сообщений в этой теме
Masterskaia Передача сигналов по радиоканалу. Nov 6 2009, 11:28 _dem Мне кажется, что с вашими исходными данными задача... Nov 6 2009, 11:37 Masterskaia Я уже морально готов к тому, что бы использовать п... Nov 6 2009, 11:45 ut1wpr Цитата(Masterskaia @ Nov 6 2009, 14:45) Я... Nov 6 2009, 13:13  Masterskaia Цитата(ut1wpr @ Nov 6 2009, 15:13) Проток... Nov 6 2009, 13:24  mempfis_ Если готовы поменять радиочастотную часть то проше... Nov 6 2009, 13:27 Vetal-Soft Так происходит по тому что приемник rx5000 пререда... Nov 6 2009, 11:58 defunct Цитата(Masterskaia @ Nov 6 2009, 13:28) 1... Nov 6 2009, 12:03 Masterskaia Вроде при сборке этого приёмника в datasheet ничег... Nov 6 2009, 12:03 defunct Цитата(Masterskaia @ Nov 6 2009, 14:03) В... Nov 6 2009, 12:05 Masterskaia У меня Atmega8L она работает до 8 МГц. Поэтому в с... Nov 6 2009, 13:00 defunct Цитата(Masterskaia @ Nov 6 2009, 15:00) П... Nov 6 2009, 14:06 mdmitry Почитайте статьи по организации систем беспроводны... Nov 6 2009, 13:49 Vetal-Soft Цитата(Masterskaia @ Nov 6 2009, 18:39) У... Nov 6 2009, 14:05 Masterskaia Цитата(Vetal-Soft @ Nov 6 2009, 16:0... Nov 6 2009, 14:10  defunct Цитата(Masterskaia @ Nov 6 2009, 16:10) я... Nov 6 2009, 14:16 Vetal-Soft Цитата(Masterskaia @ Nov 6 2009, 19:10) У... Nov 6 2009, 14:31 Masterskaia Цитата(Vetal-Soft @ Nov 6 2009, 16:3... Nov 6 2009, 14:44 rx3apf Цитата(Vetal-Soft @ Nov 6 2009, 17:3... Nov 6 2009, 16:03 Masterskaia Решение с двумя UART конечно же интересное но когд... Nov 6 2009, 14:31 defunct Цитата(Masterskaia @ Nov 6 2009, 16:31) н... Nov 6 2009, 14:40 Vetal-Soft Цитата(Masterskaia @ Nov 6 2009, 19:31) Р... Nov 6 2009, 14:38 Masterskaia И так, из всего написанного делаю следующие выводы... Nov 6 2009, 15:27 Masterskaia Проанализировав datasheet HCSxxx стало понятно, чт... Nov 6 2009, 16:11 rx3apf Цитата(Masterskaia @ Nov 6 2009, 19:11) Е... Nov 6 2009, 16:18 Masterskaia Меня непосредственно интересует HCS301 KEELOQ Cod... Nov 6 2009, 16:29 rx3apf Цитата(Masterskaia @ Nov 6 2009, 19:29) М... Nov 6 2009, 16:44  defunct Цитата(rx3apf @ Nov 6 2009, 18:44) Себест... Nov 6 2009, 17:28   rx3apf Цитата(defunct @ Nov 6 2009, 20:28) У CC2... Nov 6 2009, 17:41  mempfis_ Цитата(rx3apf @ Nov 6 2009, 20:44) Себест... Nov 6 2009, 17:47 demaven Уважаемые, а можно ли подавать на вход передатчика... Nov 9 2009, 01:40 niXto Цитата(demaven @ Nov 9 2009, 04:40) Уважа... Nov 9 2009, 09:43 sensor_ua ЦитатаДля передачи по радиоканалу, как и по длинны... Nov 9 2009, 05:55 Masterskaia И так, продолжая тему я закинул техзадание своим к... Nov 9 2009, 13:24 Qwertty Цитата(Masterskaia @ Nov 9 2009, 16:24) Е... Nov 9 2009, 23:17 demaven У родителя темы две проблемы - надежность идентифи... Nov 10 2009, 01:12 rx3apf Цитата(demaven @ Nov 10 2009, 04:12) Один... Nov 10 2009, 09:44 Andrew_KMR А почему не применить скажем nRF2401, на 2.4ГГц...... Nov 29 2009, 01:23 V_G Подкину еще бензинчика в огонь
1. А если не зацикл... Nov 29 2009, 02:55
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|