|
ИК пульт дистанционного управления (IR RC)
|
|
| m_w | Дата: Вторник, 27.11.2012, 03:16 | Сообщение # 1 |
 5 Вольт
Группа: Пользователи
Сообщений: 67
Репутация: 2
Статус: Offline
| Ранее я рассказал об устройстве позволяющем анализировать протоколы ИК ПДУ и об устройстве предоставляющем возможность организации управления своей конструкцией с ИК ПДУ (http://forumdvrobot.ru/forum/3-23-1). Однако, тема не будет полностью раскрыта без описания разработки и изготовления своего пульта. За основу будет взят расшифрованный ранее протокол бытового пульта. Безусловно, можно разработать свой протокол, но сначала неплохо бы повторить уже существующее решение. А, потом можно будет заниматься упрощением, улучшением, оптимизированием, совершенствованием и т.д. и т.п. бесконечно. Приступим.
Мой блог http://justforduino.blogspot.ru/
Сообщение отредактировал m_w - Вторник, 27.11.2012, 03:55 |
| |
| |
| m_w | Дата: Вторник, 27.11.2012, 03:19 | Сообщение # 2 |
 5 Вольт
Группа: Пользователи
Сообщений: 67
Репутация: 2
Статус: Offline
| Наш пульт должен мигать светодиодом с частотой 36 КГц. При этом период составит:
(1.0 / 36000.0) * 1000000.0 = 27.778 мкс (us)
Из них светодиод должен светить ровно половину времени:
27.778 / 2.0 = 13.889 мкс (us)
Включать и выключать светодиод будет таймер/счетчик 0. Это позволит получить необходимую точность. При частоте тактирования ATmega32U4 в 16 МГц и без предделителя таймер/счетчик 0 сделает один тик за:
(1.0 / 16000000.0) * 1.0 * 1000000.0 = 0.0625 мкс (us)
В 13.889 мкс (us) уложится:
13.889 / 0.0625 = 222.224 тиков таймера.
Таймер/счетчик 0 способен считать от 0 до 255. Эти цифра немного больше, чем требуется. Но, таймер/счетчик 0 имеет много различных режимов работы. Один из них - CTC (сброс по совпадению). Его я и использовал для того, чтобы заставить таймер/счетчик 0 считать от 0 до 223. А, код управляющий включением/выключением светодиода помещен в обработчик прерывания по совпадению.
Посчитаем сколько раз будет вызываться обработчик прерывания по совпадению в временные промежутки протокола пульта:
8988.0 / 13.889 = 647.131
4413.0 / 13.889 = 317.733
620.0 / 13.889 = 44.640
490.0 / 13.889 = 35.280
1610.0 / 13.889 = 115.920
2160.0 / 13.889 = 155.519
Было бы правильнее взять за основу среднее значение соответствующих периодов для всех кнопок. Я же немного упростил себе задачу.
Теперь, когда происхождение всех "магических" чисел объяснено, можно показывать программу. Язык программирования - Си. Среда разработки - AVR Studio.
Мой блог http://justforduino.blogspot.ru/
Сообщение отредактировал m_w - Вторник, 27.11.2012, 03:34 |
| |
| |
| m_w | Дата: Вторник, 27.11.2012, 03:43 | Сообщение # 3 |
 5 Вольт
Группа: Пользователи
Сообщений: 67
Репутация: 2
Статус: Offline
| http://narod.ru/disk....ip.html
Это устройство можно собрать из готовых модулей (продаваемых в местном магазинчике). Мозгом конструкции служит платка с микроконтроллером ATmega32U4. Еще необходим модуль ик передатчика. Желательно иметь клавиатурку. Но, у меня ее нет. Я ее заменил проводом. Один конец провода соединил с GND, а другим тыкал в выводы порта D на плате. Так делать не надо. Используйте нормальные кнопочные клавиатуры.
Купить комплект ИК управления http://dvrobot.ru/shop/i187.ik%20upravlenie Купить ПДУ плюс ИК приемник http://dvrobot.ru/shop/i156.pdu_plyus_ik_priemnik.htm
Ниже содержатся некоторые пояснения по соединению модулей.
IR LED Module --- ATmega32U4
S --- PB0 + --- VCC - --- GND
Теперь, было бы неплохо проверить передаваемые команды кнопок с помощью программы визуализации протокола ИК ПДУ из прошлой статьи. Но, я слентяйничал. Ведь все и так работает.
Все? Тема исчерпана? А вот и нет. Самодельный пульт можно подключить к компьютеру через USB-USART переходник. Таким образом мы сможем без проводов связать ПК и исполнительное устройство.
Пояснения по соединению модулей.
USB-USART --- ATmega32U4
5V --- VCC TxD --- PD3 RxD --- PD2 GND --- GND
Программа для микроконтроллера. Язык программирования - Си. Среда разработки - AVR Studio.
Мой блог http://justforduino.blogspot.ru/
Сообщение отредактировал m_w - Вторник, 27.11.2012, 03:51 |
| |
| |
| m_w | Дата: Вторник, 27.11.2012, 03:50 | Сообщение # 4 |
 5 Вольт
Группа: Пользователи
Сообщений: 67
Репутация: 2
Статус: Offline
| http://narod.ru/disk/64036774001.3248603d2fba1e7b5078901f7772bb85/mc_2_2.zip.html
В данной программе используется скорость USART в 9600 bps так как, нет необходимости передавать данные быстрее.
Разумеется, я написал программу и для ПК. Язык программирования - Python.
http://narod.ru/disk/64036792001.3b3ffa25305c09ee31eceae21ed853f4/pc_2_1.zip.html
Некоторые пояснения по программе. Сначала программа запрашивает номер порта. Нумерация портов начинается с нуля. Например, COM1 соответствует номер 0, а COM15 соответствует номер 14. Затем программа пытается открыть порт и если это не получается, просит ввести другой номер порта. После того как порт открыт появляется приглашение на ввод команд. Команда представляет собой число от 0 до 255. Завершается работа программы нажатием [Ctrl] + [C].
В заключении хочется рассказать о путях развития проекта. Прежде всего, на основе этого проекта можно организовать единое управление всеми бытовыми приборами оснащенными ИК ПДУ. Это может выглядеть следующим образом. ИК передатчик, аналогичный описанному в этой статье, подключается к ПК. На ПК устанавливается специальное серверное ПО (может быть написано на python). Тогда можно будет управлять многими домашними устройствами (телевизор, плеер, музыкальный центр и др.) с планшета, ноутбука и компьютера, включенных в одну сеть (например, через WiFi). К этому всему можно добавить свои устройства (например, управление светом и т.д. и т.п.).
Однако, у технологии ИК связи есть и недостатки. ИК передатчик работает в пределах одной комнаты. Стены непроницаемы для ИК излучения. К счастью эта проблема вполне решаема. Вместо USB-USART можно использовать bluetooth модуль. Со стороны ПК он виден как обычный COM порт. Работать с ним не сложнее чем с USB-USART переходником. Многие телефоны/планшеты способны непосредственно общаться с bluetooth устройствами. Так что, можно обойтись и без компьютера.
В крайнем случае, из всего этого может получится неплохая игрушка к первому апреля или КС. Она, без сомнения, порадует не только создателя, но и его родных и близких. Восстание машин, ранее беспрекословно выполнявших команды ИК ПДУ. Это будет забавно.
Мой блог http://justforduino.blogspot.ru/
Сообщение отредактировал m_w - Воскресенье, 23.12.2012, 05:17 |
| |
| |