Умный дом. Концепция по-настоящему современного жилища, где с помощью технологий человеку обеспечивается полный комфорт. Всё больше и больше людей покупают готовые решения. к несчастью (особенно из-за нынешнего курса) многие такие наборы сильно прибавили в цене и зачастую стали слишком дорогостоящим способом “прикоснуться к будущему”. И остается радоваться, что по-прежнему пытливые умы разрабатывают всё новые и новые DIY-способы автоматизировать своё жилище.

Мне бы хотелось рассказать вам о проекте, который я подсмотрел на сайте BQ. Мне всегда казалось, что “Умный дом” — это сложные технологии и человеку без глубокого понимания инженерного дела и электроники туда даже соваться не стоит. Но как оказалось всё несколько проще.



В этом проекте рассказывается как с помощью arduino-совместимой платы, простого удлинителя с кнопкой, protocoder и смартфона обеспечить включение-выключение света с помощью голосовых команд. Основной принцип заключается в том, что вы присоединяетесь удаленно к плате с помощью bluetooth и, запустив приложение на своем смартфоне, можете дать определенную команду. Но обо всем по порядку.

Монтаж.

Первое, что потребуется сделать — это, конечно, интегрировать плату в ваш удлинитель.



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

После того как вы разберете удлинитель, кнопку можете смело отложить — вам она больше не понадобится. Вас интересуют провода, которые в неё входили — их всего два. Чаще всего они синего и коричневого цвета — от них и будем отталкиваться. Синий провод следует сразу же спаять и установить термоусадку — это такие пластиковые “трубки”, которые вы без труда найдёте в любом магазине для радиолюбителей. Сделать это нужно обязательно, иначе обнаженный участок проводов в скором времени может привести к последствиям, которые проектом не предусмотрены.

Второй провод спаивать не нужно. Там образом у вас будет два конца коричневого провода. Их нужно установить в arduino-совместимое реле. Конец, идущий из шнура питания, устанавливается в клемму С — central. С ней вы не прогадаете, она находится посередине. А провод, идущий от “розеток” — в клемму NO (normally open). Если на вашем реле отсутствуют обозначения, поверните его положением клеммами вниз. Левая — та, которая вам требуется.

Если всё сделано верно, то теперь ваш удлинитель изнутри будет выглядеть примерно так:



После этого удлинитель можно “закрыть”, предварительно продев провод реле для подключения платы через отверстие, оставшееся от кнопки. Манипуляции со внутренностями закончены.



Теперь нужно установить саму плату. В примере используется bq ZUM, принципиальное отличие которой, в данном случае, заключается в интегрированном блютуз-модуле. Однако ZUM можно заменить другой платой, например, Freeduino Uno. Но тогда вам дополнительно понадобится недостающий модуль.

Чтобы надежно закрепить электронику на удлинителе, вам также понадобятся детали, которые напечатаны на 3D-принтере. Помимо небольшой площадки под плату, в число деталей также входит контейнер для питательного модуля, куда устанавливаются батарейки. Наверняка с помощью дополнительной электроники можно запитать плату и от шнура удлинителя, но данный пример, к сожалению, не рассматривается.



Собрав, наконец, всю электронику, мы устанавливаем её. Конечный результат выглядит достаточно симпатично, но остается ещё software-часть.

Protocoder.

Protooder — это среда для программирования + JavaScript-фреймворк для быстрой сборки прототипов, которые можно использовать на устройствах с Android. Установить его очень просто.



Скетч для этого проекта выложен испанцами в открытый доступ и ничего программировать не придется. На экране мобильного приложение выглядит вот так:



Не пугайтесь иностранных не-английских слов, в исходном коде вы сможете изменить надписи на те, которые захотите. В приложении мы видим три кнопки. И вот что каждая из них означает:

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

Desconectar — это, соответственно, разрыв связи. Очень полезная функция с учётом того, что пока установлено соединение вы не сможете вносить изменения в код программируемой платы;
Hablar — “говорить”. Нажав эту кнопку, вам откроется привычный сервис голосового ввода от google. Именно с помощью нажатия этой кнопки вы и будете “вводить” свои команды;



Вот код для Protocoder’а и вашего смартфона:

var bluetoothOn=0;

ui.addButton("Conectar bluetooth", 10, 150, function() {
    network.connectBluetoothSerialByUi(function(m, data) {
        txt.text(data + "\n");
    });
    bluetoothOn=1;
})

