Сигнализация для дома с отправкой sms

zipper31
Offline
Зарегистрирован: 25.01.2016

Вынашиваю идею по созданию охранной сигнализации для дома.

Функции устройства:1.вкл\выкл кнопкой 2.Индикатор режимов работы 3.Сирена. 4.1 охранный шлейф(лучше 3-4) 5.Отправка смс(через кнопочный тлф,по средствам нажатия кнопок в нужной последовательности.

Логика работы:

индикатор не горит.система в покое.

Постановка на охрану:Нажимаем кнопку (вкл),индикатор мигает.Система ждёт 15сек и ставится на охрану.

Индикатор горит постоянно.

Сработка:сирена работает 30сек,индикатор мигает.ардуино нажимает кнопки(пусть 4-5 нажатий) и отправляет смс.

Через 2мин если шлейф целый ставится сама снова на охрану.

Снятие:нажатие кнопки.(никаких задержек)

доп функционал:Звоню на тлф ардуины,снимает трубку для прослушки помещения.

-----------------

В качестве кнопки будет кодовая радио панель на 2 канала,к ардуино прикручу совместимый приёмник.

Она у меня есть уже.Стоять будет в частном дворе.Так что просто так не сломают.

кодовая панель

Основные трудности у меня вызывает программный код,так что кто чем может.

В остальном проблем не вижу.

 

 

 

 

 

Araris
Offline
Зарегистрирован: 09.11.2012

Не из любопытства, а чтобы знать, какой уровень ответов Вам подойдёт - это Ваш первый проект (задумка точнее) на Ардуино ?

zipper31
Offline
Зарегистрирован: 25.01.2016

Да.Это самое начало.в электронике шарю,а вот программирование изучаю.

uivoff
Offline
Зарегистрирован: 27.04.2015

А не проще вместо кнопочного телефона использовать GSM модуль, тогда возможностей больше и кнопки нажимать не надо.

Модулей сечас море M590, SIM800, SIM900.

Я сейчас похожую сигналку делаю.

1. Удаленная (вдруг уехал и забыл) постановка на охрану по звонку или по СМС (дешево и сердито - входящий бесплатно), а еще только по звонку с твоего номера или нескольких номеров которые прописал в программе (чужие номера в игнор). 

2. СМС-кой можно получать в каком состояние находится сигнализация (вкл/выкл/сирена).

3. Так же можно снимать с охраны звонком или СМС (вдруг теща приехала :)

4. Включаем в функции показания повышения температуры (как пожарная сигнализация), протечки воды, отключение электричества

и т.д. и т.п. возможностей с модулем полно.

 

 

NE_XT
NE_XT аватар
Offline
Зарегистрирован: 22.05.2012

Берете готовое и переделываете под себя:

 

Araris
Offline
Зарегистрирован: 09.11.2012

zipper31 пишет:

Да.Это самое начало.в электронике шарю,а вот программирование изучаю.

Вас ждёт много интересного ))

Я бы посоветовал отложить пока в сторону телефоны, GSMы и SMSы, начать с решения задач попроще :

1. Определить состояние кнопки, определить состояние шлейфа.

2. Управлять индикатором, управлять сиреной.

3. Посложнее: разобраться с millis() и управлять таймерами ("Система ждёт 15сек и ставится на охрану", "сирена работает 30сек", "Через 2мин ставится сама снова на охрану").

Ну и так далее по нарастающей сложности..

Либо найти готовый проект аналогичного функционала (они есть, их немало) и пытаться на его основе что-то делать.

dmitron1036
Offline
Зарегистрирован: 10.01.2016

Делал я для дома, работающую длительно от кислотного АКБ.

есть схема и програмка.

тута (фотка не адекватная):

http://uselect-el.ucoz.com/

на базе UNO+Sim900 shield.

zipper31
Offline
Зарегистрирован: 25.01.2016

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

Оригенал скетча.

Мой модифицированный код,точнее его начальная часть.Пробывал разные варианты писать,не компилируется.

Araris
Offline
Зарегистрирован: 09.11.2012

Лучше выкладывать скетчи, как описано здесь http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii

Когда не компилируется, желательно выкладывать сообщения компилятора.

Так у Вас будет больше шансов на ответы/помощь.

zipper31
Offline
Зарегистрирован: 25.01.2016
И снова здравствуйте.Навоял рабочий скетч,идеи пока реализованы не все.Так сказать промежуточный вариант скетча.Надо ещё работать и работать :)
 
Что он делает:Ставим на охрану:закрываем дверь,нажимаем кнопку вкл.Наоборот тоже можно.Сига на охране.
 
