Например TDA7294

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

Серьезный "Умный Дом" или проект ComDev

Автор: Arhar
Опубликовано 19.01.2017.
Создано при помощи КотоРед.

Мяу, уважаемые коты!

Хочу поделиться с вами результатами трудов. Разрабатывал изначально сей труд для себя, но постепенно понял что труды могут кануть в лету. А по сему, почему бы не поделиться с правильными котами. Сразу оговорюсь: данный проект не совсем "умный дом" в его современном понимании. Я бы назвал это Программно - аппаратным комплексом.

И данный программно-аппаратный комплекс предназначен для автоматизации управления и взаимодействия персонального компьютера с любым электрооборудованием или электроприборами.
Аппаратно система состоит из центрального блока управления, датчиков и исполнительных устройств (рэле например), соединяющихся 3х проводной линией по принципу «звезда». Программно система состоит из программы конфигуратора и основного сервиса.

При разработке, стояли несколько основных концепций:
• Надежность превыше функционала. Если некая функция или возможность отрицательно влияла на стабильность и надежность системы, то она или отбрасывалась или отходила на второй план. Т.е. шла лесом. На этом этапе много времени было уделено ремонтопригодности системы.
• «Умный», не означает сложный. При разработке в первую очередь стояла цель вносить как можно меньше изменений в сущеструющий процесс жизни человека. Что выбрасывает из проекта почти все "свистелки" и "перделки" и оставляет нам суровую реальность :).

"Так чего ж оно тогда вообще умеет?" спросит меня кот. Ну что ж давайте пройдемся по функциям. Их я разделил на 2 категории: 1. автономные (без ПК). 2. зависимые от ПК.