ui.addButton("Desconectar", 380, 150, function() {
    network.disconnectBluetooth();
})


ui.addButton("Hablar", 280, 550, function() {
    media.startVoiceRecognition(function(text) { 
        console.log(text);
        if (bluetoothOn==1) {
            if(text=="enciende") network.sendBluetoothSerial("=on+");
            if(text=="apaga") network.sendBluetoothSerial("=off+");
            if(text=="parpadea cada segundo") network.sendBluetoothSerial("=1+");
            if(text.substring(0,13)=="parpadea cada" && text.substring(14,21)!="segundo" ) network.sendBluetoothSerial("="+text.split(" ")[2]+"+"); 
        }
    });
})


Внимательно поглядите на него. Вы обнаружите на 19, 20 и 21 строке такие слова — enciende (“Включить”), apaga (“Погасить”) и parpadea cada segundo (“Мигать каждую секунду”). Если у вас нет желания тренировать свой испанский, эти слова следует заменить на более привычные. О том, что делает каждая из команд догадаться не трудно.

Теперь ваш мобильный может присоединяться к плате и подавать ей команды. Но сама она их воспринимать пока не в состоянии — её тоже нужно запрограммировать.

В первую очередь, если вы собираетесь использовать исходники испанцев, убедитесь, что реле подключена к плате в правильные пины:



Убедились? Тогда самое время залить код. Делается это с помощью Arduino IDE. Вот код:

String inString ="";

int pinRele=7;

void setup() {
	Serial.begin(19200);
	Serial.flush();
	pinMode(pinRele, OUTPUT);
	pinMode(13, OUTPUT);
}

void readFromAndroid(){
	char inChar;
	while(Serial.available()>0){
		inChar =(char) Serial.read();
		Serial.flush();
		if (inChar=='='){
			inString="";
		}
		else if(inChar!='+'){
			inString+=inChar;
		}
	}
}

void writeData(){
	if (inString=="on")	{
		digitalWrite(13, HIGH);
		digitalWrite(pinRele, HIGH);}
	else if (inString=="off")	{
		digitalWrite(13, LOW);	
		digitalWrite(pinRele, LOW);}
	else if (inString.toInt()){
		digitalWrite(13, HIGH);
		digitalWrite(pinRele, HIGH);
		delay(inString.toInt() *1000 );
		digitalWrite(13, LOW);	
		digitalWrite(pinRele, LOW);
		delay(inString.toInt() *1000 );
	}
}


void loop() {
	if (Serial.available()>0){
		readFromAndroid();
	}
	writeData();
}


Важный момент. Если вы не используете плату bq ZUM, то есть большая вероятность, что блютуз-модуль установлен на другой скорости. Тогда нужно заменить строку:
Serial.begin(19200);


На, например:
Serial.begin(9600);


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

Итак, после установки программы и на смартфон, и на плату, наш проект завершен. Самое время взять свежие батарейки, подключить удлинитель к сети, а к нему, например, лампу. Что у вас в итоге должно выйти? Демонстрация — в видео:



Конечно, активация вкл/выкл с помощью голосовых команд — это ещё не умный дом. Но главное — это идея. А идея такова, что с помощью DIY-проектов любой желающий может без проблем самостоятельно побыть Джеком, который построит дом. Очень умный дом.

P.S. Ссылка с файлами проекта
P.S.S. I hope Elon Musk will see the text, and buy us all to Tesla for 400 tysjach dollarov. Spasibo!

