Форум myROBOT.ru » Роботы и робототехника » Обо всем » Шифратор на микроконтроллере

Страниц (1): [1]
 

1. Artem - 26 Января, 2013 - 18:48:17 - перейти к сообщению
Здравствуйте Улыбка
Существует задача: собрать танк на радиоуправлении, попутно научиться писать программы, ну точнее базовые навыки есть, лапкой дёргать умею, ШИМ, АЦП, но для того чтобы сделать шифратор нужно нечто большее. Имеется приёмник и передатчик, собраны лично мной. имеются две платы с микроконтроллером ATmega8 на борту. Вроде всё есть Улыбка
Но вот беда я не могу придумать как закодировать а самое главное раскодировать управляющий сигнал.
Может кто-нибудь делал что-то подобное, расскажите глупому человеку принцип, как это на микроконтроллере построить, как нужно кодировать Замешательство
P.S. Лазил по многим сайтам, где на мк делают такое, но я не понимаю принцип, а мне очень хочется Улыбка
Заранее спасибо Улыбка
2. mihail - 26 Января, 2013 - 20:09:51 - перейти к сообщению
Необходимы пояснения о том, что из себя представляет передатчик и приемник. Если это что-то вроде http://dvrobot.ru/shop/i186.radio-udlinitel.htm то это одно. А если это что-то вроде http://dvrobot.ru/shop/i236.radi...24l01_8_pin_.htm то это совсем другое.

Смотрите как устроен USART. Как начинается передача и как заканчивается. Для чего нужен бит паритета (бит четности). Еще посмотрите как организована передача данных в ИК связи (ИК ПДУ).
3. Predator - 26 Января, 2013 - 20:16:57 - перейти к сообщению
отправляют пакет 0 и 1 - принимают - получают команду.
проще всео для этого использовать uart, но на тему помехоустойчивости-дрова.
4. elmot - 27 Января, 2013 - 11:40:25 - перейти к сообщению
А почему не взять блютуз или вайфай? Там уже все готово.
5. Artem - 27 Января, 2013 - 14:48:02 - перейти к сообщению
elmot пишет:
Там уже все готово.

В каком смысле всё готово?

mihail пишет:
Смотрите как устроен USART.


Почитал я про этот последоватьльный асинхронный приёмо-пердатчик, но немного нето это, он сразу в микроконтроллере есть а мне охота самому какой-нибудь код написать
6. mihail - 27 Января, 2013 - 19:20:08 - перейти к сообщению
Не вижу проблем. Наличие аппаратного USART никак не препятствует реализации USART программно.
7. Predator - 27 Января, 2013 - 20:38:48 - перейти к сообщению
тогда посмотрите на килок - как в автосигналках, и возьмите оттуда преамбулу и кодировку 0 и 1, как по проводу синхронизируетесь - переходите на радиоканал.
главная задача приемник синхронизировать с передатчиком (чтобы начало и длительность битов совпадала).

у блютуза и вайфая всё готово - вся та самая кодировка + помехоустойчивое кодирвание+выбор свободного радиоканала + много чего еще.
8. Artem - 29 Января, 2013 - 21:48:43 - перейти к сообщению
Снова почитал я про USART, про кодировку ик команд(их оказывается очень много), мне в принципе понравился этот способ(точнее все, они весьма однообразны), как я понял суть в том что шифратор запускает импульс, который обозначает начало команды, затем дает приёмнику некоторое время, что бы запуститься, и начинает отправлять один бит за другим, при этом для того, чтобы различить 0 это или 1 используется длина импульса. Способ мне понравился потому, что синхронизация работы приёмника и передатчика очень проста.

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

И тут я наткнулся на такую замечательную вещь, как сдвиговый регистр. Я сразу понял что можно его использовать. Немного подумав, я набросал алгоритм по которому будет работать шифратор и дешифратор:

Во-первых, шифратор, выполнен на базе микроконтроллера ATmega8, он опрашивает состояние всех кнопок и создает последовательность из 3-х битов(именно 3-х, так как с помощью них можно закодировать 8 различных команд), перед тем как запустить эти биты он формирует импульс, который подготавливает дешифратор к работе, происходит синхронизация его с шифратором.

Во-вторых, дешифратор, здесь немного сложнее. Состоит из микроконтроллера и сдвигового регистра, который подсоединен к микроконтроллеру. Микроконтроллер следит за появлением стартового бита, при его появлении, он запускает тактовую частоту, которая совпадает с частотой отправки битов, что бы регистр принимал их в правильном порядке. (извините, может быть фраза кривовата вышла, но как-то не смог я слов подобрать). После приёма всех 3-х битов, сдвиговый регистр( или микроконтроллер сам) сигнализируют об окончании передачи команды, микроконтроллер подает команду вывести значение регистра на какой либо драйвер, ждет некоторое время, и убирает его, обнуляет регистр и начинает ждать новую команду.

Фух, вроде всё. Посмотрите, может какие-то нюансы есть в этом способе, недостатки.
Заранее спасибо Улыбка
9. Predator - 29 Января, 2013 - 22:11:06 - перейти к сообщению
в общем типа того, отследите только чтобы момент "защелкивания" данных в сдвиговый регистр попадал на середину бита.
ну и собственно это-же самое можно сделать внутри контроллера: при пришествии стартового бита запустить таймер, и 3 раза защелкнуть (вписать в 3 переменных например) состояние входа.
получится типа UARTа, только 3-битные пакеты.
10. Artem - 29 Января, 2013 - 22:14:42 - перейти к сообщению
Predator пишет:
ну и собственно это-же самое можно сделать внутри контроллера: при пришествии стартового бита запустить таймер, и 3 раза защелкнуть (вписать в 3 переменных например) состояние входа.

я об этом тоже думал, но как я сказал программу будет трудно писать, но в будущем обязательно попробую Подмигивающий
11. Artem - 06 Февраля, 2013 - 21:49:09 - перейти к сообщению
Порывшись в интернете, я убедился, в том что моя идея очень даже осуществима высший восторг
Но с начала небольшое замечание по поводу управления с помощью 3 бит, мне нужно будет управлять 3 моторами, на каждый по 2 канала(вперёд/назад), я не подумал, что нужно будет крутить их одновременно и в разных комбинациях, я пришел к выводу, что нужен один бит на канал и того 6 бит. Я нашел почти подходящий 8-ми битный сдвиговый регистр 74hc595( ну можно ещё 2 канала сделать, лишними не будут).
Сейчас попробую выложить схему...