Предисловие
В детстве, смотря многие американские фильмы, был в восторге от того, как актеры выключали свет в помещении «хлопнув в ладоши», всегда хотелось такую же штуку у себя дома. В последние годы ПК стал неотъемлемой частью моей жизни: приходя домой и разувшись, первым делом идешь включать своего «железного коня» и ждать его загрузки. Конечно в последние годы с появлением SSD это ожидание свелось к минимуму, но тем не менее вместе с самим подходом к компьютеру все же какое-то время теряется. Да и собственно зачем вообще идти в комнату, бить с ноги по кнопке, если можно сделать какой-то дистанционный способ включения «моей прелести».
Собственно так со временем и слились две «мечты»: включать ПК по хлопку. На данный момент я учусь в университете и как раз пришло время делать курсовой по схемотехнике, причем преподаватель заявил о том, что можно сделать его в железе, а не на бумаге, что на мой взгляд интереснее. Таким образом подвернулся шанс «убить сразу двух зайцев» — реализовать старую идею и сдать курсовой проект. Первоначальной идеей было сделать некое устройство, которое можно будет разместить на корпусе, запитать его от блока питания, подключить через реле к кнопке и по хлопку замыкать цепь. Как итог решили немного отойти от этой идеи немного расширив ее: система теперь будет состоять из двух блоков, соединенных посредством Bluetooth. Один блок будет улавливать хлопок и посылать специальный сигнал на второй блок, второй же блок будет принимать этот сигнал и замыкать реле.
С чего начать
Первым делом надо было решить на каком железе реализовать мою затею. Выбор пал на платформу Arduino. Почему именно Arduino? В этой статье я не буду перечислять технические характеристики данной платформы как минимум потому что речь идет не об этом. Собственно ответ на этот вопрос кроется в трёх причинах:
- Дешевизна — в Китае микроконтроллеры с этой платформой можно найти за 5$, а то и меньше
- Простота использования — в интернете множество гайдов по данной платформе и разобраться в них не составляет труда
- Огромное количество всевозможных датчиков
Последнее кстати важно для тех, кто хочет сделать еще что-нибудь со своим микроконтроллером. Ведь на следующий день вы можете прикрутить к плате еще что-нибудь, перепрошить ее и она будет выполнять совершенно другие задачи. Вообщем вернемся к нашей теме.
Собственно составим список того, что нам для этого понадобится:
- 2x Arduino Uno R3 — по одной на каждый блок
- 2x Bluetooth HC-05 — Опять же по одной на каждый блок, и главное именно HC-05, потому что только они поддерживают режимы Master и Slave
- Микрофон — простой электретный микрофон, стоит он вообще копейки
- Реле
- 2x светодиода — красный и зеленый
- Всякие проводки, резисторы и т.п.
- И конечно же паяльник
Начинаем
Рассмотрим наш микроконтроллер
Как видим он имеет аналоговые пины, подписанные с буквой А (например А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 с официального сайта и установив, открываем его и видим это:
Наш скетч разделен как бы на 2 блока — setup() и loop(). В первый блок пишется то, что должно быть изначально проинициализировано при включении контроллера в сеть. Во второй — собственно сам исполняемый код, который будет выполняться постоянно. Собственно все это следует и из названий данных блоков.
Первый блок
Первым делом надо было собрать и подключить микрофон. По сути электретный микрофон, который мы купили, является своего рода конденсатором с двумя ножками:
Ножка с характерными тремя полосочками, как на изображении выше, — это «минус» микрофона, соответственно вторая ножка — «плюс», главное не перепутать, а иначе микрофон не будет работать. Собственно хорошенько погуглив, выяснилось, что во-первых микрофон так просто не подключишь, а во-вторых сигнал будет очень слабым, то есть скорее всего понадобится операционный усилитель. На сайте продавца, где покупался микрофон, была вот такая схема:
Без усилителей, просто RC-цепь, подумал была не была, соберу и посмотрю, работает или нет. Благо дома валялись нужные резисторы и конденсатор. Также для надежности соединения, чтобы это не болталось на проводах в воздухе, возьмем текстолит, который также продается в любом магазине радиодеталей. Получилось что-то вроде этого:
Может быть не очень аккуратно, но главное чтобы работало, остается проверить. У нашего микрофона теперь 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, который выглядит следующим образом:
Просто присоединяем его к нашей Uno пин к пину, таким образом подключаем сам модуль и дублируем выходы нашей платы. Должно получится примерно так(Shieldы могут быть в несколько разных вариациях, суть та же):
Так же на 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:
Как видим у него имеется 5 ног, 2 из которых заведены на катушку, осталось только узнать какие. Для этого гуглим и находим вот такую схему:
Подключим 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-ый блок (питание выведено сбоку корпуса, на верху видны зеленый и красный светодиоды и микрофон).
2-ой блок (питание также выведено сбоку корпуса, сверху 2 розетки, одна постоянно запитана, чтобы питать микроконтроллер через адаптер для телефона, вторая собственно для подключения ПК).
Смотрим на результат:
Итоги
- Arduino — это круто. Дешевые микроконтроллеры, множество датчиков, много всевозможных гайдов в интернете, а также язык C++
- Такую вещь действительно можно сделать самому за вечер, главное заранее все купить
- Данное устройство можно применять не только для включения ПК, но и для включения других электроприборов, например лампы. А это большой плюс
- Данную идею можно расширить, например создав множество таких устройств, соединив их в единую сеть, и управлять ею по блютуз при помощи смартфона, ну это так, на будущее
Комментарии (52)
Nik_sav
21.12.2015 13:00+8Для курсового проекта и просто ради развлечения неплохо. Для реального использования, ИМХО, излишне сложно — гораздо проще микрофон с тинькой запитать от дежурных 5В компьютера и включать, к примеру, замыкая кнопку питания на системнике, и корпус с проводами городить не нужно, не говоря уже про блутуз.
IronHead
21.12.2015 13:01+1Идея хорошая, реализация — избыточна.
ИМХО Я бы воткнул микрофон, тини13, транзисторный ключик для замыкания кнопки включения системника и запитал бы это все от зарядника с USB выходом.
Деталей на 100р без зарядника.
Если хочется еще и обесточивать 220 от бп компа (хотя зачем это, не понимаю), то твердотельное реле.wormball
21.12.2015 13:07+1А можно и без тини, а попросту на одном LM358 схему собрать. Даже транзистора не нужно, только диод, конденсатор и три сопротивления.
IronHead
21.12.2015 13:15+1А как на двойной/тройной хлопок реагировать? То же сначала про операционник подумал, но будет много ложных срабатываний от одиночных громких звуков.
wormball
21.12.2015 13:19Я как-то раз собирал повторитель вспышки, который бы реагировал на двойную вспышку от мыльницы. Чисто на транзисторах (две или три штуки, помнится). И он даже работал. Только схему уже не помню.
dcoder_mm
21.12.2015 13:08«запитал бы это все от зарядника с USB выходом» — у компового БП же дежурка есть. Там как раз 5В
dcoder_mm
21.12.2015 13:06+2Я правильно понимаю что вы подключили реле напрямую к выходу микроконтроллера?
К остальным мелочам, на этом фоне, даже придраться нельзя :)wormball
21.12.2015 13:10+2Ни одной схемы предусмотрительно не приведено. :) Но вообще я сомневаюсь, что атмега вообще может потянуть реле голыми ногами.
dcoder_mm
21.12.2015 13:14Думаю потянет. Такое реле переключается при токе 40-50мА и напряжении 3V. Так что запас на падение напряжения на ключе в МК есть. Ну и 40мА она вроде как должна осилить. Правда тут мы деликатно забыли что у реле еще нехилая индуктивность :)
wormball
21.12.2015 14:20Надо же, а то реле. которое я из телевизора выковырял, ажно 200 мА требовало. Сейчас попробовал на других реле — пятивольтовое переключается при 40 мА, а двенадцативольтовое — при 20 мА.
dcoder_mm
21.12.2015 14:26В телевизоре наверное было какое-нибудь дико мощное, или с хитрой контактной группой, которую сложно сдвинуть с места
wormball
21.12.2015 14:39Не думаю, что телевизор мощнее стиральной машинки. И выглядело оно так же приблизительно.
HomoLuden
29.12.2015 13:09Вопрос не в мощности самой переключаемой нагрузки, а в типе реле. Ежели реле механическое, то там естественно трубуется большой ток для активации эл/маг переключателя. А с твердотельными видимо ситуация попроще.
areht
22.12.2015 09:46Я один на фото вижу 24 VDC?
У него 1600 ?, при 3V = 0.001875 A
Очень экономичное решение. Только оно вообще работать не должно.dcoder_mm
22.12.2015 18:5240-50мА и 3В это я намерил подключив похожее китайское реле. Естественно, на 5В.
areht
25.12.2015 13:085В реле на 3В даёт 4-50 мА?
Так, во-1х, это не штатный режим работы, и переключает он так не стабильно (а пробовали _перевернуть_?)
во-2х, у ардуины 40 — это уже максимум, без запасов.
Anastasia_K
21.12.2015 13:06А не лучше ли было подключить устройство к кнопке питания ПК?
GeorgeMoiseenko
21.12.2015 13:21+2Это было первоначальной идеей, в итоге сделал розетку. Сделал в итоге так, чтобы не привязываться исключительно к включению ПК, чтобы можно было условно говоря чайник на кухне включать по хлопку, сидя в комнате.
maksfff
21.12.2015 13:22+17Как бывший владелец аналогичного акустического реле для света:
1. Два чиха подряд совсем не редкость, как оказалось.
2. Реагирует на грозу.
3. Был замечательный случай, когда в ходе эксперимента рванул конденсатор, и реле услужливо отключило свет. Было страшно.
istui
21.12.2015 13:42+1Какова цена вопроса?
Много слышал про НС-05, но не смотрел вживую пока ни разу. Он может принимать команды со смартфона? В таком случае можно написать приложение и получить аналог «WiFi-розетки».dcoder_mm
21.12.2015 13:48+1Может. Причем приложения которые позволяют сконфигурировать экран с кнопочками и по нажатию кнопки отправить на bluetooh<>uart строку текста, в маркете есть play.google.com/store/apps/details?id=com.teholabs.bluescripts
hwsun
21.12.2015 20:04Стоит примерно 3$. Можно даже подключить к RX, TX на Адруине и с телефона через Bluetooth terminal отправлять команды прямо в сериал.
istui
22.12.2015 22:28Для serial в таком случае проще купить usb-uart за 50 центов и обойтись без микроконтроллера.
В целом идея интересная. Единственное — я бы упаковал все в колодку розеток, в комментариях уже писали про arduino nano, но, как говорится, совершенству нет предела:)
Еще вариант — использовать NFC, по приходу домой один из автоматов электросети «сам по себе» включается, по уходу — выключается.
Zagrebelion
21.12.2015 13:52+7Wake-on-LAN, как если бы его изобрёл Фред Флинстоун.
GeorgeMoiseenko
21.12.2015 14:14Такая идея также первоначально присутствовала, этого я в статье уже не указывал. Да, это тоже один из хороших способов, но в итоге я решил не привязываться к идее только включения ПК(что написал в итогах), сделав своеобразный адаптер для любого электроприбора.
GeckoPelt
21.12.2015 15:27Релюшка на фото на 7 ампер максимум. Скорее всего, по факту оно рассчитано на куда меньший ток.
Чайник это 7-8А в зависимости от модели. Как бы чего не вышло. Тут хотя бы плавкий предохранитель поставить ампер на 5.
ИМХО.dcoder_mm
21.12.2015 15:39Что вы к чайникам пристали?)) Это не эталон электрической нагрузки. Можно свет включать (в свое время делал то-же самое на AVR, только с тремя хлопками) или ТВ, или вентилятор летом
GeckoPelt
21.12.2015 16:05+3Извините. Я сам чайник во всякой электронике, но немного занудства себе позволю.
<занудство>
А вот например включили какой-нибудь торшер или там еще какой светильник с тонкими проводками внутри. Случилось КЗ. Реле например взяло и тупо припаялось контактами в замкнутом положении от такого тока. При этом весь сабж воткнут, конечно же, в обычную розетку. Автомат на линию розеток стоит 16А обычно. В итоге раньше, чем сработает автомат (если он вообще сработает), начнется пожар.
</занудство>
DrPass
21.12.2015 16:22+4> Собственно так со временем и слились две «мечты»: включать ПК по хлопку.
Я только одного не понимаю, зачем вы его выключаете?Bluewolf
21.12.2015 17:55Кстати да, сейчас можно вообще без проблем сделать практически неслышимую систему охлаждения (HDD, если он есть, будет работать громче), а с включенным энергосбережением потребление ПК составить 10-20 Вт или даже меньше.
Зато можно оставлять что-то скачиваться без всяких внешних приборов, удаленно подключаться к своему ПК и прочее. Ну и постоянная готовность к работе.Bluewolf
21.12.2015 17:58+1Так же, как 90% самодельных «умных домов» начинается с выключения света в туалете, хотя 24\7 светодиодная лампа потребляет энергии рублей на 10-15 в месяц.
Celtis
21.12.2015 18:17+1Выключаем — потому, что можем. Для очумельцев этого достаточно)
Кроме того, из простого выключения могут вырасти и более интересные схемы. Для меня наиболее комфортным оказалось, когда освещение в помещениях диммируется до 25%, если в смежных помещениях есть люди и выходит на заданный уровень, когда люди переходят в него из смежного. Почему «заданный уровень», а не 100%? Все зависит от наружной освещенности и времени суток — при походе в туалет ночью, к примеру, бьющий в глаза свет 100% яркости раздражает.
boramod
21.12.2015 20:26+2На счет избыточности уже сказали все :-)
Немного дополню.
1. Сам модуль HC-05 уже является полноценным контроллером, не требующим для подобных задач Arduino или иного внешнего контроллера.
. Итого: — 2 комплекта Arduino :-)
2. Коммутационную составляющую проще решать средствами, предоставляемыми BIOS и интерфейсом питания компьютера.
3. Перенеся функционал BT Master на смартфон, например, управляемый Android, вы существенно расширите спектр применения идеи. Благо, современные средства разработки и обучения позволяют реализовать это все за несколько минут, практически, обладая только общими понятиями об Android изнутри. Пример.
Удачи в экспериментах!
boramod
21.12.2015 20:32+1В общем, хотел лишь сказать, что даже в 2015 году, управление одним дискретным выходом четырьмя полноценными контроллерами — значительная роскошь.
serafims
21.12.2015 23:32Есть классные корпуса — со встроенной вилкой. Туда можно запихнуть импульсный БП, реле, и ардуино… и вывести провод на розетку.
horlon
22.12.2015 09:46А чем не нравится простая схемка такого вида?
http://samodelnie.ru/_pu/2/s33507707.jpg
http://samodelnie.ru/publ/akusticheskoe_rele_svoimi_rukami/1-1-0-245IronHead
22.12.2015 10:11Может потому, что оно срабатывает на одинарный хлопок/звук/стук и тд.
Не очень приятно, если комп выключится от хлопнувшей двери.horlon
22.12.2015 16:26Ну тогда Вы правы. Это первое про что я подумал, когда читал об удаленном включении чайника на кухне по хлопку и о том, что произойдет, если в нем нет воды тоже :)
Есть подобные схемки и на два хлопка. Можно собрать и на несколько хлопков и несколько устройств — каждое устройство на свое количество хлопков или поочередное их включение (лишь бы фантазии хватало). Только пайки и возни, конечно же больше…istui
22.12.2015 22:31главное, чтобы ваш попугай не просек фишку и не начал командовать окружающим миром :)
Celtis
Хорошо, что все больше людей приходит от идеи «отдал денег и забыл» к мысли «лучше сам сделаю».
Позволю себе внести несколько предложений, не вдаваясь в рассуждения об общей концепции:
1. Arduino Uno в данном случае избыточна и геометрически громоздка. Не будем говорить о STM или саморазведенных платах под тот же AtMega, но ведь есть же миниатюрные Arduino Pro Mini и Nano, которые можно упаковать непосредственно в розетку даже вместе с блоком питания и передатчиком.
2. Для такой нагрузки стоит смотреть в сторону твердотельных реле. Выбранное Вами скорее всего(по собственной статистике и отзывам с форумов) при активном использовании залипнет в течении полугода.
wormball
Ежели к АТХ-кнопке включения подключаться, то там реле нафик не нужно, достаточно транзистора. Или даже вообще без транзистора, а прямо к ноге эту кнопку подсоединить.
HomoLuden
Более того, если в коде на ардуино будет какая бага или по управлению реле что-то не так, то у ПК будет «жесткое выключение» с возможными последствиями для ОС.
Опять же, если ПК заснет, то что делать? Вырубить питание и снова включить?
Управление трактом Power ATX куда надежнее, ИМХО.
GeorgeMoiseenko
С первым пунктом практически полностью c Вами соглашусь, действительно в данном случае для такой простой задачи сошел бы и nano. А вот по поводу 2 пункта не согласен: во-первых касательно залипаний, это уже касается исключительно качества приобретенного реле, а во-вторых по поводу твердотельных реле, какова цена вопроса? Ведь твердотельное реле стоит раз в 5 дороже, а то и больше.