Организация пространства. Советы и идеи. Сад и участок

Самодельные часы на светодиодных матрицах. Простые часы на светодиодных матрицах Часы на светодиодных матрицах схема

На просторах Интернета нет недостатка в разного рода электронных часах. Солидно смотрятся часы на матричных индикаторах, например, известная схема с радиокота, но хотелось, чтобы были с индикацией не только часов и минут, но и секунд. Решил создать такие часы, добавив еще и некоторые другие функции.

Представленные здесь электронные часы, кроме того, позволяют измерять температуру в помещении. Есть четыре независимых будильника, а так же индикатор календарных событий, который сигнализирует о наступлении таких событий, как годовщина, день рождения и т.д.. Позволяют изменять яркость в ручном и автоматическом режиме, что резко улучшает комфортность восприятия в темное время суток, и наконец, управляются любым пультом от БРА либо локальными кнопками.

Основные характеристики:

  • Напряжение питания (В) ………… .…………………... 5
  • Ток потребления (мА) …………………………………. 100 - 200
  • Общий размер матрицы (пикселей) …………………… 8 х 40
  • Пределы измеряемой температуры (градусов) …….…. -40 - +99.5
  • Точность измерения температуры (градусов) ……….. 0.5
  • Пределы суточной коррекции хода (секунд) …………. -9.9 - +9.9
  • Число градаций изменения яркости …………………… 31 + режим «авто»
  • Количество будильников ………………………………. 4
  • Объем текста каждого будильника (символов) ……….. 11
  • Количество индикаторов событий …………………….. 14
  • Объем текста для каждого события (символов) ....……. 15
  • Управление режимами …………………………………. Кнопками/любым пультом

Принципиальная схема часов условно разделена на индикаторную и «контроллерную» части, представленные на рисунках ниже. Нумерация элементов единая и далее, при описании, будем рассматривать схему как одно целое.

Схема индикации

Схема управления

Собственно управление регистрами осуществляется посредством трех портов микроконтроллера (МК) DD7, в прерываниях от таймера TMR0 интервалом 2 мс, что обеспечивает общую частоту смены информации 63 Гц. Так же с МК на 9 вывод DD6 (включение-выключение выходов) поступает сигнал ШИМ для изменения яркости индикаторов. МК DD7 выбран типа PIC16F88, который отличается от популярного PIC16F628A наличием АЦП и вдвое емкой памятью программ. МК работает от внутреннего генератора на частоте 8 МГц (еще одно отличие от 628A).

В устройстве применена микросхема часов реального времени DS1307, которая обеспечивает счет и хранение секунд, минут, часов, дня недели, даты (включая год от 0 до 99). При начальной инициализации DS1307 настраивается в режим, при котором на выводе 7 присутствует меандр с частотой 1 Гц, который подается на вход RB0 МК. По этому входу включено прерывание, где один раз в секунду устанавливается специальный флаг. В основной программе посредством этого флага один раз в секунду выполняются основные действия: считывание данных с DS1307, индикация времени, проверка на совпадение будильников и индикаторов событий, установка яркости в автоматическом режиме. Дополнительная батарея BAT1 позволяет сохранять данные в отсутствии напряжения питания устройства практически неограниченное время. МК управляет DS1307 по шине I2C портами RB1, RB2. Так же по I2C управляется и датчик температуры – микросхема DS1621.

Устройство управляется с помощью кнопок S1 и S2, подключенных соответственно к портам МК RA4, RA2. Функции кнопки S1 могут выполняться с помощью любого пульта от БРА с помощью схемы на приемнике DA1 типа TSOP48 и одновибратора на D-триггере DD8.1 и элементах C8, R47 и D1. Длительность сигнала одновибратора выбрана 0.2 с, что обеспечивает преобразование пачек коротких импульсов с выхода DA1 в импульсы этой длительности при коротком нажатии и в непрерывный сигнал при удержании нажатой любой кнопки пульта. Сигнал с инверсного выхода триггера через диод D2 дублирует кнопку S1. С помощью элементов R48, HL6 организована индикация этого факта..

На втором триггере микросхемы DD8.2 и пьезокерамическом излучателе LS1 собрана схема звуковой сигнализации при срабатывании будильника либо индикатора события. На счетный вход триггера поступает сигнал ШИМ с выхода МК частотой 8 кГц. При сигнале логического 1 на объединенных входах R и S триггера на обоих выходах присутствует лог.1 и звук отсутствует. При наступлении события индикации МК с частотой 1 Гц меняет уровень на этих входах и на выходах триггера с этой периодичностью возникают противофазные импульсы с частотой 4000 Гц. Так как эта частота – резонансная для данного излучателя, возникает громкий прерывистый сигнал. Программно приняты меры для сохранения импульсом ШИМ и при крайних значениях яркости.

На элементах FR1, R45 и C6 собран датчик освещенности. МК с помощью встроенного АЦП считывает зависящее от освещения напряжение с этого делителя и выставляет соответствующий коэффициент заполнения ШИМ сигнала.

Питается устройство напряжением +5В, поступающим на разъем J1 и далее через фильтрующие цепи R41C3C4, R42C5, C7R46 на элементы схемы. Цепь R49 D3 защищает устройство от случайного подключения чрезмерного либо обратного напряжения. Удобно применить в качестве ИП зарядное устройство для смартфонов на 5 Вольт.

Устройство собрано на печатной плате из стеклотекстолита с односторонней металлизацией размерами 60 мм на 170 мм

DD1-DD5 применены в корпусе SO16, DD6 – в корпусе SOIC20. DD8 использована в корпусе DIP. Ее можно заменить отечественной К561ТМ2. DD9, DD10 – в корпусах SO8. Почти все SMD резисторы и конденсаторы – типоразмера 0805, C1,C7,C3,C5 – типоразмера 1206. Кварцевый резонатор лучше выпаять со старой материнской платы – они, как правило, стабильнее. Фоторезистор FR1, при замене на другой, должен быть с темновым сопротивлением примерно 1 – 2 МОм. Батарея BAT1 типа CR2032 установлена на стандартном держателе. Ее можно заменить любой, подходящей по размеру, напряжением 3В. При замене пьезоизлучателя на другой очень желательно, чтобы резонансная частота была близка к 4000 Гц. Фотоприемник можно выпаять со старого телевизора. Светодиод – любой яркий, красного свечения. Диоды можно заменить на КД521, КД522. Стабилитрон – напряжением 5.6В и желательно мощностью не менее 1 Вт. Так как примененные матричные индикаторы оказались с общим анодом, пришлось при разработке платы установить их с поворотом на 90 градусов и использовать строки как колонки и наоборот. При замене на индикаторы с общим катодом, например 1088AS, придется полностью изменить схему подключения. Кнопки – любые тактовые, угловые. При закрытии индикаторов спереди цветным оргстеклом наблюдались ошибочные срабатывания DA 1 отраженным яркостным сигналом от индикаторов. Этот эффект легко устраняется вклеиванием экрана из черной бумаги между индикатором и фотоприемником.

В налаживании правильно собранное устройство обычно не нуждается. Однако, если не устраивает имеющаяся зависимость освещенности и соответствующей яркости индикатора в авторежиме, следует подобрать номинал резистора R45. При этом, меньшее сопротивление соответствует меньшей яркости при данной освещенности.

Внешний вид собранной платы показан на фотографиях.

Причина не очень красиво припаянных токоограничительных резисторов в том, что после изготовления платы выяснилось, что типономинал оных не 0805, а 1206. Пришлось как-то припаять...

Программа управления контроллером написана на языке Си и оттранслирована в среде MikroC for PIC. Слово конфигурации содержится в прошивке и заносится автоматически. Авторская ориентация часов – матрицы сверху, что минимизирует возможное воздействие от деталей схемы на температуру микросхем DD9, DD10. Однако, если кому-то понравится расположение часов матрицами вниз, следует перед трансляцией программы изменить в файле “watch.c” значение параметра в самой первой строке с 1 на 0 согласно комментарию. Прошивка прилагается для обоих случаев. Так же возможно изменить шрифт цифр на тонкий (по умолчанию – жирный), аналогичный буквам (это, кстати, несколько снизит потребляемый ток в исходном режиме). Для этого в первой строке в файле “font.c” надо изменить значение параметра “font_2” с 1 на 0.

Теперь перейдем к описанию режимов часов и работы с ними.

Сразу при включении, часы переходят в основной режим – индикации времени. При этом, цифра часов и минут высотой 8 пикселей, а секунд – 7 (в целом каждая цифра или буква изображается в поле 5х8 пикселей, цифры секунд – 5х7). При нажатии на кнопку S1 или любой кнопки пульта (эти действия эквивалентны и далее будем иметь в виду, что когда речь идет о нажатии кнопки S1, то же происходит и по сигналу с пульта) с помощью бегущей строки отображается текущая полная дата и день недели. Если больше не предпринимать никаких действий, спустя 16 сек. устройство возвращается в исходное состояние – индикации времени. Если же нажать кнопку S1 еще раз во время индикации даты, то начинается индикация температуры тоже посредством бегущей строки в течении 16 сек. (повторное нажатие кнопки – возврат в исходное состояние сразу).

При непрерывном нажатии на кнопку S1 в течении 9 секунд, часы переходят в режим «МЕНЮ», о чем говорит соответствующая надпись. Столь длительное нажатие для этого выбрано в целях уменьшения вероятности случайного попадания в меню при обычном пользовании пультом (собственно для управления бытовой техникой).

Далее следует небольшое отступление - поясним работу с кнопками в целом. Управление часами сделано так, что все действия с ними можно произвести с помощью одной лишь кнопки S1 (или пультом). Ведь часы могут висеть высоко на стене, и доступ будет только к кнопке S1 (через пульт). Итак, перебор пунктов меню, так же как перебор из списка будильников либо событий производится короткими (до 3 сек.) нажатиями S1, а переход в выбранный пункт – длинное (более 3 сек.) нажатие. Без воздействия в течении 15 – 30 сек. (в зависимости от конкретного режима) – возврат в исходное состояние. Там же, где происходит изменение значения какого-то параметра, короткое нажатие увеличивает значение не 1, а удерживание более 2 сек. - значение увеличивается автоматически примерно 3 раза в секунду. Здесь отсутствие воздействия в течении некоторого настраиваемого (от 5 до 8 сек.) времени приводит к переходу к следующему параметру с сохранением текущего параметра. Вот здесь и можно использовать кнопку S2 – для сохранения параметра с переходом к следующему без ожидания, сразу. Так, держа часы в руках можно значительно ускорить подобные манипуляции.

Вернемся к пункту «МЕНЮ». Здесь пять пунктов: УСТАНОВКА, КОРРЕКЦИЯ, БУДИЛЬНИК, СОБЫТИЯ, НАСТРОЙКИ. Расскажем о каждом по порядку.

УСТАНОВКА. Здесь производится установка текущих даты и времени. Изменяемый параметр вначале выделяется инверсией, которая исчезает с началом изменений. Значения меняются только в большую сторону, с переходом с максимального значения (при ее достижении) к минимальному и далее по кругу. В самом конце, когда дата и часы с минутами выставлены, в месте секунд будут инверсные нули. Здесь надо в момент обнуления эталонных секунд нажать S1 и часы перейдут в исходное состояние с измененными датой и временем.

КОРРЕКЦИЯ. С течением времени, неминуемо возникает ошибка в ходе часов. Для ее коррекции и служит данный пункт. Предварительно надо замерить «уход» часов в течении 10 суток. Предположим, часы спешат на 58 секунд. Входим затем в этот режим, о чем говорит строка «уход за 10 суток». При нажатии S1 строка сменяется статичной надписью «ХХ сек», где ХХ – текущее значение коррекции, предположим 31. Так как часы спешат, отнимаем от данного значения наши 58 сек. (если отстают – прибавляем). Набираем полученные (-27) сек. После выхода это значение сохранится в EEPROM. Интервал вводимых значений – от -99 до 99, знак меняется при переходе через 0. Коррекция происходит каждый день в 00:00:19, для чего целая от одной десятой значения коррекции (в нашем случае (-2)) добавляется к текущему времени, а остаток (у нас (-7)) сохраняется в EEPROM и в следующий раз прибавляется к коэффициенту до обработки. То есть через день от времени отнимется 3 секунды и сохранится (-4) (-27-7 = -34).

БУДИЛЬНИК. При входе в этот пункт на экране бежит стока, состоящая из: номер (1-4), признак включенности (“+” или “-“), время срабатывания, название будильника (текст из 11 знаков). По умолчанию, например, во втором будильнике, будут данные: «2. – 12:00 БУДИЛЬНИК-2». Короткими нажатиями можно переходить из одного будильника в другой, долгим нажатием переходим в текущий будильник, где можно изменять данные, включать – отключать выбирать активность для каждого дня недели, установить время срабатывания, изменять текст название путем перебора знаков каждой позиции. Вся информация о четырех будильниках хранится в свободной памяти микросхемы DS1307 (56 байт) . При совпадении текущего времени с каким-нибудь включенным и активным в этот день недели будильником выводится строка с данными об этом будильнике, с прерывистым звуковым сигналом, в течении одной минуты. Сигнал будильника можно «досрочно» прервать нажатием кнопки S1.

СОБЫТИЯ. При входе в этот пункт, на индикаторе при коротких нажатиях кнопки, попеременно пробегают активные события плюс пункт «ДОБАВИТЬ НОВОЕ». По умолчанию активных событий нет, поэтому, будет только приглашение о добавлении нового события. Формат активного события: «<дата> <текст из 16 знаков>». Когда все 14 событий активны, пункт «ДОБАВИТЬ НОВОЕ» не выводится и новое событие можно добавить только вместо какого либо из существующих. Длительным нажатием переходим в режим редактирования события. Здесь можно включить-отключить, изменить дату, а так же написать свой текст, соответствующий данному событию. Все изменения сохраняются в энергонезависимой памяти МК (EEPROM).

На совпадение с датами событий текущая дата проверяется каждый день в 8:00, и при совпадении выводится строка из текущей даты и текста события с прерывистым звуковым сигналом в течении одной минуты. Такой сигнал будет подаваться каждый час до 19:00, при условии, что он не был прерван кнопкой. Прерванный кнопкой сигнал уже не повторяется.

НАСТРОЙКИ. При входе в этот режим, на экран выводится сообщение типа «ЯРК.ХХ», где «ХХ» - текущая яркость. Нажатиями кнопки S1 это значение можно изменять в пределах от 1 до 31 либо выставить значение «АВ», что означает «автоматически». При изменении значения яркости, сразу наглядно меняется реальная яркость индикатора. При сохранении автоматического режима, яркость индикации часов впоследствии изменяется без вмешательства, в зависимости от уровня освещенности в помещении. В этом случае, попадаем в пункт установки минимальной яркости для авто-режима (выводится «МИН.ХХ»). Это значение лучше выставлять в условиях минимально ожидаемой освещенности. Если в предыдущем пункте было выставлено конкретное числовое значение яркости, данный пункт пропускается.

Следующий пункт настроек – регулировка времени ожидания до сохранения значений разного рода изменяемых параметров в пределах от 5 до 8 секунд. При минимальном значении этого параметра - есть опасность сохранить ошибочные значения, при максимальном – увеличивается общее время ввода данных с пульта. Пользователь выбирает комфортное для него значение.

Все настройки сохраняются в EEPROM памяти МК и не теряются при пропадании питания.

В приложении, кроме исходного кода и прошивок имеются Proteus-модель и плата в формате Lay6.

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
DD7 МК PIC 8-бит

PIC16F88

1 В блокнот
DD1-DD5 Сдвиговый регистр 74HC595 5 SOP-16 В блокнот
DD8 Сдвоенный D-триггер CD4013 1 K561TM2 В блокнот
DD9 Часы реального времени (RTC)

DS1307

1 В блокнот
DD10 Датчик температуры

DS1821

1 В блокнот
DA1 Фотоприемник TSOP48 1 В блокнот
DD6 Мощный сдвиговый регистр TPIC6B595 1 В блокнот
LS1 Пьезоизлучатель XCFT-14A 1 В блокнот
HL1-HL5 Светодиодная матрица 1088BS 5 В блокнот
HL6 Светодиод ARL-3514 1 red В блокнот
X1 Кварцевый резонатор 32768 Гц 1 В блокнот
BAT1 Литиевая батарея CR2032 1 3 V В блокнот
D1-D2 Диод 1N4748 2 В блокнот
D3 Стабилитрон

1N4734A

1 В блокнот
S1, S2 Кнопка тактовая угловая 2 В блокнот
FR1 Фоторезистор NCL-4952 1 В блокнот
R1-R40 Резистор

220 Ом

40 0805

Преимущества светодиодов неоспоримы, сегодня они везде, в том числе и часах. Что представляют себя часы на светодиодных матрицах, о плюсах и недостатках разберем в рамках статьи. В конце статьи представлено подробное пошаговое руководство для изготовления устройства своими руками.

Что это такое

Часы на светодиодных матрицах - это электронные часы, в которых для индикации используются матрицы из множества светодиодов. Применение индикаторов другого типа - единственное их отличие.

Матрица - это набор светодиодов, собранных вместе в виде сетки с единым анодом или катодом. Как правило, разрешение таких индикаторов - количество точек по вертикали и горизонтали - 8×8.

Почему же такие часы набирают популярность, преимущества:

  1. Цена. Светодиодные матрицы дешевле семисегментных индикаторов аналогичных размеров.
  2. Яркость. Светодиоды горят ярче, чем семисегментные индикаторы, их лучше видно в местах, освещенных солнечными лучами. Многие производители также предусматривают конструктивную защиту диода от воздействия солнца.
  3. Функциональность. При помощи матрицы из светодиодов можно выводить не только цифры, но также различные буквы, знаки препинания, символы. При помощи набора LED-матриц можно выводить некоторую информацию в виде бегущей строки.

