Расширяем радиус действия китайской GSM сигнализации - очередная дачная поделка


Многие защищают свои дачные участки от непрошеных гостей используя дешевые GSM-сигнализации. Основная ее задача напугать злоумышленника, привлечь внимание окружающих и сообщить хозяину строения, что на даче стоит проверить все ли в порядке. Серьезных грабителей конечно она не остановит, но добыча дачных воров таких людей, как правило, не интересует. Конечно такую сигнализацию можно сделать самому используя контроллер и gsm-модуль, но мне удобнее пользоваться заводским изделием. Такие сигнализации имеют интерфейс для подключения как проводных, так и беспроводных датчиков. Основная проблема — малая дальность беспроводных, и необходимость тянуть провода для проводных. В данном обзоре будем устранять эти недостатки. Любителей поделок (Arduino, платы, код) приглашаю под кат.

На моем дачном участке, помимо дома, есть еще баня и сарай. В них тоже хотелось бы поставить датчики появления людей с единым центром управления в доме. Вариантов тут два: радиоканал (15-20 метров проблематичны для передачи через кирпичные стены и металлочерепицу), отдельный провод к каждому датчику (не хотелось копать и тянуть и разводить провода между строениями). Еще одним вариантом была бы установка на каждом объекте своей сигнализации — что уже не бюджетно, и добавляет неудобств (3 брелка и тп). При этом между баней и домом, а также между баней и сараем у меня под землей проложена витая пара для работы иных моих электронных поделок. Более того, на каждом объекте стоит свитч переделанный под раздачу пассивного POE (12V по витой паре, на неиспользуемых жилах). Поэтому решение стало очевидным — снабдить проводными и беспроводными датчиками сарай и баню, а данные передавать через Ethernet в дом, где преобразовывать это дело в формат понятный сигнализации. Помимо этого, я решил добавить уведомления через интернет и связать видеонаблюдение с сигнализацией (например, скидывать снимки на почту в момент срабатывания). Все это и будет решать разработанное в обзоре устройство.

Моя сигнализация куплена здесь. Года полтора назад.

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

Фото:

С обратной стороны:

Антенна выдвигается, размеры:

Вскрытие (крышечка легко открывается):



Датчик приехал с уже установленной батарейкой типа 23A. Изготовление типичное для китайских устройств, флюс не смыт. Видим передатчик 433 MHz, геркон, антенну, микросхему SC1527L и обвязку. Визуальный интерфейс прибора очень простой: два светодиода верхний сигнализирует о срабатывании датчика (в это время идет посылка на главный блок по радиоканалу). Нижний светодиод сигнализирует о необходимости замены батарейки. Дальность связи в помещении порядка 8-10 метров (одна кирпичная стена).

Нам необходимо поймать сигнал от этого или подобного устройства (например в бане) и передать через Ethernet на устройство в доме, которое либо выдаст код в эфир, либо проводом сообщит головной сигнализации о срабатывании. Приступим к изготовлению. Для простоты изготовления и из-за некритичности габаритов я взял Arduino Pro Mini и готовые модули реализующие заданные функции.

Для устройства в программе Sprint Layout была разработана печатная плата:



На плате присутствуют:
— Arduino Pro Mini
— Приемник и передатчик 433 MHz
— Сетевой модуль ENC28J60 mini
— Импульсный DC-DC преобразователь cn1584
— 3 электролитических конденсатора в цепи питания на 470 mF и керамический на 100 nF
— Линейный стабилизатор ams1117 на 3.3 V, для питания сетевого модуля
— Светодиод с токоограничивающим резистором. для индикации наличия питания
— Подтягивающие резисторы на 10 KOhm

На данной плате используются и готовые модули и smd-компоненты, мне так показалось удобнее. Эта плата универсальная, содержит и приемник и передатчик. На стороне датчиков можно ограничиться приемником, а на стороне головного устройства сигнализации — передатчиком. Универсальное устройство позволит, например, управлять перезагрузкой каких-либо устройств посылая сигнал устройству из прошлого обзора.

Изготовление устройства
Печатаем на желтой бумаге для термотрансфера:

Готовим заготовку:

