Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы.
Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений по датам календаря (С новым годом! и т.п.), а также с регулировкой яркости в зависимости от освещенности помещения.
Немного о элементной базе
Основой "мозгом" часов конечно же будет микроконтроллер, а не всякие там ардуины, и вот почему. Ардуины слишком громоздки и содержат в себе много лишнего. Схему же на микроконтроллере можно сделать под себя любой формы и размера с набором только необходимых деталей. В нашем случае плата часов будет состоять только из микроконтроллера и минимально необходимого набора дискретных элементов.
Дисплей
За основу дисплея часов решено взять адресную светодиодную ленту с шагом светодиодов 60 на метр. Лента нарезается на 8 равных отрезков с 32 диодами в каждом. Катушки в 5 метров хватит с запасом. С данным видом ленты общая длина часов составит около 53-60 сантиметров, практически настенный вариант. Но можно взять ленту и с меньшим шагом светодиодов. Самое главное чтоб их было 32 в строке. Все светодиоды по порту данных соединяются последовательно - не четный ряд идет справо на лево, четный идет слево на право. Ряды идут снизу вверх, то есть 1я строка, подключаемая к микроконтроллеру, находится снизу, последняя 8я - сверху.
О ленте WS2812B
Адресная светодиодная лента WS2812B состоит из специальных светодиодов, которые содержат внутри себя специальный контроллер, позволяющий не только включать, отключать, но и также задавать цвет отдельного элемента и его яркость. Хотя ленту и называют "адресной", у самих светодиодов нет никаких "адресов". Отдельно такой светодиод называется - светодиод с пиксельной адресацией. Принцип его работы заключается в следующем. Каждый светодиод принимает и сохраняет в своем регистре данные, а затем передает их на следующий транзитом. Поэтому, составляя цепочки из таких светодиодов, можно получить какбы адресную ленту с последовательным доступом.
Все пиксели соединяются последовательно друг за другом используя только три провода: питание (+), общий (-) и управление (вход данных). Данные с контроллера передаются только на первый светодиод, на все остальные данные передаются по цепочке. Малое количество проводников заметно упрощает схемотехнику, ведь для передачи данных такому светодиоду нужно всего два провода и один пин контроллера, причем абсолютно все светодиоды в одной цепочке будут управляться по той же линии. То есть не важно сколько диодов 3 или 300, для их управления нужно всего два провода! Однако скорость обновления обратно пропорционально количеству элементов в одной последовательности, чем больше светодиодов - тем медленнее скорость обновления дисплея.
Суть управления светодиодными пикселями сводиться к следующему. После сброса каждый светодиод принимает для себя 24 бита (3 байта) информации, а затем 25 и последующие биты передает следующему. Получается что первый светодиод принимает 1-24 биты, второй - 25-48 биты и так далее. То есть данные проходят через каждый элемент пока не достигнут конец ряда, например, чтобы засветить 100й светодиод нужно загрузить данные не только на 100й, но и на 99 светодиодов стоящие перед ним, т.е. последовательно передать 2400 бит информации. Передача одного бита данных для используемого типа ленты составляет около 1,25 микросекунды, следовательно, чтобы засветить один светодиод, нужно примерно 30 мкс, а на 100 светодиодов потребуется уже примерно 3000 мкс (3 мс). Подробнее о таймингах можно узнать в даташите на WS2812B.
Микроконтроллер
Для управления лентой понадобиться микроконтроллер, который сможет обеспечивать требуемую скорость передачи данных для дисплея и датчиков, а также имеющий достаточное количество портов. Ведь порты понадобятся не только на сам экран из светодиодной ленты, но еще для кнопок управления, а также для разных датчиков, так как часы будут с двумя термометрами и автояркостью. Минимальный интервал изменения уровня на входе DI у WS2812B составляет всего ~150-220 наносекунд, а это значит, что нам потребуется контроллер с временем тактирования 100 наносекунд или меньше, с запасом на сопутствующие вычислительные расходы. Датчики температуры работают "медленнее", чем лента, поэтому их в расчет не берем. Например, при частоте 13,824 Мегагерц время тактирования ЦПУ контроллера составит 1/13824000 ~ 72,3 наносекунды. Даже с небольшим запасом для работы часов вполне хватит микроконтроллера "ATTiny 861A". Контроллер содержит 16 портов ввода-вывода или 2 одно-байтных порта, из них 3 порта нам обязательно понадобятся для "Сброса" и "Кварца". Максимальная рабочая частота выбранного контроллера составляет 20 МГц, но для работы наших часов хватит и меньшей частоты, которую рассчитали выше.
Прочие элементы
Для управления часами понадобятся кнопки. Отличный вариант будет поставить сенсорные кнопки. У них есть преимущества: Они содержат в себе готовый контроллер, в связи с чем не нужно волноваться о "дребезге контактов", а также не нужно будет дополнительно сверлить корпус под ответную часть. Данный сенсор имеет чувствительность на толщину корпуса около 5 мм. Например, отлично подойдет под поставленную задачу готовый модуль сенсорной кнопки EM-512.
Все подключения к "материнской" плате часов планируется сделать разъемными. Для миниатюризации планируется использовать преимущественно поверхностный монтаж (smd).
Разработка схемы
Кратко рассмотрим основные узлы:
С1 - фильтр по питанию, в частности С2, С3 фильтр по питанию микроконтроллера (МК).
D1 развязка цепей питания периферии и МК.
D2, R2, C4 - резервное питание МК. Через D2 подается питание с ионистора C4 на МК, R2 - служит ток-ограничителем для заряда C4. Резервное питание работает следующим образом. В обычном режиме на вход МК PB6 подается высокий уровень (лог.1), что говорит МК, что используется основной источник питания. При отсутствии основного питания на выводе PB6 образуется низкий уровень (лог.0). МК приняв лог.0 переключается в режим пониженного энергопотребления, а накопленный в ионисторе C4 заряд через диод D2 позволяет работать часам еще 10-15 минут, естественно без индикации. В большинстве случаев этого достаточно, чтобы часы не сбивались при кратковременной потере электросети.
PH1 - фотодиод, служит для автоматического управления яркостью.
C5, C6, Y1 - кварцевый генератор, задающий работу ЦПУ МК.
U2, R4 - модуль термодатчика (предусмотрено 2 модуля для измерения температуры - внутри и снаружи помещения). Подключается отдельно каждый к своему порту. (Хотя данный тип датчика поддерживает и параллельное подключение к одному порту, но тогда подпрограмма доступа к датчику придется менять.)
Список радио деталей:
Адресная лента на базе WS2812B с 256 LED (1)
Микроконтроллер ATTiny 861A (1)
Кварц 13,824 МГц (1)
Ионистор 1 Фарад 5,5 Вольт (1)
Диоды: Шоттки MBR0520LT (2)
Конденсаторы: 47 мкф (1), 10 мкф (1), 100 нф (1), 15 пф (2)
Резисторы (на плату): 10 кОм (1), 270 Ом (1), 100 Ом (1)
Разъемы: для ленты и датчиков - PH 03F и PH 03M (4 комплекта), для кнопок управления ( и SPI) - PH 07F и PH 07M (1 комплекта), для питания PH 02F и PH 02M (1 комплекта*)
*"комплект" означает разъем мама и папа.
Модуль сенсорной кнопки EM-512 (3)
Цифровой термодатчик DS18B20 и резистор на 1-5 кОм** (2 комплекта)
**В моем случае для комнатного датчика был взят 4,7 кОм, для уличного 1 кОм, так как длина линии на улицу оказалось значительно больше и большого сопротивления не хватило для корректной работы.
Фольгированный текстолит для монтажной платы (1)
(в скобках указано количество)
Программное обеспечение (прошивка)
Программное обеспечение для часов написано в среде Microchip Studio 7 на ассемблере. Всеми узлами часов (фотодатчик, термометры, кнопки и экран) управляет один микроконтроллер. За точность часов выбран основной кварцевый резонатор на 13,824 Мгц, так как точность данного кварца не соответствует точности часового (32768 Гц) предусматривается программная корректировка хода с точностью 0,4 секунд в сутки. За настройки часов отвечают три кнопки. Кнопки различают долгое и короткое нажатие. При долгом нажатии переключается режим отображения, при коротком производится настройка параметра (часы, минуты, день, месяц и т.д.). Кроме того, при удержании кнопок 1 и 3, часы переходят в специальных сервисный режим, где можно произвести прямую запись настроек во все ячейки постоянной памяти МК, проверить фотодатчик и экран.
Скачать /просмотреть прошивку:
Благодарю за внимание
Если статья наберет 250+, планируется вторая часть, посвященная разработке монтажной платы и конструкции корпуса часов.