Предисловие


В детстве, смотря многие американские фильмы, был в восторге от того, как актеры выключали свет в помещении «хлопнув в ладоши», всегда хотелось такую же штуку у себя дома. В последние годы ПК стал неотъемлемой частью моей жизни: приходя домой и разувшись, первым делом идешь включать своего «железного коня» и ждать его загрузки. Конечно в последние годы с появлением SSD это ожидание свелось к минимуму, но тем не менее вместе с самим подходом к компьютеру все же какое-то время теряется. Да и собственно зачем вообще идти в комнату, бить с ноги по кнопке, если можно сделать какой-то дистанционный способ включения «моей прелести».

Собственно так со временем и слились две «мечты»: включать ПК по хлопку. На данный момент я учусь в университете и как раз пришло время делать курсовой по схемотехнике, причем преподаватель заявил о том, что можно сделать его в железе, а не на бумаге, что на мой взгляд интереснее. Таким образом подвернулся шанс «убить сразу двух зайцев» — реализовать старую идею и сдать курсовой проект. Первоначальной идеей было сделать некое устройство, которое можно будет разместить на корпусе, запитать его от блока питания, подключить через реле к кнопке и по хлопку замыкать цепь. Как итог решили немного отойти от этой идеи немного расширив ее: система теперь будет состоять из двух блоков, соединенных посредством Bluetooth. Один блок будет улавливать хлопок и посылать специальный сигнал на второй блок, второй же блок будет принимать этот сигнал и замыкать реле.

С чего начать


Первым делом надо было решить на каком железе реализовать мою затею. Выбор пал на платформу Arduino. Почему именно Arduino? В этой статье я не буду перечислять технические характеристики данной платформы как минимум потому что речь идет не об этом. Собственно ответ на этот вопрос кроется в трёх причинах:

  • Дешевизна — в Китае микроконтроллеры с этой платформой можно найти за 5$, а то и меньше
  • Простота использования — в интернете множество гайдов по данной платформе и разобраться в них не составляет труда
  • Огромное количество всевозможных датчиков

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

  • 2x Arduino Uno R3 — по одной на каждый блок
  • 2x Bluetooth HC-05 — Опять же по одной на каждый блок, и главное именно HC-05, потому что только они поддерживают режимы Master и Slave
  • Микрофон — простой электретный микрофон, стоит он вообще копейки
  • Реле
  • 2x светодиода — красный и зеленый
  • Всякие проводки, резисторы и т.п.
  • И конечно же паяльник

Начинаем


Рассмотрим наш микроконтроллер

image

Как видим он имеет аналоговые пины, подписанные с буквой А (например А0), входы для внешнего питания, выходы для питания +5В и +3.3В, цифровые пины, выходы на землю и др.

Подключить ее к компьютеру можно по USB, благо в комплекте имеется кабель. А даже если у вас и не будет, то купить его можно в любом магазине электроники. Для работы непосредственно c Arduino имеется их собственная очень удобная IDE, которую можно взять с официального сайта.

Для того, чтобы далее работать с Ардуино, надо все же хоть чуть-чуть про нее рассказать

Микроконтроллеры для Arduino отличаются наличием предварительно прошитого в них загрузчика (bootloader). С помощью этого загрузчика пользователь загружает свою программу в микроконтроллер без использования традиционных отдельных аппаратных программаторов. Загрузчик соединяется с компьютером через интерфейс USB (если он есть на плате) или с помощью отдельного переходника UART-USB. Поддержка загрузчика встроена в Arduino IDE и выполняется в один щелчок мыши.

На случай затирания загрузчика или покупки микроконтроллера без загрузчика разработчики предоставляют возможность прошить загрузчик в микроконтроллер самостоятельно. Для этого в Arduino IDE встроена поддержка нескольких популярных дешевых программаторов, а большинство плат Arduino имеет штыревой разъем для внутрисхемного программирования (ICSP для AVR, JTAG для ARM).

Язык программирования Ардуино является стандартным C++ (используется компилятор AVR-GCC) с некоторыми особенностями.
Программы, написанные программистом Ардуино называются наброски (или иногда скетчи — варваризм от англ. sketch) и сохраняются в файлах с расширением ino. Эти файлы перед компиляцией обрабатываются препроцессором Ардуино. Также существует возможность создавать и подключать к проекту стандартные файлы C++.

Итак, скачав Arduino IDE с официального сайта и установив, открываем его и видим это:

