РадиоКот :: Настольные часы MyClock
Например TDA7294

РадиоКот >Схемы >Цифровые устройства >Бытовая техника >

Теги статьи: Добавить тег

Настольные часы MyClock

Автор: Albom
Опубликовано 16.09.2018
Создано при помощи КотоРед.
Участник Конкурса "Поздравь Кота по-человечески 2018!"

Под новый год сломались мои настольные часы Assistant AH-1054. В принципе, можно было найти другие - на "Али" вариантов уйма. Но я решил пойти другим путём - собрать их самостоятельно. Требования поставил следующие:

  • отображение времени;
  • отображение даты;
  • отображение температуры;
  • отображение относительной влажности (этот параметр в моих предыдущих часах не измерялся и соответственно не отображался);
  • адаптивная подсветка (подсветки в предыдущих часах мне действительно не хватало);
  • достаточно большие, хорошо различимые, символы;
  • минималистичный дизайн (без кнопок, энкодеров, менюшек и т.д.)

За три вечера из модулей, которые я купил на "Али" во время распродажи и которые дожидалися своего часа, собрал первый вариант. За основу взял Digispark. 

От Digispark ожидать многого не стоило, но основные функции были реализованы - время и дата. А вот с датчиком влажности DHT11 возникли проблемы. Библиотека для работы с ним предусматривает подключение к входу, который рассчитан на генерацию прерывания (по изменению уровня). До второй версии, в которой были бы реализованы все требования, прошло полгода...

За основу взял микроконтроллер Atmega8. Для быстрой разработки использовал концепцию Arduino с множеством доступных из коробки высокоуровневых библиотек. DHT11 работать так и не заставил (разбираться с сигналами не стал, хоть логический анализатор в моей "лаборатории" присутствует), С Arduino Duemilanove работает, с платой на Atmega8 (загрузчик MiniCore, частота внутреннего генератора 8 МГц; частоты 1 МГц недостаточно) - нет. Заменил на AM2320. Но... Со стандартной библеотекой не хватило памяти... Ни ПЗУ, ни ОЗУ... Даташит на сенсор и исходники библиотеки в помощь! В итоге расход памяти минимальный - I2C рулит. 

Таким образом, часы реального времени (DS3231), ЖКИ (1602 с модулем на PCF8574), датчик температуры и влажности (AM2320) работают на шине I2C (причём на датчике подтягивающих резисторов нет - они уже есть на модулях).

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

Часы не имеют никаких органов управления. Чтобы установить время нужно записать в контроллер соответствующую программу. Дата и время, которые будут установлены, определяются переменными __DATE__ и __TIME__. Исходники MyClockDigisparkSetup.ino и MyClockAtmega8Setup.ino рассчитаны на Linux. В Windows, возможно, придётся изменить парсинг этих переменных. Вариант часов на Atmega8 имеет потенциал изменения времени через последовательный порт (памяти достаточно). А вот виртуальный порт на Digispark, к сожалению, работал нестабильно.

Питание часов - от аккумулятора напряжением 3,7 В (размера 18650) через контроллер заряда и повышающий преобразователь (в первом варианте - до 7,5 В, во втором - до 4,6 В). Необходимость повышения напряжения до 7,5 В для Digispark связана с тем, что на нём установлен линейный стабилизатор 78M05. Необходимость повышения напряжения во втором варианте - сохранения одного уровня контрастности экрана при питании от аккумулятора и от преобразователя USB-UART. Кстати, из-за особенностей этого преобразователя (немодифицированный на PL2303) для загрузки прошивки необходимо нажимать кнопку сброса SW1.

Что касается внешнего вида часов, то, например, внутренности первого варианта выглядел вот так:

Второй вариант выглят примерно так же.

В качестве корпуса использовал распределительную коробку за 14 гривен (примерно 0,5 доллара).

Видео работы второго варианта можно посмотреть на Youtube:

Исходный код прошивок доступен на github: https://github.com/Albom/MyClock, что достаточно удобно - можно время от времени исправлять ошибки и добавлять новые возможности. Загрузчик MiniCore записывал в микроконтроллер Atmega8 с помощью Arduino IDE через USBAsp.

Желающим повторить конструкцию желаю удачи! А радиокоту - успехов в творчестве и долголетия!



Все вопросы в Форум.




Как вам эта статья?

Заработало ли это устройство у вас?

10 12 25