Простая GSM сигнализация.

Advenced
Offline
Зарегистрирован: 02.03.2017

DarkDaymond пишет:

Проблема в том что датчик СО2 от такой же китайский и невечный тм внутри нить накала которая если будет работать сутками напролет то очень скоро закончится:) поэтому и нужно вырубать и замерять. про тревогу согласен:) и про смс тоже.

Там в последнем ПО есть выход на 10 пине. Поставь туда Полевик и система будет датчик включать ктогда надо сделать обзвон или СМС отправить

DarkDaymond
Offline
Зарегистрирован: 01.07.2016

Ну уж прям люкс класса:)

Все необходимое

2 датчика движения на дверь и око
датчик огня
датчик газа
ну и температуры

на резервные пины можно и напрягу.

Я думаю функционал вполне себе за недорого. относительно того что продают буржуи.

Про датчики согласен нужно надежнее. но как показывает практика ломается все и дорогое и дешевое.

Свой вариан никому не навязываю. Ваш проек приглянулся именно простотой и маштабируемостью.

Advenced
Offline
Зарегистрирован: 02.03.2017

Не поверите как я рад, что этот проект понравился вам. Прошлую ссылку скачали более 1500раз. Задача была дать дешевое и работоспособное.

Если у вас есть какие то изменения в ПО и это хорошо раьотает. Прошу Вас скинуть скетч, описание и схему.

Это поможет кому-то то дома бюджетно что то сотворить
.

Ведь наша цель дать людям то, за что буржуи просят деньги

Advenced
Offline
Зарегистрирован: 02.03.2017

А на счет люкс класса. Смотрел готовые решения от китайцев. В общем они работают плохо
А цена минимум 5000р за стандарт. Не говоря о датчиках газа и т.д.

Лучше уже самому все купить и собрать по имеющимся решениям. Экономия до 50%

DarkDaymond
Offline
Зарегистрирован: 01.07.2016

Больше чем 50%

Датчики движения PIR по 60р Итого 120р

Датчик газа MQ-7 90р

Датчик огня 50р

датчик температурв DS18B20 100р

ардинка 150-180р

модем 100р

мелочевку не считаю ибо ее и так навалом у каждого

ИТОГО около 700р плюс/минус

 

Advenced
Offline
Зарегистрирован: 02.03.2017

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

DarkDaymond
Offline
Зарегистрирован: 01.07.2016

>>>По фото не лучшее схематияное решение. Я бы не ставил dc dc преобразователь. Так как ардуино мини сама может конвертировать напряжение. А для питания модема лучше использовать lm1117. Там выходной ток можно большой получить. Потом не вижу радиаторную подтяжку и большого кондера на модеме.

 

lm1117 это линейный стаб. это значит что он будет греться. в корпусе сот-223 ток до 800ма что есть мало так как модемы в пике до 2А по даташиту кушают. можно конечно взять дешевый lm317 и на него навешать резисторов в делители и получить нужное напряжение и ток, но при этом он не лишен недостатков амс1117.

поэтому dc-dc это наше все и ток до 2А держит и не греется так как в импульсном режиме пашет и стоит как амс1117+резистры:)

далее конденсатор как раз стоит по даташиту модема 1000мкф (третья деталька слева)

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

при использованиии ардуино нано можно конечно было подвести прямо 12в на ногу VIN. но уж очень не рекомендуют так делать поэтому понижаем до 9 вольт стабом L7809 (to-220)

подтяжку зон прикрчу как только код отладится.

kalonist
Offline
Зарегистрирован: 18.11.2017

Скинь мне пожалуйста

DarkDaymond
Offline
Зарегистрирован: 01.07.2016

https://yadi.sk/d/fTm8OWKe3WYt9d

только код ане дам от капец какой глючный. будем просить автора помочь :)

kalonist
Offline
Зарегистрирован: 18.11.2017

Спасибо!

DarkDaymond
Offline
Зарегистрирован: 01.07.2016

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

kalonist
Offline
Зарегистрирован: 18.11.2017

Ок!

Advenced
Offline
Зарегистрирован: 02.03.2017

Привет. Не совсем понимаю, в какой момент нужно скачать газоанализатор?

Каждую 1 минуту? Все таки может его нужно держатьпостоянно включенный?