В дело вступает надежный, тяжелый отечественный утюг:

Рисунок на заготовке:

Хлорное железо кушает лишнюю медь:

Две платы после лужения:


Напаиваем компоненты и тестируем:

Обратная сторона (до смывки флюса):

Теперь можно подключать USB-TTL-конвертер и сетевой кабель:


Обратная сторона со смытым флюсом:


В качестве антенн, припаиваем проводки длиной около 17 см:


Желающие повторить устройство могут скачать плату в формате .lay.

Далее самое интересное, программная составляющая.
Нам потребуется библиотека rc-switch, которая позволит извлекать закодированную этими датчиками информацию. Загружаем типовой пример:
получение кода

/*
  Simple example for receiving
  
  https://github.com/sui77/rc-switch/
*/

#include <RCSwitch.h>

RCSwitch mySwitch = RCSwitch();

void setup() {
  Serial.begin(9600);
  mySwitch.enableReceive(0);  // Receiver on interrupt 0 => that is pin #2
}

void loop() {
  if (mySwitch.available()) {
    
    int value = mySwitch.getReceivedValue();
    
    if (value == 0) {
      Serial.print("Unknown encoding");
    } else {
      Serial.print("Received ");
      Serial.print( mySwitch.getReceivedValue() );
      Serial.print(" / ");
      Serial.print( mySwitch.getReceivedBitlength() );
      Serial.print("bit ");
      Serial.print("Protocol: ");
      Serial.println( mySwitch.getReceivedProtocol() );
    }

    mySwitch.resetAvailable();
  }
}



И отсоединяя магнит от геркона видим отчаянный крик в эфире:

Код нашего устройства: 1022617

пишем код распознающий срабатывание нашего датчика

#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();
void setup() {
  Serial.begin(9600);
  mySwitch.enableReceive(0);  // Receiver on interrupt 0 => that is pin #2
}

void loop() {
  if (mySwitch.available()) {
    unsigned long value = mySwitch.getReceivedValue();
    if (value == 1022617) {
      Serial.println("Detected");
    }
    mySwitch.resetAvailable();
  }
}


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

На каждое событие датчик делает 19 посылок.

Осталось это передать по сети. Для модуля ENC28J60 нам потребуется библиотека ethercard. Пишем нехитрый код:

Отправка в центр данных о событии

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// yurok (last change 19.04.2016)
// Signal (433) control (draft)
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include <EtherCard.h>
#include <RCSwitch.h>
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// PIN configuration
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#define ETHERNET_PIN 10
#define ETHERNET_RST_PIN 14

// buffer size for get and send network messages
#define NETWORK_BUFFER_SIZE 700

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Network configuration
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// ethernet mac address - must be unique on your network
static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x34 };
// ethernet interface ip address
static byte myip[] = { 192,168,0,31 };
static byte gwip[] = { 192,168,0,1 };
static byte dnsip[] = { 192,168,0,1 };
static byte mymask[] = { 255,255,255,0 };
const char website[] PROGMEM = "192.168.0.44";
byte Ethernet::buffer[NETWORK_BUFFER_SIZE]; // tcp/ip send and receive buffer
BufferFiller EtherBufferFiller; // prepare the webpage by writing the data to the tcp send buffer
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

RCSwitch mySwitch = RCSwitch();

void setup() {
  Serial.begin(9600);
  // Ethernet init
  if(ether.begin(sizeof Ethernet::buffer, mymac, ETHERNET_PIN) == 0){
    Serial.println( "Failed to access Ethernet controller");
    exit(0);
  }else{
    Serial.println( "Ethernet controller ok");
  };
  digitalWrite(ETHERNET_RST_PIN, LOW);
  delay(20);
  digitalWrite(ETHERNET_RST_PIN, HIGH);
  ether.staticSetup(myip, gwip, dnsip, mymask);
  ether.printIp("IP:  ", ether.myip);
  ether.printIp("GW:  ", ether.gwip);  
  ether.printIp("DNS: ", ether.dnsip);  
  if (!ether.dnsLookup(website)) Serial.println("DNS failed");
  ether.printIp("SRV: ", ether.hisip);

  mySwitch.enableReceive(0);  // Receiver on interrupt 0 => that is pin #2
}

