Первичные часы (задающие часы, мастер часы) предназначены для управления электромеханическими часами (вторичными часами). Демонастрация текущего (02.03.19) этапа работы по клику на картинку ниже.
- Интерфейс на базе STemWin
- Тачскрин
- 4 линии (в данной версии). На каждую линию может быть нагруженно несколько вторичных часов
- Выбор типа выходного импульса: однополярный, с чередующейся полярностью
- Питание RTC от VBAT
- Хранение настроек в Backup регистрах
- Проверка сохраненных данных по CRC
- Калибровка RTC (+/- N секунд через K дней)
- Автоматический переход на зимнее/летнее время
- Отключение автоматического перехода на зимнее/летнее время
- Отключение/приостановка линий (всего три состояния: СТОП,ПУСК,ВЫКЛ)
- Автоматическая коррекция времени на линиях после пропадания питания и последующего его появления
- Ручная коррекция времени на линиях
- Независимые часовые пояса для линий
- Встроенный календарь, не позволяющий установить неправильную дату
- Индикация потребляемого линиями тока
- Автоматическая блокировка интерфейса
- Экран разблокировки интерфейса при помощи предустановленного пароля
- Дистанционное управление через UART
- Расписание событий
- УНЧ, подключение динамиков, выдача музыкального фона по наступлению события
От контроля питания решено отказаться, т.к. за время эксплутации первичных часов разных фирм не было выявлено проблем, связанных с пропаданием питания. Одной из важных предполагаемых проблем могла стать проблема выдачи импульса в линию в момент пропадания питания, что привело бы к неточному переключению минуты на линии, иными словами - не все часы на линии переключили бы минуту. Но такого совпадения не было никогда. Это редкость, и реализация такого контроля представляется сложной и практически не нужной.
Программная часть базируется на библиотеке HAL для stm32. Для облегчения разработки GUI используется FreeRTOS. Во FreeRTOS "крутится" несколько задач:
- defaultTask - производится опрос тачскрина
- GUI - крутится библиотека STemWin. Каждую секунду происходит обновление структуры, хранящей в себе системное время, и при необходимости обновляется дата. Каждую минуту выдаются семафоры для тасков линий
- vTaskLineN,где N-номер линии - таски линий, в которых производится инкремент времени в masterClock.line[N], и изменяется состояние соответствующего пина для выдачи импульса. Для положительного и отрицательного импульса назначены свои пины. Длительность импульса задается переменной masterClock.line[N].Width (0..15), и рассчитывается по формуле:
T=masterClock.line[N].Width*LINE_WIDTH_MULT (мС)
LINE_WIDTH_MULT - именованная константа в guivars.h
- Переход с STM32F103VET6 на STM32F407ZGT6. Необходим для обеспечения возможности подключения внешней SRAM, что позволит устранить мерцание GUI при его изменении. Рендеринг будет производится в памяти силами API STemWin.
- Получение данных с DTMF модема, который будет работать на соседнем микроконтроллере. Прием данных будет осуществляться при помощи линий пожарного оповещения. Данные должны передаваться мастер-устройствами (датчики температуры, давления, синхронизация времени...) в диапазоне частот от 16кгц до 20кгц. Алгоритм декодирования отработан, испытан. Реализация демодулятора представлена здесь: https://github.com/msin87/STM32_dtmf Выделение модема в другой микроконтроллер необходим для облегчения использования данного модема в других проектах.
- Пересылка данных в часовые линии в DTMF виде. Необходимо для реализации возможности управления цифровыми часами (LED) Проект видится возможным для продажи в качестве исходного кода + схемы + дизайны плат фирмам производителям первичных часов, так и в качестве самостоятельного изготовления и последующей самостоятельной продажи первичных часов.
- Графический интерфейс
- Сенсорное управление
- Независимые линии (параметры импульсов, времени)
- Возможность диганостики линий
- Возможность интеграции в сложные офисные центры благодаря наличию DTMF модема (нет необходимости прокладывать новые кабельные сети для передачи данных)
- Возможность развертывания вторичных устройств типа "Умный офис" на основе существующих линий пожарного оповещения
- Следовательно, экономия на развертывании дополнительных кабельных сетей.
https://www.youtube.com/playlist?list=PLETA3sQc0F7jAHRk-ew5IhVjwY3-kG1VV здесь периодически выкладываю этапы разработки
Приглашаю к совместной работе над данным большим проектом. У меня есть уникальная возможность протестировать в реальных "боевых" условиях всю систему, есть выход на потенциальных покупателей данной системы. Все вопросы и предложения пишите на почту: msin87@yandex.ru