Если включать то надо на какое-то время? Тогда просто в цикле луп допишите

Advenced
Offline
Зарегистрирован: 02.03.2017

Включение нужной ноги и таким же способом выключить на какое-то время.

В общем нет четкой задачи.

DarkDaymond
Offline
Зарегистрирован: 01.07.2016

Привет. Вообщем пока проверил Ваш скетч на sim800l.

-потребление до 200ма

-сон не работает не разобрался почему возможно мой модуль глючит буду шить.

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

-очень длинный loop() из за delay даже если время срезать все ровно основный цикл у меня 27сек. т.е если одновременно сработал пин на звонок , то второй пин проигнорируется если он сработае в период выполнения void.

- что касательно датчика газа алгоритм такой: через ключ например IRFZ44 подаем питание на датчик с любого свободного пина-->>ждем 1минуту (это по желанию)-->> делаем замер с цифрового выхода датчика(там их 2 аналог и цифра аналогом можно задавать значение при котором будет аларм) а цифровой просто 1 или 0. Если датчик сработал то есть во время замера единица пришла-->>отправляем смс о тревоги газа и выключаем датчик. Если с датчика пришел 0 то просто выключаем питание ждем минут 5 и сново включаем.

 

 

b707
Онлайн
Зарегистрирован: 26.05.2017

DarkDaymond пишет:

-очень длинный loop() из за delay даже если время срезать все ровно основный цикл у меня 27сек. т.е если одновременно сработал пин на звонок , то второй пин проигнорируется если он сработае в период выполнения void.

всего 27 сек? я посмотрел код и мне показалось. что там должно быть больше :)

ТС - прежде чем выкладывать такой код, может вам стоит какую-нибудь книжку по программированию почитать? Ну право, начинать общественный проект, почти ничего не понимая в программировании - это как садится за руль, не умея водить авто. Вы же других людей подводите, которые пытаются повторить проект, не зная, какой там треш. Ваш код никуда не годится. Просто таки совсем. Делеи по 20 секунд, куча абсолютно одинаковых функций, отличаюзихся одним параметром, инициализация библиотек в середине скетча - ну это же просто стыдно. Не говоря уж о том, что с модемом вы работаете в корне неверно.

С чисто практической точки зрения сигнализация, цикл которой больше секунды - абсолютно бесполезна.

Тут в проектах есть похожая тема - "GSM-сигнализация на модеме М590". Советую, прежде чем добавлять в проект хоть строчку - прочитать ту ветку от начала до конца и тщательно изучить код. Тот код тоже не идеален, но все ж таки вашему до него, как до Луны.

DarkDaymond
Offline
Зарегистрирован: 01.07.2016

-->>

Тут в проектах есть похожая тема - "GSM-сигнализация на модеме М590". Советую, прежде чем добавлять в проект хоть строчку - прочитать ту ветку от начала до конца и тщательно изучить код. Тот код тоже не идеален, но все ж таки вашему до него, как до Луны.

 

При всем уважении. но в теме "GSM-сигнализация на модеме М590" тоже очень много ненужного всего куча светодиодов куча команд, которые в 80% не нужны.

Этот код проверялся еще зимой. Все виснет через сутки.

Advenced
Offline
Зарегистрирован: 02.03.2017

Добрый вечер всем

рад слышать и критику и то что кому-то понравилось,

Отвечу на ряд вопросов.

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

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

На счет того что модем не уходит в сон, в общем не смог разобраться, у меня модемы (около 10 штук все sim800L ) не один не уходит в сон не командами не тревожным входом. Команды и вход я оставил в проекте, думаю может у вас получиться время доработать.

Пару раз удалось его загнать в сон, но через сутки он так и не вышел, вывод? самый простой вариант это на тревожный выход повесить транзистор, он то и будет его включать.

 

-очень длинный loop() из за delay даже если время срезать все ровно основный цикл у меня 27сек. т.е если одновременно сработал пин на звонок , то второй пин проигнорируется если он сработае в период выполнения void.

Может и быть. но зачем сигнализации что-то выполнять другое когда она уже звонит? Я всё-таки делал сигнализацию простую и максимально надёжную. Разрыв-звонок, и смс каждый день которые подтверждают что система работает. не каких входов для смс там изначально не было.

