«Инструменты электронных вычислений сегодня довольно тесно интегрированы в нашу повседневную жизнь, но многие из нас понятия не имеют, каков потенциал этих самых инструментов и как мы можем его использовать; или догадываются, но неспециалисту это затрудняют. Хочу рассказать о своем опыте расширения функционала своей домашней электроники.
Мои друзья, которым я показывал свои разработки, называли их системой «умный дом».
Лично мне это имя не нравится, так как «ум» — понятие довольно сложное и, на мой взгляд, присущее не каждому человеку.
И говорить о каком-либо интеллекте в компьютерах пока рано.
Я предпочитаю термины автоматизация и автоматизация.
Упрощенно электронный мир моей квартиры изображен на следующем рисунке:
Где функции между устройствами распределены следующим образом:
1) Сервер — маломощный компьютер с большим объемом дискового пространства, источником бесперебойного питания и достаточно шумной системой охлаждения.
Спрятан где-то в шкафу и спать не мешает. 2) Десктоп – тихий неигровой компьютер с аудиосистемой для просмотра фильмов, прослушивания музыки и серфинга.
3) Определенное количество других вычислительных устройств: смартфон, планшет, ноутбук жены и мой ноутбук.
На мой взгляд, это очень распространенный список «гостей» для любой современной семьи.
Очень часто в качестве медиаплеера используют рабочий стол, но включать/выключать и управлять процессом, сидя рядом, не комфортно: переключать песню хочется, не вставая с дивана; в конце фильма хочется перевернуться и заснуть вместо того, чтобы встать и выключить рабочий стол и усилитель.
Ведь вы хотите, чтобы компьютер перед сном включил немного музыки и выключился, а утром включился сам вместо будильника.
Конечно, вокруг нас много разных плееров, так или иначе выполняющих подобные функции, но компьютер этого сделать почему-то не может (пульт от AVerMedia не впечатлил, а с переходом на x64 вообще перестал работать).
Итак, я хочу автоматизировать следующие функции моего рабочего стола: 1) Вкл.
/выкл.
; 2) Управление медиаплеером (вперед/назад, тише/громче, старт/стоп) 3) Включите/выключите стереоусилитель; 4) выполнять все вышеперечисленное по графику.
Для начала этого достаточно.
Давайте проанализируем, что и где мы можем сделать.
1) Компьютер Выключить компьютер достаточно просто — вызвать функцию Windows API (SetSuspendState из библиотеки Powrprof.dll).
Включить его немного сложнее, но задача становится намного проще, если не выключать компьютер, а перевести его в спящий режим.
Теперь его можно будить либо по активности USB-устройств (с соответствующими настройками), либо с помощью технологии Wake-on-Lan (о том, что это такое, можно прочитать здесь).
здесь ).
Учитывая, что у меня всегда доступен сервер, он без проблем мог отправить команду пробуждения на рабочий стол.
2) Аудиоплеер Практически у любого современного плеера есть описание его API. Я использую АИМП.
Описание его API доступно на сайте разработчика, а готовый код на C# можно найти в Google. Библиотека позволяет управлять громкостью системы ( НАудио ), который, кстати, умеет много полезного и может быть взят за основу альтернативного аудиоплеера.
3) Усилитель Здесь дела обстоят несколько сложнее.
Лично у меня усилитель достаточно старый (электроника Д1-012-Стерео, 1982 года выпуска) и ничего не знает о спящих режимах.
Включается и выключается механической кнопкой.
Одно дело оставить спящий компьютер без присмотра (это обычное дело), и совсем другое оставить усилитель с таким сроком выдержки.
В Интернете можно найти множество возможных решений этой проблемы на любой цвет и вкус.
Мне нравится технология 1-Wire, с которой я уже сталкивался раньше.
Вы сможете получить базовое представление о технологии здесь .
После изготовления простого оборудования схему устройства можно перерисовать следующим образом:
(Я не рассматриваю здесь работу с датчиками температуры и их отображение для наглядности и демонстрации функционала, а также наличие более одной управляемой розетки.
Теоретически максимальное количество одновременно подключаемых устройств ограничено, но значение, на масштаб однокомнатной квартиры настолько велик, что о нем беспокоиться не стоит)
Для начала нам необходимо собрать переходник с порта связи компьютера на шину 1-Wire. Так как я использовал COM-порт, то сначала собрал преобразователь RS232 -> UART ( по этой схеме )
А далее сам переходник - по следующему (поскольку я не особо разбираюсь в электронике, то за помощью в выборе и советом по схемам обратился к специалисту):
К сожалению, нет фотографий того, как это получилось, потому что я спрятал эту штуку в трудноразборный корпус (и использовал много изоленты, знаю, это моветон, но очень хотелось увидеть все в действии, т.к.
как можно быстрее).
Для управления розеткой будем использовать схема .
И вообще, по этому адресу вы сможете найти много полезной информации.
Вот как выглядит сокет в моей конструкции:
Плата с подключением к шине 1-Wire (вверху) и расположением симистора (внизу):
Розетка и симистор:
Теперь у нас в руках есть все необходимое «оборудование» и можно переходить к программированию.
Типичный путь управления я определил так: планшет -> сервер -> компьютер.
Поскольку устройств здесь три, нам понадобится три модуля, по одному на каждое устройство.
На сервере нам нужно будет обслуживать запросы веб-интерфейса (это самое простое решение, охватывающее достаточно широкий спектр портативных и других устройств), управлять розеткой и передавать команды клиенту.
Что касается шины 1-Wire, то я решил не изобретать велосипед, а использовать готовые драйвера и обертку для .
Net. Драйверы Обертка для .
Net ВНИМАНИЕ! в ранних версиях есть ошибка в работе с датчиком температуры по схеме внешнего питания, не знаю, исправлена ли она сейчас, но имейте в виду, что если этот функционал нужен, то нужно будет немного доработать исходный код. Способов организации взаимодействия двух компьютеров/процессов существует великое множество.
Я выбрал технологию .
Net Remoting, которая хоть и устарела, но вполне подходит для наших целей.
С его помощью веб-форма взаимодействует с сервером, а сервер с клиентом.
Сначала я хотел описать либо свой тестовый проект, либо абстрактный простой пример, но потом решил, что описание достаточно громоздкое и не несет никакой смысловой нагрузки, поэтому приведу лишь скриншоты оконных интерфейсов, которые я использую для отладки всю схему и тестируйте поступающие идеи.
Форма сервера.
Сердце системы, собирающее данные о температуре с внешних (1-Wire) и внутренних (материнская плата, с использованием проекта Открытый аппаратный монитор ) датчики.
Поддержка всей инфраструктуры и мониторинг состояния ADSL-модема через телнет (мой не знает, как восстановить соединение, приходится помогать закрывать шторку):
Клиент.
Отображает входящие команды от сервера и позволяет инициировать некоторые из них:
Веб-форма.
Примитивно, громоздко, но на планшете выглядит хорошо и работает ;)
Перспективы
Я уверен, что каждый, присмотревшись к своему окружению, сможет предложить 5-10 идей по автоматизации своей повседневной жизни.
И вовсе не обязательно сразу приступать к изучению схемы управления газовым котлом (если он у вас есть); для первых экспериментов вполне подойдет освещение в квартире и вентиляция в ванной и на кухне.
Синтез и распознавание речи
У Microsoft есть платформа для синтеза и распознавания человеческой речи, которая находится в свободном доступе.Скачать движок и модули синтеза и распознавания можно здесь: Время выполнения ; Языки выполнения .
Стоит отметить, что само распознавание и синтез выполнены достаточно хорошо.
Это, конечно, не то, что мы видим в научно-фантастических фильмах, но это то, что работает и может быть использовано на практике сегодня.
При тестировании распознавания голоса я столкнулся с неудобством, заключающимся в том, что мне приходилось тянуться к микрофону, но если бы я до него дотянулся, то смог бы сделать все остальное.
Но было очень интересно попробовать.
Для «доступа» к компьютеру я использовал кодовую фразу, после чего он начал «слушать» команду (некоторое время после первой команды последующие воспринимались без предварительной фразы), но оказалось, что произнесение кодовая фраза каждый раз, когда тебе что-то требовалось от компьютера — чертовски неудобно.
А сегодня увидел видео про очки от Google и понял, что лучше сегодня просто ничего нет и с голосовым управлением надо немного подождать.
А вот синтезатор речи гармонично вписывается в утренний будильник и сообщает текущее время.
Далее я планирую «научить» его сообщать прогноз погоды и курсы валют.
Безопасность
И последнее, но не менее важное: не забывайте об элементарных правилах безопасности.В моем случае сайт недоступен из внешнего мира и можно не беспокоиться о злоумышленниках, но если вы планируете открыть доступ к внешнему миру, будьте бдительны, ведь очень наивно рассчитывать, что вас окружают только добрые и отзывчивые люди.
Одно время мой модем держал открытым стандартный порт для RDP-соединений, и оказалось, что «внешний мир» постоянно пробовал всевозможные логины и пароли для подключения.
Лучше не знать на личном опыте, что будет, если на ваш файловый сервер проникнет какой-нибудь молодой (или не очень) хакер.
Удачи в ваших экспериментах! Теги: #Электроника для начинающих #программирование #синтез речи #автоматизация
-
Ось
19 Oct, 24 -
Youtube Выбирает Лучшие Видео
19 Oct, 24 -
На Youtube Будет Оплата За Просмотр
19 Oct, 24 -
Леонардо Да Винчи Учит Писать Резюме
19 Oct, 24 -
Регистрация На Webcamp 2011 Открыта
19 Oct, 24