Светодиодные матрицы имеют и недостатки:

  • Увеличенная сложность управления. Из-за большого количества элементов (в стандартной матрице их 64) управлять матричными индикаторами чем семисегментными. Для этого применяются микроконтроллеры, динамическая индикация и сдвиговые регистры.
  • Угол обзора. Особенность светодиодов состоит в том, что они фокусируют свет в одном направлении. Это приводит к тому, что изображение на светодиодной матрице видно хорошо только под определенным углом.
  • Непереносимость высоких температур. Нагревание снижает эффективность светодиодов и уменьшает срок службы.
  • Перегорание отдельных светодиодов приведет к эффекту «битого пикселя» и ухудшению качества изображения.

Самодельные часы на светодиодных матрицах

Несмотря на большую популярность часов на светодиодных матрицах, в Рунете не так уж и много схем для их самостоятельного изготовления. Рассмотрим самую популярную.

Необходимые навыки для сборки устройства:

  • изготовление печатных плат;
  • пайка элементов: схема предполагает SMD-исполнение, это значит, что элементы будут устанавливаться прямо на поверхность платы;
  • прошивка микроконтроллеров: в схеме используется МК ATMega16A;
  • программирование МК: это не обязательно, поскольку для данного устройства уже имеется прошивка контроллера. Этот навык пригодится, если вы захотите изменить режим работы часов или расширить их функционал, например, добавив дополнительные элементы такие, как датчики температуры или влажности.

Из инструментов понадобятся:

  • набор для изготовления плат;
  • программатор МК;
  • паяльник.

Рассмотрим подробнее схему устройства. Главным управляющим элементом является МК ATMega16A, он обеспечивает следующие возможности прибора:

  1. Отсчет времени и календарь. Ведется даже при отключении питания.
  2. Будильник. Здесь их 9 штук, можно запрограммировать на работу по дням недели.
  3. Измерение температуры. Конструкция часов позволяет установить два датчика температуры для измерений в комнате и на улице.
  4. Режим бегущей строки. Выдает следующую информацию: день недели, месяц, год, температура.
  5. Коррекция хода часов.

Большая часть функций возложена на микроконтроллер, что позволяет максимально разгрузить схему и использовать минимальное количество элементов.

В устройстве используется лишь две микросхемы: микроконтроллер и сдвиговый регистр TPIC6B595, также можно подключить два датчика температуры DS18B20 - один уличный, и второй комнатный.

Для индикации используются три светодиодные матрицы 8×8. В качестве диода D1 лучше использовать диод Шоттки. Диод в схеме обеспечивает переход на аварийное питание, а диод Шоттки обладает наименьшим падением напряжения и высокой скоростью переключения.

Процесс изготовления:


О некоторых особенностях при сборке часов на светодиодной матрице с ATMega 16A доступно рассказывается в следующем видео.

Часы на светодиодных матрицах имеют много преимуществ перед приборами с другим типом индикации: дешевле, не засвечиваются солнцем, с их помощью можно вывести большее количество информации. Существует большое количество моделей часов на led матрицах, и каждый найдет для себя девайс с требуемым функционалом. Также такие часы несложно изготовить самому, как вы увидели из пошагового руководства выше, это не требует особенных инструментов или специальных навыков.

На тему самодельных часов и обещал продолжения, так вот извольте. Часы на самодельных светодиодных матрицах.
, и

Делалось это для того чтоб попробовать изготовить сегментные часы, из расчёта по три светодиода на сегмент 7*4*3=84+2=86 штук

Вот приблизительно по такому принципу:

Хотелось попробовать разный цвет и обязательно яркие (а как по другому-то?)

По этому партии по 100 штук меня вполне устраивали, тем более цена вполне приемлемая, а так-же, заказал ещё в этом же магазине - сделать разноцветными цифры, чтоб можно было сравнить цвета на одном дисплее - какой будет красивее, ну и так - поприкалываться… :)

Товар заказан и оплачен был 20 августа 2016 , а прибыл 15 сентября 2016 , по нашим меркам достаточно оперативно. НО! Светодиоды красного цвета - не пришли! По окончанию срока защиты покупателя был открыт спор и продавец вернул деньги. Было просто жаль потраченного времени…

Товар пришёл в стандартном жёлтопупырчатом почтовом конверте, сами светодиоды были упакованы в отдельный целлофановый пакет, количество штук в синие, зелёные - было чуть больше 100 (точно сейчас уже не помню, но помню что было на 4-5 штук больше)

Все рабочие (т.е. светятся)

В тех, что разноцветные - было упаковано в отдельные пакетики, на которых было маркером помечен цвет R G B W Y - цвет везде соответствовал, и так-же по 2-3 лишних - создавалось впечатление, что так наверное у всех, но позже убедился, что не всегда так - бывает и наоборот…

Если бы не косяк с красным цветом, продавцу можно было-бы поставить жирную пятёрку с плюсом за нежадность.

С другой стороны, деньги возвращены - проблема в потерянном времени, а ещё он прислал письмо, где он писал, что мол возвращает мне СВОИ деньги, и если товар придёт - просил вернуть ему эту сумму

Дословно:

Hi, my friend, I am now a refund, when you receive a package, please return my money,Please give me a five-star high praise.

На что ему пришлось накатать письмо, что это не ЕГО деньги, а просто он возвращает мне в результате спора МОИ деньги, т.к. я его товара так и не получил и при этом потерял много времени ожидая его товар

Кстати, когда поприходили все остальные заказы от него, спустя 10 дней, я написал ему, что мол - переживаю, т.к. это странно - все пришли, а один из заказов не пришёл

На что он без всяких «хелоу френд» - сухо ответил «60 дней ещё не прошло»

А тут вдруг и «другом» стал, и вроде как ЕГО денеги поимел…

Но в общем-то - продавец свои обязанности выполняет, на письма реагирует, от отправленного товара - эмоции только положительные, деньги за не отправленное вернул - всё согласно ПРАВИЛ

Ну а теперь про то ради чего это преобреталось

Самодельные часы на самодельных светодиодных матрицах

Часы + радио+метео+ПДУ

Давно хотелось сделать часы на RGB матрицах. Были найдены и заказаны матрицы GMT2088. Но как говорится аппетит приходит во время еды. Т.к даже просто цветные часы это скучно, то решено было воткнуть в них FM тюнер, эквалайзер, датчики влажности, температуры и давления. Также сделана возможность работы от аккумуляторов на случай пропадания основного сетевого напряжения.

В итоге получились такие часы:




В красных светодиодах можно заметить 4 светящиеся точки, это не у вас в глазах четверится и не глюк фотоаппарата просто перед матрицами вставлены две пленки которые стоят перед ЖК матрицей монитора и свечение диода разбивается на 4 части. Если поиграться расположением пленок относительно друг друга то можно получить много разных отображений. Качество фото хромает но основы видны.

Возможности настройки часов:

1. Цвет отображения принимаемой радиостанции. Для целой и дробного значения станции можно установить свой цвет.

2. Настройка цвета бегущей строки.

3. Изменение скорости бегущей строки.

4. Настройка цвета отображения часов. Можно каждому символу установить свой цвет.

5. Радио диапазон 65мГц до 108мГц. Сохраняет в памяти до 20 станций радио.

6. Звук для каждой станции сохраняется отдельно также как и установки эквалайзера.

7. Будильников 7 . Настраивается время включения, время выключения, громкость звука, дни включения, звук нарастающий или нет и включаемая радиостанция или зуммер.

8. Регулировка НЧ и ВЧ частот.

9. Выбор шрифта отображения часов до 8 шрифтов, можно загружать свои шрифты.

10. Автоматическая или ручная регулировка яркости матрицы.

А) Полностью автоматическая в зависимости от освещенности

Б) Ручная клавишами на ПДУ или самих часах

В) По установленному времени. Устанавливается время включения минимальной и максимальной яркости.

11. Контроль заряда резервной батарейки часов.

12. Управление часами при помощи ПДУ. Сделана возможность обучения ПДУ (форматы NEC, RC5, SAMSUNG)

13. Сделано 6 варианта замены символа при изменении времени. (позже будут добавлены еще варианты)

14. Контроль основного напряжения питания. При пропадании переключается на резервный аккумулятор, при появлении отключает аккумулятор.

15. Таймер выключения с максимальным интервалом 99 минут. Выключает звук радио.

16. Установка предела яркости минимального и максимального.

17. Принудительный вывод бегущей строки с информацией о температуре в помещении и на улице

Программное обеспечение полностью написано на ассемблере а AVR Studio. Может где -то и не очень грамотно программа написана, т.к занялся ассемблером чуть больше года и то только в свободное время, но главное стабильно работает и быстро.