Кстати я знаю кучу людей с этого сайта, кому она помогла и доказала свою работоспособность. У меня они (3шт) трудится уже более года, и я как то не разу не усомнился в работоспособности.

В данный момент я к ней прикрутил, Rfid карты и брелки, также добавил клавиатуру, и установка номеров смс-кой, выход на сирену и т.д. Как только закончу тестирование сразу скину все сюда, может что и доработаете по умнее, а я научусь.

Не могу прикрутить к ней работу с билайном, у нас оно криво работает.

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

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

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

Advenced
Offline
Зарегистрирован: 02.03.2017

- у меня в ждущем режиме потребление 40мА, иногда прыгает до 90мА

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

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

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

на счет газоанализатора, давайте по точнее, минуту включаем, ждем, читаем, выключаем и?

 

b707
Онлайн
Зарегистрирован: 26.05.2017

Advenced пишет:

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

Простите, но ваш ответ несерьезен. В переводе он означает - "я делаю так, потому что правильно не умею, и не хочу учиться". Все было бы отлично, если бы вы делали его только для себя и не предлагали этот код другим. Какие еще кнопки, какие RFID вы собираетесь прикручивать, если у вас то что есть сделано на "двойку"??

Вы можете слолько угодно "аргументировать" свои команды - но уже одно то, что вы общаетесь с модемом и не проверяете ответов - ставит крест на  надежности системы. Это как работать на компьютере без экрана - вы посылаете команды, но не проверяете, работают ли они. То, что ваша система иногда работает - не более чем удача. Шансов, что оно подолгу будет работать без сбоев - 0%

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

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

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

Advenced
Offline
Зарегистрирован: 02.03.2017

b707 пишет:

Advenced пишет:

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

Простите, но ваш ответ несерьезен. В переводе он означает - "я делаю так, потому что правильно не умею, и не хочу учиться". Все было бы отлично, если бы вы делали его только для себя и не предлагали этот код другим. Какие еще кнопки, какие RFID вы собираетесь прикручивать, если у вас то что есть сделано на "двойку"??

Вы можете слолько угодно "аргументировать" свои команды - но уже одно то, что вы общаетесь с модемом и не проверяете ответов - ставит крест на  надежности системы. Это как работать на компьютере без экрана - вы посылаете команды, но не проверяете, работают ли они. То, что ваша система иногда работает - не более чем удача. Шансов, что оно подолгу будет работать без сбоев - 0%

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

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

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

С чего вы взяли что я не прислушиваюсь. Тут дело в другом. Делаю как могу, все-таки пока еще учусь. Сделал, заработало, выложил.

DarkDaymond
Offline
Зарегистрирован: 01.07.2016

 Advenced  Привет. Скинь плиз почту свою. Пришлю одну мысль по газу.

Advenced
Offline
Зарегистрирован: 02.03.2017

напиши в личку

DarkDaymond
Offline
Зарегистрирован: 01.07.2016

Так :) или лыжи не едут или я еб...ы. Не найду личку либо правов нет:)

Advenced
Offline
Зарегистрирован: 02.03.2017

Вот и я не нашел

DarkDaymond
Offline
Зарегистрирован: 01.07.2016

Advenced глянь.
 

#include <OneWire.h>                    // Библиотека для работы с протоколом датчика
#include <SoftwareSerial.h>  // Библиотека для работы с софтовым  UART

SoftwareSerial mySerial(2, 3); // Номера пинов, к которым будет подключен GSM-модуль: RX, TX

/* Номера выводов Arduino, к которым подключены датчики */

#define LED 13 //моргаем этим светодиодом если модем готов
#define pinSensor_0 4   // Датчик PIR-1 для осуществления тревожного звонка 1 usb на плате
#define pinSensor_1 5   // Датчик PIR-2 2 usb на плате
#define pinSensor_2 6   // Датчик CO2 3 usb на плате
#define pinSensor_3 7   // Датчик огня 4 usb на плате
#define pinDS18B20 8   // Номер вывода, к которому подключен температурный датчик 5 юсб на плате
#define pinPower 11  // Контроль напряжения сети резервный пин
#define pinpowerGas 12 //пин управления питанием через мосфеет
#define HEATER_DELAY 60000 //время пока датчик прогревается (1 минута)
#define GAS_PAUSE 120000  //время пока датчик находится в покаое, выключен