Снимаем с охраны просто нажатием на кнопку.Сработка:дверь открылась,сразу сирена 30 сек.Если после 30 сек шлейф целый снова охраняем,если шлейф разомкнут снимаем с охраны.
 
2 индикатора.зелёный контроль шлейфа,работает постоянно.Шлейф выкл мигает\вкл горит.
 
Красный индикатор вкл если сига вкл.
//Сигнализация для частного дома.Разработка:Zipper31.Mail:zz66zz@ya.ru

//постоянные
const byte GreenLed = 10; //зеленая лампочка
const byte RedLed = 11;  //красная лампочка
const byte Sirena = 9;  //сирена
const byte GerkonPin = 8; //геркон
const byte ButtonPin = 12; //пин для кнопки

//переменные
boolean PushOn = true;  // включать ли кнопку
boolean PushState = false;  // переменная кнопки
boolean SecureState = 0; //флаг работающей сигнализации
boolean GerkonState = 0; //флаг геркона
boolean LedState = 0; //флаг зелёного диода
boolean SecCont = 0; //для фиксации сработки

//таймеры
unsigned long previousMillis = 0;// обнуляем таймер диода
unsigned long previousMillisRest = 0;//обнуляем таймер сработки сиги
unsigned long intervalLed = 1000; //время мигания зелёного диода
unsigned long intervalRest = 30000; //время сирены и перепостановки на охрану

void setup()
{
  pinMode(GreenLed, OUTPUT); //задаем режимы работы пинов
  pinMode(RedLed, OUTPUT);
  pinMode(Sirena, OUTPUT);
  pinMode(GerkonPin, INPUT);
  pinMode(ButtonPin, INPUT_PULLUP);
}
void loop()
{ //управление кнопкой и защита от дребезга,получаем переменную PushState
  //какая то фигня написана неведомая,но работает хорошо :)
  boolean isButtonUp = digitalRead(ButtonPin);
  if (PushOn && !isButtonUp) {
    delay(5);
    isButtonUp = digitalRead(ButtonPin);
    if (!isButtonUp) {
      PushState = !PushState;
    }
  }
  PushOn = isButtonUp;

  GerkonState = digitalRead(GerkonPin); // назначаем переменную геркону

  //**********Включение сигнализации**********
  if (PushState == true) {    //сига включена и выполняем
    if (GerkonState == 1) {   //если "1" то
      SecureState = 1;
    }
  }      //следим за герконом и всё такое

  //**********Выключение сигнализации**********
  if (PushState == false) {    //сига выключена и выполняем
    digitalWrite(RedLed, LOW); //красный диод выкл
    digitalWrite(Sirena, LOW); //сирена выкл
    SecureState = 0;           //обнуляем
    SecCont = 0;
  }              //обнуляем

  //**********Охрана**********
  if (SecureState == 1) { //если "1" то
    if (GerkonState == 0 && SecCont == 0) { // если GerkonState"0"то погнали цикл
      SecCont = 1; // прерывание чтоб таймер сработки сиги не зациклился
      digitalWrite(Sirena, HIGH); //вкл сирена
      previousMillisRest = millis();
    }
  } //таймер сработки сиги
  if ((previousMillisRest > 0) && (millis() - previousMillisRest >= intervalRest)) {
    digitalWrite(Sirena, LOW); //выкл сирена
    if (GerkonState == 0)     //если геркон разомкнут"0" то
      PushState = false;     //вырубаем сигу
    else                      // если геркон замкнут"1"то
      SecCont = 0;         // обнуляем и опять охраняем
    previousMillisRest = 0;
  } //обнуляем таймер сработки сиги

  //**********Управление индикаторами**********
  //зелёный индикатор показывает режим шлейфа,всегда
  //красный индикатор показывает работу сигнализации
  digitalWrite(RedLed, PushState == true && GerkonState == 1); //вкл красный диод

  if (GerkonState == 0) //если "0" то
    digitalWrite(GreenLed, LedState); //мигаем зелёным диодом
  else                 //если "1" то
    digitalWrite(GreenLed, HIGH);     //светим постоянно

  //***Таймер индикатора,зелёный диод***
  unsigned long currentMillis = millis(); // частота мигания
  if (currentMillis - previousMillis > intervalLed) {
    previousMillis = currentMillis;
    if (LedState == LOW)
      LedState = HIGH;
    else
      LedState = LOW;
  }

}

Ещё прикручу пару таймеров и реализую набор кнопок на ТЛФ для отправки смс.Ещё есть мысль,звоним на ТЛФ сиги,она снимает трубку.Слушаем что происходит дома.Не забываем что это мой первый скетч. Что думаете про скетч и что ещё сделать?