Сердцем устройства выступает AVR Atmega32 на частоте 16 мГц. Часы сделаны на двух платах. На одной матрицы с обвязкой. На второй все остальное.

Управление матрицами столбцами отдано регистрам STP16CP05 в корпусе TSSOP-24. У этих регистров 16 выходов и нагрузка на каждый выход до 80мА. Управление строками дешифратор 74HC138. На выход дешифратора установлены полевые транзисторы IRF7314. Модули RGB не впаивал в плату, а были установлены в разъемы.

В данных часах применена микросхема часов реального времени DS3231 . Выбор на нее пал из-за того, что ей не нужен внешний кварц т.к в нее встроен достаточно точный кварцевый резонатор с температурной компенсацией и также встроен датчик температуры.

FM радио реализовано а микросхеме RDA5807. У этой микросхемы достаточно хорошая чувствительность.

В качестве датчика влажности применен готовый модуль AM2321. В качестве датчика давления готовый модуль BMP180. В этих датчиках также есть датчик температуры.

Датчик BMP180:

Модуль AM2321:


В качестве эквалайзера применена микросхема TEA6330T. Она отвечает за регулировку громкости и настройки НЧ и ВЧ частот.

Усилитель мощности сделан на PAM8403. Маленькая микросхема но выдает достаточную мощность. На выход подключены динамики 8 Ом 2Вт. Можно подключать и динамики на 4 Ом. При 8 Ом выходная мощность примерно 1.6 Вт. При 4 Ом динамике 3 Вт.

В часах предусмотрена автономная работа от аккумулятора(АКБ) . Был установлен АКБ марки L12T1P31 3.7В 3700 мАч.

При пропадании сетевого напряжения яркость матриц автоматически настраивается на минимум. Если был режим автоматической регулировки яркости то он заменяется на ручной. Возможность регулировки яркости при отсутствии сетевого напряжения сохраняется. А также можно включить авто режим. При восстановление сетевого напряжения яркость вернется на тот уровень какая была установлена до пропадания сетевого напряжения.

Время работы от АКБ в режиме часов с пониженной яркостью примерно 15 часов. Время работы с максимальной яркостью, шрифт широкий, громкость радио средняя примерно 5 часов.

Реализован контроль напряжения АКБ. Т.К внутренний контролер АКБ отключает ее при напряжении ниже 2.5 В, а при снижении напряжения ниже 3.2 В преобразователь начинает работать не правильно и на его выходе его всего 5В. Часы уходят в бесконечный Reset. Поэтому и был выбран порог напряжения 3.2В что бы не опускать до минимального напряжения для преобразователя. Если напряжение опуститься ниже 3.2В часы будут обесточены.

На плате предусмотрена возможность установки специализированной микросхемы контроля напряжения типа BU48xx. В данной схеме BU4832 контроль 3.2 В.

Контроль заряда аккумулятора собран на мс TP4056. Преобразователь напряжения с 3.7в до 12в собран на LM3488.

Предусмотрена возможность установки как 3-х так и 2-х контактных АКБ. Если не нужен контроль температуры АКБ то часть элементов не устанавливаем (подробно см. схему).Все схемы платы и прошивка в конце статьи.

На элементах R13 R14 собран делитель для контроля напряжения резервной батарейки.

На элементах R1 R10 R11 R12 собран делитель для контроля освещенности в автоматическом режиме.

На элементах Q1 Q2 R19-R22 собран согласователь уровней т.к некоторые мс питаются напряжением 3В, а некоторые 5В.

Для начала схемы основного модуля, модуля RGB матриц и модуля даткика наружной температуры

Несколько фотографий готовой платы RGB матриц. Платы из двухстороннего стеклотекстолита. Некоторые доработки делались в процессе отладки. Поэтому на некоторые фото немного отличаются от плат которые в архиве. В архиве все изменения учтены.

Нижняя сторона платы:


На нижней стороне резисторы на 2.4 кОм просто напаяны на выводы.

Верхняя сторона без установленных матриц:


Вид сбоку:


Вид сверху:


Эффекты смены цифр (на видео не все эффекты)

Управление часами


При первом включении часов управлять ими можно только кнопками. Что бы была возможность управлять ПДУ нужно обучить часы сигналам с ПДУ. Для этого зажимаем любую из кнопок управления и нажимаем кнопку "Сброс". Пробежит бегущая строка "Настройка ПДУ" и увидим отображение первого формата ПДУ - NEC . По умолчанию на матрицах высвечивается первый протокол NEC. Перебор протоколов нажатием любой из кнопок на задней панели часов. Протоколы меняются по кругу NEC - Samsung - RC5.




Как я уже написал выше по умолчанию выставлен протокол NEC. Берем ПДУ и нажимаем на нем любую кнопку. Если выбранный протокол и протокол ПДУ совпали то надпись станет зеленой и далее устройство перейдет в режим обучения ПДУ. Если протоколы не совпали то на матрицах не будет никаких изменений и надпись так и останется голубой. Переставляем на следующий протокол и жмем опять любую кнопку ПДУ.
Определение протокола должно сработать с первого нажатия кнопки ПДУ. Если срабатывает со второго нажатия кнопки ПДУ или более то протоколы не совпадают и надо выбрать другой протокол.
Т.к протоколы NEC и Samsung немного похожи то пульт формата NEC можно обучить в режиме протокола Samsung но потребуется по два раза нажимать одну и туже кнопку. В дальнейшем попробую подкорректировать интервалы замеров импульсов и возможно это уберется.

Протокол RC5 самый простой. В этом режиме можно обучить любой ПДУ но работать он нормально не будет. В этом режиме будет нормально работать только ПДУ протокола RC5 .
Про отличие протоколов ПДУ очень много написано статей и описывать тут все это не буду.

После определения протокола программа перейдет в режим обучения кнопок ПДУ. На матрицах будет высвечиваться какую кнопку нужно нажать. В режиме ожидания цвет символа будет голубой.


Нажимаем кнопку на ПДУ. Если данные приняты удачно то цвет символа станет зеленым:


Если данные приняты с ошибкой то цвет на пару секунд станет красным, а затем устройство перейдет в повторное ожидание нажатия кнопки.


После того как будет нажата последняя запрашиваемая кнопка. Часы перейдут в основной режим работы. Если не будет установлено ни одного датчика ни микросхемы реального времени, то будет постоянно выводится бегущая строка " Ни одного датчика не найдено". Если не устанавливать DS3231 и установить любой из датчиков, то на матрицах будут выводиться только мигающие точки.

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

После настройки пульта мы увидим отображаемое время. Из этого режима можно перейти в разные меню. В программе предусмотрен контроль установленных микросхем TEA6330 и RDA5807. Если какая-то микросхема ни будет установлена то не возможно будет перейти в меню ее настройки и будет введена соответствующая бегущая строка либо "Эквалайзер не найден" либо " Радио не найдено ".

Описание действия кнопок ПДУ:

Кнопка Вкл/Выкл - включение - выключение матрицы

Кнопка стрелка вверх и стрелка вниз - регулировка яркости матрицы или изменения данных в режиме настройки. Яркость этими кнопка регулируется во всех меню.

Кнопка стрелка влево или стрелка вправо - смена шрифта в режиме отображения времени, а в режиме настройки будильника перемещение по подменю будильника

Кнопка "1" - меню "Часы"

Кнопка "2" - меню "Радио"

Кнопка "3" - меню "Будильники"

Кнопка "4" - меню "Эквалайзер"

Кнопка "5" - вывод бегущей строки

А) одно нажатие вывод информации со всех датчиков

Б) два нажатия в течении 3 сек вывод только уличной температуры.

Кнопка "6" - меню "Таймер выключеня"

Кнопка "8" - установка/сброс минимальной и максимальной яркости

Кнопка "9" - сброс секунд и коррекция времени через интернет

Кнопка "0" - автоматическая или ручная регулировка яркости

Кнопка CH+ и CH - перелистывание радио станций в режиме FM

Кнопка звук + и звук - регулировка громкости

Кнопка Вкл/Выкл звука - включение выключение звука

Кнопка "МЕНЮ" - переход в основные настройки в режиме времени, переход в настройки радио в режиме радио и настройки будильников в режиме будильников

Кнопка "ESC" - выход из подменю

Переход в зависимости оттого в каком режиме находится устройство. Если находится в режиме "Время" ,то переход будет в основные настройки. Если в режиме "Радио" , то переход в настройки радио. Если в режиме "Будильники", то в настройки будильника

Кнопка "ОК" - подтверждение изменений в режимах настройки

В часах 8 шрифтов для отображения времени. Переключение между шрифтами кнопками "Влево" или "Вправо" ПДУ или S6 на плате часов.

Пример широкого шрифта:


Пример узкого шрифта:


Добавление своих шрифтов

Шрифты хранятся в EEprom. Максимально можно загрузить 8 шрифтов.

