4. Данные о комплектующих
4.1 Arduino ProMini ATmega168 20MU
Рис *** Arduino ATmega168
Изначально система разрабатывалась на Arduino Mega2560, но так как потенциал Mega2560 не был использован полностью нами было принято решение оптимизировать и перенести все на Promini. Изначально код для InsideArduino весил ~23 КБайта и использовал ~1.5 КБайта оперативной памяти, но после оптимизации библиотек и самого кода, а также удаления маловажных функций, код стал занимать 14 028 байт памяти и использует 742 байта динамической памяти. Это дополнительно помогло сделать проект более экономически выгодным.
Стоимость |
84 руб. |
Питание (постоянный ток) |
От 5 до 12 V |
Частота процессора |
16 МГц |
Размер |
33.3*18.0 мм |
Кол-во выводов |
32 |
Цифровые выводы |
13 |
Аналоговые выводы |
4 |
Флеш память |
16 кБайт |
Оперативная память |
1 кБайт |
4.2 LCD Keypad Shield
Встроенный IIC/I2C преобразователь. Питание 5В. Работает только с латиницей, но можно добавлять собственные символы.
Шилд с дисплеем LCD1602 подключается через 6 цифровых выходов и 1 аналоговый выводы. Через аналоговый пин подключены 5 кнопок благодаря подключению кнопок через резисторы разного сопротивления (рис. 3). Также для работы шилда необходимо подключить питание и выход Reset.Используемые выводы: А0 - кнопки (Select, Up, Right, Down, Left), D4-D10 - подключение экрана.
Рис.3 Схема подключения кнопок на LCD Keypad Shield.
5. Ик передача данных
InfraRed Data Association - передача данных с использованием инфракрасного диапазона световых волн в качестве среды передачи. Является разновидностью оптической линии связи ближнего радиуса действия.
Была особо популярна в конце 1990-х начале 2000-х годов. В данное время практически вытеснена более современными аналогами, такими как WiFi и Bluetooth.
Основные причины отказа от IrDA были:
1. Усложнение сборки корпусов устройств, в которых монтировалось ИК-прозрачное окно.
2. Ограниченная дальность действия и требования прямой видимости пары приёмник-передатчик.
3. Относительно низкая скорость передачи данных первых реализаций стандарта. В последующих ревизиях стандарта этот недостаток исправили: скоростные возможности немного превышают, например, возможности самой распространённой на сегодняшний момент версии протокола Bluetooth (спецификация 4.0). Однако широкого распространения скоростные варианты IrDA получить уже не успели.
В нашей системе передача ИК сигнала происходит через NEC протокол инфракрасного управления. Формат NEC, первоначально разработанный одноименной японской фирмой, встречается в большом количестве вариаций. Здесь представлен так называемый Японский вариант.
Особенности формата:
8 бит данных и 8 бит команда
Адрес и команда передаются дважды для исключения ошибки
Метод кодирования бит - интервалами
Несущая частота 38 кГц
Время передачи бита 1.125 мс или 2.25 мс
NEC формат использует для передачи информации опорную частоту 38 кГц со скважностью 3 или 4. Все пакеты кроме преамбулы имеют длительность 560 мкс (21 импульс опорной частоты). "Единица" передается интервалом 2.25 мс, "ноль" - интервалом 1.125 мс.
Рис ** Логические 1 и 0 в NEC формате
Типичный формат посылки NEC состоит из преамбулы - пакета несущей частоты длительностью 9 мс, за которой следует промежуток 4.5 мс. Преамбула помогает приемнику установить необходимый уровень усиления и нуля, хотя современные приемники в этом не нуждаются. Далее следует реперный пакет стандартной длительности и за ней 32 интервала, соответствующие 4 байтам информации, причем каждый байт передается младшим битом вперед. Адрес и команда передаются дважды, второй раз они передаются в дополнительном коде. Общая длительность передачи пакета постоянна, поскольку каждый бит передается сначала в прямом, затем в инверсном виде.
Рис *** NEC сигнал с 8 битами полезной нагрузки
При удержании кнопки пульта, команда передается только один раз, затем передаются короткие посылки, состоящие из преамбулы длительностью 9 мс и единичного интервала. Такие посылки передаются с периодичностью 110 мс.
Рис *** Преамбула и единичный интервал
Общий вид последовательности при нажатой и удерживаемой кнопке такой:
Рис *** Сигнал при зажимании кнопки
Одна из наиболее часто встречаемых модификаций протокола NEC отличается от стандартного тем, что адрес имеет не 8, а 16 бит. При этом, адрес не передается в дополнительном коде и общее число бит сохраняется. Однако длительность пакета становится зависимой от кода адреса.
Рис *** Сигнал NEC с 16 битами полезной нагрузки
Существует множество форматов передачи данных по ИК излучению, но для наших целей нужен был простой в реализации и понимании формат, поэтому наш выбор пал на NEC.
В нашей системе используется модифицированная версия протокола, которая задается через переменную nbits в нашем коде:
int nbits = 16;
irsend.sendNEC(data, nbits);
Переменная data это 16 бит информации, в нашем случае это целое шестнадцатеричное число.