// called when the client request is complete
static void my_callback (byte status, word off, word len) {
  Serial.println(">>>");
  Ethernet::buffer[off+300] = 0;
  Serial.print((const char*) Ethernet::buffer + off);
  Serial.println("...");
}

void loop() {
  ether.packetLoop(ether.packetReceive());
  if (mySwitch.available()) {
    unsigned long value = mySwitch.getReceivedValue();
    if (value == 1022617) {
      Serial.println("Detected");
      ether.browseUrl(PSTR("/index.html"), "", website, my_callback);
    }
    mySwitch.resetAvailable();
  }
}



Подключаем устройство к домашней сети, запускаем на ноутбуке (192.168.0.44) апач (просто он был), видим в консоли:

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

На основе данного кода легко организовать удаленную обработку срабатывания датчиков через Ethernet. Причем все датчики от этих сигнализаций работают по одному принципу: распознали событие и многократно шлют в эфир свой код. Проводные датчики можно подключить к специально оставленным входам нашей платы и также передавать информацию о событиях по сети. Конечно приведенный код — это только прототип, но основные моменты все присутствуют. Естественно нужно добавить защиту от повторов и тд, но каждый это сам вполне может проделать.

На этом заканчиваю. Спасибо тем кто дочитал до конца, надеюсь кому-то информация окажется полезной! Если будет интересно, продолжу писать про дачное творчество.
Планирую купить +38 Добавить в избранное +39 +69
+
avatar
+10
Если будет интересно, продолжу писать про дачное творчество.
Конечно пишите, многим будет актуально.
+
avatar
  • kirich
  • 19 апреля 2016, 19:50
+2
Готовим заготовку:
У нас за ацетон ругают, очень сильно, так как запрещен.
Недавно еле раздобыл себе полтора литра.
+
avatar
  • yurok
  • 19 апреля 2016, 19:51
0
у нас свободно продается…
+
avatar
  • kirich
  • 19 апреля 2016, 19:53
+2
Ацетон прекурсор, потому у нас запрещен к продаже :(

Кстати, в России частично тоже
В России ацетон входит в таблицу III («прекурсоры, оборот которых в Российской Федерации ограничен и в отношении которых допускается исключение некоторых мер контроля») списка IV («Список прекурсоров, оборот которых в Российской Федерации ограничен и в отношении которых устанавливаются меры контроля») перечня наркотических средств, психотропных веществ и их прекурсоров, подлежащих контролю в Российской Федерации (прекурсор). Оборот ацетона (концентрацией 60 % и более) в РФ ставится под контроль, на учёт прихода и расход
+
avatar
  • Kartus
  • 19 апреля 2016, 19:55
+2
Та же фигня. И марганцовку…
Павбывав бы!
+
avatar
  • kirich
  • 19 апреля 2016, 19:55
+1
Марганцовка это вообще отдельная тема, капец, тоже в шоке.
+
avatar
  • Kartus
  • 19 апреля 2016, 21:51
+1
Главное что эти суки сходу лишили целые поколения радости самодельных фейерверков, бомбочек, простейших химических опытов… А ведь фактически ничего от этого в плане нариков не изменилось — перешли с одних веществ на другие и фсё!
+
avatar
  • Fover
  • 19 апреля 2016, 22:02
+1
Долго искал марганцовку, недавно зашел в магазин аля «Все для сада и огорода» и оказалось ее там полно.
+
avatar
0
Марганцовка «свободно» продаётся в аптеках. Только надо фейс контроль пройти. Говорю от имени одного аптекаря, запрет негласный. Бабушке или женщине дадут тюбик, пиз*юку 16 лет нет.
А если смотреть в интернет магазинах аптек, то почти везде есть в наличии, а если спросил и ответили нет — просто не понравился продавцу.
+
avatar
  • Fover
  • 20 апреля 2016, 21:22
0
У нас не во всех аптеках она есть (а именно только в одной) и она там намного дороже. Конечно, если использовать для человека, то лучше взять в аптеке, но для бытовых нужд можно и из магазина.
+
avatar
  • yurok
  • 19 апреля 2016, 19:56
0
может стоит закупиться про запас :)
в строительных магазинах пока есть
я думаю — желающие нанюхаться вполне найдут средства и без ацетона
+
avatar
  • kirich
  • 19 апреля 2016, 20:01