Шрифт создавал при помощи PixelFontEdit-2.7
Сам шрифт и исходник Eprom для Atmel studuo6.2 в архиве в конце страницы.
Шрифты добавляем с метки eeFront1 :
Кол-во шрифтов не более 8, больше не поместятся. Программа сама определит кол-во загруженных шрифтов.
В конце шрифтов обязательно должна быть строка .db "E","N","D" означающая конец шрифтов.
Буквы END могут быть большие или маленькие но латинские.
Компилируем файл EEprom и прошиваем его. Можно сразу в EEprom забить все свои значения в нем подробные коментарии к каждой строке.
Также в шрифте задается какие будут точки разделяющие часы и минуты.Устанавливается только в первом символе каждого шрифта.
В первом символе если установлен бит0 первого байта то будет двойная, если сброшен то одинарная.

Настройки в режиме отображения времени

В этом меню изменения параметров кнопками "Вверх" и "Вниз" подтверждения изменений кнопка "ОК". Выйти из настройки можно в любой момент нажав кнопку "ESC".

Нажимаем кнопку "Меню" пробежит бегущая строка "Основные настройки" далее строка "Цвет радио". Будет мигать целая часть диапазона FM , кнопками "Вверх" или "Вниз" устанавливаем нужный цвет и нажимаем кнопку "ОК". Начнет мигать дробная часть диапазона FM . Также устанавливаем нужный цвет и нажимаем "ОК".



Если будет установлен вариант цвета для бегущей строки как на фото:


То при выводе бегущей строки цвет ее будет каждый раз новый.

Далее пробежит строка " Установка часов". Начнут мигать значение часов. Кнопками "Вверх" или "Вниз" устанавливаем текущий час и нажимаем "ОК". Начнут мигать минуты. Кнопками "Вверх" или "Вниз" устанавливаем текущие минуты и нажимаем "ОК".


Далее пробежит строка "Цвет часов". В этом меню для каждого символа часов можно настроить свой цвет. Выбор цвета кнопками "Вверх" или "Вниз" . Всего 7 вариантов цветов. Восьмой вариант это разноцветный символ с чередующимися цветами. Как только выбрали нужный цвет нажимаем кнопку "ОК". Далее настраиваем цвет для следующих символов и жмем "ОК".


Кнопками "Вверх" или "Вниз" устанавливаем текущую дату и нажимаем "ОК".




Далее пробежит строка "Установка дня недели". Дни недели отображаются в сокращении ВС- воскресение, СБ - суббота, ПТ - пятница и т.д. Кнопками "Вверх" или "Вниз" устанавливаем текущий день недели и нажимаем "ОК". На этом основная настройка завершена.


Далее пробежит бегущая строка с текущем днем недели, датой, годом, давление, температурой и влажностью. Устройство перейдет в режим отображения времени. В этом режиме бегущая строка с выводом информации о температуре, давлении и влажности в помещении будет выводится примерно через 4 минуты. Вывод информации со всех датчиков кнопка "5" ПДУ. Строка о температуре и влажности на улице выводится 1 раз в 15 минут (можно самостоятельно установить нужный интервал, об этом чуть ниже.) Если по каким либо причинам какой-то датчик не будет установлен то информация с этого датчика не будет отображена в бегущей строке. Т.к датчик температуры есть во всех трех датчиках, то данные будут читаться из того датчика который установлен. По умолчанию температура читается с DS3221.

Режим Радио.

Переход в этот режим осуществляется нажатием кнопки "2" ПДУ. Диапазон радио 65мГц - 108мГц.

В этом режиме бегущая строка также пробегает примерно через 4 минуты.

Отображается следующее меню:


Первые четыре цифры это частота принимаемой станции. Буква "М" или "С" принимаемый сигнал моно или стерео. Под буквой красным цветом уровень принимаемого сигнала. В самом низу отображается громкость.Перелистывание настроенных станций кнопками "СН+" и "СН-" , а регулировка громкости кнопками "Гр+" и "Гр-". Значение громкости сохраняется для каждой станции в отдельности. Так же для каждой станции отдельно сохраняются настройки эквалайзера ВЧ и НЧ. Для перехода в режим эквалайзера нажимаем кнопку "4" ПДУ (описание настройки чуть ниже).

Для перехода в режим настройки радио нажимаем кнопку "Меню" ПДУ. Будет выведена бегущая строка " Настройка радио".

Буква обозначающая Стерео или моно станет красного цвета. В режиме воспроизведения она синего цвета. Если в течении 15 секунд не будет нажата ни одна кнопка то устройство перейдет в режим воспроизведения радио.


Изменение частоты станции осуществляется кнопками "СН+" и "СН-" и кнопками "Влево" "Вправо" ПДУ.

В диапазоне 76-108 мГц клавишами "Влево" и "Вправо" изменения диапазона на 1мГц, а клавиши "CH-" и "CH+" ПДУ изменения на 0.1мГц.
В диапазоне 65-76 мГц клавишами "Влево" и "Вправо" изменения диапазона на 0.1мГц, а клавиши "CH-" и "CH+" ПДУ изменения на 0.01мГц.

Регулировка громкости кнопками "Гр+" и "Гр-". После выбора нужной частоты и уровня громкости нажимаем кнопку "ОК". Будет отображена ячейка для записи текущей станции. Если в ячейке уже есть записанная станция то номер ее будет красным цветом.



Если ячейка свободна то она будет зеленым цветом


Выбор нужной ячейки кнопками "СН+" и "СН-". Всего доступно 20 ячеек для записи. После выбора нужной ячейки нажимаем кнопку "ОК". В ячейку будет записана частота станции, и уровень громкости. Устройство вернется в режим настройки. Что бы выйти из режима настройки нажимаем кнопку "ESC" или ничего не нажимаем в течении 15 секунд. Устройство перейдет в режим воспроизведения радио.

Настройка будильников

Переход в режим настройки будильников кнопкой "3" ПДУ. Будет выведена бегущая строка "Будильники". Если ни одна кнопка не будет нажата в течении 15 секунд устройство перейдет в режим отображения времени.

После перехода в меню будильников увидим следующее:


Б1 означает номер будильника. Всего их семь. Прочерки после номера означают что будильник не включен. Кнопками "Влево и "Вправо" изменяем номер будильника. Если будильник выключен будет не возможно просмотреть его настройки. Для включения будильника нажимаем кнопку "ОК". Включится светодиод обозначающий что есть включенные будильники и появится колокольчик.


Теперь если можно будет просмотреть настройки будильника. Меню каждого будильника поделено на четыре части. В первой части настраивается время включения, громкость. Во второй части настраивается время выключения и режим звука линейный или нарастающий. В третьей части настраивается включаемая станция или выбирается зуммер. В четвертой части выбираются дни включения будильника. Нажмем кнопку "Вправо" перед нами будет первая часть.


Здесь отображается время включения будильника. В правом нижнем углу громкость включения. Для изменения настроек нажимаем кнопку "ОК". Начнет мигать часы включения. Кнопками "Влево" и "Вправо" изменяем значение и нажимаем кнопку "ОК". Так настраиваем все четыре параметра.

После настройки уровня громкости жмем "ОК" . Этим заканчиваем настройку в первой части будильника.

В этой части настраивается время выключения и громкость нарастающая при срабатывании будильника или линейная.

Линейная громкость отображается справа в виде прямоугольника:


Нарастающая гро мкость отображается в виде треугольника:


Все действия для настройки такие же как и в первой части.

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

После настройки второй части нажимаем кнопку "Вправо" и попадаем в третью часть настройки будильника.


В этой части настраивается включаемая станция радио или выбираем зуммер листая до надписи BEEP.


Настройка теми же кнопками что и в предыдущих частях. Станции выбираются только из тех что были настроены в режиме "Радио".

После настройки третьей части нажимаем кнопку "Вправо" и попадаем в четветрую часть настройки будильника.

Здесь настраиваем дни включения будильника.


Обозначение дней недели сделано цифрами. 1-понедельник, 2 - вторник, 3 среда и т.д

Нажимаем "ОК" ПДУ начнет мигать первый символ. Кнопками "Влево" или "Вправо" ПДУ включаем день недели или выключаем. Зеленый цвет это задействован день, красный не задействован. Внизу под задействованным днем загорается светодиод. Сделано для того кто собирал часы на обычных светодиодах что бы видеть какой из дне недели задействован.

После настройки нажимаем кнопку "Вправо " на ПДУ и переходим к следующему будильнику или нажимаем "ESC" и выходим в режим отображения времени.

При срабатывании будильника светодиод начнет мигать. Если во время работы будильника нажать кнопку "Выкл" ПДУ светодиод перестанет мигать и будильник не выключится по достижению времени выключения т.е происходит отмена выключения будильника.

Настройка эквалайзера

Переход в меню настройки эквалайзера нажатием кнопки "4" ПДУ. Пробежит бегущая строка "Эквалайзер" .В этом режиме настраиваются НЧ и ВЧ частоты. Для каждого канала радио настройки эквалайзера сохраняются отдельно. Если ни одна из кнопок не будет нажата в течении 15 секунд то будет осуществлен переход в режим отображения времени.

