Chip type : ATtiny13A
AVR Core Clock frequency: 4,8000 MHz
Memory model : Tiny
External RAM size : 0
Data Stack size : 16
*******************************************************/
#include <tiny13a.h>
#include <delay.h>
#define MOTOR_DIR PINB.2
#define SENSOR_1 PINB.3
#define SENSOR_2 PINB.4
#define MOTOR_POWER PORTB.0
#define MOTOR_ON (PORTB.0 = 1)
#define MOTOR_OFF (PORTB.0 = 0)
#define LED_ON (PORTB.1 = 0)
#define LED_OFF (PORTB.1 = 1)
#define LOW 0
#define HI 1
#define ON 1
#define OFF 0
// Declare your global variables here
unsigned int process_timeout = 0;
unsigned char led_delay = 0, last_dir = 255, error = 0;
unsigned char check_sensor_1 = 0, check_sensor_2 = 0;
void main(void)
{
// Declare your local variables here
// Crystal Oscillator division factor: 1
#pragma optsize-
CLKPR=(1<<CLKPCE);
CLKPR=(0<<CLKPCE) | (0<<CLKPS3) | (0<<CLKPS2) | (0<<CLKPS1) | (0<<CLKPS0);
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif
// Input/Output Ports initialization
// Port B initialization
// Function: Bit5=In Bit4=In Bit3=In Bit2=In Bit1=Out Bit0=Out
DDRB=(0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (1<<DDB2) | (1<<DDB1) | (1<<DDB0);
// State: Bit5=T Bit4=P Bit3=P Bit2=T Bit1=1 Bit0=1
PORTB=(0<<PORTB5) | (1<<PORTB4) | (1<<PORTB3) | (0<<PORTB2) | (1<<PORTB1) | (1<<PORTB0);
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=0xFF
// OC0A output: Disconnected
// OC0B output: Disconnected
TCCR0A=(0<<COM0A1) | (0<<COM0A0) | (0<<COM0B1) | (0<<COM0B0) | (0<<WGM01) | (0<<WGM00);
TCCR0B=(0<<WGM02) | (0<<CS02) | (0<<CS01) | (0<<CS00);
TCNT0=0x00;
OCR0A=0x00;
OCR0B=0x00;
// Timer/Counter 0 Interrupt(s) initialization
TIMSK0=(0<<OCIE0B) | (0<<OCIE0A) | (0<<TOIE0);
// External Interrupt(s) initialization
// INT0: Off
// Interrupt on any change on pins PCINT0-5: Off
GIMSK=(0<<INT0) | (0<<PCIE);
MCUCR=(0<<ISC01) | (0<<ISC00);
// Analog Comparator initialization
// Analog Comparator: Off
// The Analog Comparator's positive input is
// connected to the AIN0 pin
// The Analog Comparator's negative input is
// connected to the AIN1 pin
ACSR=(1<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIS1) | (0<<ACIS0);
ADCSRB=(0<<ACME);
// Digital input buffer on AIN0: On
// Digital input buffer on AIN1: On
DIDR0=(0<<AIN0D) | (0<<AIN1D);
// ADC initialization
// ADC disabled
ADCSRA=(0<<ADEN) | (0<<ADSC) | (0<<ADATE) | (0<<ADIF) | (0<<ADIE) | (0<<ADPS2) | (0<<ADPS1) | (0<<ADPS0);
if(MCUSR &&(1 << WDRF)) {
LED_ON;
}
// Watchdog Timer initialization
// Watchdog Timer Prescaler: OSC/128k (1 Sec timeout)
// Watchdog timeout action: Reset
#pragma optsize-
#asm("wdr")
WDTCR|=(1<<WDCE) | (1<<WDE);
WDTCR=(0<<WDTIF) | (0<<WDTIE) | (0<<WDP3) | (0<<WDCE) | (1<<WDE) | (1<<WDP2) | (1<<WDP1) | (0<<WDP0);
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif
MOTOR_POWER = OFF;
LED_ON;
while (1)
{
#asm("wdr")
if(++process_timeout >= 1250) {
process_timeout = 0;
led_delay++;
if(error == 1) {
if(led_delay > 4) {
led_delay = 0;
PORTB.1 = ~PORTB.1;
}
} else {
if(led_delay == 230) LED_ON;
if(led_delay == 250) LED_OFF;
}
}
if(last_dir != MOTOR_DIR) {
last_dir = MOTOR_DIR;
MOTOR_POWER = ON;
}
if(!SENSOR_1) {
if(!last_dir) {
if(check_sensor_1 >= 30) {
MOTOR_POWER = OFF;
} else
check_sensor_1++;
}
} else
check_sensor_1 = 0;
if(!SENSOR_2) {
if(last_dir) {
if(check_sensor_2 >= 30) {
MOTOR_POWER = OFF;
} else
check_sensor_2++;
}
} else
check_sensor_2 = 0;
if(!SENSOR_1 && !SENSOR_2)
error = 1;
else
error = 0;
}
}
+34 |
2015
53
|
+262 |
4602
70
|
мы ему свет выключим
и позовём
Не в ту сторону тоесть :))))
По закрытию, функционал полностью сохранен, просто сразу идет отключение мотора, как только требуемый датчик сработал (зависит от направления). Удаленно полностью могу как закрыть так и открыть.
интересно другое (не со зла, сам поглядываю на эти системы, но пока что вообще никак не созрел) уведомления-то приходят, но похоже юзер их не читает)))
пс не так давно: слышу ночью счётчик воды подозрительно шумит, оказалось шланг забыли отключить краном, его и прорвало, а пистолет напор держал)
Для продвинутых — сервер умного дома с автоматизацией и контроллером на ИБП.
У меня вся система построена на Aqara + яндекс станция. При срабатывании любого из датчиков по сценарию начинает истерить хаб, Алиса верещит и на телефон уведомления + смски сыплются. Я люблю перебдеть в таких ситуациях, ибо уже делал ремонт соседям снизу из-за бракованного шланга от посудомойки. Шланги теперь стоят на ПММ и стиралку «аквастоп» или как их там…
А вот кран с приводом тоже собираюсь на вводе установить. Т.к. одна сигналка проблему не решит, если что. Присмотрел Gidrolock и релюху акаровскую. Надо внедрять.
А последние 10 лет так:
То же самое + газ и воду затягивают ложась спать… От так.
Дешево. сердито :)
Но я воду тоже перекрываю если уезжаем на выходные на дачу, всех в подводке есть гибкие шланги, а это не очень надежная система.
Прикрутил на него большую красную кнопку и теперь когда надолго уезжаешь — жмёшь «большую красную кнопку», вода перекрывается. Красота!
При открытии концевика — обратно.
Паяльник, программатор не те предметы, что есть у каждого.
цена вопроса, что-то среднее между абоненской платой за интернет и сотовую связь.
Утрированно, но есть большой шанс начать оббивать пороги судов после такого. Так что лучше предотвратить сам случай, если это не требует особых затрат.
Примерно та же проблема была с таким же приводом. Но я пошел несколько другим путем — ограничил время подачи питания на привод 20 секундами. Вполне хватает для перевода крана из открытого положения в закрытое, но уже не хватает на всякие дерганья ))
Ну и общая надежность системы «пластиковый кран + внешний привод поворота ручки» — непозволительно низкая. Мастырки хорошо, но лучше убрать слабое звено.
PS. Кран обычный российско-итальяно-китайский валтек.
Это всё конечно прикольно и здорово, но это «хайтек колхозинг». ) Сам не колхозил, но как-то купил готовые датчики под «Тую». Замучили они меня ложными срабатываниями. После этого купил простейший серийный аквасторож. Несколько лет уже работает и срабатывает только по делу! Обычно это случается в ванной когда в раковине сильно плещешься и вода попадает на пол в небольшом количестве в районе датчика.
Надо отдавать себе отчёт о том ради чего Вы это начинаете делать — просто поразвлечься или обеспечить надёжное срабатывание при аварийной ситуации!
управление приводами на кранах
ссылка
Я поставил Гидролок с Tuya и запитал его от БП с резервным аккумулятором. Цена вопроса — 10тр (без стоимости кранов, они у меня давно были куплены даже не помню за какую цену). Пробросил через LocalTuya всё в HomeAssistant и настроил оповещения в Телегу и в Pushover. Это в любом случае понадёжнее, так как сработает независимо от того, что творится с сервером или в эфире. А что касается цены вопроса — в любом случае дешевле ремонта квартир у соседей ниже.
PS: И да, в этом варианте можно уже привязывать любые датчики протечки Aqara, засеивать ими хоть все углы квартиры и прописывать дополнительно автоматизации на закрытие кранов. Главное, что бы основные зоны контроллировались именно автономной системой.
Автономная система должна быть на простом МК или вообще банальной логике, там ничего «умного» и не надо, вот это будет самое надёжное. Для внешнего управления/мониторинга уже отдельный умный модуль, который не завязан на аварийную логику. Но тогда датчики должны быть проводными.
Дополню: в целом — лучше так, чем никак. То есть шанс, что протечка возникнет в момент, когда выключат свет или ляжет HA довольно мал (обновляется он руками по дефолту, желательно в этот момент быть дома). В подавляющем большинстве случаев система сработает даже с сопливыми китайскими приводами, беспроводными датчиками и прочей «ненадёжной» лабудой. А раз так, то пусть лучше будет, чем не будет вообще ничего.
У нас на съемной квартире как раз такое и было. Отключили свет из-за ремонта на подстанции и одновременно проишел гидроудар по нашему стояку. На 12м этаже у одного из жильцов оторвало кран на бачок унитаза и за час он успел хорошо пролить 7 этажей вниз, его система на базе mihome даже пискнуть не смогла. Чел попал только за одну ту съемную квартиру на 7м этаже почти на 150тр в ценах 2013го года. Сколько еще за остальные (особенно ниже его на этаж) — не знаю.
Тот Гидролок, что у меня, как раз на простейшем мк и проводных датчиках. Да еще с громкой пищалкой до кучи. Туя и всё остальное — удобство управления и сигнализации о протечке. Если это удобство вдруг отвалится — плевать. Защита сработает и без них. Еще дополнительно защита от отключения электричества (питание блока Гидролок и приводов кранов переключится на аккум). Да и то дыр осталось полно (обрыв провода как раз нужного датчика, обрыв проводов привода крана и тп). А ваша система просто состоит из дыр. Ну это уж выбирать вам.
Сорян, думал автору отвечаю.
На Фото