+1
Они его не нюхают, функция ацетона несколько другая.
Преку́рсор (лат. praecursor — предшественник) — вещество, участвующее в реакции, приводящей к образованию целевого вещества.
может стоит закупиться про запас :)
Я бы закупился :)
+
avatar
  • yurok
  • 19 апреля 2016, 20:08
+2
ну… вещества надо ограничивать в обороте, а не то чем их можно обрабатывать
+
avatar
  • SerjNSK
  • 19 апреля 2016, 20:37
0
Химку на нем вроде варят.
Недавно купил канистрочку ацетона 2,5 кг всего за 29 рублей, уценка понимаете ли. Помята немного емкость была.
+
avatar
  • yurok
  • 19 апреля 2016, 20:44
0
в новосибирске? где?
+
avatar
  • SerjNSK
  • 20 апреля 2016, 11:12
+1
В Форме на Димитровском, у них там в отделе красок есть корзина с уценкой, иногда заглядываю туда.
+
avatar
  • yurok
  • 20 апреля 2016, 11:25
0
спасибо
+
avatar
  • yurok
  • 21 апреля 2016, 09:54
0
заехал туда, в пластиковой емкости за 240 руб — 2.5 литра. Уценка из-за того, что срок годности вышел в январе… вроде как в пластиковой емкости его хранить не больше года можно…
Взял в стекле 4 бутылки 0.5 по 63 руб — мне так удобнее
+
avatar
0
Частично не считается. В прошлом году покупал.
+
avatar
  • Geektor
  • 19 апреля 2016, 20:28
+2
Хабр DIY наступает Муське на хвост)
+
avatar
  • kirich
  • 19 апреля 2016, 21:04
+9
Боюсь что скорее наоборот, Муська наступает Хабру на хвост.
Такими темпами скоро хабр прикроют за ненадобностью :)
+
avatar
  • yurok
  • 19 апреля 2016, 21:26
+6
тут у народа понтов меньше, возможно народ взрослее — больше практических вещей
я по крайней мере такое пишу… что самому надо
+
avatar
0
Аналогичное осчусчение. Но на Хабре очень богемно, даже голоса не дают за просто так… Это буэ!
+
avatar
  • Timon_1
  • 19 апреля 2016, 20:49
0
в библиотеке rc-switch используется прерывание? дополнительно в скетче не надо его?
+
avatar
  • yurok
  • 19 апреля 2016, 20:51
0
нет не нужно, в библиотеке используется
+
avatar
+3
капец ) только собираюсь повторить что то одно тут Yurok уже новое сделал..)
и снова в закладки)
+
avatar
  • yurok
  • 19 апреля 2016, 21:52
+3
рад стараться )
+
avatar
+1
меня жена убьет) и съест.
+
avatar
0
Вот эти модули на 433МГц, они на букву Х. Не подумайте что хорошие. Передатчик ещё боле или менее, если запитать от 12В. Приёмник сразу в мусор. Купите нормальный приёмник (ключевое слово superheterodyne, superhet) и дальность связи волшебным образом увеличивается в 3 раза. Длину антенны тоже надо подбирать. Если у приёмника чем длиннее тем лучше, то длина антенны передатчика устанавливается опытным путём.
+
avatar
  • yurok
  • 19 апреля 2016, 22:57
+1
так как раз решение из обзора позволяет обойти трудности дальности, к тому же в штатной сигналке я не могу менять приемник :)

в пределах одного строения вполне нормально — а с этим решением больше и не нужно
+
avatar
0
Более того — 2-3 брусовые стены по 150мм со свистом. В отличие от клятого Wi-Fi им.TP-LINK, который кашляет и падает уже через одну такую стенку!!! В принципе неудивительно, 315/433Мгц сильно ниже, чем 2400Мгц…

