Категории

Самодельная сигнализация в бытовку на даче

22.07.2025 10:06 | коды из категории: Безопасность

Охранная сигнализация с GSM-управлением для дачи или бытовки. Контроль датчиков (дверь, движение внутри/снаружи), SMS-оповещения, удалённое включение обогрева, дыма, петард и газа по команде. Самодельная система с функцией автономной защиты.

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

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

🔍 Основное назначение системы

Это охранная сигнализация с GSM-управлением, которая:

📡 Основные компоненты

Датчики:

  • Геркон (дверной датчик) - срабатывает при открытии
  • PIR (инфракрасный датчик движения) - детектирует движение внутри
  • Микроволновый датчик - обнаруживает движение снаружи
  • Датчик сарая - дополнительный охранный датчик

Исполнительные устройства:

  • Сирена - звуковое оповещение
  • Петарда - возможно, имитация выстрела для отпугивания
  • Газовый клапан (smoke) - странная функция, возможно для тестирования или спецэффектов
  • Нагреватель - подогрев чего-либо (возможно, защита от обледенения)

Другие компоненты:

  • Индикация: RGB-светодиод (красный/зеленый/синий) - показывает статус системы
  • Управление: Через SMS-команды с мобильного телефона

📱 SMS-команды управления

Команда Действие
VIKL Выключить всю систему
VKL Включить систему
TEPLO Включить нагрев на 20 минут
GAZI Активировать "газовую атаку" (2 сек)

🚨 Логика работы защиты

При срабатывании геркона (дверь открыта):

  • Через 2 секунды: отправка SMS + сирена на 150 сек
  • Через 5 секунд: усиление сирены (30 сек)

При обнаружении движения снаружи (микроволновый датчик):

  • 2 срабатывания: SMS + сирена 150 сек
  • 4 срабатывания: усиление сирены (30 сек)

Анти-саботаж:

  • После SMS-оповещения пауза 60 сек перед повторным уведомлением
  • Защита от ложных срабатываний (таймеры на отсутствие движения)

⚙️ Дополнительные функции

Нагрев:

  • Активируется на 20 минут по SMS
  • Автоматически отключается по таймеру

"Газовая атака":

  • Активирует реле на 2 секунды (возможно подключен дым-генератор или подобное)

Индикация:

  • Красный: система выключена
  • Зеленый: система включена
  • Синий: активен нагрев

🛠 Технические особенности

❓ Странные моменты

  • Дублируется проверка геркона в коде (возможно ошибка копипасты)
  • Функция "газовой атаки" выглядит нестандартно
  • Переменные с именами типа fff, ffff требуют пояснения
  • Нет явной обработки кнопок (хотя пин объявлен)

💡 Вывод

Система представляет собой самодельную GSM-сигнализацию для дачи/гаража с:

#include <SoftwareSerial.h>

// Настройки пинов
#define PIR_PIN 4
#define SIRENA_PIN 6
#define PETARDA_PIN 7
#define SMOKE_PIN 8
#define NAGREV_PIN 12
#define GERKON_PIN 9
#define MICROWAVE_PIN 10
#define SARAY_PIN 11
#define RED_LED A0
#define GREEN_LED A2
#define BLUE_LED A1
#define BUTTONS_PIN A3

// Состояния системы
enum SystemState {
  SYSTEM_OFF,
  SYSTEM_ON,
  SYSTEM_HEATING
};

// Глобальные переменные
SoftwareSerial mySerial(2, 3); // RX, TX
SystemState currentState = SYSTEM_ON;

// Датчики и таймеры
struct Sensors {
  bool pir;
  bool gerkon;
  bool microwave;
  bool saray;
  long lastPirMotionTime;
  long lastPirNoMotionTime;
  long lastMicrowaveMotionTime;
  long lastMicrowaveNoMotionTime;
};

struct Timers {
  long hornTimer;
  long heatingTimer;
  long smsPauseTimer;
  long powerOnTime;
  long buttonPressTime;
};

struct Counters {
  int motionIn;
  int motionOut;
  int smsCounter;
  int hornCounter;
};

Sensors sensors;
Timers timers;
Counters counters;

// Прототипы функций
void initializeSystem();
void processSMS();
void handleSensors();
void handleHeating();
void activateAlarm(int duration);
void sendSMS(String text, String phone);
void updateLEDs();

void setup() {
  Serial.begin(9600);
  mySerial.begin(9600);
  
  initializeSystem();
  
  // Инициализация GSM модуля
  while(!mySerial.available()) {
    mySerial.println("AT");
    delay(1000);
    Serial.println("Connecting to GSM...");
  }
  Serial.println("GSM Connected!");
  
  mySerial.println("AT+CMGF=1"); // Текстовый режим SMS
  delay(500);
  mySerial.println("AT+CNMI=1,2,0,0,0"); // Настройка уведомлений о SMS
  delay(500);
  mySerial.println("AT+CMGL=\"REC UNREAD\""); // Проверка непрочитанных SMS
  delay(500);
  
  // Тест сирены
  digitalWrite(SIRENA_PIN, LOW);
  delay(500);
  digitalWrite(SIRENA_PIN, HIGH);
}

void loop() {
  // Обработка входящих SMS
  if(mySerial.available()) {
    processSMS();
  }
  
  // Чтение состояния датчиков
  handleSensors();
  
  // Управление нагревом
  if(currentState == SYSTEM_HEATING) {
    handleHeating();
  }
  
  // Управление сиреной
  if(counters.hornCounter > 0) {
    if(millis() - timers.hornTimer > 1000) {
      timers.hornTimer = millis();
      digitalWrite(SIRENA_PIN, LOW);
      counters.hornCounter--;
    }
  } else {
    digitalWrite(SIRENA_PIN, HIGH);
  }
  
  // Обновление светодиодной индикации
  updateLEDs();
}

void initializeSystem() {
  // Настройка входов датчиков
  pinMode(PIR_PIN, INPUT_PULLUP);
  pinMode(GERKON_PIN, INPUT_PULLUP);
  pinMode(MICROWAVE_PIN, INPUT_PULLUP);
  pinMode(SARAY_PIN, INPUT_PULLUP);
  
  // Настройка выходов
  pinMode(SIRENA_PIN, OUTPUT);
  pinMode(PETARDA_PIN, OUTPUT);
  pinMode(NAGREV_PIN, OUTPUT);
  pinMode(SMOKE_PIN, OUTPUT);
  
  // Инициализация выходов
  digitalWrite(SIRENA_PIN, HIGH);
  digitalWrite(PETARDA_PIN, HIGH);
  digitalWrite(NAGREV_PIN, HIGH);
  digitalWrite(SMOKE_PIN, HIGH);
  
  // Настройка светодиодов
  pinMode(RED_LED, OUTPUT);
  pinMode(GREEN_LED, OUTPUT);
  pinMode(BLUE_LED, OUTPUT);
  
  // Начальное состояние светодиодов
  digitalWrite(RED_LED, HIGH);
  digitalWrite(GREEN_LED, LOW);
  digitalWrite(BLUE_LED, LOW);
}

void processSMS() {
  String inputString;
  delay(100);
  
  while(mySerial.available()) {
    inputString += (char)mySerial.read();
  }
  
  delay(10);
  Serial.println(inputString);
  inputString.toUpperCase();
  
  // Обработка команд
  if (inputString.indexOf("VIKL") > -1 && currentState != SYSTEM_OFF) {
    currentState = SYSTEM_OFF;
    sendSMS("SYSTEM OFF", "+79774266134");
  }    
  
  if (inputString.indexOf("TEPLO") > -1 && currentState != SYSTEM_HEATING) {
    currentState = SYSTEM_HEATING;
    timers.heatingTimer = millis();
    digitalWrite(NAGREV_PIN, HIGH);
    sendSMS("HEATING ON", "+79269447333");
  }
  
  if (inputString.indexOf("VKL") > -1 && currentState == SYSTEM_OFF) {
    currentState = SYSTEM_ON;
    sendSMS("SYSTEM ON", "+79774266134");
  }
  
  if (inputString.indexOf("GAZI") > -1) {
    digitalWrite(SMOKE_PIN, LOW);
    delay(2000);
    digitalWrite(SMOKE_PIN, HIGH);
    sendSMS("GAS ACTIVATED", "+79774266134");
  }
  
  // Очистка SMS
  if (inputString.indexOf("OK") == -1) {
    mySerial.println("AT+CMGDA=\"DEL ALL\"");
    delay(1000);
  }
}

void handleSensors() {
  // Обработка геркона
  if (digitalRead(GERKON_PIN) == LOW && currentState != SYSTEM_OFF && !sensors.gerkon) {
    sensors.gerkon = true;
    timers.smsPauseTimer = millis();
    
    if(millis() - timers.smsPauseTimer > 2000) {
      counters.hornCounter = 150;
      sendSMS("DOOR OPEN", "+79269447333");
    }
    
    if(millis() - timers.smsPauseTimer > 5000) {
      counters.hornCounter = 30;
    }
  }
  
  // Обработка микроволнового датчика
  if (millis() - sensors.lastMicrowaveMotionTime > 1000 && digitalRead(MICROWAVE_PIN) == LOW) {
    sensors.lastMicrowaveMotionTime = millis();
    counters.motionOut++;
  }
  
  if (millis() - sensors.lastMicrowaveNoMotionTime > 10000 && digitalRead(MICROWAVE_PIN) == HIGH && counters.motionOut > 0) {
    sensors.lastMicrowaveNoMotionTime = millis();
    counters.motionOut--;
  }
  
  if (counters.motionOut == 2 && digitalRead(MICROWAVE_PIN) == LOW && counters.smsCounter == 0 && currentState != SYSTEM_OFF) {
    counters.hornCounter = 150;
    counters.smsCounter = 1;
    sendSMS("MOTION DETECTED", "+792694__33");
    timers.smsPauseTimer = millis();
  }
  
  if (counters.motionOut == 4 && digitalRead(MICROWAVE_PIN) == LOW) {
    counters.hornCounter = 30;
  }
  
  // Сброс счетчиков после паузы
  if (millis() - timers.smsPauseTimer > 60000) {
    counters.smsCounter = 0;
    sensors.gerkon = false;
  }
}

void handleHeating() {
  if (millis() - timers.heatingTimer > 1200000) { // 20 минут
    currentState = SYSTEM_ON;
    digitalWrite(NAGREV_PIN, LOW);
  }
}

void sendSMS(String text, String phone) {
  Serial.println("Sending SMS...");
  mySerial.println("AT+CMGS=\"" + phone + "\"");
  delay(500);
  mySerial.print(text);
  delay(500);
  mySerial.print((char)26); // Ctrl+Z для отправки
  delay(500);
  Serial.println("SMS sent");
  delay(2000);
}

void updateLEDs() {
  // Обновление светодиодов в зависимости от состояния системы
  switch(currentState) {
    case SYSTEM_OFF:
      digitalWrite(RED_LED, HIGH);
      digitalWrite(GREEN_LED, LOW);
      digitalWrite(BLUE_LED, LOW);
      break;
    case SYSTEM_ON:
      digitalWrite(RED_LED, LOW);
      digitalWrite(GREEN_LED, HIGH);
      digitalWrite(BLUE_LED, LOW);
      break;
    case SYSTEM_HEATING:
      digitalWrite(RED_LED, LOW);
      digitalWrite(GREEN_LED, LOW);
      digitalWrite(BLUE_LED, HIGH);
      break;
  }
}
Теги: #Безопасность #автоматизация #сигнализация #GSM #охрана #дача #бытовка #SMS-управление #датчики движения #геркон #PIR #микроволновый датчик #сирена #петарда #дым #обогреватель #удалённое управление #самоделка #защита от взлома

Комментарии

Пока нет комментариев. Будьте первым!

Оставить комментарий

← Назад к списку

Важно: Блог-эксперимент

Блог только запустил, все статьи генерирую через нейросеть т.к. лень, возможны ошибки. Просто чтобы вы знали и не запускали ядерный реактор по моим статьям ))
Если у вас есть вопросы, или Нашли неточность? пишите в коментах — вместе поправим и сделаем статью более качественной. Я лично объясню нюансы из практики.

Посетителей сегодня: 0


кто я | книга | контакты без контактов

© Digital Specialist | Не являемся сотрудниками Google, Яндекса и NASA