Для настройки нужных частот нажимаем кнопку "Влево" или "Вправо" ПДУ.

Настройка НЧ и ВЧ максимум:



Для изменения фильтра НЧ или ВЧ нажимаем кнопку "ОК" . Начнет мигать полоса слева. Кнопками "Влево" и " Вправо" меняем значение. Для сохранения установленного значения жмем "ОК" ПДУ. В зависимости от величины значения также меняется цвет указатели и цифры обозначающие уровень. Ближе к максимальному значению будут красными. Ближе к минимальному значению синим цветов, а в среднем диапазоне зеленым цветом.

Настройка НЧ минимум:


Настройка НЧ среднее значение:


Установка-снятие порога минимальной яркости

По умолчанию яркость регулируется от максимальной до полного гашения индикаторов. Но это не очень удобно в автоматическом режиме. При полной темноте индикаторы погаснут и ничего не будет видно. Для этого и был сделан этот режим что бы минимальная яркость не опускалась ниже или выше установленной

Нажимаем кнопку 8 ПДУ попадаем в меню установки пределов яркости.

Первое устанавливает предел минимальной яркости.


Кнопками "Вверх" "Вниз" ПДУ устанавливаем нужную яркость и нажимаем "ОК" ПДУ. Будет длительный сигнал зуммера и записан порог минимальной яркости.


Кнопками "Вверх" "Вниз" ПДУ устанавливаем нужную яркость и нажимаем "ОК" ПДУ.

Будет длительный сигнал зуммера и записан порог минимальной яркости.

В следующем разделе устанавливается время включения минимальной яркости, а далее время включения максимальной яркости.

Выход их меню настройки "ESC" ПДУ. Теперь при регулировки яркости не получится сделать темнее или светлее установленного порога и в автоматическом режиме яркость не будет ниже или выше установленной.

Что бы задействовать режим автоматической регулировки яркости на ПДУ нажимаем "0" переводя в автоматический режим работы. На передней панели часов загорится светодиод.

Что бы работала регулировка яркости в реальном времени в зависимости от освещенности время включения минимальной и максимальной яркости должны быть равны. В противном случаи яркость будет устанавливаться по выбранному времени. Смена яркости с минимального на максимальный уровень и на оборот происходит плавно.

Для сброса порога яркости просто входим опять в меню настройки порога яркости и все пределы будут сброшены.

Для установки порога с кнопок читаем ниже 8 пункт.

Управление кнопками

На задней панели часов размещены кнопки S4-S9 . В зависимости в каком меню находимся функция кнопок изменяется.

Кнопка S8 переход в разные меню. Для того что бы перейти в нужное меню нажимаем S8 и удерживаем. После необходимого кол-ва сигналов зуммера отпускаем и попадаем в выбранное меню. Кол-во сигналов зуммера будет соответствовать номеру кнопки ПДУ. Если будет 4 сигнала то значит попадем в меню "Эквалайзер" , если 1 сигнал то меню отображения времени и т.д.

1. Функции кнопок в меню часов:

S6 изменение шрифта

S7 сброс секунд и обновление времени через интернет

S9 переход в основные настройки.

При нажатии S9 переходим в меню настройки. В этом меню кнопками S4 и S5 изменяем параметр, кнопка S6 переход к следующему настраиваемому параметру. Выход из меню не возможен придется пройтись по всем настраиваемым параметрам.

После настройки последнего параметра пробежит бегущая строка и устройство вернется в режим отображения времени.

2. Функции кнопок в меню радио:

S4 и S5 регулировка звука "+" и "-"

S6 и S7 переход по настроенным каналам "+" и "-"

S9 переход в режим настройки радио

В меню настроек действие кнопок:

S4 и S5 регулировка звука "+" и "-"

S6 и S7 изменение частоты радиостанции "+" и "-"

S9 переход в меню записи станции в память. Кнопками S6 и S7 меняем номер ячейки памяти, а кнопка S9 подтверждение записи.

Выход из меню настроек- не нажимаем ни какие кнопки и выход будет автоматический через 15-20 сек.

3. Функции кнопок в меню настройки будильников:

S4 и S5 перелистывание будильников "+" и "-"

S6 и S7 не задействованы

S9 Включение и выключение будильника

Если будильник включен нажимаем S4 попадая в основные настройки включенного будильника. Переход по подменю будильника S4 и S5. Для настройки параметра жмем S9 и S4 и S5 изменяем параметр. Следующее нажатие S9 переход к следующему настраиваемому параметру. Устройство выйдет из настроек будильника автоматически если в течении 15 сек. не будет нажата любая из кнопок.

4. Функции кнопок в меню эквалайзера:

S4 и S5 перелистывание настраиваемых параметров.

S6 вход в режим изменения выбранного параметра. В этом режиме S4 и S5 изменяет параметр, а S6 подтверждения изменения.

S7 не задействована.

Выход из режима автоматический через 15 сек если ни одна из кнопок не нажималась.

6. Функции кнопок в меню таймера выключения:

S4 и S5 установка интервала времени выключения с шагом в 5 минут. Интервал 0 минут означает, что таймер выключен

S6 выход в меню отображения времени.

7. Свободно. Возможно будет использовано в дальнейшем.

8. Функции кнопок в меню установки предела яркости:

S4 и S5 изменение яркости.

S6 подтверждение выбранной яркости.

S7 выход из настройки.

9. Свободно. Возможно будет использовано в дальнейшем.

Немного о примененных деталях и их замена и наладке.

Все SMD элементы типоразмера 0805. Стабилизатор U1 LM317ADJ можно заменить на любой с напряжением стабилизации 3 Вольта например ASM1117-30. В этом случаи R18 заменить перемычкой, а R17 не устанавливать. Стабилизатор на 5В U8 LM2576-5 можно заменить на LM2596-5. Светодиоды D6 D7 D11 D12 D13 типоразмера 2835. Резистором R24 устанавливаем громкость работы зуммера. Не забываем выставить ток заряда для применяемого аккумулятора резисторами R44 R45 (см. таблицу на схеме). При большом токе заряда рекомендую на TP4056 установить радиатор. Резисторами R38 и R49 можно ограничить максимальную громкость или же их заменить перемычками. Конденсаторы С28 С29 С42 С43 в обвязке TEA6330T устанавливать которые указаны на схеме. Уход от емкости в ту или иную сторону изменить диапазон регулировки частот. С28 и С43 отвечают за НЧ, а С29 и С42 за ВЧ. Пробовал ставить 6.8nF C29 и С42 ВЧ частоты практически не изменяются. Резисторами R28 R33 R31 можно изменить напряжение на выходе преобразователя. При номиналах указанных на схеме напряжение 11.86В.

Рассчитывается напряжение по формуле:

Uвых=1.26*(1+((R33+R28)/R31))

Диоды Шотки D4 D5 D1 D8 D10 можно заменить любыми на ток 2А. Стабилитрон D3 можно остановить любой на напряжение стабилизации 4.3В 4.7В или 5В.

Монтаж лучше начинать с установки всех стабилизаторов напряжения и проверить их на работоспособность, что бы не было обидно за спаленные контроллеры и датчики. Затем лучше смонтировать преобразователь и проверить его подав на 8 ногу LM3488 напряжение в пределах 3.2-5В. На выходе должно быть около 12В.

Далее монтируем элементы для заряда АКБ и контроля напряжения АКБ и проверяем на работоспособность. Для 2-х проводного АКБ не устанавливаем R39, а R43 заменяем перемычкой. Также поступаем для 3-х проводного если не нужен контроль температуры АКБ. Средний вывод АКБ остается болтаться. Если же контроль температуры нужен, то устанавливаем все элементы, хотя R43 можно и не ставить т.к оно будет подключено параллельно терморезистору АКБ и сильно влиять на работу не будет.

Контролер напряжения аккумулятора собран на TL431 и LM358. На TL431 собран источник образцового напряжения на 2.5 В. Это напряжение поступает на 2 вывод LM358, а на 3 вавод LM358 поступает напряжение от АКБ через делитель R58 R62 как только напряжение на АКБ будет ниже 3.2 на 3 выводе также напряжение станет меньше 2.5 вольт и на 1 выводе будет 0 Q9 закроется. Положительное напряжение через R56 R51 поступит на базу Q8. Q8 Закроется тем самым и закроет транзистор Q7.1 обесточивая всю плату. После отключения запуск часов будет возможен только при подключении внешнего блока питания т.к LM358 питается от внешнего источника питания.

Если есть микросхема BU4832 то TL431 LM358 их обвязку и R56 не устанавливаем. Если же собираем на TL431 и LM358 то не устанавливаем R53 и возможно придется подстроить порог срабатывания делителем R58 R62. При наличии основного питания должен идти заряд АКБ, а на выходе преобразователя не должно быть напряжения. Если напряжение АКБ выше 3.2 вольт то на базе транзистора Q9 должно быть примерно 0.7- 0.8В.

