Радиоуправление RT5-433 RR10-433 Tiny13
|
|
GSV | Дата: Суббота, 26.10.2013, 15:54 | Сообщение # 1 |
Группа: Друзья
Сообщений: 38
Статус: Offline
| Всем доброе время суток!Мой вопрос на первый взгляд уже сто раз задавали и до меня, но мне полного ответа найти так и не удалось. Есть обычные радиомодули: передатчик RT5-433 и приемник RR10-433 от Telecontrolli. Хотелось бы сделать на Tiny13 простое устройство для радиоуправления нагрузками. Передавать однобайтовый,или подобный код кнопки на приемник. Приемник будет распознавать код и управлять портами. Передатчик использовать как с кнопками, так и в режиме реагирования на изменение состояния пина. Например,пришел на пин высокий(низкий) уровень от какого-нибудь датчика, передатчик сформировал посылку и отправил, приемник принял и что-то включил(выключил). Идея не моя и не нова, но реализации именно на Bascom не нашел. RC5 в тини13 не влезает, а программный UART с радиомодулями забивается шумами. Еще хотелось бы иметь возможность менять коды кнопок впередатчике(приемнике), чтобы повторить это устройство .Опыта программирования на Bascom у менясовсем мало, поэтому прошу подсказать как можно сделать отправку и прием кода (очень желательно в примерах), или поделиться ссылкой.
Схема примерно такая:
Сообщение отредактировал GSV - Суббота, 26.10.2013, 15:56 |
|
| |
top | Дата: Воскресенье, 27.10.2013, 13:06 | Сообщение # 2 |
Группа: Друзья
Сообщений: 146
Статус: Offline
| Система с АМ (Амплитудной модуляцией) получается. Канальное кодирование тоже имеет место. Предполагается АМ с пассивной паузой? Думаю стоит придумать формат посылки (преамбула, синхрослово, данные, контрольная сумма) и способ её распознавания в приемнике. Скорее всего у передатчика один вход, прямиком на модулятор. Если так то вывод данных можно осуществлять просто дергая ножкой МК согласно передаваемм данным. С приемом сложнее, т.к. нужна синхронизация. Способы есть, но они ведут либо к усложнению програмной начинки либо к схемотехническим изыскам. Если сказанное мной окажется трудным для понимания, предлагаю последовательно, по порядку разбирать интересующие вопросы
|
|
| |
GSV | Дата: Понедельник, 28.10.2013, 10:19 | Сообщение # 3 |
Группа: Друзья
Сообщений: 38
Статус: Offline
| Вы совершенно правы. Передатчик RT5-433 имеет амплитудную модуляцию и один вход, а приемник простой сверхгенератор с широкой полосой.Когда-то я пробовал делать прием/передачу на тоновом декодере LM567. Работало,но неустойчиво,потому что из-за температурной нелинейности компонентов частота все время плавала. Недавно пробовал делать передачу через программный UART.По проводам все работает.Хотел посмотреть что будет,если просто подключить эти радиомодули. Передатчик запитал отдельно,а приемник от usb, и с приемника вывел в терминал. На приеме все время в терминале бежит мусор, но когда жму кнопку передачи в этом мусоре вижу свою посылку,а выделить её из шума не могу.Еще повторял такую схему вот отсюда: http://cxem.net/rmodem/rmodem16.php Только вместо передатчика из схемы использовал свои передатчик RT5-433 и приемник RR10-433. Все работало,да и схемотехника проста, но сделано это на пике и нет исходников, которые наверняка на си, а я и с Bascom на "ВЫ" с двух больших букв, не то что с си... Возможно формат посылки можно сделать не очень длинный,например,стартовый байт,код кнопки,сумма и в такой же последовательности дешифровать. Вот только как должно выглядеть в коде формирование посылки,выдача её на вход передатчика,принятие и снова разложение на составляющие мне пока не понятно. Хочется не повторять чужое,а понимать как это работает и сделать своё.Хоть и похожее,но своё
Сообщение отредактировал GSV - Понедельник, 28.10.2013, 10:23 |
|
| |
top | Дата: Понедельник, 28.10.2013, 12:30 | Сообщение # 4 |
Группа: Друзья
Сообщений: 146
Статус: Offline
| Цитата GSV ( ) На приеме все время в терминале бежит мусор, но когда жму кнопку передачи в этом мусоре вижу свою посылку,а выделить её из шума не могу. К сожалению шумы удел не только аналоговых систем связи. Вон у самого система с ЧМн и посылка из двух синхробайт в начале пакета. Тем не менее шумы эфира с большим успехом "наводят" в антенне приемника точь в точь мое синхрослово и как итог проникновение случайных данных под видом валидных. Цитата GSV ( ) Вот только как должно выглядеть в коде формирование посылки,выдача её на вход передатчика,принятие и снова разложение на составляющие мне пока не понятно. В баскоме есть много функций для работы с последовательными интерфейсами. Те же shiftout и shift in. Но дело в том что в них как минимум надо две линии: такты и данные. UART в этом понимании верное решение - всего одна линия! Стоит проанализировать зависимость количества ошибок от скорости UART. Логично предположить что чем меньше скорость тем меньше ошибок. Скажем у меня при 2400 БОД "пролазило" на выходе приемника около 10-20 ошибочных байт в сутки. А при 19200 БОД - то же количество ошибочных байт но за один час. И фильтрация: на входе приемника поставить полосовой фильтр и хорошо бы второго, а то и третьего порядка. Ширина полосы пропускания фильтра выбирается исходя из скорости UART.
|
|
| |
GSV | Дата: Понедельник, 28.10.2013, 16:08 | Сообщение # 5 |
Группа: Друзья
Сообщений: 38
Статус: Offline
| top, Значит с UART лучше не связываться? А как тогда можно реализовать вот такой вариант? Цитата top ( ) вывод данных можно осуществлять просто дергая ножкой МК согласно передаваемм данным. Ведь нужно только замодулировать несущую и на приеме должны получить то,что отправили.
|
|
| |
top | Дата: Вторник, 29.10.2013, 09:57 | Сообщение # 6 |
Группа: Друзья
Сообщений: 146
Статус: Offline
| GSV, как раз таки либо UART либо самостоятельно ножкой дергать)
|
|
| |
GSV | Дата: Вторник, 29.10.2013, 11:23 | Сообщение # 7 |
Группа: Друзья
Сообщений: 38
Статус: Offline
| top, Значит дергать ножкой самостоятельно.Может направите меня,где можно доходчиво и с примерами изучить эту тему?
|
|
| |
top | Дата: Среда, 30.10.2013, 15:47 | Сообщение # 8 |
Группа: Друзья
Сообщений: 146
Статус: Offline
| GSV, собственно говоря задача сводится к изучению работы с портами ввода вывода) Как настроить порт на выход и выдавать в него 0 или 1 Вы знаете?
Вот из баскомовского хэлпа:
Сообщение отредактировал top - Среда, 30.10.2013, 15:48 |
|
| |
GSV | Дата: Среда, 30.10.2013, 20:52 | Сообщение # 9 |
Группа: Друзья
Сообщений: 38
Статус: Offline
| top, Поискал еще информации на эту тему.Всё же большинство мнений за UART. Попробовал ещё раз программный UART, только немного усложнил посылку.Заработало,правда всего с одной кнопкой и несколько неустойчиво, но уже что-то. По поводу портов.Как настроить порты я знаю, только не знаю какой командой выдать в порт сразу все биты посылки. Пробовал в цикле передавать массив,но не осилил.А пробовать по хелпу без более полных примеров не хватает времени,потому и хотелось заиметь рабочий кусок кода,чтоб видеть КАК это должно быть.
|
|
| |
top | Дата: Четверг, 31.10.2013, 19:04 | Сообщение # 10 |
Группа: Друзья
Сообщений: 146
Статус: Offline
| GSV, Все верно, в цикле) Например храним 8 бит данных в массиве A()
Dim portbit as bit
For i = 1 to 8 portbit = A(i) portb.0 = portbit waitms(50) Next
Если массив не битовый а байтовый, что скорее всего, то надо вынимать из массива по одномй байту, а затем разбирать байт на биты например сдвигом вправо а затем ЛОГИЧЕСКИМ И с единицей) тем самым побитно считывая байт. Ну можно и зеркально со старшего бита, тогда сдвиг влево и ЛОГИЧЕСКОЕ И с 128. А может есть и вовсе логические операции, которые сразу извлекают нужный бит - я может не в курсе их.
|
|
| |
GSV | Дата: Среда, 06.11.2013, 15:17 | Сообщение # 11 |
Группа: Друзья
Сообщений: 38
Статус: Offline
| top, Спасибо за участие,но скорей всего пойду другим путем.
|
|
| |
forter | Дата: Пятница, 06.12.2013, 13:27 | Сообщение # 12 |
Группа: Друзья
Сообщений: 17
Статус: Offline
| А можно еще и так: 1. Проверяем старший БИТ байта, если 0, то сбрасываем разряд порта, если - 1, то устанавливаем. 2. Можно вставить необходимую задержку 3. Сдвигаем байт влево на одну позицию командой shift 4. переходим на п.1 5. повторяем 7 раз. Я делал так...
|
|
| |