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