image

Наш скетч разделен как бы на 2 блока — setup() и loop(). В первый блок пишется то, что должно быть изначально проинициализировано при включении контроллера в сеть. Во второй — собственно сам исполняемый код, который будет выполняться постоянно. Собственно все это следует и из названий данных блоков.

Первый блок

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

image

Ножка с характерными тремя полосочками, как на изображении выше, — это «минус» микрофона, соответственно вторая ножка — «плюс», главное не перепутать, а иначе микрофон не будет работать. Собственно хорошенько погуглив, выяснилось, что во-первых микрофон так просто не подключишь, а во-вторых сигнал будет очень слабым, то есть скорее всего понадобится операционный усилитель. На сайте продавца, где покупался микрофон, была вот такая схема:

image

Без усилителей, просто RC-цепь, подумал была не была, соберу и посмотрю, работает или нет. Благо дома валялись нужные резисторы и конденсатор. Также для надежности соединения, чтобы это не болталось на проводах в воздухе, возьмем текстолит, который также продается в любом магазине радиодеталей. Получилось что-то вроде этого:

image

Может быть не очень аккуратно, но главное чтобы работало, остается проверить. У нашего микрофона теперь 3 ноги: +5В, GND(земля) и аналоговый выход. Подключим эти ноги соответственно на 5В, GND и вход A0 контроллера. Иии после множества проб и ошибок все получилось! Микрофон действительно работает. АЦП Arduino выдает значения от 0 до 1024. Осталось подключить два светодиода для хоть какого-то визуального взаимодействия с системой. Подключать светодиод к питанию напрямую светодиод нельзя, иначе спалим его. Чтобы этого избежать вешаем на "+" светодиода резистор 220 ОМ.Обычно короткая ножка это минус, а длинная — плюс. Итак "-" светодиода подсоединяем к выходу GND на плате, а "+" на цифровой выход. Так как у нас 2 светодиода, то землю для них сделаем общую, красный подключим к 13 пину, а зеленый к 12ому. При регистрации хоть какого-то звука будет загораться красный светодиод. Если же сначала регистрируем звук, затем в течение некоторого времени тишину, а потом снова звук — то зажигаем зеленый светодиод. На деле все просто. И на практике оказалось тоже.Собственно скетч получился таким:

#define MIC A0 //Аналоговый порт, куда подключен микрофон
int ClapMargin = 9;     //порог хлопка (определяется экспериментально)
int mic_prev = 0;
int SilenceLen=1500;     //время тишины
int NextClapLen = 2500;  //время, в течение которого ждем след. хлопок
int SkipLen = 800;      //время защитной паузы


void setup() 
{
  analogReference(INTERNAL);//снижаем опорное опорное напряжение до 1.1В для большей чувствительности микрофона
  Serial.begin(9600);
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);

}

int ReadNext() {
  int result;
  int d;
  d = analogRead(MIC);   //читаем
  result = abs(mic_prev-d); //считаем модуль разницы
  mic_prev = d;             //сохраняем текущее значение
  return result;            //возвращаем результат
}
int WaitForClap(int WaitLen) 
{
  int d, i;
  i = 0;      //счетчик циклов
  do {
    d = ReadNext();                //читаем вход
    i++;                           //увеличиваем счетчик
    if (d > ClapMargin) {          //если есть хлопок
      Serial.println(d);
      return d;                    //возвращаем силу хлопка
    }
    if ( (WaitLen != -1) && (i >= WaitLen) ) { //если счетчик досчитал до WaitLen и WaitLen не равен -1
      return 0;                                //возвращаем 0
    }
  } while (1);
}
//ф-ия просто ждет SkipLen циклов
void Skip(int SkipLen) {
  int i;
  for (i=0; i<SkipLen; i++) {
    ReadNext();
  }
}
void loop() 
{
  int d1, d2;
  if(WaitForClap(-1)> ClapMargin)//ждем хлопок
  {
    digitalWrite(12, HIGH);//зажигаем красный светодиод
    Serial.println("raz");
    Skip(SkipLen);
    d1 = WaitForClap(SilenceLen); //слушаем тишину
    Serial.println(d1);
    if (d1 == 0)
    {
      digitalWrite(12, HIGH);
      Skip(500);
      d2 = WaitForClap(NextClapLen);   //ждем 2го хлопка
      if (d2 > ClapMargin)
      {
        digitalWrite(12, LOW);//погасим красный светодиод
        digitalWrite(13, HIGH);//зажжем зеленый светодиод
        delay(1000);
      }
    }
  }
  digitalWrite(12, LOW);//гасим оба светодиода
  digitalWrite(13, LOW);
  Skip(SkipLen);
}