А супергетеродин для приема дискретных сигналов в радиусе 10-50м использовать — это кагбэ… Жирно будет!
+
avatar
0
Что значит жирно? По цене одинаково ebay.com/itm/251980631242.
+
avatar
0
А точно в сигналке нельзя поменять приёмник? Я видел много сигналок где впаян такой же модуль приёмника на 433.
+
avatar
0
Если у приёмника чем длиннее тем лучше
Заявление верное, но не для 433МГц. а для метровых волн, т.к. там сделать длиннее чем нужно затруднительно.
а для 433 МГц все давно посчитано и проверено, и кстати — антенна совсем не обязательно штырь, некоторые геметрические формы творят чудеса в увеличении дальности.
+
avatar
0
В антенне длиннее длины волны страшного ничего нет. Наоборот, чем длиннее у приёмника антенна тем больше наводиться будет электромагнитных волн. Другое дело что и помех с эфира он нахватает много, но на 433 это не особо важно, так как помех мало.
+
avatar
0
Да, с таким приёмником дальность увеличивается в несколько раз. Связано с принципом работы регенеративного приёмника. Он сильно шумит, и слабый сигнал тонет в шумах. В супергетеродине собственные шумы минимальны. Ну и регенераттвный приёмник капризен очень, настройки плавают.
+
avatar
0
без ардуины и глобального головняка — можно их как — либо использовать?
одной кнопки управления для срабатывания реле на 15 метров прямого расстояния достаточно))
+
avatar
  • yurok
  • 14 мая 2016, 23:18
0
есть у китайцев устройства решающие именно вашу задачу
+
avatar
0
Например, вот приёмник, хороший с реле ebay.com/itm/400957968791 К нему нужен брелок на 433 МГц, например этот ebay.com/itm/361529945280
+
avatar
  • Jeimon
  • 22 апреля 2016, 20:11
0
А нет идей как избавиться от передачи сигнала на 433 MHz? К брелку можно граббером код подобрать, например. И от этого как-то не хочется вообще ими пользоваться.
Может можно блютус или вайфай модули прилампичить к сигнализации и датчикам?
+
avatar
0
а обычный смертный прикупив данный девайс(датчик-передатчик) чем должен принимать сигнал?
или там в комплекте идёт ещё какой-то приёмник?

не раз натыкался на эту «фигатень» в продаже по словами GSM, но пробежавшись по описанию и поняв, что в ней нет ничего общего с GSM закрывал её нафиг))

причём у Вас тоже в заголовке есть присутствие GSM, но в отличии от продавцов тут есть упоминание об охранном комплексе работающем на GSM, к которому этот передатчик через ещё как минимум двух посредников должен достучаться, а оно уже сработает на GSM… я так это понял)) хотя неправильно это как-то ассоциируется с данным девайсом, так как изучаешь обзор, чтобы понять откудо же в нём GSM))

не совсем понял зачем в вашей сборке устройств присутствие передатчика? передача же осуществляется по NET? а для приёма сигнала от датчика нужен только приёмник… или это на будущее для целей ваших «перезагрузок» устройств? так опять же, непонятно, что оно будет перегружать, так как до других сооружений не достанет, а зайдя в сооружение с наличием данной сборки, перезагрузку проще рукой по тумблеру сделать))
возможно я банально туплю уже, 4е сутки с инета не вылажу по изучению разной инфы во время отпуска, но реально не понятно, два раза перечитал, поясните плизз))

и данный девайс(датчик-передатчик) будет работать с любым приёмником или ему нужно как-то прописать в приёмник тот индефикатор, который вы вычислили?))
+
avatar
  • yurok
  • 14 мая 2016, 23:17
0
спасибо
1 — на плате есть приемник и передатчик (плата универсальная), приемник, например принял сигнал от датчика в сарае, передал его по сети в дом, а там такая же плата в эфир пошлет его код — у сигнализации ощущение, что датчик сработал совсем рядом
2 — перезагрузка устройств из другого обзора — делается так: по сети передатчик принимает команду и отправляет в эфир код — нужный приемник перезагружает устройство. Ходить не требуется

в приемнике требуется прописать — код и процедуры приведены в обзоре