Умный выключатель света

Тема в разделе "Глядите, что я сделал", создана пользователем Юриус, 17 май 2019.

  1. Belkin

    Belkin Гик

    Не знаю, кому больше везет, мне или ПТ... ;)
    ПТ управляются напрямую от МК, питание ленты 12в.
     
  2. Юриус

    Юриус Нерд

    Схема гесложная. Но при желании можно добавить элементов и функций. Схему прилагаю.
     

    Вложения:

  3. Юриус

    Юриус Нерд

    Скетч не гениальный, но как всё гиниальное-прост. Если интересует, пожалуйста. Но это не окончательный вариант, будут идеи , буду наворачивать.

    //****** АВТОМАТИЧЕСКИЙ ВЫКЛЮЧАТЕЛЬ СВЕТА НА ПИР-ДАТЧИКЕ(версия 2.0, программная
    //****** ДЛЯ ПРИХОЖЕЙ
    // настройка перезапуска таймера времени отключения освещения после отсутствия движения)
    //Время калибровки датчика (10-60 сек. по документации)
    int calibrationTime = 40;
    //Время, в которое был принят сигнал отсутствия движения(LOW)
    long unsigned int lowTime;
    //Пауза, после которой движение считается оконченным
    long unsigned int pause = 120000;
    //Флаг. false = значит движение уже обнаружено, true - уже известно, что движения нет
    boolean lockLow = true;
    //Флаг. Сигнализирует о необходимости запомнить время начала отсутствия движения
    boolean takeLowTime;
    #define Pir 3 //вывод подключения PIR датчика в ванной, в прихожей 3
    #define Rel 2 //вывод подключения релев ванной, в прихожей 2
    #define Led 13 //вывод сигнального диода
    //********************** УСТАНОВКА ************************************************
    void setup()
    {
    Serial.begin(9600);
    pinMode(Pir, INPUT);
    pinMode(Led, OUTPUT);
    pinMode(Rel, OUTPUT);
    digitalWrite(Rel, HIGH);
    digitalWrite(Pir, LOW);
    //дадим датчику время на калибровку
    //Serial.print("Калибровка");
    for(int i = 0; i < calibrationTime; i++)
    {digitalWrite(Led,HIGH); //включение светодиода
    delay(500); //задержка
    digitalWrite(Led,LOW); //отключение светодиода
    delay(500); } //задержка
    //Serial.print(".");
    //delay(1000);
    //Serial.println(" готов");
    //Serial.println("СЕНСОР АКТИВЕН");
    //delay(50);
    }
    //************************ ГЛАВНАЯ ПРОЦЕДУРА ***************************************
    void loop()
    {
    //Если обнаружено движение
    if(digitalRead(Pir) == HIGH)
    {
    //Если еще не вывели информацию об обнаружении
    if(lockLow)
    {
    lockLow = false;
    //Serial.println("Обнаружено движение");
    digitalWrite(Rel,HIGH); //На реле подача "1"
    //delay(50);
    }
    takeLowTime = true;
    }
    //Ели движения нет
    if(digitalRead(Pir) == LOW)
    {
    //Если время окончания движения еще не записано
    if(takeLowTime)
    {
    lowTime = millis(); //Сохраним время окончания движения
    takeLowTime = false; //Изменим значения флага, чтобы больше не брать время,
    //пока не будет нового движения
    }
    //Если время без движение превышает паузу => движение окончено
    if(!lockLow && millis() - lowTime > pause)
    {
    //Изменяем значение флага, чтобы эта часть кода исполнилась лишь раз,
    //до нового движения
    lockLow = true;
    Serial.println("Движение закончено");
    digitalWrite(Rel, LOW); //На реле подача "0"
    //delay(50);
    }
    }
    }
     

    Вложения:

  4. DetSimen

    DetSimen Гуру

    Ты уверен, что long unsigned int это правильная канструкцея?
     
  5. Юриус

    Юриус Нерд

    Работает во всяком случае.
     
  6. Belkin

    Belkin Гик

    Не то, что "при желании", а обязательно надо добавить ! ;)
    Реле у вас - напрямую от пина ардуины...
    Поставьте диод и транзистор, как я в #12 рисовал.
    Вот до поры до времени этот "всякий случай"... ;)
     
  7. DetSimen

    DetSimen Гуру

    Дак ты туда еще bool и char засунь, а канпилятор сам выберет, чо ему нравица
     
  8. Юриус

    Юриус Нерд

     
  9. Юриус

    Юриус Нерд

    Может где и лишнее, но я только начал зтим заниматься. Собираю пока несложные, но нужные и удобные устройства.
     
  10. parovoZZ

    parovoZZ Гуру

    А float? Его там нет разве? Надо добавить!
    А почему так много шалабушек? Они рядом будут висеть? В корпус вентилятора почему не убрал? Лет 50 тому назад такая сборка была бы по времени, но сегодня...сегодня телевизоры с одним проводом. И тот в розетку воткнут.
     
  11. Юриус

    Юриус Нерд

    Сам по себе провод воткнутый в розетку изображения не даст, а вот током дёрнет.
     
  12. Belkin

    Belkin Гик

    Опять по схеме...
    В #1 было написано:
    Судя по схеме - для выполнения этой функции не требуется ни одной строчки кода, т.к. при отключении выключателя все равно погаснет все... ;)
     
  13. Юриус

    Юриус Нерд

    Поясняю. Этот выключатель параллельно включает и выключает свет. Вы включили обычный выключатель-свет горит пока вы там, ушли, не выключили выключатель(забыли,торопились,руки заняты) выключится через установленный интервал времени. Зашли, опять включился и.т.д. Уезжаете, уходите надолго, выключаете обычным выключателем. Помоему ясно всё и удобно. Домашние довольны.
     
  14. Belkin

    Belkin Гик

    Да это все понятно... ;)
    Выключатель у вас просто подает питание на всю схему вместе с лампой.
    Поэтому он ничего "параллельно" не включает и не выключает.

    Контакт реле указан на схеме в каком режиме работы схемы ?
     
  15. KindMan

    KindMan Гик

    Я не придираюсь, но вот это не требует блока питания, уже собрано и ещё умеет включаться при необходимом уровне освещенности.
    Если вы для тренировки, обучения, то нормально. Добавляйте к этой же ардуине управление светом не только в прихожей, но и в туалете, ванной, кухней и прочее.
     
    Airbus нравится это.
  16. Юриус

    Юриус Нерд

    При
    В выключенном состоянии схемы контакты реле замкнуты на лампу, поэтому при включении основного выключателя свет загорается и при обнаружении человека управляющего сигнала на реле не подается, а вот когда нет человека, сигнал на реле подается и оно размыкает цепь-свет гаснет.
     
  17. Юриус

    Юриус Нерд

    Я так и планирую. Заводские, китайские изделия трудно переделать для своих нужд. А тут, пожалуйста, есть где развернуться.
     
    Belkin нравится это.
  18. Belkin

    Belkin Гик

    Я так и подумал сразу. ;)
    Следовательно, в состоянии т.н. "покоя" реле постоянно включено... Это не "есть гуд".
    Правильно будет, когда в этом режиме максимальное количество элементов будет в отключенном состоянии.
     
    Daniil нравится это.
  19. Airbus

    Airbus Радиохулиган

    Не отсюда случаем позаимствовали?Я отличий во втором скетче так и не не нашёл.
     
    Последнее редактирование модератором: 18 май 2019
  20. Юриус

    Юриус Нерд

    Возможно , но я так сделал из соображений надежности. Если устройство выйдет из строя, свет всеравно можно будет включить и выключить обычным выключателем, которому в параллель подключен этот автомат. Но критику учту.
     
    Belkin нравится это.