Приветствую, Хабр!

Читал недавно книгу, один из героев которой, заходя в санузел, кинул фразу: почему еще не изобрели лампочку, которая ночью бы светили тусклее чем днем. Дело тут, конечно, не в экономии электричества, а в том, чтобы ночью не слепить «посетителя» со сна. Идея мне показалась довольно здравой.

Многие из нас стараются соблюдать режим сна, так как это положительно влияет на умственное и физическое состояние. Поэтому, достаточно просто выяснить, что является ночным и дневным режимами (применительно к нашему освещению). Я, например, укладываюсь в 23:00 - 00:00, а встаю в 7 часов. То есть устройство (лампочка) должно следить за временем суток и как-то на это реагировать. На ум пришло сразу несколько вариантов решения данной задачи.

  1. Возможно есть Wi-Fi лампочки с программируемой яркостью, включением по таймеру и тому подобное, которое имеют завязку на время суток, но я даже гуглить не буду – не интересно.

  2. Разработать лампочку со встроенным RTC (real time clock). Я разрабатывал только две лампочки за все время. Первая – светодиодная с модулем ZigBee, вторая – просто светодиодная лампочка (даже не спрашивайте). Вся проблема – это практически полное отсутствие места в цоколе и радиаторе для размещения дополнительных печатных плат с компонентами.

  3. Разработать устройство с RTC и симистором, которое будет управлять диммируемыми лампочками (светодиодными или накаливания). Стоимость таких лампочек несколько дороже, но не критична.

  4. Разработать устройство с RTC и реле, которое будет включать нужное количество ламп в зависимости от времени суток. Тут есть основной минус – это неравномерность освещения в одном помещении.

У меня в санузле стоят 2 обычные светодиодные лампы с цоколем GU5.3. Мне очень понравился 3 вариант с диммированием, но для начала я решил разработать 4. Думаю для помещения ~1м^2 такая реализация подойдет, если не понравится, сделаю на симисторе с возможности регулировки, но тогда придется менять лампочки. Также есть идея использовать такое устройство немного в другом режиме на даче, разнеся лампочки в разные места, а там нужно зажигать отдельно.

Порылся у себя в закромах и нашел плату Arduino nano. Подключил к компу – работает. Отлично! Для RTC я использовал уже довольно много разных микросхем, но есть одна (точнее три), которые я никуда не ставил. Давненько сделал печатную плату, чтобы проверить работу, да так и забросил. И это PCA2129T в огромном корпусе и со встроенным кварцем. Пролежала оно уже 10 лет, пора бы и поработать. Для проверки припаял RTC к Arduino.

Рис.1. Прототип для оценки RTC
Рис.1. Прототип для оценки RTC

Тут как раз та самая макетка для RTC. Дополнительно припаял кнопку для сброса времени и батарейный отсек 2032. Вообще можно было и плату не делать. Взять реле и блок питания, все это соединить и готово. Да, но нет.

Рис.2. Схема устройства
Рис.2. Схема устройства

Для корпуса буду использовать коробку от блока питания. Там достаточно места, чтобы разместить AC/DC питатель на 12В. За его основу возьму микросхему LNK306PN. Несколько раз уже использовал данную схему в своих разработках, показала себя отлично. Для согласования уровней I2C поставил RS0302YH8 – отличный недорогой вариант (советую). Как раз хотел затестить, чтобы не использовать транзисторы.  

На плате «Arduino nano» стоит CH340C у которой есть выход 3.3В, его буду использовать для питания PCA2129T и конвертора уровней, чтобы не ставить ничего дополнительно. Напряжение 5В тоже из Arduino. Реле на 5А, управление 12В через полевик.

Чтобы проще было все коммутировать под реечным подвесным потолком, поставил три винтовых разъема. Один вход и два выхода. Первый выход проброшен напрямую, туда будет подключаться первая лампочка, которая загорается даже при отсутствии напряжения при любом раскладе. Второй выход через реле на «дневной» вариант.

Рис.3. Печатная плата устройства в Altium
Рис.3. Печатная плата устройства в Altium

Тестовый пятиминутный код с готовой либиной «FaBoRTC_PCF2129». Чтобы не городить кучу кнопок, дисплей и всякую ересь, просто по нажатию одной кнопки будем сбрасывать время на 00:00:00. Жать ее будем, соответственно, в полночь при полной луне.

#include <Wire.h>
#include <FaBoRTC_PCF2129.h>

FaBoRTC_PCF2129 faboRTC;

int KEY_SET_TIME = PD4;
int LED_STATUS = 13;