Теперь проверяем работу резервного источника питания. Сначала схему запитываем от основного источника. Затем его выдергиваем из сети и на выходе преобразователя должно появится 12В. Если преобразователь не запустился то смотрим что на базе Q9 . Если там напряжение меньше 0.7В, а АКБ заряжена, то измеряем напряжение на 2 выводе LM358 должно быль 2.5В и на 3 выводе больше 2.5В. Если все нормально, то неисправна LM358 или не подключено к ней питание. Порог отключения можно отрегулировать R62 . При увеличении его номинала порог отключения увеличивается т.е устройство будет полностью обесточено при более глубоком разряде АКБ. При уменьшении номинала порог уменьшается.

Конденсаторы C6 C11 C21 C20 C37 рекомендуется применять с низким ESR.

Если все работает то монтируем процессор прошиваем его и монтируем все остальные элементы.. На плате для удобства прошивки предусмотрены контакты для ISP разъема. Вывод GND для ISP паяем в любом удобном месте.

Индикация светодиодов

Светодиод D11 светится, то значит установлен режим автоматической регулировки яркости. Ручная регулировка не работает. Переключается режим кнопкой "0" ПДУ.

Светодиод D12 светится, то значит есть включенные будильники. Если мигает, то сработал будильник.

Светодиод D13 светится, то значит нужно заменить резервную батарейку часов. Даже если вытащить батарейку время не сбросится т.к за счет заряда конденсаторов некоторые время будет питаться DS3231. Так что минут 5 есть на замену батарейки.

Светодиод D6 светится, то значит идет заряд АКБ

Светодиод D7 светится, то значит АКБ заряжена.

Если оба светодиода D6 и D7 не светятся, то это значит, что часы работают от внутреннего АКБ.

Изготавливаем печатные платы (ПП)

Были небольшие просчеты в креплении динамиков, вырезы сделал больше чем нужно и пришлось мудрить с их креплением. В архиве учтены все изменения в носившиеся в плату.

Версия платы с WI-FI.



Печатные платы изготавливаю при помощи негативного фоторезиста. Печатаю шаблон на пленке струйным принтером Epson L800 в негативном виде. Очищаю заготовку при помощи порошка "Пемолюкс". На мокрую заготовку наношу пленочный фоторезист. За неимением ламинатора проглаживаю утюгом выставленным на деление 1. Накладываю шаблон и засвечиваю тремя УФ лампами по 20W каждая в течении 1 мин 10 сек. Далее опять под утюг, затем смываю не задубленные участки и травить. Сверлю несколько отверстий в крайних контактных площадках и делаю проколы в этих же местах в шаблоне. Плата и шаблон совмещается при помощи иголок. Травится вторая сторона. Первая заклеивается скотчем.

Сверлим отверстия. Переходные отверстия обычно сверлю диаметром 0.4 мм и запаиваю в них проволочки. Запаиваем элементы.

Фото готовой платы с WI-FI



К монтажу относимся внимательней что бы потом не искать почему не работает. Некоторые выводные элементы нужно запаивать с двух сторон. Выводы этих элементов как переходные отверстия. Под кварц на плату нужно наклеить скотч или изоленту что бы не было контакта с дорожками или перепаять на сторону Atmega32.

Корпус был изготовлен из 4мм мягкого пластика. Режется отлично канцелярским ножом. Т.к светодиоды находятся глубоко то нужны световоды. В качестве световодов использована крышка коробки от автомобильных ламп. Корпус был начерчен в CorelDRAW распечатан на простой бумаге и с помощью двухстороннего скотча закреплен на пластике и вырезан. Прячем все в корпус, прикручиваем антенну:


Датчики торчат сверху:


Что бы был нормальный вид и не торчали просто датчики из корпуса был куплен в автомагазине набор для крипления номера и светоотражающие колпачки приклеены сверху на корпус.

Получилось так:


Вот вроде и все. В планах добавить возможность вывод информации с RDS . Так же сделать еще один вариант под энкодеры.

Написана программа для модуля ESP8266. Также изменена прошивка для Atmega32 в архиве все обновлено. Так же были внесены изменения в схему. Были неправильно подключены сигналы TX RX от Atmega к ESP8266. Все изменения описанные здесь учтены в схеме в архиве.

В схеме сделаны небольшие доработки. Объединены сигналы Reset Atmega и ESP8266. Но для этого нужно согласовать сигналы по напряжению. Добавлен резистор на 9.1 кОм между Reset Atmega и GND. Резистор 10кОм между Reset ESP8266 и шиной 3V удален. Напряжение на выводе Reset должно стать в пределах 3V-3.3V.

Добавлено согласование уровней TX RX. Хотя можно обойтись и без него но сделал так как должно быть по правилам.

Для прошивки модуля ESP8266 необходимо:

1.Качаем(если не установлена) Arduino IDE с офф сайта (https://www.arduino.cc/en/Main/Software ), устанавливаем.

2.Запустить Arduino IDE, далее Файл - Настройки - в поле Additional Boards Manager URLs вставить ссылку на стабильную версию http://arduino.esp8266.com/package_esp8266com_index.json

4.В Boards Manager в поле фильтра введите esp8266 или вручную пролистайте список и кликните на ESP8266 by ESP8266 Community Forum
Кликните Install и дождитесь окончания загрузки (около 130 Мегабайт).
Если загрузка произошла слишком быстро, возможно, что вы уже устанавливали Arduino IDE для ESP8266 и потребуется почистить кэш Boards Manager, иначе у вас останется установленной старая версия. Нужно сначала деинсталлировать старую версию, а потом необходимо удалить файлы кэша. Для Win7 x64 удалите файлы из папки C:UsersПользовательAppDataRoamingArduino15 и повторите все, начиная с п.2
Закройте Boards Manager и в меню Инструменты выберите Плата - Generic ESP8266

Выберите последовательный порт, к которому подключена плата. Открываем файл прошивки.

Для прошивки модуля использовал PL2303. Драйвера на нее ниже в архиве на Win 8.1 работает. Драйвер устанавливаем в ручную.

Можно использовать любой USB-COM переходник.

Модуль ESP 8266 запаиваем на плату. Соединяем модуль с USB-COM переходником соединения сигналов TX RX перекрестное т.е TX ESP8266 на RX USB-COM и RX ESP8266 на TX USB-COM. Устанавливаем перемычку на XP10 и убираем перемычки XP11 и XP12. Нажимаем Reset.

В прошивке для модуля который в часах нужно сделать изменение.

В прошивке вписываем имя своей сети WI-FI и пароль к ней.

Нажимаем иконку "Стрелка вправо" начнется прошивка модуля.

После завершения прошивки удаляем перемычку XP10 и устанавливаем назад XP11 и XP12.

Рекомендую проверить открыты у Вас порты 123 на ПК и в роутере.
Проще это сделать на ПК, в настройках времени вкладка Время по интернету - Изменить параметры. В поле вбиваем time.nist.gov и жмем "Обновить сейчас". Если напишет, что время было успешно обновлено то у Вас порты открыты. Если ошибка то открываем порты в роутере.
У меня дома на роутере ASUS RT16 с прошивкой Tomato все работало по умолчанию отлично.
На работе на роутере Zuxel Keenetic Giga II с родной прошивкой пришлось открывать порты, хотя в самом роутере время обновлялось с интернета.

Время обновляется нажатием кнопки "9" ПДУ. Единственное, что надо учитывать при обновлении времени, если не будет доступа к интернету то секунды все ровно обнулятся.
После включения часов или нажатием кнопки Reset для обновления времени через интернет необходимо выждать секунд 30. Это время необходимо модулю для подключения к сети или для возврата ошибки если нет подключения. Если раньше нажимать кнопку "9" ПДУ просто ничего не будет происходить. Во время синхронизации времени матрицы на 1-2 секунды будут погашены.
Если не будет доступа к интернету то выведется строка "Упсс Нет сети" .
Если будет доступ к сети но не будет доступа к серверу точного времени то выведется строка "Нет доступа к серверу времени"

Также появиться новая сеть c именем "Datchik" .Ее название также можете изменить на любое в Arduino и изменить пароль к ней. К этой сети будет подключаться второй модуль с уличными датчиками.

PS. От автоматической синхронизации решил отказаться т.к у DS3231 очень маленький уход по времени и синхронизация нужна не чаще 1 раз в месяц и то уход несколько секунд. Так что проще сделать это в ручную.

Была написана программка теста матриц. Фьюзы как для основной прошивки.
Все контролируется визуально.

Светодиоды статуса резервной батареи, включенного будильника и авто регулировки яркости должны гореть. Зуммер должен молчать.

1.Первый тест включает все светодиоды матриц. Тест прогоняет по всем цветам. Визуально можно определить какие светодиоды не светятся или их цвет отличается от других значит где-то не пропай. Тест начинается с полностью погашенных матриц.

2.Вторая часть теста зажигает только один светодиод и прогоняет его по всем строкам в каждом из трех цветов R G и B . Должен зажигаться только один светодиод. Если будут гореть два светодиода значит где-то КЗ на выводах регистров матриц.

Блок питания должен обеспечивать ток хотя бы 2A в режиме теста т.к нет регулировки яркости и потребление достаточно большое (особенно когда белый цвет) . Если блок не сможет обеспечить такой ток то тест не запуститься т.е будут попытки старта и тут же происходить сброс.

Модуль датчика наружной температуры.

Модуль датчика наружной температуры так же сделан на ESP8266 и в качестве датчика применен AM2321. Так же в этом модуле установлен датчик комнатной температуры. Сделано это для того если будут собираться несколько одинаковых часов и тогда данные они могут получать с одного модуля. В наружный модуль встроена USB зарядка для аккумулятора, а также контроль напряжения АКБ. При снижении напряжения АКБ ниже 3.2 вольта загорится светодиод.

Также добавлен визуальный контроль ошибок.

1. Нет датчика AM2321 горит зеленый светодиод

2. Нет датчика BME280 горит красный светодиод

3. Неудачное подключение к WI-FI сети горит синий светодиод



Прошивка делается также как и для модуля в часах. Единственное некоторые строки нужно изменить в программе.

Устанавливаем время опроса датчика температуры. По умолчанию установлено 900 сек = 15 мин
Меняем значения в строке:

ESP.deepSleep(900*1000000,WAKE_RFCAL); // время 900 секунд = 15 минут
Меняем на свое значение. Сохраняем и прошиваем.

У меня модуль питается от аккумулятора по 1000мА.

Простые часы на светодиодных матрицах. Многие радиолюбители, начинающие и не только любят «изобретать велосипед» - строить СВОИ электронные часы. Не обошла эта участь и меня. Конструкций часов в инете сегодня конечно предостаточно, но вот часов на светодиодных матрицах почему-то среди них единицы. В русскоговорящем интернете я нашел только одну полностью законченную и описанную конструкцию. В тоже время, светодиодные матрицы сейчас очень сильно подешевели, и их стоимость не выше, а то и ниже, чем у семисегментных индикаторов такого же размера. Например примененные мной GNM23881AD при размере 60х60мм были куплены за 1,5уе (3 индикатора обошлись в 4,5уе), за эти деньги врядли можно купить четыре семисегментника таких-же размеров. А вот информации, разместить на матричном индикаторе, можно намного больше. Кроме цифр на них можно отображать любые буквы, знаки, а с помощью бегущей строки еще и текст.

Исходя из этого, появилось желание построить часы на светодиодных матрицах, но чтоб схема при этом получилась не сложнее чем на семисегментниках. Также хотелось чтоб она была достаточно функциональная и не похожая на другие. Так родилась следующая схема.

Функционал у часов такой:

  • Отсчет времени, календарь, день недели. (високосный год учитывается, переход на летнее/зимнее время не осуществляется).
  • Сохранение хода часов при пропадании внешнего питания (потребление составляет 15мка).
  • Коррекция хода + - 59,9сек\сутки, с шагом 0,1сек. 9 будильников. 3 из которых «одноразовые», и 6 «постоянных», индивидуально настраиваемых по дням недели.
  • Индивидуально настраиваемая длительность звукового сигнала каждого будильника (1-15мин).
  • Звуковое подтверждение нажатия кнопок (возможно отключить).
  • Ежечасный звуковой сигнал (возможно отключить).
  • С 00-00 до 08-00 сигнал не подаётся.
  • 1 или 2 датчика температуры (Улица и дом).
  • Настраиваемая бегущая строка, посредством которой выводится вся информация (кроме времени)
  • Значение коррекции хода, и настройки «бегущей строки» - сохраняются даже при пропадании резервного питания.

«Сердцем» часов выбрана AtMega16A, из-за её доступности, дешевизны и «ногастости». Схему хотелось максимально упростить, поэтому все что можно, было возложено на контроллер. В результате удалось обойтись всего двумя микросхемами, контроллером и регистром TPIC6B595. Если кому то недоступен TPIC6B595, то можно его заменить на 74НС595 + ULN2803. Оба варианта были опробованы. Так же можно попробовать применить TPIC6С595, она немного слабовата, и слегка грелась, но в целом работала стабильно. Отсчет времени производится с помощью асинхронного тайме – Т2. Ход часов сохраняется и при пропадании питания. В это время бОльшая часть схемы обесточивается, а контроллер питается от батарейки, аккумулятора, или от ионистора. Мне было интересно «по играться» с ионистором, поэтому применил его. Ток потребления часами в дежурном режиме составляет 15мка. При питании от ионистора на 1Ф, часы «продержались» четверо суток. Этого вполне достаточно для поддержания хода во время перебоев питания. Если применить батарейку СR2032, то теоретически, по расчетам заряда должно хватить на 1,5года. Наличие сетевого напряжения контроллер «слушает» через вывод РВ.3 Этот вывод является инвертирующем входом компаратора. Напряжение питания, через делитель R2-R3 подается на вывод РВ.3, и в нормальном состоянии равно примерно 1,5в. Если внешнее напряжение упадет ниже 4,1 вольта, то напряжение на выводе РВ.3 станет меньше 1,23вольта, при этом сгенерируется прерывание от компаратора, и в обработчике этого прерывания выключаются все «лишние» узлы контроллера и сам контроллер усыпляется. В этом режиме продолжает работать только отсчитывающий время таймер Т2. При появлении внешнего питания, напряжение на РВ.3 снова подымится выше 1,23в, контроллер «увидев» это, переведет все узлы в рабочее состояние. Если вместо ионистора, будет использоваться батарейка СR2032, то её нужно подключить через диод(предпочтительно диод шоттки). Анод диода подключается к + батарейки, а катод к катоду VD1. В обычном режиме на экране отображается время в формате часы-минуты. С интервалом в одну минуту происходит запуск бегущей строки. Бегущей строкой отображается день недели, дата, год, темп. дома, и темп. на улице. Бегущая строка настраиваемая, т.е. можно включить/выключить отображение любого из элементов. (я например всегда отключаю отображение года). При выключении всех элементов, бегущая строка не запускается, и часы постоянно отображают текущее время. 9 будильников разделены на 3 одноразовых и 6 многоразовых. При включении будильников 1-3, они срабатывают только один раз. Для того чтоб они сработали еще раз, их нужно повторно включать вручную. А будильники 4-9 многоразовые, т.е. они будут срабатывать ежедневно, в установленное время. Кроме того эти будильники можно настроить на сработку только в определенные дни недели. Это удобно, например если не хотите чтоб будильник разбудил Вас в выходные. Или например Вам нужно просыпаться в будние дни в 7-00, а в четверг в 8-00, а на выходных будильник не нужен. Тогда настраиваем один многоразовый на 7-00 в понедельник-среду и пятницу, а второй на 8-00 в четверг….. Кроме того все будильники имеют настройку длительности сигнала, и если Вам, для того чтоб проснуться, мало сигнала в течении 1 минуты, то можно увеличить его на время от 1 до 15мин. Коррекция хода производится один раз в сутки, в 00-00. Если часы спешат к примеру на 5 сек в сутки, то в 00-00-00 время установится в 23-59-55, если же часы отстают, то в 00-00-00 время установится в 00-00-05. Шаг коррекции – 0,1 сек. Максимальная коррекция – 59,9 сек/сутки. С исправным кварцем больше вряд ли понадобиться. Коррекция осуществляется и в дежурном режиме при питании от батареи. Светодиодные матрицы можно использовать любые 8*8 светодиодов с общим катодом. Как уже было указано, я применил GNM23881AD. В принципе можно «набрать» матрицу и из отдельных светодиодов. Микроконтроллер AtMega16a можно заменить на «старый» AtMega16 с буквой L. При этом, теоретически должен немного увеличится ток потребления от батарейки. Наверное будет работать и просто AtMega16, но могут возникнуть проблемы при работе от батарейки. Диод D1 - желательно любой диод шоттки. С обычным выпрямительным тоже работает, но чтоб обезопасить себя от различных глюков, связанных с тем что часть схемы питается напряжением «до диода», а часть «после диода» лучше поискать шоттки. Транзистор VT1 – любой n-p-n. Управление часами осуществляется двумя кнопками. Их количество можно было довести до 8шт, не добавляя больше вообще ни одного компонента, кроме самих кнопок, но захотелось попробовать «выкрутится» всего двумя. Кнопки условно названы «ОК» и «ШАГ». Кнопкой «ШАГ» как правило происходит переход к следующему пункту меню, а кнопкой «ОК» изменение параметров текущего меню. Сигнал сработавшего будильника также выключается кнопками «ОК» или «ШАГ». Нажатие любой кнопки во время сигнала будильника отключает его. Схема управления получилась такой:

Видео как все работает!