1 2 3 4 5 6 7 8 9 10 10/10 10,00оценок: 1

Аквасторож на Arduino

Тема в разделе "Умный дом", создана пользователем seval, 28.04.14.

Метки:
  1. ЮрийТаран
    Регистрация:
    17.07.13
    Сообщения:
    21
    Благодарности:
    21

    ЮрийТаран

    Участник

    ЮрийТаран

    Участник

    Регистрация:
    17.07.13
    Сообщения:
    21
    Благодарности:
    21
    Адрес:
    Белгород
    Да, еще о контроле питания на беспроводных датчиках. Встречал схемы промежуточного контроля уровня сигнала от датчика. На свободных аналоговом входе ардуино ставится контур на частоту передачи 433, и меряется периодически уровень принимаемого сигнала на контуре. ну а дальше хоть светодиодом мигайте, сигнальте.
     
  2. ЮрийТаран
    Регистрация:
    17.07.13
    Сообщения:
    21
    Благодарности:
    21

    ЮрийТаран

    Участник

    ЮрийТаран

    Участник

    Регистрация:
    17.07.13
    Сообщения:
    21
    Благодарности:
    21
    Адрес:
    Белгород
    Опрос все равно нужен. Необходимо знать состояние датчиков протечки, жив или нет. Периодичность это другой вопрос, можно и раз в сутки для экономии энергии. Но все равно я считаю, что это тупиковый путь. То что китайцы продают такие датчики и они так называются, не значит что их целесообразно их в доме использовать. Лучше не допустить аварию, чем ждать что влага попадет именно да датчик, а не на стену например, и по стене стечет на пол и заполнит самую нижнюю точку. И что значит эта точка, если везде пол, что углубления делать?
     
  3. seval
    Регистрация:
    17.11.10
    Сообщения:
    327
    Благодарности:
    68

    seval

    Живу здесь

    seval

    Живу здесь

    Регистрация:
    17.11.10
    Сообщения:
    327
    Благодарности:
    68
    Адрес:
    Орел
    Да ни кто и не говорит что нужно по натыкать датчиков и спать спокойно с дырявыми шлангами подводки.
    Конечно лучше не допустить аварию. Но, опять же это мое мнение, то что я у себя установил, датчики задвижка. Пусть и китайского производства, но работает. Периодически проверяю.
    По поводу опроса, Мой датчик хоть за опрашивайся - не ответит. А мне и не надо. Единственно было бы не плохо что бы датчик вещал о том что батарейка села. Но он и этого не умеет. Можно самому сделать датчик который будет отвечать на запросы, и слать много всего что хочется.
    Опять же повторюсь, нужна такая система или нет, каждый решает сам. Кто то пускай герконы вещает на входную дверь. Может и я дойду до этого потом. Мой сосед хоть не смеялся на до мной, когда я советовал ему пару проводов лишних бросить, но промолчал. Сейчас вот просит сделать. Так как отделка уже сделана, то выход только беспроводные датчики. Просит потому пару раз гибкую подводку обрывало. Ничего не успело затопить, но неприятно. Подводку он тоже не покупает в подвальных РосСантехах.
     
  4. seval
    Регистрация:
    17.11.10
    Сообщения:
    327
    Благодарности:
    68

    seval

    Живу здесь

    seval

    Живу здесь

    Регистрация:
    17.11.10
    Сообщения:
    327
    Благодарности:
    68
    Адрес:
    Орел
    Продолжу тему.
    В ноябре был в командировке. Жена была у родственников. Оборвало еще один шланг. Если бы не сработала моя система, то заливало бы примерно 5 дней. Окупилась система стопитсот раз.
     
  5. seval
    Регистрация:
    17.11.10
    Сообщения:
    327
    Благодарности:
    68

    seval

    Живу здесь

    seval

    Живу здесь

    Регистрация:
    17.11.10
    Сообщения:
    327
    Благодарности:
    68
    Адрес:
    Орел
    Так как ввел в эксплуатацию еще два санузла то добавил в схему еще три датчика. Если нужно то выложу здесь скетч.
     
  6. seval
    Регистрация:
    17.11.10
    Сообщения:
    327
    Благодарности:
    68

    seval

    Живу здесь

    seval

    Живу здесь

    Регистрация:
    17.11.10
    Сообщения:
    327
    Благодарности:
    68
    Адрес:
    Орел
    Еще заметил что если оборвать провод который ДАТА то система уходит в аварию и закрывает воду. Я думаю что это нормально.
     
  7. Aurodionov
    Регистрация:
    20.04.13
    Сообщения:
    12
    Благодарности:
    5

    Aurodionov

    Участник

    Aurodionov

    Участник

    Регистрация:
    20.04.13
    Сообщения:
    12
    Благодарности:
    5
    Адрес:
    Тюмень
    Конечно выкладывайте, можно в первом посте, только подписать разные скетчи.
     
  8. seval
    Регистрация:
    17.11.10
    Сообщения:
    327
    Благодарности:
    68

    seval

    Живу здесь

    seval

    Живу здесь

    Регистрация:
    17.11.10
    Сообщения:
    327
    Благодарности:
    68
    Адрес:
    Орел
    Код:
    Bool _k1 = 0;
    bool _tim1I = 0;
    bool _tim1O = 0;
    unsigned long _tim1P = 0;
    bool _ktim1 = 0;
    bool _k2 = 0;
    bool _k3 = 0;
    bool _k4 = 0;
    bool _k5 = 0;
    bool _tim2I = 0;
    bool _tim2O = 0;
    unsigned long _tim2P = 0;
    bool _ktim2 = 0;
    bool _gen1I = 0;
    bool _gen1O = 0;
    unsigned long _gen1P = 0;
    bool _kgen1 = 0;
    bool _k6 = 0;
    bool _bounseInput15S = 0;
    bool _bounseInput15O = 0;
    unsigned long _bounseInput15P = 0;
    bool _bounseInput14S = 0;
    bool _bounseInput14O = 0;
    unsigned long _bounseInput14P = 0;
    bool _bounseInput8S = 0;
    bool _bounseInput8O = 0;
    unsigned long _bounseInput8P = 0;
    bool _bounseInput9S = 0;
    bool _bounseInput9O = 0;
    unsigned long _bounseInput9P = 0;
    bool _bounseInput7S = 0;
    bool _bounseInput7O = 0;
    unsigned long _bounseInput7P = 0;
    void setup()
    {
    pinMode(7, INPUT);
    pinMode(1, OUTPUT);
    pinMode(3, INPUT);
    pinMode(6, OUTPUT);
    pinMode(4, INPUT);
    pinMode(2, INPUT);
    pinMode(5, OUTPUT);
    pinMode(0, OUTPUT);
    pinMode(8, INPUT); //Вход датчика
    pinMode(9, INPUT); //Вход датчика
    pinMode(15, INPUT); //Вход датчика
    pinMode(14, INPUT); //Вход датчика
    
    _bounseInput15O =  digitalRead(15);
    _bounseInput14O =  digitalRead(14);
    _bounseInput8O =  digitalRead(8);
    _bounseInput9O =  digitalRead(9);
    _bounseInput7O =  digitalRead(7);
    }
    void loop()
    {
    
    bool  _bounceTmp15 =  (digitalRead (15));
    
    if (_bounseInput15S)
        {
         if (millis() >= (_bounseInput15P + 40))
             {_bounseInput15O= _bounceTmp15; _bounseInput15S=0;}
         }
    else
        {
         if (_bounceTmp15 != _bounseInput15O )
             {_bounseInput15S=1; _bounseInput15P = millis();}
          }
    bool  _bounceTmp14 =  (digitalRead (14));
    
    if (_bounseInput14S)
        {
         if (millis() >= (_bounseInput14P + 40))
             {_bounseInput14O= _bounceTmp14; _bounseInput14S=0;}
         }
    else
        {
         if (_bounceTmp14 != _bounseInput14O )
             {_bounseInput14S=1; _bounseInput14P = millis();}
          }
    bool  _bounceTmp8 =  (digitalRead (8));
    
    if (_bounseInput8S)
        {
         if (millis() >= (_bounseInput8P + 40))
             {_bounseInput8O= _bounceTmp8; _bounseInput8S=0;}
         }
    else
        {
         if (_bounceTmp8 != _bounseInput8O )
             {_bounseInput8S=1; _bounseInput8P = millis();}
          }
    bool  _bounceTmp9 =  (digitalRead (9));
    
    if (_bounseInput9S)
        {
         if (millis() >= (_bounseInput9P + 40))
             {_bounseInput9O= _bounceTmp9; _bounseInput9S=0;}
         }
    else
        {
         if (_bounceTmp9 != _bounseInput9O )
             {_bounseInput9S=1; _bounseInput9P = millis();}
          }
    bool  _bounceTmp7 =  (digitalRead (7));
    
    if (_bounseInput7S)
        {
         if (millis() >= (_bounseInput7P + 40))
             {_bounseInput7O= _bounceTmp7; _bounseInput7S=0;}
         }
    else
        {
         if (_bounceTmp7 != _bounseInput7O )
             {_bounseInput7S=1; _bounseInput7P = millis();}
          }
    
    
    _k1 = ((_bounseInput7O) || (_bounseInput8O) || (_bounseInput9O) || (_bounseInput15O) || (_bounseInput14O));
    _k2 = ((((_k1) || (_k2))) &&((!_k4)));
    digitalWrite (1, ((_ktim1) || (_k6)));
    _k3 = ((_k1) || ((digitalRead (3))));
    if (_k3)
    {
    _tim1O  = 1;
    _tim1I  = 1;
    }
    else
    {
    if (_tim1I)
    {
    _tim1I = 0;
    _tim1P = millis();
    }
    else
    {
    if (_tim1O)
    {if ( _isTimer(_tim1P, 4000)) _tim1O = 0;
    }
    }
    }
    if(_tim1O)
    {_ktim1 = 1;}
    else
    {_ktim1 = 0;}
    digitalWrite (6, (!_ktim1));
    _k4 = (digitalRead (4));
    _k5 = (((digitalRead (2))) &&((!_k2)));
    if (_k5)
    {
    _tim2O  = 1;
    _tim2I  = 1;
    }
    else
    {
    if (_tim2I)
    {
    _tim2I = 0;
    _tim2P = millis();
    }
    else
    {
    if (_tim2O)
    {if ( _isTimer(_tim2P, 4000)) _tim2O = 0;
    }
    }
    }
    if(_tim2O)
    {_ktim2 = 1;}
    else
    {_ktim2 = 0;}
    digitalWrite (0, _ktim2);
    digitalWrite (5, (!_ktim2));
    
    if (((_k2) &&((!_k4))))
       {
       if (! _gen1I)
          {
          _gen1I = 1;
          _gen1O = 1;
          _gen1P = millis();
          }
       }
    else
       {
       _gen1I = 0 ;
       _gen1O= 0;
       }
    if (_gen1I )
       {
       if ( _isTimer ( _gen1P , 500 ))
          {
          _gen1P = millis();
          _gen1O = ! _gen1O;
          }
       } 
    if(_gen1O)
    {_kgen1 = 1;}
    else
    {_kgen1 = 0;}
    _k6 = _kgen1;
    
    
    }
    bool _isTimer(unsigned long startTime, unsigned long period )
      {
      unsigned long endTime;
      endTime = startTime+period;
      return (millis() >= endTime);
      }
     
  9. Smith2007
    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    746

    Smith2007

    Живу здесь

    Smith2007

    Живу здесь

    Регистрация:
    27.05.12
    Сообщения:
    1.265
    Благодарности:
    746
    Адрес:
    Россия
    Я заменил счетчик воды на счетчик с импульсным выходом. При постановке на охрану запуская подсчет расхода воды. Если расход превысит ХХ литров - происходит отключение подачи воды шаровым краном с электроприводом.
    Пару раз спасало от чрезмерного расхода воды, когда поливочный шланг забывали перекрывать.
     
  10. seval
    Регистрация:
    17.11.10
    Сообщения:
    327
    Благодарности:
    68

    seval

    Живу здесь

    seval

    Живу здесь

    Регистрация:
    17.11.10
    Сообщения:
    327
    Благодарности:
    68
    Адрес:
    Орел
    Это идея. Добавлю к себе потом.
     
  11. Aurodionov
    Регистрация:
    20.04.13
    Сообщения:
    12
    Благодарности:
    5

    Aurodionov

    Участник

    Aurodionov

    Участник

    Регистрация:
    20.04.13
    Сообщения:
    12
    Благодарности:
    5
    Адрес:
    Тюмень
    Извиняюсь, но куда и как вставить листинг програмы.
    Скачал прогу та не понять как это вставить.
     
  12. seval
    Регистрация:
    17.11.10
    Сообщения:
    327
    Благодарности:
    68

    seval

    Живу здесь

    seval

    Живу здесь

    Регистрация:
    17.11.10
    Сообщения:
    327
    Благодарности:
    68
    Адрес:
    Орел
    Какую прогу Вы скачали?
    https://arduino.cc/en/Main/Software Если Ардуино IDE то просто вставляете туда скетч который я выложил.
    Если Вы скачали FLProg то туда нужно вставлять https://yadi.sk/d/Uc3mL9_be4Qop вот это.
     
  13. Aurodionov
    Регистрация:
    20.04.13
    Сообщения:
    12
    Благодарности:
    5

    Aurodionov

    Участник

    Aurodionov

    Участник

    Регистрация:
    20.04.13
    Сообщения:
    12
    Благодарности:
    5
    Адрес:
    Тюмень
    Качал FLProg, спасибо заработало.
     
  14. beliy13
    Регистрация:
    11.09.16
    Сообщения:
    1
    Благодарности:
    1

    beliy13

    Новичок

    beliy13

    Новичок

    Регистрация:
    11.09.16
    Сообщения:
    1
    Благодарности:
    1
    seval, а можете последнею версию проекта выложить здесь? И принципиальную схему, с Ардуино, если не сложно.
     
  15. seval
    Регистрация:
    17.11.10
    Сообщения:
    327
    Благодарности:
    68

    seval

    Живу здесь

    seval

    Живу здесь

    Регистрация:
    17.11.10
    Сообщения:
    327
    Благодарности:
    68
    Адрес:
    Орел