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

 
 
> Передача сигналов по радиоканалу., Передача на частоте 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
Ответов (1 - 14)
_dem
сообщение Nov 6 2009, 11:37
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 263
Регистрация: 2-02-07
Из: CN, Ukraine
Пользователь №: 24 970



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


ps. Реально ли сменить аппаратную базу ? Себестоимость точки вызова легко можно уложить в 6-8$, если все же надо радиоканал.
Go to the top of the page
 
+Quote Post
Masterskaia
сообщение Nov 6 2009, 11:45
Сообщение #3





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



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

Сообщение отредактировал Masterskaia - Nov 6 2009, 11:57


--------------------
Всегда в поиске...
Go to the top of the page
 
+Quote Post
Vetal-Soft
сообщение Nov 6 2009, 11:58
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 60
Регистрация: 16-06-05
Пользователь №: 6 074



Так происходит по тому что приемник rx5000 прередает данные в МК со скоростью 115200 бит/с
Go to the top of the page
 
+Quote Post
defunct
сообщение Nov 6 2009, 12:03
Сообщение #5


кекс
******

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



Цитата(Masterskaia @ Nov 6 2009, 13:28) *
1) Что я в своём проекте мог сделать не так?

Инвертор на UART-TX (TXD) нe забыли поставить?
Go to the top of the page
 
+Quote Post
Masterskaia
сообщение Nov 6 2009, 12:03
Сообщение #6





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



Вроде при сборке этого приёмника в datasheet ничего небыло сказано скорости RX5000. Я сейчас перечитаю datasheet. Если вы знаете как можно изменить скорость в RX5000, подскажите пожалуста. Минут через 20 вырожу полную схему и фото собранного проекта.

Сообщение отредактировал Masterskaia - Nov 6 2009, 12:04


--------------------
Всегда в поиске...
Go to the top of the page
 
+Quote Post
defunct
сообщение Nov 6 2009, 12:05
Сообщение #7


кекс
******

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



Цитата(Masterskaia @ Nov 6 2009, 14:03) *
Вроде при сборке этого приёмника в datasheet ничего небыло сказано скорости RX5000.