1. Автономные:

  • Железяка имеет 10 входов 10 выходов. Как те или иные входы и выходы должны взаимодействовать, программируется заранее с помощью программы Конфигуратора. Далее мы полностью самостоятельны.
  • Так же мы имеем порт 1wire для подключения до 10 датчиков температуры типа DS18B20. В дальнейшем я планирую добавить функцию реакции на температуры автономно от ПК, но пока мы только меряем ее и.... всё :(
  • Взаимодействие с охранными системами. Железяка позволяет взаимодействовать с любыми охранными, пожарными, инженерными системами по средством специального входа AUX. Для этого необходимо подключить вход AUX к релейному выходу типа «сухой контакт». В этом случае, при замыкании релейного выхода мы можем принимать решения о включении выключении выходов и можем попищать для порядка.
  • так же на борту у нас I2c интерфейс, на который можно подвесить дисплей типа LCD2004 с интерфейсом PCF8574T. Пока мы можем выводить на него тревоги, но эту часть планируется тоже развивать.

Весьма ограничено и скучно, не так ли? А чего вы хотели? Я же говорил - суровая реальность. Но всё становится интересней, когда мы подключаемся к компьютеру по USB.

2. Функции через ПК:

  • Удаленное управление через WEB – интерфейс
  • Управление голосом. (да вы не ослышались. Нажимаем кнопку PTT, мяучим команду в микрофон и всё исполняется).
  • Озвучивание команд, тревог и т.п. голосовым синтезатором речи.
  • отправка СМС сообщений о событиях тревогах.
  • чтение новостей и погоды голосом.
  • тревоги и озвучивание температуры от термометров.
  • построение суточного графика температур (и да... всех 10 температур).
  • планирование заданий по времени.

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

Железка может работать автономно или в составе с компьютером по USB порту (некоторые функции работают только через ЭВМ). В системе питания предусмотрен дополнительный вход. Резервный блок питания для функционирования системы не обязателен, но рекомендован для предотвращения обесточивания управляемых электроприборов и оборудования. В основе лежит процессор PIC18F4550. Более пояснений к схеме в теории не требуется. Единственное замечание, то что плата, сделанная мной, двухстороняя. В остальном, как видите, не особо она и сложна:

 Микроконтроллер в моей плате используется DIP исполнения. И установлен на панельку по причине упрощения ремонта и для подъема его над платой, что бы можно было под него разместить кварцевый резонатор и конденсатор C5. Так же в панельки ставим все оптопары и драйвера Дарлингтона, все по той же причине: проще менять, если что то пойдет не так. Диодная пара VD1, как и 7805, для пущей надежности можно положить на алюминиевый плоский радиатор.

Уделим внимание прошивке. Для облегчения жизни нам, котам, было принято решение прошить программатором в железяку бутлодер. Прошивается он в режиме LVP. А далее прошивки мы "жуем" прямо по USB порту, с помощью отдельной программы для обновления прошивок. Положить в статью ее не получилось, а по тому вот USB HID Bootloader ссылка на нее. Это стандартная утилита от компании Microchip. Должна быть так же доступна на их сайте. Для обновления прошивки достаточно подать питание на устройство с зажатой кнопкой BTL (она же PTT) и устройство перейдет в режим прошивки. Далее работаем с программой USB HID Bootloader.

Перейдем пожалуй в описанию программной части:

1 Конфигуратор

Общие сведения

Системные требования:

  • Pentium 4 или выше.
  • Windows XP SP3 или выше.
  • .Net Framework 4.0

Запуск приложения Конфигуратора останавливает основной сервис для предотвращения конфликтов.

Строка состояния указывает подключено ли устройство к компьютеру и его идентификационный номер.

Кнопка «очистить» - удаляет файл конфигурации (settings.xml) и перезапускает приложение для возврата к начальным предустановкам.

Кнопка «сохранить» - сохраняет все изменения, произведенные во всех вкладках. Если попытаться закрыть приложение без сохранения, выйдет сообщение о произведенных изменениях и предложение их сохранить.

Кнопка «Перечитать» - заново считывает все настройки из файла конфигурации, отменяя все произведенные, но не сохраненные изменения.

Все поля тревожных фраз имеют ограничения по 50 символов. Если фраза не требуется, ее можно просто удалить, оставив поле пустым.

система

 

Имя системы – название, отображаемое в «шапке» веб-интерфейса и произносимое при запуске основного сервиса.

Размер логов – значение в килобайтах, при достижении которого, файлы логов будут автоматически удаляться.
Если указано значение «0» - логи автоматически не удаляются.

Порт сервера – порт на котором будет доступен веб-интерфейс. По умолчанию 8888. это означает, что веб-интерфейс будет доступен, например, по адресу http://127.0.0.1:8888

Кол-во подкл. – максимально допустимое количество одновременных подключений к веб-интерфейсу.

Пароль User Moder Admin – пароли к учетным записям.
При подключении к веб-интерфейсу по адресу 127.0.0.1 (localhost) пароли не запрашиваются.

Порт модема – номер СОМ порта, на котором подключен GSM-модем.

№ телефона – номер телефона, на который будут приходить настроенные сообщения. СМС будут отправляться в режиме охраны (замкнут охранный контакт AUX).

Голос – Выбор голоса синтеза речи из списка установленных в системе. Работает как с х64, так и с х86 голосовыми движками.

GoogleAPIkey – ключ, необходимый для доступа к Google Speech. Необходим для системы распознавания голосовых команд. Подробнее о ключах на сайте http://www.chromium.org/developers/how-tos/api-keys

RSS погоды – адрес RSS рассылки, из которой система может читать прогнозы погоды.

Например http://rp5.ru/rss/5483/ru

RSSновостей – адрес RSS рассылки, из которой система может читать новости.

Например https://lenta.ru/rss/top7

Включить звук и голос – галочка включает или выключает все звуки в системе. Так же можно указать с какого и по какое время звуки будут разрешены.

Ниже (см. скриншот) можно указать дежурные фразы на то или иное событие. Вместо фраз, во всех случаях, можно указать имя текстового файла (например hello.txt) созданного в папке «ext» (в папке с приложением). Тогда система каждый раз при том или ином событии будет произносить фразы из строк указанного файла в случайном порядке. Так же в некоторых строках можно использовать ключ %n. Он подменяется автоматически на значение, зависимое от конкретного поля.


Входы  Выходы и Термометры

 

Идентификаторы – названия входов выходов и термометров. Отображаются в веб-интерфейсе, произносятся в тревожных фразах. Так же любой ярлык, созданный в папке «ext» с аналогичным идентификатору названием, будет выполняться при срабатывании. Во вкладке термометров эти поля по умолчнию заполняются адресами найденных датчиков.

о/з – (открыт/закрыт) галочки во вкладках входов и выходом, имеющие 3 состояния. Указывают нормальное состояние входов или выходов. При изменении состояния на отличное от нормального, срабатывает тревога.

В состоянии неопределенности, тревожные фразы отрабатывают при любой смене состояния, а поля «автотаймер» и «таймаут опроса» недоступны. Это сделано для предотвращения конфликтов в логике.

В отмеченном состоянии  тревога срабатывает при замыкании входа (или включении выхода). В не отмеченном состоянии тревога срабатывает при размыкании входа (или выключении выхода) соответственно.

Тревожные фразы – фразы, произносимые системой при срабатывании. Имеют возможность использовать ключ %n для подмены на название (идентификатор) входа выхода термометра. Во вкладке термометров эти поля так же предусматривают использование ключа %t для подмены на текущие температуры. Вместо фраз, во всех случаях, можно указать имя текстового файла (словаря) созданного в папке «ext».

г/с – (голос/смс) галочки, имеющие 3 состояния и задающие необходимость голосовых сообщений, отправки СМС сообщений или оба варианта при срабатывании. В отмеченном состоянии  будет отправлено СМС сообщение. В не отмеченном состоянии система выдаст голосовое сообщение. В неопределенном состоянии выдается и голосовое сообщение и отправляется СМС.

СМС будут отправляться только в режиме охраны (замкнут охранный контакт).

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

Таймаут опроса – время в секундах, по истечению которого срабатывание тревоги повториться.

Автотаймер – время в минутах, по истечению которого выход вернется в нормальное состояние автоматически.

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

 

Планировщик

 

 Планировщик позволяет программировать задания поведения основного сервиса во временных рамках. Составленный список заданий сохраняется в файл “scheduler.xml”. Все задания, сохраняемые тут, будут выполняться вне зависимости от того, подключено ли устройство к компьютеру или нет (если задание не связано с устройством).

Условие – указывает, как часто должно срабатывать задание. Варианты:

  • Однократно – после выполнения, задание автоматически будет удалено из списка.
  • Ежедневно – задание будет выполняться каждый день, в указанное время.
  • Еженедельно – задание будет выполняться каждый указанный день недели в указанное время.
  • Ежемесячно – задание будет выполняться каждый месяц, в указанное число месяца, в указанное время.
  • Ежегодно – задание будет выполняться каждый год, в указанный месяц, число, время.

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

Тип – указывает, что именно система должна сделать в указанное время. Варианты:

  • Сказать – система просто произнесет указанную фразу.
  • Выполнить – система выполнит указанную команду.

Объект – указывает, с чем именно производятся действия. Данное поле работает в двух режимах: В режиме «Сказать» поле работает как текстовая строка. В ней пишется фраза, произносимая при срабатывании задания. В режиме «Выполнить» поле работает как выпадающий список, в котором отображаются объекты, доступные для манипуляций. В их число входят:

  • Голосовые команды. Такие как «Звук», «Время», «Дата», «Погода», «Новости», «Температура».
  • Выходы. Указанный выход будет менять свое состояние на противоположное.
  • Термометры (если они подключены). Система будет сообщать данные с указанного термометра.
  • Ярлыки из папки «ext».  Все ярлыки (расширение .lnk) найденные в данной папке при запуске приложения конфигуратора, будут отображаться в выпадающем списке.

Кнопка «Добавить» - добавляет сформированное задание в список планировщика. Если не был выбраны все условия (не заполнены все выпадающие списки), появится сообщение "Не выбраны все условия".

Кнопка «Удалить» - удаляет выбранное в списке планировщика задание.

Кнопка «Перечитать» - заново считывает список заданий в список планировщика.

Кнопка «Очистить» - очищает все задания и перечитывает его для контроля.

Кнопка «Сохранить» - сохраняет все задания из списка планировщика в файл “scheduler.xml”.


Программатор

 

Программатор позволяет программировать задания поведения во встроенную память устройства. В устройство можно прошить до пятидесяти заданий.

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

Входы – выбирает вход, участвующий в условии.

Условия – выбирает условие («замкнут» или «разомкнут» указанный вход) для задания.

Выходы – выбирает выход, участвующий в задании. Кроме десяти идентификаторов выходов, если возможность управлять звуковым сигналом («пищалкой» на устройстве).

Поведения – выбирает тип поведения выхода при срабатывании задания. Варианты:

  • «Переключить» – переключает текущее состояние выхода на противоположное.
  • «Включить» – включает выход.
  • «Выключить» – выключает выход.
  • «Включить под охраной» – включает выход, только если устройство в состоянии охраны.
  • «Включить временно» – включает выход на две секунды.

Кнопка «Добавить» - добавляет сформированное задание в список. Если не был выбраны все условия (не заполнены все выпадающие списки), появится сообщение "Не выбраны все условия".

Кнопка «Удалить» - удаляет выбранное в списке задание.

Кнопка «Загрузить» - позволяет загрузить список заданий из файла формата .bin.

Кнопка «Сохранить» - позволяет сохранить составленный список заданий в файл формата .bin.

Кнопка «Считать» - считывает список заданий из устройства в список.

Кнопка «Стереть» - очищает все задания из устройства и перечитывает его для контроля.

Кнопка «Прошить» - прошивает все задания из списка в устройство.

 

2 Основной сервис (ComDev Сервер)

Общие сведения

Системные требования:

  • Pentium 4 или выше.
  • Windows XP SP3 или выше.
  • .Net Framework 4.0
  • Подключение к Интернет. Для системы распознавания голосовых команд.
  • Любой русский голосовой движок SAPI. Для синтеза речи.
    (напрмер SAPI5 Nuance Vocalizer Milena)

Основной сервис представляет собой консольное приложение. Реализует взаимодействие компьютера и устройства. Логирует всё, что происходит с устройством. Организует веб-интерфейс. Может сворачиваться в значок в системном трее. Имеет несколько ключевых объектов в файловой системе:

Папка «ext» - папка для внешнего взаимодействия. В папку можно поместить:

  • mp3 файлы (звуковые) с именами аналогичными идентификаторам системы входов выходов термометров. Тогда при отработке событий эти файлы будут воспроизводиться. Файл воспроизводится циклично, до тех пор, пока не сработает иное событие или не поступит команда «Звук» (mute).
  • lnk файлы (ярлыки) с именами аналогичными идентификаторам входов выходов термометров. Тогда при отработке событий эти файлы будут вызываться, что в свою очередь может запускать приложения, скрипты и т.д.
  • текстовые файлы (например txt) «словарей». Имена таких текстовых файлов с заранее заготовленными фразами и помещенные в данную папку, можно указать в полях фраз в конфигураторе. Тогда при отработке тех или иных событий система будет произносить не одну и ту же фразу, а случайно выбранную из «словаря».

Файл cmd.wav – файл с записью последней голосовой команды. Некое подобие логирования.

Файл settings.xml – файл с настройками системы.

Для резервирования настроек достаточно скопировать этот файл.

Файл scheduler.xml – файл с заданиями планировщика.

Для резервирования заданий достаточно скопировать этот файл.

Файл wwwlogs.txt – файл логов.

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

Консоль

 

В консоли приложения отображаются проходящие события и возможен ввод команд:

Help – вывод списка доступных команд.

Sw – переключает состояние выходов по их номеру. (Пример – sw 5 – переключает выход 5).

Clr – очищает файлы логов. (Пример – clr 1 – очищает логи температуры. clr 2 – логи системы).

Bl – переключает состояние блокировки управления выходом. (Пример – bl 0 – блокируетразблокирует управление звуками и голосовыми командами по веб-интерфейсу. Bl 3 - блокируетразблокирует управление выходом 3.)

Vcc – симулирует голосовую команду. (Пример – vcc время – симулирует голосовой запрос времени.)

Sms – позволяет отправлять смс на указанный в настройках номер. (Пример – sms Привет мир – отправит сообщение с текстом «Примет мир»).

St – позволяет запускать и останавливать таймер переключения выхода. (Пример – st 5&time=1440 – запустит таймер на выходе 5 на 1440 минут (24 часа). st 5&time=0 – выключит таймер на выходе 5.)

Webptt – активирует систему распознания голосовых команд на три секунды. (Пример – webptt 1 – активирует голосовых команд на три секунды. webptt 0 – останавливает запись команды досрочно).

Thermal – запрашивает температуру со всех термометров.

i2ctext – позволяет выводить заданное сообщение на ЖК дисплей устройства. (Пример – i2ctext Hello world – выводит на дисплей сообщение «Hello world»).

Mute – останавливает все воспроизведения звуков в системе. (Пример – mute 0 ).

 

Веб – интефейс | Главная

 

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

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

Максимальное значение 1440 минут (24 часа).

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

 - Кнопка выключения звука. Прерывает все фразы и звуки в системе до перезагрузки сервиса или до отмены команды.

  - Кнопка активации голосовых команд. Активирует систему распознания голосовых команд на три секунды. После чего происходит процесс опознания и выполнения команды.

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

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

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

Всем тепла.


Файлы:
Программа
Печатная плата
Прошивка Бутлодера


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


ID: 2471