Розетка 2.0: наш ответ Tesla -10





Умный дом. Концепция по-настоящему современного жилища, где с помощью технологий человеку обеспечивается полный комфорт. Всё больше и больше людей покупают готовые решения. к несчастью (особенно из-за нынешнего курса) многие такие наборы сильно прибавили в цене и зачастую стали слишком дорогостоящим способом “прикоснуться к будущему”. И остается радоваться, что по-прежнему пытливые умы разрабатывают всё новые и новые 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
    /#8982802 / +13

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

    • liqsun
      /#8982806 / +2

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

      • Zzzuhell
        /#8982820 / +4

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

        • liqsun
          /#8982846 / +1

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

    • DrPass
      /#8983538 / +1

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

  2. AlexanderS
    /#8982822 / +2

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

    • liqsun
      /#8982842 / -4

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

  3. IronHead
    /#8982866 / +1

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

    • liqsun
      /#8982870 / +1

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

    • bazis13
      /#8992934

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

      • IronHead
        /#8993130

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

  4. freelight
    /#8982888

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

    • kAIST
      /#8983188 / +6

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

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

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

  5. spc
    /#8982892 / +1

    Это перевод?

    • liqsun
      /#8982926 / -2

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

      • spc
        /#8982946 / +2

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

  6. alexpp
    /#8982894 / +4

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

    • liqsun
      /#8982922

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

  7. olekl
    /#8982908 / +1

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

  8. Fixid
    /#8982910 / +2

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

    • liqsun
      /#8982924 / -1

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

      • rinat_crone
        /#8983150

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

        • IronHead
          /#8983274

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

          • rinat_crone
            /#8983278

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

        • sampobek
          /#8993344

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

  9. Firz
    /#8982964 / +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.

    • liqsun
      /#8982970 / -3

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

  10. ionicman
    /#8983048 / +5

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

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

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

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

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

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

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

    • liqsun
      /#8983074

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

      • ionicman
        /#8983088 / +1

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

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

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

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

        • liqsun
          /#8983100

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

          • ionicman
            /#8983110

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

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

            • liqsun
              /#8983112

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

              • ionicman
                /#8983116

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

  11. loly_girl
    /#8983120 / +2

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

    • liqsun
      /#8983122

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

      • loly_girl
        /#8983128

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

        • liqsun
          /#8983136

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

  12. Jmann
    /#8983344

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

    • K0styan
      /#8993346

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