/* ДЛЯ ДАТЧИКА ТЕМПЕРАТУРЫ */

OneWire ds(pinDS18B20);                 // Создаём экземпляр класса датчика
byte dsData[2];                         // Массив для чтения данных с датчика
float currentTemperature = 0.0;         // Расчётное значение температуры

/* Переменные для счёта недельного интервала */

unsigned long timerTemp = 0;  // Переменная для счёта миллисекунд
uint8_t hours = 0;            // Переменная для счёта кол-ва часов

/* Флаги статуса датчиков (0-под охраной, 1-сработал, 2-режим ожидания до возврата зоны под охрану */

uint8_t flagSensor_0 = 0;
uint8_t flagSensor_1 = 0;
uint8_t flagSensor_2 = 0;
uint8_t flagSensor_3 = 0;
uint8_t flagPower = 0;

String numberCall_1 = "7ххххххххх"; // Номер абонента №1 для звонка
String numberSMS_1 = "+7ххххххххх"; // Номер абонента №1 для СМС (отличается только знаком +)
String textZone_1 = "Open Windows!";
String textZone_2 = "CO2 Alert!";
String textZone_3 = "Flame Alert!";
String weekMSG = "Week Message";

/* Переменные для счёта интервала счетчика газа */

int valGAS = 0; //переменная для хранения состояния пина после опроса
unsigned long t1=0,t2=0,t3=0;

/* Функция инициализации GSM-модуля */
void initGSM() 
{
  delay(2000);
  while(mySerial.find("STARTUP"));           // ждем команды от модема Ожидаем 5 секунд, необходимые для загрузки GSM-модуля
  Serial.println("GSM NEOWAY M590");
  mySerial.begin(9600);                   // Выставляем скорость общения с GSM-модулем 9600 Бод/сек.
  mySerial.println("AT+CLIP=1");          // Включаем автоматический определитель номера (АОН)
  delay(100);                            // Пауза для выполнения модулем внктренних операций
  mySerial.println("AT+CMGF=1");          // Выставляем текстовый формат SMS-сообщений
  delay(100);                            // Пауза для выполнения модулем внктренних операций
  mySerial.println("AT+CSCS=\"GSM\"");    // Выставляем кодировку текста - GSM (ASCII)
  delay(100);                            // Пауза для выполнения модулем внутренних операций
  mySerial.println("AT+CNMI=2,2,0,0,0");  // Вывод SMS в консоль
  delay(200);                            // Пауза для выполнения модулем внктренних операций
  while(1){                                  // ждем подключение модема к сети
        mySerial.println("AT+COPS?");
        if (mySerial.find("+COPS: 0")) break;
           digitalWrite(LED, LOW);           // блымаем светодиодом
           delay(100);  
           digitalWrite(LED, HIGH);  
           delay(100); 
           }
    Serial.println("Modem OK"); 
    digitalWrite(LED, LOW);                  // блымаем светодиодом
    delay(100);   
    digitalWrite(LED, HIGH);
    delay(100); 
    digitalWrite(LED, LOW);
}

/* Функция отправки SMS */

void sendSMS(String text, String phone) 
{
  mySerial.println("AT+CMGS=\"" + phone + "\"");  // Задаём префиксы <da> и <CR>
  delay(100);
  mySerial.print(text);                           // Задаём префикс <text>
  delay(100);
  mySerial.print((char)26);                       // Задаём префикс <ctrl-Z>
  delay(100);
}

/* Функция чтения температуры */

void getTemperature() 
{
  ds.reset();
  ds.write(0xCC);
  ds.write(0x44);
  delay(1000);
  ds.reset();
  ds.write(0xCC);
  ds.write(0xBE);
  dsData[0] = ds.read();
  dsData[1] = ds.read();
  int16_t t = (dsData[1] << 8) + dsData[0];
  currentTemperature = float(t) / 16.0;
}

/* Функция чтения датчика газа */