void setup() {
  pinMode (KEY_SET_TIME, INPUT);  
  pinMode(LED_STATUS, OUTPUT);
  digitalWrite(LED_STATUS, LOW);

  Serial.begin(9600);
  Serial.println();
  Serial.println("RESET");

  Serial.println("Checking I2C device...");
  if (faboRTC.searchDevice()) {
    Serial.println("configuring FaBo RTC I2C Brick");
    faboRTC.configure();
  } else {
    Serial.println("device not found");
    while(1);
  }
}

void loop() {
  if ((digitalRead(KEY_SET_TIME) == 0)) 
   {
      Serial.println("set date/time");
      faboRTC.setDate(2023,5,11,0,0,0);
      delay(100);
      Serial.println("TIME RESET");
      digitalWrite(LED_STATUS, HIGH);
      delay(100);
      digitalWrite(LED_STATUS, LOW);
    }
  delay(100);  
  DateTime now = faboRTC.now();
  Serial.print("Time: ");
  Serial.print(now.year());
  Serial.print("/");
  Serial.print(now.month());
  Serial.print("/");
  Serial.print(now.day());
  Serial.print(" ");
  Serial.print(now.hour());
  if (now.hour() > 6)
    digitalWrite(LED_STATUS, HIGH);
  Serial.print(":");
  Serial.print(now.minute());
  Serial.print(":");
  Serial.print(now.second());
  Serial.println();
  delay(700);
}
Рис.4. Вывод лога
Рис.4. Вывод лога

Собираем/прошиваем. Все гуд. Уже в течение 5 суток время отлично тикает. По моим расчетам должно работать (не включать вторую лампочку) с 0 до 7 часов. Ниже уберу всю отладку, чтобы не было задержки на включение второй лампочки.

Рис.5. Печатная плата с завода
Рис.5. Печатная плата с завода

Габариты печатной платы 46х82. В корпус отлично встала.

Рис.6. Печатная плата с компонентами
Рис.6. Печатная плата с компонентами

Все компоненты отлично встали. Кнопку поставил высокую, чтобы проще было нажимать. Отверстие в корпусе делать не стану, так как время можно будет сбросить в 00:00 подключив mini-USB.

Небольшая засада была после прошивки скетча. Прошиваю, включаю, задержка на включение реле примерно 1 секунда. Удалил из скетча все лишнее, оставил только GPIO реле. Задержка. Тааак. Получается, что одна лампочка будет зажигаться сразу, а вторая через 1 секунду – это плохо. Стал искать пути решения в интернете.

Первое, что сделал – это убрал конденсатор между DTR CH340C и RESET – не помогло. Оказывается, чтобы этого не происходило необходимо прошить плату через программатор. У меня как раз есть USBasp.

Старт без задержки. Отлично! Ниже почищенный скетч:

#include <Wire.h>
#include <FaBoRTC_PCF2129.h>

FaBoRTC_PCF2129 faboRTC;

int KEY_SET_TIME = 4;
int RELAY = 12;

void setup() {
  pinMode(RELAY, OUTPUT);
  digitalWrite(RELAY, LOW);

  if (faboRTC.searchDevice()) {
    faboRTC.configure();
  }
  DateTime now = faboRTC.now();

  if (now.hour() > 6)
    digitalWrite(RELAY, HIGH);

  pinMode (KEY_SET_TIME, INPUT);  
}

void loop() {
  if ((digitalRead(KEY_SET_TIME) == 0)) 
   {
      faboRTC.setDate(2023,5,11,0,0,0);
      digitalWrite(RELAY, LOW);
      delay(500);
      digitalWrite(RELAY, HIGH);
      delay(500);
    }
}
Рис.7. Устройство в корпусе (со снятой крышкой)
Рис.7. Устройство в корпусе (со снятой крышкой)

Вот и все. Устройство собрано. Тестирую. Также сделал проект на симисторе, но еще не заказывал печатки. Посмотрим, как будет себя вести с реле.  

Спасибо за внимание и успехов!

