Голосовое управление освещением X10 из ROS. Часть 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);
}

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


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

Arduino

Что такое Arduino?
Зачем мне Arduino?
Начало работы с Arduino
Для начинающих ардуинщиков
Радиодетали (точка входа для начинающих ардуинщиков)
Первые шаги с Arduino

Разделы

  1. Преимуществ нет, за исключением читабельности: тип bool обычно имеет размер 1 байт, как и uint8_t. Думаю, компилятор в обоих случаях…

  2. Добрый день! Я недавно начал изучать программирование под STM32 и ваши уроки просто бесценны! Хотел узнать зачем использовать переменную типа…

3D-печать AI Android Arduino Bluetooth CraftDuino DIY IDE iRobot Kinect LEGO OpenCV Open Source Python Raspberry Pi RoboCraft ROS swarm ИК автоматизация андроид балансировать бионика версия видео военный датчик дрон интерфейс камера кибервесна конкурс манипулятор машинное обучение наше нейронная сеть подводный пылесос работа распознавание робот робототехника светодиод сервомашинка собака управление ходить шаг за шагом шаговый двигатель шилд

OpenCV
Робототехника
Будущее за бионическими роботами?
Нейронная сеть - введение