РЕКЛАМА НА ФОРУМХАУС Да, еще о контроле питания на беспроводных датчиках. Встречал схемы промежуточного контроля уровня сигнала от датчика. На свободных аналоговом входе ардуино ставится контур на частоту передачи 433, и меряется периодически уровень принимаемого сигнала на контуре. ну а дальше хоть светодиодом мигайте, сигнальте.
Опрос все равно нужен. Необходимо знать состояние датчиков протечки, жив или нет. Периодичность это другой вопрос, можно и раз в сутки для экономии энергии. Но все равно я считаю, что это тупиковый путь. То что китайцы продают такие датчики и они так называются, не значит что их целесообразно их в доме использовать. Лучше не допустить аварию, чем ждать что влага попадет именно да датчик, а не на стену например, и по стене стечет на пол и заполнит самую нижнюю точку. И что значит эта точка, если везде пол, что углубления делать?
Да ни кто и не говорит что нужно по натыкать датчиков и спать спокойно с дырявыми шлангами подводки. Конечно лучше не допустить аварию. Но, опять же это мое мнение, то что я у себя установил, датчики задвижка. Пусть и китайского производства, но работает. Периодически проверяю. По поводу опроса, Мой датчик хоть за опрашивайся - не ответит. А мне и не надо. Единственно было бы не плохо что бы датчик вещал о том что батарейка села. Но он и этого не умеет. Можно самому сделать датчик который будет отвечать на запросы, и слать много всего что хочется. Опять же повторюсь, нужна такая система или нет, каждый решает сам. Кто то пускай герконы вещает на входную дверь. Может и я дойду до этого потом. Мой сосед хоть не смеялся на до мной, когда я советовал ему пару проводов лишних бросить, но промолчал. Сейчас вот просит сделать. Так как отделка уже сделана, то выход только беспроводные датчики. Просит потому пару раз гибкую подводку обрывало. Ничего не успело затопить, но неприятно. Подводку он тоже не покупает в подвальных РосСантехах.
Продолжу тему. В ноябре был в командировке. Жена была у родственников. Оборвало еще один шланг. Если бы не сработала моя система, то заливало бы примерно 5 дней. Окупилась система стопитсот раз.
Так как ввел в эксплуатацию еще два санузла то добавил в схему еще три датчика. Если нужно то выложу здесь скетч.
Еще заметил что если оборвать провод который ДАТА то система уходит в аварию и закрывает воду. Я думаю что это нормально.
Спойлер: Скетч Код: 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); }
Я заменил счетчик воды на счетчик с импульсным выходом. При постановке на охрану запуская подсчет расхода воды. Если расход превысит ХХ литров - происходит отключение подачи воды шаровым краном с электроприводом. Пару раз спасало от чрезмерного расхода воды, когда поливочный шланг забывали перекрывать.
Какую прогу Вы скачали? https://arduino.cc/en/Main/Software Если Ардуино IDE то просто вставляете туда скетч который я выложил. Если Вы скачали FLProg то туда нужно вставлять https://yadi.sk/d/Uc3mL9_be4Qop вот это.
seval, а можете последнею версию проекта выложить здесь? И принципиальную схему, с Ардуино, если не сложно.