РадиоКот >Схемы >Цифровые устройства >Бытовая техника >
Часы с радиоприемником и метеодатчиками TouchClock - II
Touch Clock - II
Часы построены на базе микроконтроллера ATMEGA128A и 3.2" цветного TFT-дисплея 320*240 точек на базе контроллера ILI9341 с резистивной тач-панелью.
Что часы умеют:
- Отображение текущего времени и календаря на текущий месяц с подсветкой текущей даты
- Помесячное перелистывание календаря
- Отключаемый ежечасный звуковой сигнал (с 23 до 7 отключен принудительно)
- Таймер, до 9ч 59мин 59сек, дискретность установки 1сек
- 5 будильников (3 мелодии или FM приемник, выбор громкости, выбор дней недели, выбор длительности звучания)
- 4 выхода типа "открытый сток", управляемых из будильников, с несколькими режимами управления
Прямое управление выходами
- Напоминания о важных датах (до 64 напоминаний)
- FM - приемник RDA5807, с возможностью его использования в качестве будильника
- Память на 48 станций приемника с возможностью задания названия станции
- Три языка интерфейса
- Несколько шрифтов отображения данных
- Несколько цветовых схем (переключение вручную или случайным образом)
- 7 уровней яркости подсветки
- Авторегулировка яркости подсветки по внешнему фотодатчику и/или по времени
- Отображение в отдельном блоке под календарем текущих метеоданных при наличии встроенных и/или внешних метеодатчиков (температура, влажность, давление)
- Почасовая история метеоданных за 5 дней с графиками этих метеоданных
- Поддержка датчика температуры/давления/влажности ВМЕ280 (ВМР280) и двух датчиков DS18b20, подключаемых непосредственно к плате часов
- Возможность подключения по UART / беспроводному каналу двух внешних модулей с датчиками ВМЕ280 и/или DS18b20.
- Отключаемые звуковые сигналы при изменении количества метеодатчиков (с 23 до 7 отключены принудительно)
- Отключаемый звуковой сигнал при резком изменении данных от метеодатчиков (изменение влажности на 10%, давления на 8мм или температуры на 12° в течении часа, с 23 до 7 отключен принудительно)
- Отображение другим цветом резко изменившихся метеопоказаний
- Выбор корректирующих констант влажности (+/-50%) и температуры (+/-10°) для каждого физического датчика
- Выбор для каждого физического датчика его расположения - дом/улица, отображение символа "домика" или "елочки" на графиках и в кратком отображении метеоданных
- Отображение предупреждения о критичном разряде батарейки внешнего датчика
Внешний датчик описан в статье Метеодатчик с возможностью передачи показаний
Авторский вариант часов выглядит вот так:
Принципиальная схема:
(клик откроет большую схему в отдельном окне)
Схема в PDF-формате
Мозгом часов является микроконтроллер ATMEGA128A. Он отвечает за взаимодействие со всей периферией и за вывод информации на дисплей.
Из обязательной периферии - часы реального времени DS3231S (IC3 на схеме). Обязательно с индексом S, DS3231M не подходят, это слегка урезанная версия. Кроме подсчета времени, DS3231S обеспечивают тактирование 1024 Гц для всей программной логики часов.
Второй обязательный элемент - сам дисплей. Без него часы будут работать, но пользы от них будет очччччень мало.
Третий обязательный элемент - усилитель мощности IC4, сделан на MC34119. Он нужен для воспроизведения звуков будильников, напоминаний, таймера и других звуковых сигналов. Если его не устанавливать - функциональность часов останется прежней, но звуковые сигналы слушателя не достигнут.
Опционально часы могут быть дополнены метеодатчиком температуры/влажности/давления (MODULE1 - BME280), парой цифровых термометров DS18B20 (подключаются к коннекторам JP5, JP6), а так же модулем радиоприемника (MODULE2 - RDA5807), звук с которого усиливается всё той же IC4.
Питание - от 5 вольт. Наружу выведен MicroUSB-разъем U1. Так же на плату (позиция JP1) можно впаять либо коннектор PLS-R, либо провода от источника питания 5 вольт.
На схеме предусмотрена развязка питания диодами D1,D3. Что бы при одновременном подключении блока питания 5 вольт и программатора со своим питанием 5 вольт никому не поплохело от конкуренции питания. Подойдут любые диоды Шоттки в SMA корпусе. В принципе, это больше перестраховка. Соответственно, под диодами разведены напаиваемые перемычки SJ1, SJ3. Это для тех, кто не планирует подключать одновременно блок питания и программатор. Т.е. запаиваются или диоды, или перемычки каплями припоя.
Далее питание поступает на LDO-стабилизатор 1117-3.3 (IC1), имеющий на выходе 3,3 Вольта, от которых питаются все цифровые элементы схемы, а так же модуль FM-приемника. Усилитель мощности питается напрямую от 5 вольт.
По питанию FM-приемника и усилителя стоят фильтры L1,C11,C12 и L2,C19,C21.
Внутрисхемное программирование. Осуществляется через разъем JP4. На разъем выведены Reset, SCK, RX0/PDI, TX0/PDO, земля и вход питания 5 вольт, которые подаются на LDO IC1 через диод или перемычку (см.выше, про развязку питания).
Прошивка ATMEGA128A выполняется по SPI-интерфейсу, но MOSI/MISO для прошивки не совпадают с выводами интерфейса SPI, а выведены на RX-TX USART0. Т.е. в основном режиме работы на JP4 выведен USART, который в будущем, возможно будет использован, например, для связи с ПК. Предусмотрен диодно-резисторный преобразователь уровней сигналов от пятивольтового программатора к трехвольтовым уровням микроконтроллера (R2,R5,R7-R9,D4-D6).
Дисплей. Любой на контроллере ILI9341, разрешением 320*240 и параллельным интерфейсом, выведенным на 34 пиновый интерфейс с резистивным тачем на контроллере, совместимом с XPT2046. Такие дисплеи есть в диагоналях от 2.4" до 3.5".
Звук. Выход FM-приемника заведен на усилитель мощности на MC34119. Туда же, через делитель R20-R21 заведен сигнал будильника. Возможно, придется подобрать значение резистора R20 для получения удовлетворительной громкости звука будильника. Так же, возможно, придется подобрать R19, что бы при максимальной громкости радио не было искажений звука.
Выход усилителя выведен на разъем JP9. Согласно документации на ИМС усилителя, минимальное сопротивление динамической головки - 8 Ом.
Датчик освещения. К JP2 можно подключить фоторезистор (можно впаять на проводочках либо подключать через коннектор).
Фоторезистор в освещенном состоянии должен иметь сопротивление в районе 4-10 кОм.
В принципе, подойдет любой фоторезистор, только нужно подобрать R3, что б его сопротивление было в 1.5-2 раза больше сопротивления фоторезистора при максимальной освещенности. Регулирование яркости начинает срабатывать от момента, когда сопротивление фоторезистора становится больше сопротивления R3.
Управление внешними устройствами.
Часы умеют управлять четырьмя внешними устройствами.
Управление возможно как вручную, через соответствующее меню, так и автоматически, по командам будильников.
Для этого на коннектор JP8 выведены 4 стока полевых транзисторов Q4-Q7. И 4 земли. Не смотря на то, что обратный диод встроен в сам MOSFET технологически, на всякий случай предусмотрено место под защитные диоды D9-D12. Коммутируемые напряжения и токи - согласно характеристик применяемых транзисторов. R13-R16 - подтяжки затворов к земле. Если управление внешними устройствами не планируется, элементы R13-R16, Q4-Q7 (и D9-D12) можно не устанавливать.
Если планируется управление внешними реле, то лучше защитные диоды (1n4148, например), припаять непосредственно к катушкам реле, что бы токи самоиндукции не сливались в источник питания, а замыкались на саму катушку.
Датчики температуры*. Предусмотрено подключение двух датчиков DS18B20 по трехпроводной схеме. Питание датчиков - от шины 3.3в. Линии данных датчика защищены стабилитронами на 3.3-3.6-3.9 вольт. (Это сделано на случай, если датчик будет выноситься из корпуса на проводах (и на разъеме), что бы защитить вход контроллера хотя бы от мелких наводок/помех/статики) В случае расположения датчиков внутри корпуса - стабилитроны не нужны.
Если же хочется более серьезной защиты - то можно поставить супрессоры (TVS-диоды) с напряжением пробоя 3.3-3.6 вольта.
Например, SMBJ3V3-E3/52 от VISHAY или SMLVT3V3 от ST. Это однонаправленные супрессоры в корпусе SMB на 3.3 вольта. Якобы могут поглотить импульс до 600 Вт.
Датчик давления/влажности/температуры ВМЕ280*.
Такие датчики китайцы массово продают уже напаянные на переходные платы.
Причем в двух вариантах:
- питание 1.8 - 3.3 вольта и интерфейсы SPI и i2c
- питание до 5 вольт, со встроенным LDO для датчика и интерфейс i2c с преобразованием уровней.
На плате предусмотрено место для подключения обоих вариантов датчика. При этом можно перемычкой SJ4 выбрать нужное питание - от шины 3.3в или от 5в. (Как оказалось, пятивольтовый датчик прекрасно работает от 3.3 вольт, поэтому можно поставить перемычку на 3.3 вольта и не мучиться выбором датчика).
- По датчикам DS18B20 и ВМЕ280. Как показывает практика, того тепла, что выделяется внутри корпуса часов, вполне достаточно для того, что бы датчики завышали показания температуры на 2-3° (а ВМЕ еще и занижал влажность...) Соответственно, рекомендуется датчики выносить на внешнюю поверхность корпуса куда-нибудь подальше от теплых элементов. Следует только помнить, что шина i2c, по которой подключен BME280, не предусматривает длинных линий. Соответственно, данный датчик выносить далеко за пределы корпуса не рекомендуется.
Так, в авторском варианте корпуса один DS18B20 вынесен в нижнюю часть задней стенки корпуса, а под ВМЕ280 в задней стенке предусмотрен контур для вырезания отверстия и выноса датчика на заднюю поверхность корпуса.
Также в часах предусмотрена настройка программной коррекции данных от метеодатчиков.
Внешний датчик температуры/влажности/давления.
Часы поддерживают до двух внешних датчиков температуры/влажности/давления. Эти датчики были описаны в ранее опубликованной статье.
Датчики подключаются к последовательному порту USART1 нашего контроллера, выведенного на разъем JP3.
Подключение датчиков может быть как проводное, так и беспроводное, с применением радиоудлинителей UART, в частности были успешно применены модули JDY-40.
Входная цепь Rx порта USART1 защищена стабилитроном D2 и подтянута к +3.3В резистором R1. На стороне внешнего датчика выходной передающий каскад должен быть типа Открытый коллектор/сток. Такое решение позволяет подключить к последовательному порту несколько датчиков в параллель. При помощи перемычки SJ2 можно выбрать питание внешнего датчика - 3.3 или 5 вольт.
В схеме так же предусмотрен выходной каскад с открытым стоком (Q2,Q3,R4,R6) сигнала Tx последовательного порта USART1 для возможности организации двунаправленного обмена данными, но пока данная возможность не реализована. Часы умеют только принимать данные от внешних датчиков. Соответственно, элементы Q2,Q3,R4,R6 можно не устанавливать.
Скорость обмена данными может быть в двух вариантах - 1200 и 9600 бод. За выбор скорости отвечает перемычка SJ5. Для работы с вышеописанным внешним датчиком необходимо выбрать скорость 9600 бод.
В случае проводного подключения датчика стабилитрон D2 желателен, особенно если датчик будет на длинной линии, поскольку на входе Tx микроконтроллера напряжение не должно превышать 3.3 Вольта.. Что б никакие помехи не могли сделать плохо нашему конроллеру. D2 - стабилитрон на 3.3-3.9 вольта. Его так же можно заменить на TVS-диод (см.выше рекомендации по выбору таких диодов).
В случае применения радиоудлинителей резистор R1 можно увеличить до 1кОм, что бы не грузить выходной каскад модуля, а диод D2 можно не устанавливать.
Применение модуля JDY-40:
Герберы - их можно отдать на производство. Или импортировать в SprintLayout. Или еще в какой-либо CAD.
А можно просто воспользоваться Проектом Eagle 7
Список деталей (ВОМ)
Практически все детали - для поверхностного монтажа.
Резисторы и неполярные конденсаторы - типоразмера 0805.
Полярные конденсаторы - разведены под тантал типоразмера В, исключая С19, там предусмотрено место под SMD- электролит типоразмера 0605, поскольку танталы большой емкости дорогие. Но там прекрасно ставится тантал типоразмера В или С.
Защитные стабилитроны разведены под корпус SMA (его площадки позволяют припаять и обычные стабилитроны в корпусе SOD80-R. В качестве защитных стабилитронов можно использовать такие как BZX55 на напряжение 3.3-3.6 вольта в SOD80-R корпусе. Или применять серьезные супрессоры с напряжением пробоя 3.3-3.6 вольта, типа SMBJ3V3-E3/52 от VISHAY или SMLVT3V3 от ST...
Вместо датчика BME280 можно применить BMP280 который умеет мерять температуру и давление, но не умеет влажность.
Для того, что бы собранные часы заработали, в микроконтроллер необходимо залить прошивку и установить фьюзы.
Прошивка
Фьюзы: L:0xBF H:0xD1 E:FF.
Или в виде картинки:
Часы, собранные без ошибок и из исправных деталей, работают без дополнительной отладки и с одной маленькой стартовой настройкой - калибровкой тач-панели. Эта настройка необходима, поскольку на самом деле дисплей - это два независящих друг от друга устройства - дисплей и тач-панель. И координаты нажатия, которые отдает контроллер тач-панели, ни каким образом не соответствуют координатам пикселей.
Соответственно, в часах предусмотрена калибровка тач-панели.
При включении питания часы переходят в основной режим отображения времени и календаря. Либо предлагают выполнить калибровку.
Калибровка при включении питания предлагается в следующих случаях:
- Калибровка еще ни разу не выполнялась - в памяти контроллера еще нет сохраненных данных о калибровке
- Текущее время-дата в микросхеме часовх реального времени DS3231 - 2000 год, 1 января, 0 часов, минуты - менее 5 мин. (сделано для того, что бы можно было добраться до калибровки экрана при любых ситуациях, просто вынув и вставив батарейку часов)
Необходимо аккуратно тонким неострым предметом (идущим в комплекте с дисплеем стилусом) нажимать на красные крестики, появляющиеся в четырех углах дисплея. Каждое нажатие должно длиться не менее полусекунды.
При этом крестики перекрашиваются в зеленый цвет.
Настройки калибровки сохраняются только после нажатия на четвертый крестик. Так что при ошибке можно выключить часы и снова их включить - и попасть опять в режим калибровки.
- Скриншоты делались программным способом, в специальном режиме отладки. Это реальные изображения, выводимые на дисплей часов. Поскольку развитие проекта продолжается, некоторые графические элементы на скринах могут отличаться от реализации в последней версии прошивки.
Основной экран
В режиме основного экрана тап по левой части календаря листает месяцы в прошлое, тап по правой части - в будущее. Тап по области времени при этом принудительно возвращает часы в режим отображения текущего месяца.
Тап по области метеоданных переводит часы в режим отображения времени и пятидневной истории метеопоказаний.
В режиме отображения истории метеопоказаний за 5 дней тап по времени возвращает отображение календаря на текущий месяц.
Тап по символу радиоприемника включает радиоприемник, при этом на экране отображается интерфейс управления приемником. Так же в режим радиоприемника можно попасть через основное меню.
Тап в правом верхнем углу (символ Ξ ) вызывает на экран основное меню, тап по иконкам сигналов переходит в меню настройки звуковых сигналов.
Долгий тап по области времени приводит к смене цветовой схемы.
Листание календаря
|
История метеопоказаний
|
Основное меню
|
|
|
|
Включенный радиоприемник
|
Интерфейс часов при включенном радиоприемнике
|
Меню настройки звуковых сигналов. В это меню можно попасть как из основного меню, так и из основного экрана, нажав на иконки звуковых сигналов
|
|
|
|
История метеопоказаний.
В режиме отображения истории метеопоказаний за 5 дней тап по времени возвращает отображение календаря на текущий месяц.
При нажатии на кнопку в правой нижней части экрана отображается меню коррекции данных от метеодатчиков, там же находится переключатель, включающий звуковые уведомления о резком изменении одного из показателей, а так же при изменении числа датчиков, которые видят часы.
Звуковые сигналы принудительно отключены с 23:00 до 7:00.
Независимо от состояния переключателя показания, которые в течении часа сильно изменились, будут отображаться другим цветом.
В правой части экрана, напротив каждого датчика, можно выбрать символ расположения каждого датчика - помещение/улица (домик/ёлочка)
История метеопоказаний
|
Меню коррекции метеопоказаний
|
|
|
Основное меню - Радиоприемник.
Тап по символу выключения в левом верхнем углу отключает приемник, часы вернутся в основной режим.
Так же в режим радиоприемника можно попасть через основное меню.
Тап по текущему времени так же возвращает часы в основной режим, но при этом приемник остается включенный.
Короткий тап по стрелкам << < и > >> вызывает перестройку частоты приема на 50 кГц. Долгий - вызывает автопоиск ближайшей станции.
Кнопка Ξ вызывает список радиостанций.
Тап по радиостанции вызывает ее включение. Долгий тап - открывает текстовый редактор, где можно задать индивидуальное название станции.
Так же можно сохранять в пустую ячейку текущую частоту настройки и удалять из списка ранее сохраненные радиостанции.
В правом верхнем углу находится кнопка автопоиска станций. При запуске автопоиска (нажатие на кнопку Начать) все ранее сохраненные станции стираются, производится поиск и сохранение найденных радиостанций.
Радиоприемник
|
Список сохраненных станций
|
Меню автопоиска
|
|
|
|
|
Процесс автопоиска станций
|
Автопоиск завершен
|
|
|
|
Основное меню - Сигналы
В меню сигналы можно включить подачу ежечасного сигнала (работает с 7:00 до 23:00), выбрать один из 5 будильников, запустить таймер.
Так же из этого меню можно попасть в режим настройки напоминаний.
К сожалению на момент формирования скриншотов этот режим был еще не реализован, поэтому без скриншотов.
Основное меню - Сигналы - Будильник [1 .. 5]
Каждый будильник может срабатывать разово или в определенные дни недели.
Будильник может проиграть мелодию, включить на определенный период радиостанцию с нужной громкостью и, при необходимости, изменить состояние выходов управления по определенному алгоритму. Так же будильник может управлять выходами управления без звуковых сигналов.
При срабатывании будильника на дисплее отображается номер сработавшего будильника и кнопка выключения сигнала будильника. Режим повторения сигнала не предусмотрен.
Настройка будильника
|
Выбор типа сигнала: Мелодия Радио Только управление
|
|
|
Настройка каналов управления
|
Срабатывание будильника
|
|
|
Основное меню - Сигналы - Таймер
Выдержку таймера можно задать с точностью до секунды в диапазоне от 1 сек до 9 час 59 мин 59 сек.
При срабатывании таймер выводит на экран текущую выдержку, при этом звучит прерывистый звуковой сигнал.
Меню настройки выдержки. На данный момент реализована еще и установка секунд.
|
Режим отсчета таймера. На данный момент, кроме оставшейся выдержки, отображается еще и прогрессбар, позволяющий визуально оценить оставшееся время выдержки
|
Срабатывание таймера. На данный момент дополнительно выводится время выдержки.
|
|
|
|
Основное меню - Сигналы - Напоминания.
К сожалению на момент формирования скриншотов этот режим был еще не реализован, поэтому без скриншотов.
Всего можно задать до 64 напоминаний.
Каждое напоминание настраивается на определенный час определенного числа определенного месяца. Напоминания могут быть как одноразовые, так и ежегодные. Напоминание срабатывает в заданный час. Напоминание может повторяться до трех раз после основного срабатывания, с интервалом в час.
Напоминание, настроенное на 29 февраля, в невисокосный год сработает 1 марта.
Сортировки сохраненных напоминаний нет.
Одновременно может быть отображено до четырех напоминаний. Если будет больше - отобразятся последние 4.
Отображение напоминаний сопровождается коротким музыкальным фрагментом, отображение идентично срабатыванию будильника и таймера - отображается большая активная область, в которой выводятся активные напоминания. Напоминания отображаются в течении 59 минут или до тапа по активной области. Тап по этой области выключает отображение напоминаний и возвращает часы в основной режим.
Часы умеют управлять четырьмя внешними устройствами. Автоматическое управление работает через будильники.
Кроме того, предусмотрено ручное включение/выключение сигналов на выходах управления.
Ручное управление сигналами
|
|
Тут все просто. Можно изменить дату и время, а так же включить/выключить автопереход на летнее время для тех, кому это актуально.
Настройка времени
|
Настройка даты
|
|
|
Через данное меню можно изменить настройки отображения информации, такие как
-яркость экрана
-цветовую схему - 7 шт + автоматическое переключение со случайным выбором
-язык отображения
-шрифт основного текста - 3 вида шрифта
-шрифт больших цифр (часы, метеоданные в режиме отображения метеоистории, обратный отсчет таймера) - 2 вида шрифта.
Так же можно выполнить повторную калибровку тач-панели дисплея.
Меню настройки дисплея
|
|
Настройки яркости подсветки дисплея.
Настройки яркости
|
|
Основная яркость - это максимальная яркость в режимах с авторегулировкой яркости, либо постоянная единственная яркость.
Переключатель "Зависит от времени" - с 7:00 до 23:00 включена максимальная (основная) яркость, с 23:00 до 7:00 - ночная яркость.
Переключатель "По датчику освещения" - яркость подсветки подстраивается под уровень внешней освещенности.
Если включены оба переключателя - то преимущество отдается большей яркости, т.е. с 7:00 до 23:00 яркость будет максимальная, а с 23:00 до 7:00 - по фотодатчику.
Ночная яркость - уровень яркости подсветки в ночном режиме. Настройка доступна, если включен хотя бы один из вышеописанных переключателей регулирования яркости.
Переключатель "Полная при активе" принудительно включает основную яркость подсветки во время различных активностей - нажатием на активные области дисплея, сработка будильника, таймера. Полная яркость держится 30 секунд после окончания активности. Переключатель доступен при активных функциях управлением яркостью - должен быть включен хотя бы один из вышеописанных переключателей.
Выбор этого пункта немедленно меняет цветовую схему. Цветовые схемы переключаются циклически, при этом сразу происходит переключение цветовой схемы. Справа от кнопки отображается иконка предпросмотра, схематически повторяющая основной экран часов, что позволяет оценить выбранную цветовую схему. После перебора всех доступных цветовых схем иконка предпросмотра меняется на символ автоматического переключения цветовых схем - иконку часиков со стрелкой по кругу. В этом режиме цветовая схема будет переключаться автоматически, в случайный период от 15 до 90 минут на другую, выбранную случайным же образом. Так же цветовую схему можно переключить в основном режиме часов, длинным тапом по области времени.
Выбор одного из трех языков отображения информации. Языки переключаются циклически, результат сразу отображается на дисплее.
Выбор одного из трех шрифтов для отображения основного текста (все надписи, календарь...). Доступно три шрифта - с округлыми символами, с прямоугольными символами и с стилизацией символов под сегментный дисплей. выбранный шрифт сразу отображается на дисплее.
Выбор шрифта для отображения времени, метеопоказаний в режиме истории и для цифр обратного отсчета таймера. Доступно два шрифта - с округлыми цифрами и со стилизацией под сегментный дисплей.
Переход в режим калибровки экрана (Если вдруг это понадобится и получится добраться нажатиями до этого меню. Если же калибровка слетела - то см.выше - вынуть батарейку, что бы сбросилось время/дата). Автовыход из режима калибровки - через 10 секунд, если не было нажатий на экран.
Альтернативные шрифты
|
Экран калибровки тач-панели
|
|
|
Авторский вариант 3D-печатного корпуса показан в начале статьи.
STL-модели корпуса
Так же тем, кто захочет сделать свой корпус, будет полезен чертеж дисплея. Чертеж - это компиляция из доступных чертежей китайцев и измерений штангенциркулем размеров по двум реальным дисплеям.
Файлы:
Чертежи 3D-корпуса
Прошивка
Проект Eagle 7
Герберы
Список деталей (ВОМ)
Схема в PDF
Все вопросы в
Форум.
Как вам эта статья?
|
Заработало ли это устройство у вас?
|
|
|
Эти статьи вам тоже могут пригодиться: