Найти в Дзене
Технари и не только

Делаем устройство для включения ПК через SMS

Всем привет! Шел я недавно домой с работы и захотелось мне поиграть в Warface, вот прям вспомнить те лихие 2013 года. Пришел и поставил на скачку. Пока игрушка скачивалась, я сидел и думал, как было бы удобно включать комп удаленно. С помощью SMS, например. Всё. Мысль появилась, шестеренки закрутились, и пуля полетела, ее не остановить))) Согласитесь, очень удобно удаленно включить ПК и зайти на него со смартфона через тот-же TeamViewer, скачать нужный документ или посмотреть фотографии, или же поставить игрушку на скачивание))))

Поковырявшись в закромах, нашел модуль Neoway m590 и Arduino UNO.

Neoway m590
Neoway m590

Первая мысль - сделать управление через транзистор, но по заявлению разрабов из поднебесной, модуль прожорливый и хочет 2 Ампера в пике. Дежурное питание, как правило, как раз 2А плюс-минус 0.5А, зауниверсалить не получится. Придется задействовать внешний блок питания, дополнительные гальванические связи в БП ПК нам не нужны, управление будем делать через реле.

Не будем привязываться к номеру телефона, вдруг он сядет или потеряется в бездонных карманах. Обратная связь нужна так же, как напильник балерине, от нее тоже отказываемся (а о чем сообщать? Что ПК включился? Это и так будет понятно, через TeamViewer будет видно)

Итак, какое-никакое ТЗ состряпано: работает от внешнего источника, параллельно кнопке включается реле, команды принимает с любого номера, обратная связь отсутствует, нужно 3 команды: включить, выключить и хард-офф. Приступаем к разработке!

Если вы захотите повторить проект, знайте, что скорость на модуле по стоку не 9600! Нужно перебором вычислить скорость и через АТ команды поменять ее на 9600.

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

#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3);
byte Relay = 12;
byte Relay_inv = 11;
void setup()
{
pinMode(Relay, OUTPUT);
pinMode(Relay_inv, OUTPUT);
digitalWrite(Relay_inv, HIGH);
delay(30000);
mySerial.begin(9600);
mySerial.println("AT+CMGF=1");
delay(300);
mySerial.println("AT+CSCS=\"GSM\"");
delay(300);
mySerial.println("AT+CNMI=2,2,0,0,0");
delay(300);
mySerial.println("AT+CMGD=1,4");
delay(300);
}
void loop()
{
if (mySerial.available())
{
char ch = ' ';
String val = "";
while (mySerial.available()) {
ch = mySerial.read();
val += char(ch);
delay(3);
}
if (val.indexOf("+CMT") > -1)
{
if (val.indexOf("1234-on") > -1 || val.indexOf("1234-off") > -1) // Команда на включение или выключение
{
digitalWrite(Relay, HIGH);
digitalWrite(Relay_inv, LOW);
delay(700);
digitalWrite(Relay, LOW);
digitalWrite(Relay_inv, HIGH);
}
if (val.indexOf("1234-hard-off") > -1) // Команда на хард-офф
{
digitalWrite(Relay, HIGH);
digitalWrite(Relay_inv, LOW);
delay(6000);
digitalWrite(Relay, LOW);
digitalWrite(Relay_inv, HIGH);
}
}
}
}

Схема подключения модуля GSM к Arduino:

"+5V" ----> 5V

"GND " ----> GND

"T" ----> 2

"R" ----> 3

выводы "K" и "G" замкнуть между собой

В даташите написано,что можно конденсатор поставить по питанию, и 2А не потребуется. Поставил 1000мкФ, но это не помогло, теряет связь и сходит с ума при низком токе источника.

Простого реле у меня не оказалось почему-то, пришлось задействовать модуль. Для этого добавил функцию инверсии, т.е. 12 выход прямой, а 11 - инверсный.

Собранная схема, модуль реле, Arduino UNO, GSM модуль с антенной
Собранная схема, модуль реле, Arduino UNO, GSM модуль с антенной

Схема подключения модуля реле к Arduino:

"VCC" ----> 5V

"GND " ----> GND

"IN" ----> 11

Схема подключения
Схема подключения

Снимаем крышку ПК и из F-PANEL, вытаскиваем провода, ответственные за включение и вместо них втыкаем провода от реле, и дабы кнопка тоже работала, ее подключаем ко второй паре проводов.

Были опасения, что находясь внутри корпуса, SMS до модуля не дойдет. Опасения ложные, SMS доходит, и все исправно работает. Эту конструкцию пихаем в красивую коробочку, устраиваем ее внутри поудобнее и радуемся.

UPD: Проверено все на симке МТС.

Команды управления:

1234-on

1234-off

1234-hard-off

UPD2: Состав проекта

- Arduino UNO (или любая другая)

- Модуль Neoway m590 (Совет: повесить на питание конденсатор 3000мкФ)

- Модуль реле 5В

- Блок питания для Ардуино 1-1.5А(можно попробовать зацепиться за дежурку ПК)

-Если нет программатора,то еще USBAsp

Если у Вас есть вопросы или предложения, пишите: nikitos-it@mail.ru или телеграмм https://t.me/nikitos_it
Проект можно поддержать тут или в форме для доната ниже ;)
Смелых идей и прямых рук! Ставьте пальцы вверх, подписывайтесь на канал, дальше будет интересней. Ваш Никитос.