Голосовое управление освещением X10. Часть 1

Система создавалась для голосового управления приборами домашней автоматизации X10, которых у меня имеется в количестве, достаточном для полного управления освещением одной комнаты. После того как сгорел контроллер домашней автоматизации и таймер, управление осуществлялось с пульта X10. Захотелось сделать управление приборами с помощью голосовых команд.

Использовалось следующее оборудование:

  • Компьютер (нетбук ASUS Aspire One) с операционной системой Linux
  • Достаточно хороший микрофон (желательно направленный)
  • Микроконтроллер Arduino
  • Приборы X10
  • Прибор PSC05 (двусторонний модуль обмена данными между сетью X10 и другими системами)
  • Коротко системе домашней автоматизации X10

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

    • легка в установке;

    • никаких дополнительных проводов в квартире;

    • распространенный стандарт, много исполнительных элементов;

    • система может управляться дистанционно;

    • система может программироваться;

    • относительно низкая стоимость и простота компонентов;

    • не требует дополнительного электропитания.

    В системе X10 есть два основных компонента:

    • модуль – принимает сигналы от X10 трансивера через электропроводку и управляет устройством, подключенным к нему;

    • контроллер – посылает сигналы модулям.

    Модули бывают разными. Вот стандартный модуль для управления светом.

    Модули также могут быть также вмонтированы в электропроводку или встроены в прибор.


     

    Существует три типа контроллеров:

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

    • настольные контроллеры – подключаются к настенной розетке сети переменного тока – посылает команды модулям по сети.

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

    У каждого модуля есть два настроечных параметра: код группы (A-P) и код устройства (1-16). Существуют следующие правила конфигурации системы X10:

    • все модули, управляемые одним трансивером или контроллером, должны использовать одинаковый код группы, переключатель кода группы имеет позиции A – P;

    • трансивер или контроллер должны быть сконфигурированы так, чтобы использовать тот же самый код группы, что и модули, которыми они управляют;

    • пульт дистанционного управления должен использовать тот же самый код группы, который использует трансивер и модули;

    • каждый модуль, которым вы хотите управлять отдельно от остальных, должен иметь уникальный код устройства 1 – 16 (эти коды не обязательно должны быть последовательными).

    Управлять системой X10 можно дистанционно, например с помощью телефонного контроллера или компьютерного интерфейса. Для объединения системы X10 c другими системами служит контроллеры TW523 или PSC05. Мы будем использовать для управления приборами X10 с помощью Arduino.

    Двусторонний интерфейс PSC05

    Отдельное направление развития технологий x10 – создание сторонними разработчиками и ОЕМ-производителями собственных устройств (микрокомпьютерных систем) дляуправления модулями x10. Такие устройства подключаются к системам x10 с помощью специальных интерфейсных модулей. Пример такого модуля – . PSC05 вставляется в обычную электророзетку, а внешние устройства подключаются к нему через оптически развязанный интерфейс с разъемом RJ11. Модуль PSC05 преобразует генерируемые управляющим устройством команды в сигналы, передаваемые по электропроводке к модулям x10. Этот модуль может передавать сигналы и в обратном направлении – от устройств x10 к управляющим компьютерам.

    Подключение PSC05 к Arduino

    Для взаимодействия Arduino и PSC05 будем использовать библиотеку arduino-X10, которая позволяет отправлять команды в сеть  x10. На сайте arduino.cc предлагают эту библиотеку. Были проблемы, выдавались ошибки в тестовых примерах, но удалось победить. Подключение к модулю PSC05 по кабелю RJ11. 

    В библиотеке пока не реализована отправка сообщений из сети X10, один из средних выводов поэтому пока не используется. Паяем и подключаем к Arduino. Получилось так.

    Схема

    Скачиваем библиотеку, копируем в папку libraries, запускаем Arduino IDE. Выбираем пример X10_Multi, исправляем ошибки, немного модифицируем (делаем для приборов с кодами A2 и A4) переключение каждые 5 сек, подключаем, проверяем, все работает — вот видео

    Вот код данного проверочного скетча.

    // include the X10 library files:
    #include «x10.h»
    #include «x10constants.h»

    #define zcPin 2 // the zero crossing detect pin
    #define dataPin 4 // the X10 data out pin
    #define repeatTimes 1 // how many times each X10 message should repeat
    // in an electrically noisy environment, you can set this higher.

    // set up a new x10 library instance:
    x10 myHouse = x10(zcPin, dataPin);

    void setup() {
    // begin serial:
    Serial.begin(dataRate);
    // Turn off all lights:
    myHouse.write(HOUSE_A, ALL_UNITS_OFF,repeatTimes);
    }

    void loop() {
    // Turn on first module:
    myHouse.write(HOUSE_A, UNIT_2,repeatTimes);
    myHouse.write(HOUSE_A, ON,repeatTimes);
    // Turn off second module:
    myHouse.write(HOUSE_A, UNIT_4,repeatTimes);
    myHouse.write(HOUSE_A, OFF,repeatTimes);
    delay(5000);
    // Turn off first module:
    myHouse.write(HOUSE_A, UNIT_2,repeatTimes);
    myHouse.write(HOUSE_A, OFF,repeatTimes);
    // turn on second module:
    myHouse.write(HOUSE_A, UNIT_4,repeatTimes);
    myHouse.write(HOUSE_A, ON,repeatTimes);
    delay(5000);
    }

    Во второй части — Преобразование голоса в текст

    Добавить комментарий

    Ваш адрес email не будет опубликован.