void check_gas_sensor() 
{
  if(t2==0 || millis() > (t2+GAS_PAUSE)) {
    Serial.print("millis = ");Serial.print(millis());
    Serial.print(";  t1 = ");Serial.print(t1);
    Serial.print(";  t2 = ");Serial.print(t2);
    Serial.println(";   Heater ON");
    digitalWrite (pinpowerGas, HIGH); // открываем пин для того что бы подать питание на датчик
    if(millis() > (t1+HEATER_DELAY)){ // ждем пока греется 1 минуту
      valGAS = digitalRead (pinSensor_2); // читаем значение с цифрового выхода датчика и присваимаем в переменную значение пина
      digitalWrite (pinpowerGas, LOW); // выключаем питание датчика
    Serial.println("Heater OFF");
      t2=millis();
      t1=millis()+GAS_PAUSE;
    }
  }
}

/* Установка параметров после включения */

void setup() 
{
  Serial.begin(9600);
  mySerial.begin(9600);              // Инициализируем программный СОМ-порт
  initGSM();                         // Инициализируем GSM-модуль
  pinMode(LED, OUTPUT);
  pinMode(pinSensor_0, INPUT);       // Порт как вход
  pinMode(pinSensor_1, INPUT);       // Порт как вход
  pinMode(pinSensor_2, INPUT);       // Порт как вход
  pinMode(pinSensor_3, INPUT);       // Порт как вход
  pinMode(pinDS18B20, INPUT);        // Порт как вход
  pinMode(pinPower, INPUT);          // Порт как вход
  timerTemp = millis();              // Запоминаем текущее время  
  pinMode(pinpowerGas, OUTPUT);
  //pinMode(pinAlarm, OUTPUT);
  t1=millis();
}

/* Основной цикл программы */

void loop() 
{
  if (millis() - timerTemp >= 3600000) 
  {
  timerTemp = millis();
  hours++;
  }
  if (hours >= 144) 
  {
    weekMSG = "";
    if (flagSensor_0 == 0) weekMSG += "S0-Ok "; else weekMSG += "S0-Alarm ";
    if (flagSensor_1 == 0) weekMSG += "S1-Ok "; else weekMSG += "S1-Alarm ";
    if (flagSensor_2 == 0) weekMSG += "S2-Ok "; else weekMSG += "S2-Alarm ";
    if (flagSensor_3 == 0) weekMSG += "S3-Ok "; else weekMSG += "S3-Alarm ";

    // Читаем температуру и добавляем значение в итоговую строку
    getTemperature();
    weekMSG += "t=" + String(currentTemperature) + " ";
  
    sendSMS(String(weekMSG), numberSMS_1); // Отсылаем СМС о состоянии ситемы абоненту №1
    hours = 0;                             // Обнуляем счётчик часов
    timerTemp = millis();                  // Сбрасываем счётчик миллисекунд
    delay(1000);                           // Ждём гарантированной отправки СМС 1 секунду
  }

  /* Опрашиваем  датчики */
  if (flagSensor_0 == 0 && digitalRead(pinSensor_0) == 1) flagSensor_0 = 1; // Если сработал датчик №0, меняем статус системы
  if (flagSensor_1 == 0 && digitalRead(pinSensor_1) == 1) flagSensor_1 = 1; // Если сработал датчик №0, меняем статус системы
  if (flagSensor_2 == 0 && digitalRead(pinSensor_2) == 1) flagSensor_2 = 1; // Если сработал датчик №0, меняем статус системы
  if (flagSensor_3 == 0 && digitalRead(pinSensor_3) == 1) flagSensor_3 = 1; // Если сработал датчик №0, меняем статус системы
  if (flagPower == 0 && digitalRead(pinPower) == 0) flagPower = 1; // Если пропало питание, меняем статус системы

  /* События, наступающие при сработке датчиков */
  
  // Если пропало питание
  if (flagPower == 1) 
  {  
    sendSMS(String("POWER OFF"), numberSMS_1);  // Отсылаем СМС об отключении электричества абоненту №1
    flagPower = 2;                              // Изменяем статус системы на "Работа от резервного питания"
    delay(500); 
  }    
    /* Если электричество возобновилось после отключения */
  if (flagPower == 2 && digitalRead(pinPower) != 0)
  {
    sendSMS(String("POWER ON"), numberSMS_1); // Отсылаем СМС о возобновлении электричества абоненту №1
    flagPower = 0;                            // Изменяем статус системы на "Работа от основной сети"
    delay(500);                              // Ждём 1 секунду  
  }
  
  // Если сработал датчик тревожного звонка PIR-1
  
  if (flagSensor_0 == 1) 
  {   
    String command;
    // Звоним абоненту №1
    command = "ATD+" + numberCall_1 + ";";  // Готовим строку с командой
    Serial.println(command);
    mySerial.println(command);              // Даём команду на звонок абоненту №1
    delay(5000);                           // Ждём 20 секунд
    mySerial.println("ATH");                // Разрываем соединение
    Serial.println("HangUp");
    flagSensor_0 = 2;                       // Изменяем статус системы на "Ожидание"    
  }

  // Если сработал датчик СМС-зоны №1 PIR-2
  if (flagSensor_1 == 1) 
  {   
    sendSMS(textZone_1, numberSMS_1); // Отсылаем СМС о сработке датчика абоненту №1
    flagSensor_1 = 2;                 // Изменяем статус системы на "Ожидание"
    delay(100);                         
  }

  // Если сработал датчик СМС-зоны №2 CO2
  
  if (flagSensor_2 == 1) 
  {   
    sendSMS(textZone_2, numberSMS_1); // Отсылаем СМС о сработке датчика абоненту №1
    flagSensor_2 = 2;                 // Изменяем статус системы на "Ожидание"
    delay(100);                          
  }

  // Если сработал датчик СМС-зоны огня
  
  if (flagSensor_3 == 1) 
  {   
    sendSMS(textZone_3, numberSMS_1); // Отсылаем СМС о сработке датчика абоненту №1
    flagSensor_3 = 2;                 // Изменяем статус системы на "Ожидание"
    delay(100);                         
  }
  
  // Если сработал датчик газа
  {
    check_gas_sensor();
    delay (100);
}
  
  /* Постановка системы на охрану после восстановления датчиков */
  if (flagSensor_0 == 2 && digitalRead(pinSensor_0) != 1) flagSensor_0 = 0;
  if (flagSensor_1 == 2 && digitalRead(pinSensor_1) != 1) flagSensor_1 = 0;
  if (flagSensor_2 == 2 && digitalRead(pinSensor_2) != 1) flagSensor_2 = 0;
  if (flagSensor_3 == 2 && digitalRead(pinSensor_3) != 1) flagSensor_3 = 0;
  if (flagPower == 2 && digitalRead(pinPower) != 1) flagPower = 0;
  
}

 