А что мешает изменить скорость UART'а в меге? Поставьте 115200-8-N-1.
Поменяйте также кварц 8Mhz на что-нибудь более адекватное - 14.7456Mhz например или 11.0592Mhz (частоты заточенные для UART'ов).
Go to the top of the page
 
+Quote Post
Masterskaia
сообщение Nov 6 2009, 13:00
Сообщение #8





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



У меня Atmega8L она работает до 8 МГц. Поэтому в своём проекте я не могу использовать частоту кварца больше 8МГц. И ещё, как я уже писал с этой же схемой, с этим же приёмником но при другой прошивке я уверенно принимаю правильный код. Я перечитал datasheet про RX5000 и там сказано, что она работает до скорости 115200, а значит и 9600 то же будет пропускать. Предоставляю всем фото моего проекта и схему без схемы приёмника, он есть в datasheet.
Прикрепленное изображение

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

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


Сообщение отредактировал Masterskaia - Nov 6 2009, 13:02


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


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

Группа: Участник
Сообщений: 98
Регистрация: 20-06-05
Пользователь №: 6 150



Цитата(Masterskaia @ Nov 6 2009, 14:45) *
Я уже морально готов к тому, что бы использовать передатчики с обратной связью, и думаю, что именно так и выйду из ситуации с одновременным нажатием двух и более кнопок. Но для начала у меня стоит задача просто принять сигнал с одной нажатой кнопки. Как это сделать я не пойму.

Протокол множественного доступа в канал с контролем занятости. На каждой точке должен быть приемник, контролирующий занятость канала и выходящий на передачу только в случае его освобождения.
Нажатие кнопки не сразу передает вызов, а ставит этот вызов в ожидание свободного канала.
Для исключения одновременного выхода на передачу двух или более ожидающих запросов, предусматривается рэндомная задержка.
Если времена задержек расписать вручную, можно распределять приоритеты "кнопок".
Все это есть в литературе.
Go to the top of the page
 
+Quote Post
Masterskaia
сообщение Nov 6 2009, 13:24
Сообщение #10





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



Цитата(ut1wpr @ Nov 6 2009, 15:13) *
Протокол множественного доступа в канал с контролем занятости. На каждой точке должен быть приемник, контролирующий занятость канала и выходящий на передачу только в случае его освобождения.
Нажатие кнопки не сразу передает вызов, а ставит этот вызов в ожидание свободного канала.
Для исключения одновременного выхода на передачу двух или более ожидающих запросов, предусматривается рэндомная задержка.
Если времена задержек расписать вручную, можно распределять приоритеты "кнопок".
Все это есть в литературе.

Правильно. Я так и планирую. Идея в следующем: В каждой кнопке есть свой уникальный код и приёмо-передатчик. Как только была нажата кнопка на столле №2 в этой кнопке активируется приёмник и если этот приёмник принял по эфиру свой уникальный код то сразу же активируется передатчик и передаёт свой уникальный код в приёмник на барной стойке.
Работа устройства на барной стойке будет следующая: В устройстве находится приёмо-передатчик. Передатчик будет отправлять в эфир последовательно код каждой кнопки и в промежутках между передачей кода он будет переходить в режим приёма на ~3 сек. если за эти 3 сек. не пришёл ответ с кнопки он передаёт в эфир следующий код. И так по кругу все коды кнопок которые учавствуют в этом ресторане.


--------------------
Всегда в поиске...
Go to the top of the page
 
+Quote Post
mempfis_
сообщение Nov 6 2009, 13:27
Сообщение #11


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

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



Если готовы поменять радиочастотную часть то проше всего будет сделать применив вариант (базовая станция)-(подчинённые приёмники) с фиксированным адресом. Базовая станция шлёт в эфир запрос к устройству с конкретным адресом на получение статуса кнопки. Все устройства принимают запрос, декодируют адрес и при совпадении одно из них шлёт ответ на базовую станцию.
ИМХО просто пытаться ловить сигнал от всех 50 кнопок одновременно - неэффективно и может привести к сбоя (особенно при нажатии нескольких кнопок одновременно).
Go to the top of the page
 
+Quote Post
Masterskaia
сообщение Nov 6 2009, 13:39
Сообщение #12





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



Уважаемые участники данной темы, я искренне признателен Вам всем за присланные Вами советы. Но у меня пока остался открытым следующий вопрос:
Как мне организовать проект, что бы я выход приёмника смог подключить к любому входу МК, кроме входа UART, а с выхода UART мог передать полученный сигнал от приёмника в терминал?


--------------------
Всегда в поиске...
Go to the top of the page
 
+Quote Post
mdmitry
сообщение Nov 6 2009, 13:49
Сообщение #13


Начинающий профессионал
*****

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



Почитайте статьи по организации систем беспроводных датчиков. У Вас по сути датчик нажатия кнопки. Кое-что было в журнале "Беспроводные технологии". Вам нужна только идея организации сети.


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
Vetal-Soft
сообщение Nov 6 2009, 14:05
Сообщение #14


Участник
*

Группа: Участник
Сообщений: 60
Регистрация: 16-06-05
Пользователь №: 6 074



Цитата(Masterskaia @ Nov 6 2009, 18:39) *
Уважаемые участники данной темы, я искренне признателен Вам всем за присланные Вами советы. Но у меня пока остался открытым следующий вопрос:
Как мне организовать проект, что бы я выход приёмника смог подключить к любому входу МК, кроме входа UART, а с выхода UART мог передать полученный сигнал от приёмника в терминал?

Глянул на ваши фото
Можно же просто подключить rx5000 напрямую к FTDI, по мимо контроллера, и опредилиться со скоростью передачи данных.
Go to the top of the page
 
+Quote Post
defunct
сообщение Nov 6 2009, 14:06
Сообщение #15


кекс
******

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



Цитата(Masterskaia @ Nov 6 2009, 15:00) *
Предоставляю всем фото моего проекта и схему без схемы приёмника, он есть в datasheet.

Схема не проясняет вопрос про инвертор.
Напрямую как показано на схеме PIN TXD к COM порту подключать нельзя. Нужен либо преобразователь уровней, либо хотя бы инвертор.


Сигналы UART'а - 0 -> лог "0", +5В ->лог "1".
Сигналы RS232 Com port'a, +3..+15 (лог 0), -3..-15 (лог 1).


Цитата
Как мне организовать проект, что бы я выход приёмника смог подключить к любому входу МК, кроме входа UART, а с выхода UART мог передать полученный сигнал от приёмника в терминал?

Никак. Если данные от приемника идут через UART, то подключать его нужно к UART'у.
Еслу нужна двухсторонняя связь и с приемником и с терминало, то можно взять МК с двумя UART'ами на борту. ATMega162 например. Тогда один UART соединяете с приемником, а второй - с PC.
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 - 21:25
Рейтинг@Mail.ru


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