Итак отлавливать нужный сигнал мы научились, осталось при наличии хлопка как-то сообщить об этом второму блоку. Для этого нам нужны Bluetooth-модули. Я взял Bluetooth hc-05 shield, который выглядит следующим образом:

image

Просто присоединяем его к нашей Uno пин к пину, таким образом подключаем сам модуль и дублируем выходы нашей платы. Должно получится примерно так(Shieldы могут быть в несколько разных вариациях, суть та же):

image

Так же на Bluetooth Shield можете увидеть рычажок, имеющий два положения: H и L. H-режим Ведущего(Master), L-режим Ведомого(Slave). В данном случае выставим рычажок на Master. Итак, подключив модуль блютуз, можем сверху подсоединить к тем же пинам наши светодиоды и микрофон. Вообщем с этим блоком закончили, переходим к следующему.

Второй блок

Во втором блоке нам понадобится электромагнитное реле, двойная розетка внешней установки, провод для подключения к электрической сети 220 В и еще один Bluetooth Shield HC-05.

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

Итак подключим реле. Принцип действия его прост и заключается в следующем: 2 из ножек реле заведены на катушку индуктивности, подавая на нее напряжение создается электромагнитное поле, которое притягивает так называемый якорь внутри реле, тем самым замыкая цепь. Убрав напряжение с катушки якорь возвращается в свое первоначальное состояние, размыкая цепь. Таким образом реле — своего рода ключ.

Итак нам нужно реле, которое при подаче на катушку 5В, будет замыкать нам цепь. При этом нужна выбрать такое реле, которое сможет пропускать токи, необходимые для включения ПК. Учитывая, что большинство современных ПК потребляют от 450 Вт до 1000 Вт, нам с лихвой хватит реле пропускающее через себя ток силой в 6 Ампер. В ближайшем магазине радиоэлектроники был приобретен этот китаец tianbo hjr-3ff-s-z:

image

Как видим у него имеется 5 ног, 2 из которых заведены на катушку, осталось только узнать какие. Для этого гуглим и находим вот такую схему:

image

Подключим 2ую ногу на GND платы, а 5ую на 13 цифровой выход. Саму розетку подключим к 1ой и 3ей ноге электромагнитного реле, чтобы первоначальное состояние розетки было выключенным. Блок готов, осталось только загрузить скетч. Код для данного блока:

#include <SoftwareSerial.h>//библиотеки для работы с Bluetooth 
#include <Wire.h>

#define rxPin 2 
#define txPin 3 

SoftwareSerial btSerial(rxPin, txPin);

void setup() {
  // put your setup code here, to run once:
  //Инициализация Bluetooth
  Serial.begin(9600);
  pinMode(rxPin, INPUT); 
  pinMode(txPin, OUTPUT); 
  btSerial.begin(38400);
  pinMode(13, OUTPUT);//выставляем 13 цифровой пин на выход
}

void loop() {
  // put your main code here, to run repeatedly:
  if(btSerial.available())
  {
    char c=(char)btSerial.read();
    Serial.println(c);
    digitalWrite(13, !digitalRead(13));//переключаем реле, подавая то высокий сигнал, то низкий на 13 выход
  }
}

Так же модернизируем код для первого блока, добавив сопряжение блютузов между собой:

#include <SoftwareSerial.h>
#include <Wire.h>

#define MIC A0 //Аналоговый порт, куда подключен микрофон
int ClapMargin = 9;     //порог хлопка (определяется экспериментально)
int mic_prev = 0;
int SilenceLen=1500;     //время тишины
int NextClapLen = 2500;  //время, в течение которого ждем след. хлопок
int SkipLen = 800;      //время защитной паузы

#define rxPin 2
#define txPin 3

SoftwareSerial btSerial(rxPin, txPin);

void setup() 
{
  // put your setup code here, to run once:
  analogReference(INTERNAL);//снижаем опорное опорное напряжение до 1.1В для большей чувствительности микрофона
  Serial.begin(9600);
  pinMode(12, OUTPUT);//выставляем 12 и 13 пины на выход
  pinMode(13, OUTPUT);

   // define pin modes for tx, rx pins:
   //Инициализация Bluetooth и подсоединение его к другому bluetooth модулю
   pinMode(rxPin, INPUT);
   pinMode(txPin, OUTPUT);
   btSerial.begin(38400); 
   Serial.println("Serial started");
   digitalWrite(12, HIGH);//зажигаем красный светодиод
   btSerial.println("AT");
   while (!btSerial.available());
   while (btSerial.available() > 0)
        char c = btSerial.read();
   btSerial.println("AT+INIT");
   while (!btSerial.available());
   while (btSerial.available() > 0)
        char c = btSerial.read();
   btSerial.println("AT+INQ");
   while (!btSerial.available());
   while (btSerial.available() > 0)
        char c = btSerial.read();
   btSerial.println("AT+LINK=2014,5,191146");//2014,5,191146 - имя второго модуля  
   while (!btSerial.available());
   while (btSerial.available() > 0)
        char c = btSerial.read();
   digitalWrite(12, LOW);//
}

int ReadNext() {
  int result;
  int d;
  d = analogRead(MIC);   //читаем
  result = abs(mic_prev-d); //считаем модуль разницы
  mic_prev = d;             //сохраняем текущее значение
  return result;            //возвращаем результат
}
int WaitForClap(int WaitLen) 
{
  int d, i;
  i = 0;      //счетчик циклов
  do {
    d = ReadNext();                //читаем вход
    i++;                           //увеличиваем счетчик
    if (d > ClapMargin) {          //если есть хлопок
      Serial.println(d);
      return d;                    //возвращаем силу хлопка
    }
    if ( (WaitLen != -1) && (i >= WaitLen) ) { //если счетчик досчитал до WaitLen и WaitLen не равен -1
      return 0;                                //возвращаем 0
    }
  } while (1);
}
//ф-ия просто ждет SkipLen циклов
void Skip(int SkipLen) {
  int i;
  for (i=0; i<SkipLen; i++) {
    ReadNext();
  }
}
void loop() 
{
  int d1, d2;
  if(WaitForClap(-1)> ClapMargin)//ждем хлопок
  {
    digitalWrite(12, HIGH);
    Serial.println("raz");
    Skip(SkipLen);
    d1 = WaitForClap(SilenceLen); //слушаем тишину
    Serial.println(d1);
    if (d1 == 0)
    {
      digitalWrite(12, HIGH);
      Skip(500);
      d2 = WaitForClap(NextClapLen);   //ждем 2го хлопка
      if (d2 > ClapMargin)
      {
        digitalWrite(12, LOW);//погасим красный диод
        digitalWrite(13, HIGH);//зажжем зеленый диод
        btSerial.print('1');//посылаем на второй блок специальный сигнал по Bluetooth
        delay(1000);
      }
    }
  }
  digitalWrite(12, LOW);//гасим оба светодиода
  digitalWrite(13, LOW);
  Skip(SkipLen);
}

Результат


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

Вот что получилось:

1-ый блок (питание выведено сбоку корпуса, на верху видны зеленый и красный светодиоды и микрофон).

image

2-ой блок (питание также выведено сбоку корпуса, сверху 2 розетки, одна постоянно запитана, чтобы питать микроконтроллер через адаптер для телефона, вторая собственно для подключения ПК).

image

Смотрим на результат:



Итоги


  • Arduino — это круто. Дешевые микроконтроллеры, множество датчиков, много всевозможных гайдов в интернете, а также язык C++
  • Такую вещь действительно можно сделать самому за вечер, главное заранее все купить
  • Данное устройство можно применять не только для включения ПК, но и для включения других электроприборов, например лампы. А это большой плюс
  • Данную идею можно расширить, например создав множество таких устройств, соединив их в единую сеть, и управлять ею по блютуз при помощи смартфона, ну это так, на будущее

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


  1. Celtis
    21.12.2015 12:54
    +9

    Хорошо, что все больше людей приходит от идеи «отдал денег и забыл» к мысли «лучше сам сделаю».

    Позволю себе внести несколько предложений, не вдаваясь в рассуждения об общей концепции:
    1. Arduino Uno в данном случае избыточна и геометрически громоздка. Не будем говорить о STM или саморазведенных платах под тот же AtMega, но ведь есть же миниатюрные Arduino Pro Mini и Nano, которые можно упаковать непосредственно в розетку даже вместе с блоком питания и передатчиком.
    2. Для такой нагрузки стоит смотреть в сторону твердотельных реле. Выбранное Вами скорее всего(по собственной статистике и отзывам с форумов) при активном использовании залипнет в течении полугода.


    1. wormball
      21.12.2015 13:03
      +7

      Ежели к АТХ-кнопке включения подключаться, то там реле нафик не нужно, достаточно транзистора. Или даже вообще без транзистора, а прямо к ноге эту кнопку подсоединить.


      1. HomoLuden
        29.12.2015 13:00

        Более того, если в коде на ардуино будет какая бага или по управлению реле что-то не так, то у ПК будет «жесткое выключение» с возможными последствиями для ОС.
        Опять же, если ПК заснет, то что делать? Вырубить питание и снова включить?

        Управление трактом Power ATX куда надежнее, ИМХО.


    1. GeorgeMoiseenko
      21.12.2015 14:07

      С первым пунктом практически полностью c Вами соглашусь, действительно в данном случае для такой простой задачи сошел бы и nano. А вот по поводу 2 пункта не согласен: во-первых касательно залипаний, это уже касается исключительно качества приобретенного реле, а во-вторых по поводу твердотельных реле, какова цена вопроса? Ведь твердотельное реле стоит раз в 5 дороже, а то и больше.


  1. Nik_sav
    21.12.2015 13:00
    +8

    Для курсового проекта и просто ради развлечения неплохо. Для реального использования, ИМХО, излишне сложно — гораздо проще микрофон с тинькой запитать от дежурных 5В компьютера и включать, к примеру, замыкая кнопку питания на системнике, и корпус с проводами городить не нужно, не говоря уже про блутуз.


    1. keslo
      21.12.2015 23:46

      А можете попродробнее? Можно в личку если что. Я бы попробовал такое.


  1. IronHead
    21.12.2015 13:01
    +1

    Идея хорошая, реализация — избыточна.
    ИМХО Я бы воткнул микрофон, тини13, транзисторный ключик для замыкания кнопки включения системника и запитал бы это все от зарядника с USB выходом.
    Деталей на 100р без зарядника.
    Если хочется еще и обесточивать 220 от бп компа (хотя зачем это, не понимаю), то твердотельное реле.


    1. wormball
      21.12.2015 13:07
      +1

      А можно и без тини, а попросту на одном LM358 схему собрать. Даже транзистора не нужно, только диод, конденсатор и три сопротивления.


      1. IronHead
        21.12.2015 13:15
        +1

        А как на двойной/тройной хлопок реагировать? То же сначала про операционник подумал, но будет много ложных срабатываний от одиночных громких звуков.


        1. wormball
          21.12.2015 13:19

          Я как-то раз собирал повторитель вспышки, который бы реагировал на двойную вспышку от мыльницы. Чисто на транзисторах (две или три штуки, помнится). И он даже работал. Только схему уже не помню.


    1. dcoder_mm
      21.12.2015 13:08

      «запитал бы это все от зарядника с USB выходом» — у компового БП же дежурка есть. Там как раз 5В


      1. IronHead
        21.12.2015 13:20

        Про дежурку забыл, да, тогда еще проще схема выходит. Кому в Санкт-Петербурге собрать по цене деталей? ) У самого просто ноутбук, но ради спортивного интереса собрал бы.


        1. keslo
          21.12.2015 23:50

          Можно мне собрать. И почтой до Москвы :-)


  1. dcoder_mm
    21.12.2015 13:06
    +2

    Я правильно понимаю что вы подключили реле напрямую к выходу микроконтроллера?
    К остальным мелочам, на этом фоне, даже придраться нельзя :)


    1. wormball
      21.12.2015 13:10
      +2

      Ни одной схемы предусмотрительно не приведено. :) Но вообще я сомневаюсь, что атмега вообще может потянуть реле голыми ногами.


      1. dcoder_mm
        21.12.2015 13:14

        Думаю потянет. Такое реле переключается при токе 40-50мА и напряжении 3V. Так что запас на падение напряжения на ключе в МК есть. Ну и 40мА она вроде как должна осилить. Правда тут мы деликатно забыли что у реле еще нехилая индуктивность :)


        1. wormball
          21.12.2015 14:20

          Надо же, а то реле. которое я из телевизора выковырял, ажно 200 мА требовало. Сейчас попробовал на других реле — пятивольтовое переключается при 40 мА, а двенадцативольтовое — при 20 мА.


          1. dcoder_mm
            21.12.2015 14:26

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


            1. wormball
              21.12.2015 14:39

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


              1. HomoLuden
                29.12.2015 13:09

                Вопрос не в мощности самой переключаемой нагрузки, а в типе реле. Ежели реле механическое, то там естественно трубуется большой ток для активации эл/маг переключателя. А с твердотельными видимо ситуация попроще.


        1. areht
          22.12.2015 09:46

          Я один на фото вижу 24 VDC?

          У него 1600 ?, при 3V = 0.001875 A

          Очень экономичное решение. Только оно вообще работать не должно.


          1. dcoder_mm
            22.12.2015 18:52

            40-50мА и 3В это я намерил подключив похожее китайское реле. Естественно, на 5В.


            1. areht
              25.12.2015 13:08

              5В реле на 3В даёт 4-50 мА?

              Так, во-1х, это не штатный режим работы, и переключает он так не стабильно (а пробовали _перевернуть_?)
              во-2х, у ардуины 40 — это уже максимум, без запасов.


  1. Anastasia_K
    21.12.2015 13:06

    А не лучше ли было подключить устройство к кнопке питания ПК?


    1. GeorgeMoiseenko
      21.12.2015 13:21
      +2

      Это было первоначальной идеей, в итоге сделал розетку. Сделал в итоге так, чтобы не привязываться исключительно к включению ПК, чтобы можно было условно говоря чайник на кухне включать по хлопку, сидя в комнате.


      1. HomoLuden
        29.12.2015 13:10

        У чайника тоже кнопка есть.


  1. maksfff
    21.12.2015 13:22
    +17

    Как бывший владелец аналогичного акустического реле для света:
    1. Два чиха подряд совсем не редкость, как оказалось.
    2. Реагирует на грозу.
    3. Был замечательный случай, когда в ходе эксперимента рванул конденсатор, и реле услужливо отключило свет. Было страшно.


  1. istui
    21.12.2015 13:42
    +1

    Какова цена вопроса?
    Много слышал про НС-05, но не смотрел вживую пока ни разу. Он может принимать команды со смартфона? В таком случае можно написать приложение и получить аналог «WiFi-розетки».


    1. dcoder_mm
      21.12.2015 13:48
      +1

      Может. Причем приложения которые позволяют сконфигурировать экран с кнопочками и по нажатию кнопки отправить на bluetooh<>uart строку текста, в маркете есть play.google.com/store/apps/details?id=com.teholabs.bluescripts


    1. hwsun
      21.12.2015 20:04

      Стоит примерно 3$. Можно даже подключить к RX, TX на Адруине и с телефона через Bluetooth terminal отправлять команды прямо в сериал.


      1. istui
        22.12.2015 22:28

        Для serial в таком случае проще купить usb-uart за 50 центов и обойтись без микроконтроллера.

        В целом идея интересная. Единственное — я бы упаковал все в колодку розеток, в комментариях уже писали про arduino nano, но, как говорится, совершенству нет предела:)

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


  1. Zagrebelion
    21.12.2015 13:52
    +7

    Wake-on-LAN, как если бы его изобрёл Фред Флинстоун.


    1. GeorgeMoiseenko
      21.12.2015 14:14

      Такая идея также первоначально присутствовала, этого я в статье уже не указывал. Да, это тоже один из хороших способов, но в итоге я решил не привязываться к идее только включения ПК(что написал в итогах), сделав своеобразный адаптер для любого электроприбора.


      1. GeckoPelt
        21.12.2015 15:27

        Релюшка на фото на 7 ампер максимум. Скорее всего, по факту оно рассчитано на куда меньший ток.
        Чайник это 7-8А в зависимости от модели. Как бы чего не вышло. Тут хотя бы плавкий предохранитель поставить ампер на 5.
        ИМХО.


        1. dcoder_mm
          21.12.2015 15:39

          Что вы к чайникам пристали?)) Это не эталон электрической нагрузки. Можно свет включать (в свое время делал то-же самое на AVR, только с тремя хлопками) или ТВ, или вентилятор летом


          1. GeckoPelt
            21.12.2015 16:05
            +3

            Извините. Я сам чайник во всякой электронике, но немного занудства себе позволю.
            <занудство>
            А вот например включили какой-нибудь торшер или там еще какой светильник с тонкими проводками внутри. Случилось КЗ. Реле например взяло и тупо припаялось контактами в замкнутом положении от такого тока. При этом весь сабж воткнут, конечно же, в обычную розетку. Автомат на линию розеток стоит 16А обычно. В итоге раньше, чем сработает автомат (если он вообще сработает), начнется пожар.
            </занудство>


  1. DrPass
    21.12.2015 16:22
    +4

    > Собственно так со временем и слились две «мечты»: включать ПК по хлопку.
    Я только одного не понимаю, зачем вы его выключаете?


    1. Bluewolf
      21.12.2015 17:55

      Кстати да, сейчас можно вообще без проблем сделать практически неслышимую систему охлаждения (HDD, если он есть, будет работать громче), а с включенным энергосбережением потребление ПК составить 10-20 Вт или даже меньше.

      Зато можно оставлять что-то скачиваться без всяких внешних приборов, удаленно подключаться к своему ПК и прочее. Ну и постоянная готовность к работе.


      1. Bluewolf
        21.12.2015 17:58
        +1

        Так же, как 90% самодельных «умных домов» начинается с выключения света в туалете, хотя 24\7 светодиодная лампа потребляет энергии рублей на 10-15 в месяц.


        1. Celtis
          21.12.2015 18:17
          +1

          Выключаем — потому, что можем. Для очумельцев этого достаточно)
          Кроме того, из простого выключения могут вырасти и более интересные схемы. Для меня наиболее комфортным оказалось, когда освещение в помещениях диммируется до 25%, если в смежных помещениях есть люди и выходит на заданный уровень, когда люди переходят в него из смежного. Почему «заданный уровень», а не 100%? Все зависит от наружной освещенности и времени суток — при походе в туалет ночью, к примеру, бьющий в глаза свет 100% яркости раздражает.


  1. boramod
    21.12.2015 20:26
    +2

    На счет избыточности уже сказали все :-)
    Немного дополню.

    1. Сам модуль HC-05 уже является полноценным контроллером, не требующим для подобных задач Arduino или иного внешнего контроллера.
    image. Итого: — 2 комплекта Arduino :-)

    2. Коммутационную составляющую проще решать средствами, предоставляемыми BIOS и интерфейсом питания компьютера.

    3. Перенеся функционал BT Master на смартфон, например, управляемый Android, вы существенно расширите спектр применения идеи. Благо, современные средства разработки и обучения позволяют реализовать это все за несколько минут, практически, обладая только общими понятиями об Android изнутри. Пример.

    Удачи в экспериментах!


    1. boramod
      21.12.2015 20:32
      +1

      В общем, хотел лишь сказать, что даже в 2015 году, управление одним дискретным выходом четырьмя полноценными контроллерами — значительная роскошь.


  1. DaleMartinWatson
    21.12.2015 22:21
    +1

    Включение по удару ногой по корпусу практичней будет.


    1. GeckoPelt
      22.12.2015 10:28

      С разворота.


  1. serafims
    21.12.2015 23:32

    Есть классные корпуса — со встроенной вилкой. Туда можно запихнуть импульсный БП, реле, и ардуино… и вывести провод на розетку.


    1. istui
      22.12.2015 22:30

      можно фото? не представляю, о чем речь


      1. serafims
        23.12.2015 11:24
        +1

        1. istui
          23.12.2015 16:28

          да, это действительно удобно, спасибо)


  1. horlon
    22.12.2015 09:46

    А чем не нравится простая схемка такого вида?
    http://samodelnie.ru/_pu/2/s33507707.jpg
    http://samodelnie.ru/publ/akusticheskoe_rele_svoimi_rukami/1-1-0-245


    1. IronHead
      22.12.2015 10:11

      Может потому, что оно срабатывает на одинарный хлопок/звук/стук и тд.
      Не очень приятно, если комп выключится от хлопнувшей двери.


      1. horlon
        22.12.2015 16:26

        Ну тогда Вы правы. Это первое про что я подумал, когда читал об удаленном включении чайника на кухне по хлопку и о том, что произойдет, если в нем нет воды тоже :)
        Есть подобные схемки и на два хлопка. Можно собрать и на несколько хлопков и несколько устройств — каждое устройство на свое количество хлопков или поочередное их включение (лишь бы фантазии хватало). Только пайки и возни, конечно же больше…


        1. istui
          22.12.2015 22:31

          главное, чтобы ваш попугай не просек фишку и не начал командовать окружающим миром :)