rustem.1989
Offline
Зарегистрирован: 10.10.2018

Подскажите почему не компелируется скетч,библиотека OneWire в ардуино ide скопирована в папку в libraries

sashashemelev
Offline
Зарегистрирован: 17.12.2019

Доброго времени суток! Прошу сильно не пинать. Можно ли к схеме  в режиме охраны добавить мигающий светодиод?  В программировании не силен, сам не допишу код...

MaksVV
Offline
Зарегистрирован: 06.08.2015

в таком коде можно тупо добавить в лупе

if (охрана == вкл) {digitalWrite (13,1);
delay (500);
digitalWrite (13,0);
delay (500);}

и не парится. (Надеюсь не воспримите в серьез)

sashashemelev
Offline
Зарегистрирован: 17.12.2019

Ясно. В какое место скетча вставить, чтобы внешний светодиод мигал именно в режиме охраны, и гас в момент сработки  какой либо зоны? И еще несколько вопросов: как увеличить время постановки на охрану примерно до 20-25  секунд ( чтобы успеть нажать кнопку питания и успеть выйти)? И увеличить время перед сработкой   шлейфа ( чтобы успеть войти и отключить? Спасибо заранее.

b707
Онлайн
Зарегистрирован: 26.05.2017

sashashemelev пишет:

Ясно. В какое место скетча вставить, чтобы внешний светодиод мигал именно в режиме охраны, и гас в момент сработки  какой либо зоны?

Как вариант - добавить еще один флаг, который будет ноль, если все ОК и единица. если что-то сработало. Мигать диодом. только если флаг == ноль

Цитата:
И еще несколько вопросов: как увеличить время постановки на охрану примерно до 20-25  секунд ( чтобы успеть нажать кнопку питания и успеть выйти)? И увеличить время перед сработкой   шлейфа ( чтобы успеть войти и отключить? Спасибо заранее.

добавить в СЕТАП задержку на 30 секунд?

sashashemelev - не вполне понятно, к чему эти вопросы, если вы даже мигающий диод не знаете как запрограммировать... думаете, кто-то станет писать за вас?