Комментарии (66)


  1. Zzzuhell
    02.02.2016 15:15
    +13

    1) Запитывать мозги умной розетки от батареек — это сильно
    2) Изначально розетка работала с выключателем с двумя группами контактов. Что мешало поставить туда шилд с реле, у которого тоже две группы контактов. Так вроде бы более электробезопасно будет.


    1. liqsun
      02.02.2016 15:17
      +2

      Я думаю это всё издержки быстрого прототипа)


      1. Zzzuhell
        02.02.2016 15:25
        +4

        Ну, не знаю. Быстрый прототип — это когда сбоку висит выносной батарейный блок «чиста попробовать». А печатать корпус под батарейки, чтобы из конечного изделия их убрать — это избыточно.


        1. liqsun
          02.02.2016 15:28
          +1

          Вообще, на самом деле логично. Время для розетки 3.0? :D


    1. DrPass
      02.02.2016 18:42
      +1

      3) Использовать Arduino там, где можно просто поставить реле со встроенным блютус-модулем, ничуть не лучше, чем батарейки :)


  1. AlexanderS
    02.02.2016 15:25
    +2

    Сколько времени проработает электроника от батареек? Я думаю не просто мало, а очень мало)
    Учитывая, что рядом есть 220В можно запитаться от сети и проблема автономности больше волновать не будет.


    1. liqsun
      02.02.2016 15:26
      -4

      Это так, недодумали это дело


  1. IronHead
    02.02.2016 15:34
    +1

    Что мешало поставить bluetooth HC-05, atmega8 или stm8, BT-139 на каждую розетку в отдельности, конденсаторный делитель напряжения для питания низковольтной части, уместит это все в пилоте и получить 5 независимо управляемых розеток?


    1. liqsun
      02.02.2016 15:35
      +1

      Абсолютно ничего не мешает. И, благодаря вашему комментарию и статье с совсем простеньким устройством, теперь у неопытного в делах электроники человека возможно появится желание именно так и поступить (:


    1. bazis13
      05.02.2016 15:30

      Потому что там нет 5 отдельных розеток. Если попытаться их сделать, от оригинального удлинителя останется только пустой корпус с вилкой и тогда уже проще всё напечатать с нуля или использовать другие розетки.


      1. IronHead
        05.02.2016 15:58

        переделать пилот на 5 розеток по трудо и временным затратам — гораздо проще, чем печатать новй корпус. и внешний вид будет на уровне.
        к тому же http://www.inline-online.ru/img/goods/77698/39626.jpg
        сколько вы там говорите пластика уйдет на корпус?


  1. freelight
    02.02.2016 15:39

    Парни, проект открыт, доработайте!
    А вообще умный удлинитель вполне может стать коммерческим продуктом. Надо только придумать что он будет делать :)


    1. kAIST
      02.02.2016 16:40
      +6

      Парни, проект открыт, доработайте!

      -Да какая нафиг систему бахгалтерского учета, вы же просто калькулятор написали!
      -Проект открыт, доработайте!

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


  1. spc
    02.02.2016 15:41
    +1

    Это перевод?


    1. liqsun
      02.02.2016 15:44
      -2

      Скорее статья по мотивам


      1. spc
        02.02.2016 15:47
        +2

        У меня бы совести не хватило


  1. alexpp
    02.02.2016 15:41
    +4

    Какое-то противоречивое устройство: запитано от батарей, когда рядом есть 220в, использована громадная плата вместо одиночного контроллера или хотя бы nano/micro версии, пропала всякая защита от детей/домашних животных. Думаю, можно продолжить.


    1. liqsun
      02.02.2016 15:44

      Думаю, это скорее учебный проект. Очевидно ведь, что «войдя в тему», можно уже и корпус закрытый сделать, и запитать как следует, и плату по вкусу установить


  1. olekl
    02.02.2016 15:43
    +1

    Туда бы измеритель тока добавить что ли… А то вкл-выкл как-то совсем неинтересно.


  1. Fixid
    02.02.2016 15:43
    +2

    Но ведь есть же ESP 8266, уместилось бы в корпус вместе с блоком питания и группой реле


    1. liqsun
      02.02.2016 15:44
      -1

      А как эту штуку кодить? Всегда интересно было. Или суть в том, что все «мозги» в смартфоне?


      1. rinat_crone
        02.02.2016 16:29

        На ESP8266 есть свой чип, который можно прошивать через ту же Arduino IDE. Единственное «но» – на плате есть только один пин для подключения чего-либо внешнего, для этого конкретного примера некритично, но если захочется поставить больше релешек и рулить каждой розеткой отдельно, то прийдется, наверное, использовать сдвиговый регистр или добавить в схему arduino nano, например.


        1. liqsun
          02.02.2016 16:32

          Спасибо! Полезно


        1. IronHead
          02.02.2016 17:16

          ESP8266 разные бывают, ESP8266 esp-07 содержит аж 9 GPIO


          1. rinat_crone
            02.02.2016 17:19

            Спасибо за дополнение, да, действительно так. Я просто держал в голове самый частовстречающийся вариант, который ESP-01 V090, ЕМНИП.


        1. sampobek
          05.02.2016 16:41

          Есть версии и с большим количеством пинов, например ESP8266-07 с 8 пинами «для подключения чего-либо внешнего».



  1. Firz
    02.02.2016 15:49
    +4

    «P.S.S. I hope Elon Musk will see the text, and buy us all to Tesla for 400 tysjach dollarov. Spasibo!»
    Боюсь что управляя нагрузкой с помощью нулевого(потому что шанс 50/50, так что нулевого) проводника, Вы вызовете у него только Facepalm.


    1. liqsun
      02.02.2016 15:51
      -3

      Если мне однажды получится вызвать у Маска facepalm, я хочу могильную плиту с указанием этого факта!


    1. Jmann
      02.02.2016 17:41

      Это пять =)


  1. ionicman
    02.02.2016 16:05
    +5

    Во-первых, это все давно уже сделано китайцами и дешево.

    Во-вторых, если уж делать, то прежде чем делать, нужно было хотя-бы продумать базу и просмотреть сеть по этому поводу.

    В-третьих ESP-шка + реле позволит уместить все это ВНУТЬ удлинителя + запитать от сети.
    Себестоимость — копьё, прошивок, как гна — даже писать ничего не надо, работать будет пока есть напряжение, а ни пока батарейки не сядут. В коде нет даже намека на перевод проца в спячку. Охохоюшки…

    Удлинитель на батарейках это как фонарь на солнечных батареях — польза примерно такая-же.

    В-четвертых, разрывать надо ОБА провода. Потому-что.

    А как эту штуку кодить?
    Это говорит человек, который пытается сделать что-то электронное… мммда.
    Санчала читать надо, потом (если действительно под Ваши запросы ничего нет) — делать.
    А не наоборот.

    Напишите хоть, что Вы это делали с целью обучиться, а то бедный Musk может фейспалмом голову себе раскроить, конкуренты TESLA, блин :D


    1. liqsun
      02.02.2016 16:12

      Так я же и говорю, что проект как раз хорош демонстрацией концепции, что, в общем-то, собрать какое-то своё устройство, управляемое голосом с мобильного, не сакральное дело, доступное единицам. Есть ли у проекта критические минусы? Да. Есть ли польза в комментах, где все наперебой советуют более интересные решения? Да. Следует всё же помнить, что не все на портале мастера-робототехники (:


      1. ionicman
        02.02.2016 16:14
        +1

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

        Опыт-то предыдущих людей нужно использовать.

        Первый запрос в гугле esp8266.ru/forum/threads/wifi-rozetka.663

        Да, извините конечно, не похожа Ваша статья на разбирательство в чем-то, больше похоже на «хуяк-хуяк и в продакшн!». Прежде чем что-то делать, нужно досконально изучить, что кто делал это до Вас. Но это, кончено, мое ИМХО.


        1. liqsun
          02.02.2016 16:17

          Честно говоря, в данном случае для меня проект имеет особую ценность из-за показанной связки ардуино+протокодер. Для своих будущих задач очень круто было бы использовать сервоприводы с помощью голосовых команд


          1. ionicman
            02.02.2016 16:20

            Ну дак я-то, как читатель, не в курсе Ваших сакральных замыслов — что вижу то и читаю.

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


            1. liqsun
              02.02.2016 16:21

              А если в «полевых» условиях? Там, наверное, в отрыве от домашнего вай-фая уже не получится ими обойтись


              1. ionicman
                02.02.2016 16:22

                А эта библиотека умеет оффлайново работать и распознавать на лету фонемы?
                Уверены? Если да — ну тогда ок.


  1. loly_girl
    02.02.2016 16:23
    +2

    В детстве в каком-то учебнике по радиоэлектронике то ли 70-х, то ли 80-х годов видела всё то же самое, но без адруины и микроконтроллеров. Даже не помню, как там звуковой образец фраз хранился и как сравнивался, для меня это было слишком сложно.


    1. liqsun
      02.02.2016 16:23

      Прям с голосовым управлением? О_о


      1. loly_girl
        02.02.2016 16:25

        Да, недостаток был в том, что нужно было произнести фразу точь-в-точь как образец. Или даже фича. И помню, что всё было совершенно аналоговое.


        1. liqsun
          02.02.2016 16:26

          Офигеть. Вот то вообще жара, конечно


  1. Jmann
    02.02.2016 17:34

    Я извиняюсь, но название слишком громкое.


    1. K0styan
      05.02.2016 16:41

      Название отлично сочетается с фото тройника, к которому прикручена коробка с батарейками АА — этакий конкурент Tesla Powerwall.