Комментарии (42)


  1. BelerafonL
    03.07.2023 09:49
    +5

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


    1. the_bat Автор
      03.07.2023 09:49

      Про дежурное - это понятно. Но не будет же дежурка все время гореть в санузле??


      1. iAndrey
        03.07.2023 09:49

        Что мешает включать/выключать дежурку внутри сан. узла вместе с дежуркой в коридоре перед сан. узлом?


      1. BelerafonL
        03.07.2023 09:49
        +2

        Почему нет? Светодиодная лента на 12В, запитанная от блока питания 3-5В или типа того. Будет потреблять порядка 0.5Вт и пусть себе горит всегда. Думаю, питание ардуино + блок питания + питание лампы вайфай будут столько и потреблять сами.


        1. the_bat Автор
          03.07.2023 09:49

          Я сразу представил как буду объяснять детям, что не нужно пытаться зайти в туалет, когда лента горит на 0,5Вт. И я предпочитаю обесточивать подобные устройства даже на ночь.


          1. BelerafonL
            03.07.2023 09:49
            +4

            Не понял, почему не заходить? Чем отличается подобное устройство от телевизора, микроволновки, роутера, ардуино, лампы с вайфай, которые включены даже ночью? Да, светодиодная лента испускает свет, достаточный для ночного пользования. А роутер просто на эту мощность греется...


            1. Kopilov
              03.07.2023 09:49
              +5

              Можно увидеть маму без трусов…


            1. the_bat Автор
              03.07.2023 09:49
              +2

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


  1. Ivnika
    03.07.2023 09:49
    +2

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


    1. the_bat Автор
      03.07.2023 09:49
      +1

      А я не включаю свет в коридоре )) У меня подсветка под кроватью по датчику движения (когда ноги опускаю). И от этого освещения уже иду.


      1. SuperTEHb
        03.07.2023 09:49

        Так ведь тоже неплохой вариант! В уборной малый свет пускай включается сам собой по датчику движения (но когда выключен большой), а большой уже штатным выключателем.


        1. BelerafonL
          03.07.2023 09:49
          +2

          Готовые светильники на батарейках с али с датчиком движения имеют таймер включенного состояния порядка 10 секунд. Как пользователь такого светильника в уборной, с уверенностью сообщаю, что бесит невероятно. Нужен таймер порядка 10 минут хотя бы и надежный датчик движения. Из бюджетных светильников таких нет. Лучше пусть всегда горит от сети. Рубль в месяц, но не раздражает.


          1. SuperTEHb
            03.07.2023 09:49

            Так я вовсе и не предлагаю

            Готовые светильники на батарейках с али с датчиком движения

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


          1. paul768
            03.07.2023 09:49
            +1

            Бесит на самом деле почти всех, по опыту (10+ лет занимаюсь автоматизацией домов) в туалете ДД не менее 5 минут, а лучше 10+


    1. ABy
      03.07.2023 09:49
      +1

      В туалете использую ночник:

      Xiaomi Mijia Night Light 2 MJYD02YL-A с Bluetooth

      Питается от трех пальчиковых батареек - удобно в случае если в доме отключат электричество. Включая по датчику движения. Есть датчик освещенности - включается только в темноте. Можно настроить интенсивность освещения и время отключения (до 60 секунд).

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


      1. the_bat Автор
        03.07.2023 09:49

        Подскажите, а как у него с датчиком движения? Похож на емкостной, а не PIR. Если не двигаться хорошо работает?


        1. ABy
          03.07.2023 09:49

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


          1. Radisto
            03.07.2023 09:49
            +1

            Кивать головой - неплохой вариант. У нас на работе поставили светильник с единственным датчиком движения у входа. Обычного выключателя нет. Соответственно, когда пользователь сидит в кабинке, свет гаснет. И шевелиться внутри кабинки бесполезно, высовывать руку над ней - тоже. Датчик "видит" только кусок помещения у входа, то есть из кабинки надо выйти. Зато можно увидеть редкое явление - человек в туалете искренне радуется другим вошедшим. Наверное в этом и была цель, иначе я не знаю


            1. Squoworode
              03.07.2023 09:49

              А если открыть дверь?


  1. desabel
    03.07.2023 09:49

    Доброго дня. Где заказывали плату?


    1. the_bat Автор
      03.07.2023 09:49

      Добрый. Резонит.


  1. petropavel
    03.07.2023 09:49
    +2

    У меня уже был raspberry pi в домашней сетке, так что я просто повесил на него дополнительную функцию:

    • купил несколько "умных" лампочек, с tuya прошивкой — bluetooth, wifi, яркость и цветовая температура настраиваются.

    • tuya поддерживается много чем, мой выбор был python, tinytuya

    • скрипт раз в сутки идёт на wttr.in, скачивает время восхода и захода на сегодня для моего города

    • ну и выставляет лампочки от тускло-красного, когда солнца нет, до ярко-белого днем.

    • лампочкам зарезал выход в интернет на рутере, ибо нефиг

    получилось настолько классно, что думаю по всем комнатам это распространить


  1. Jury_78
    03.07.2023 09:49
    +2

    У меня еще проще: самая дешевая светодиодная лампа (без стабилизатора) и выключатель с подсветкой. Этого хватает и лампа работает через такой выключенный "выключатель" так что ночью достаточно.


  1. Elgreen
    03.07.2023 09:49
    +2

    Я делал через HomeAssistant + Zegbee кнопка без фиксации + Диммер.

    Определил 3 периода Ночь, Сумерки, День, которые считаются по времени восхода - захода солнца.
    Логика такая:

    При однократном нажатии на кнопку:
    1) Если включен яркий свет в коридоре из которого захожу - всегда максимальная яркость
    2) Иначе в зависимости от периода - 10%, 50%, 100%

    При двойном клике кнопкой - 100% яркость всегда

    При долгом нажатии - 10% яркость всегда.

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

    Ну и с мобильного можно любую яркость поставить через HA.


    1. the_bat Автор
      03.07.2023 09:49

      Отличное решение!


  1. vagon333
    03.07.2023 09:49
    +1

    Пока я экспериментировал с сенсорами и таймерами в ванной жены, она попросила просто добавить дежурную "лампочку" ночного освещения, которая будет включена всегда (0.25 Вт).

    Я посчитал годовые расходы на круглосуточную и круглогодичную работу ... поставил LED свет и забыл про проблему уж более чем на 10 лет.


  1. sav13
    03.07.2023 09:49

    Темнота с часами не всегда коррелирует. Есть еще и облачность, есть время захода и восхода солнца. Задернутые шторы


    1. the_bat Автор
      03.07.2023 09:49
      +1

      Поверьте, в туалете всегда темно, если там нет окна)


  1. SlavaHU
    03.07.2023 09:49

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


    1. the_bat Автор
      03.07.2023 09:49

      Тоже респект. Пока писал статью подумал так сделать. Но нужно провода тянуть.


      1. SlavaHU
        03.07.2023 09:49

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


  1. sav13
    03.07.2023 09:49

    Ну сами же писали

    Читал недавно книгу, один из героев которой, заходя в санузел, кинул фразу: почему еще не изобрели лампочку, которая ночью бы светили тусклее чем днем. Дело тут, конечно, не в экономии электричества, а в том, чтобы ночью не слепить «посетителя» со сна. Идея мне показалась довольно здравой.

    Так вот ночь и день у жителя того же Мурманска немного другие )))

    Я бы все таки исходил из текущей освещенности помещения откуда заходишь в туалет. И обязательно бы сделал плавное нарастание яркости, чтобы "по шарам не било"


    1. the_bat Автор
      03.07.2023 09:49

      Да, плату сделал. Нужно отслеживание нуля софтом сделать и думаю тоже отлично будет.


  1. ErshoffPeter
    03.07.2023 09:49

    Чем не нравится умные девайсы MiHome, Tuya или от, прости господи, Яндекса или Сбера? Как хозяин 50+ таких устройств могу с уверенностью заявить, что там можно навертеть практически любой алгоритм не вставая с дивана, в том числе и с цветностью для ночного освещения поиграться...


    1. the_bat Автор
      03.07.2023 09:49

      У меня есть контроллер управления кондиционером Tuya. Выходя с работы либо выезжая с дачи я включаю кондиционер и приезжаю в остывшую квартиру. Один раз, когда это было наиболее необходимо (еду с дачи, а на улице +30), захожу в приложение, а в нем слетели настройки профиля моего устройства. То есть чтобы мне включить кондиционер, нужно сначала добавить его находясь дома.

      Мне нравятся "умные" устройства с управлением по интернету и т.д., но в некоторых случаях я предпочитаю "топорное" управление.


      1. ErshoffPeter
        03.07.2023 09:49

        Очень странно - с MiHome у меня таких проблем не было никогда за два года. Единственное при отключении электричества какие-то устройства не всегда обратно подключаются, но это легко восстанавливается плюс ИБП помогают.

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


  1. aumi13
    03.07.2023 09:49

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

    а по поводу идеи - кусок 12В летны кинуть проще и дешэвле через резистор чтобы яркость уменьшыть.


  1. RedHead
    03.07.2023 09:49

    Заголовок спойлера

    image


    Батареек на год хватит, двухсторонним скотчем закрепить на стене внутри помещения. можно еще затемнить если ярко. Или 2 установить: один очень тусклый, другой посильнее.


  1. rapidstream
    03.07.2023 09:49

    Бюджетный вариант - ходить ночью с налобным фонариком!


  1. vviz
    03.07.2023 09:49

    В коридоре датчик движения с регулируемым таймером, совмещенный с датчиком освещения - днем не включается. В туалете и ванной датчик движения с регулируемым таймером - в ванной движение всегда есть, а в туалете нечего засиживаться, выключился свет пару раз - пора выходить ))) Как тренировка ума и рук прекрасно, но если объекты управления прирастают, правильнее использовать контроллер и беспроводную периферию, ИМХО.


  1. olartamonov
    03.07.2023 09:49
    +1

    Проблема решена, плюс подсветка морды лица перед зеркалом лентой с CRI 98.


  1. dgareev
    03.07.2023 09:49

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