Доброго времени суток, Хабр!

Лет пять назад мы купили себе освежитель воздуха Air Wick. Я его разобрал, вытащил и выкинул плату, в надежде, что так я быстрее сделаю свою … Если Вы решите, что оно того не стоило, то я готов поспорить.

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

Какой же он должен быть?

  • Не должен брызгать в лицо при открывании двери.

  • Не должен пугать детей своим «пшик» в ответственные моменты.

  • Желательна работа от аккумулятора и потребление должно быть низким. Индикация заряда.

  • Плата должна «встать» с минимальными доработками корпуса, чтобы не потерялась эстетика, если так можно выразиться про устройство в санузле.

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

Для чего все это нужно? Да разве не проще надавить на кнопку обычного освежителя? Это же потраченное время зря!

Нет! Если что-то начал, то нужно доделывать! Даже через несколько лет.

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

Первая моя попытка (по сути, уже вторая) не увенчалась успехом. Я сделал плату на модуле ESP с WiFi, так как хотел «на ходу» менять режимы работы Air Wick, контролировать расход баллона и т.д. Наигравшись я понял, что нужно что-то проще, меньше по размерам (тот вариант не хотел влезать в корпус без его кардинальных доработок напильником) и менее энергоемкое. Тогда родилась схема ниже.

Рис.1. Схема Air Wick STM
Рис.1. Схема Air Wick STM

В принципе, тут нет ничего необычного. Микроконтроллер снова взял STM32F031 (как и во многих своих разработках). У него небольшой корпус, он есть у меня в наличии и полностью меня устраивает. В качестве контроллера заряда используется дешевая микросхема LTC4054. При работе от аккумулятора необходимо переключить джамер и задействовать LDO SPX3819, так как заряженный аккумулятор имеет напряжение 4,2В.

В одной из прошлых поделок на этом же микроконтроллере я задействовал режим standby. Который реализуется всего двумя строчками кода:

DBGMCU->CR |= DBGMCU_CR_DBG_STANDBY; 

HAL_PWR_EnterSTANDBYMode();

В этом режиме потребление порядка 8uA, что мне очень понравилось и оставалось только понять, как выйти из этого «сна». Тогда пришел на ум кусочек схемы на сдвоенном диоде BAV23C. Убираем подтяжку с reset микроконтроллера и дергаем его двумя сигналами: от фототранзистора (позже выяснилось, что лучше подходит фоторезистор) и собственного GPIO. Логика топорная, но работает отлично. При включении света фоторезистор тянет reset вверх, контроллер запускается и управляет сигналом сброса уже сам. Сделано это для того, чтобы после выключения света Air Wick продолжил работать необходимое время.

Последняя версия платы выглядит так:

Рис.2. Последняя версия платы Air Wick STM
Рис.2. Последняя версия платы Air Wick STM

Пришлось заменить транзистор управления мотором на более мощный, так как предыдущий срабатывал крайне нестабильно и грелся.

Логика работы

В схеме задействованы два АЦП. Один измеряет заряд батарейки, второй наличие подключенного зарядного устройства (чтобы избежать незапланированного срабатывания во время процесса зарядки). Разъем для зарядки вывел в паз (предварительно его расширив) от переключателя режимов.

Рис.3. Разъем для зарядки устройства
Рис.3. Разъем для зарядки устройства

В заводской версии железки при нажатии кнопки на корпусе Air Wick происходит срабатывание («пшик»). Я к этой функции еще добавил оповещение о заряде батарейки и пока остановился на этом варианте. После нажатия раздается 1, 2 или 3 коротких звуковых сигнала (в зависимости от заряда батареек), затем, через 1 секунду (чтобы успеть отбежать), срабатывает пшик.

В автономном режиме отслеживается включение и выключение освещения. В зависимости от, простите, времени, проведенного в санузле, может быть несколько вариантов срабатывания. Если свет был включен на менее чем 1 минуту, то после выключения света просто пикаем 30 мс бипером, чтобы понимать, что устройство живое. Если свет горел 1 – 2,5 минуты, также пикаем и делаем «пшик» один раз. Если засеченное время оказалось более 2,5 минут – пикаем и «пшикаем» два раза.

Рис.4. Размещение платы внутри корпуса
Рис.4. Размещение платы внутри корпуса

Плата встала идеально в корпус. Фоторезистор на штатном месте светодиода, SWD угловой, иначе мешает.

Рис.5. Фоторезистор
Рис.5. Фоторезистор

С фототранзистором не получилось сделать, так как видимо у него меньше угол обзора, хоть он и имеет линзу. Лампочки на потолке имеют цоколь GU5.3, соответственно плохо засвечивают устройство, когда оно подвешено под потолком. Фоторезистор все исправил.  

Рис.6. Устройство в корпусе
Рис.6. Устройство в корпусе

Заключение

Пользуемся устройством уже 1,5 года. Первые полгода только с батарейками. Хватает примерно на 1 месяц и неделю использования. Перешли на аккумулятор. В корпусе на проводе хорошо разместился Li-Ion LP103448 на 1800мА (для него я и выводил разъем на плате). Хватает на 3-4 недели (два взрослых, два ребенка). Первый баллон кончился примерно на 6 месяце. По итогу могу сказать, что при использовании аккумулятора устройство получается довольно экономичным (по расходу баллона).

Спасибо за внимание и до скорых встреч!

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


  1. restruct
    21.11.2022 14:36
    +1

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

    Вы и словом не обмолвились о причинах недовольства купленным готовым решением. Отсюда вывод: ваша статья — классический случай синдрома неприятия чужой разработки, в оригинале — NIH (not invented here).


    1. the_bat Автор
      21.11.2022 14:44
      +3

      Под заголовком "Какой же он должен быть?" в статье как раз перечислено то, чего мне не хватало.


      1. restruct
        21.11.2022 16:13
        +1

        Вы явно путаете «Я недоволен предложенными функциями» и «Мне не хватает этих функций».

        Какой же он должен быть?

        • Не должен брызгать в лицо при открывании двери.

        • Не должен пугать детей своим «пшик» в ответственные моменты.

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


        1. the_bat Автор
          21.11.2022 16:20
          +4

          Он пшикает раз в 32 минуты (либо меньше, в зависимости от установки). И если вы не подсчитываете время для входа в санузел, чтобы попасть в промежуток 32 минуты, то да - пшикнет в лицо, или на голову, смотря где установлен.


          1. ArkadiyShuvaev
            21.11.2022 17:18
            +3

            Поддерживаю, я тоже вечно опасаюсь, что освежитель в лицо прыснкт :) Вы молодец, так держать! :)


  1. olartamonov
    21.11.2022 14:58
    +2

    (насвистывая «я тебя слепила из того что было») Три-четыре недели между перезарядками. А на сколько месяцев, значит, батареек хватало у оригинала?..


    1. the_bat Автор
      21.11.2022 15:19
      +3

      Не более одного месяца от батареек. Он срабатывает очень часто даже на минимальном режиме (раз в 32 минуты, если я не ошибаюсь) + нещадно тратится баллон.


      1. olartamonov
        21.11.2022 15:22
        +4

        В любом случае, эту схему выкинуть и сделать нормально.

        Какой смысл радоваться потреблению микроконтроллера в 8 мкА, если там LDO с 90 мкА собственного потребления и резисторные делители ещё по сотне микроампер каждый?


        1. the_bat Автор
          21.11.2022 16:00

          При работе от батареек нет LDO. Делитель только один на измерение напряжения батареек.

          Ваши предложения по схеме?


          1. olartamonov
            21.11.2022 16:56
            +1

            А аккумулятор вам не лень каждые три недели заряжать?

            LDO — 90 мкА, два делителя (второй у вас вообще-то на выходе LDO висит, он тоже не бесплатный) — по 150 мкА, итого под 400 мкА просто так, в воздух. А если ещё и не идеально темно, то и на фоторезисторе подтекает.

            Если на 1800 мАч оно живёт 4 недели, это среднее потребление 2,68 мА (верхняя оценка, вы вряд ли выбираете аккумулятор досуха, так что скорее ближе к 2 мА). Ну то есть минимум треть потребления схемы — оно просто так. Плюс неделя работы могла бы быть. Бесплатно, без регистрации и СМС.

            Причём решается же элементарно:
            • выкидываем этот LDO, берём что-то типа TPS70933
            • делитель напряжения батарейки вообще не нужен, у F0 есть встроенный мониторинг напряжения питания

            Дальше надо смотреть в режимы работы контроллера. Ну ладно 8 мкА какие-то, когда по даташиту в STANDBY у него 3 мкА максимум. Но оно хотя бы в STOP уходит после того, как его фоторезистор из стендбая вывел? Или молотит на все честные 20 миллиампер на полной скорости?

            И зачем эта схема с диодами и резетом, когда из стендбая микроконтроллер штатно выводится дёрганием ножки WKUP? Или наоборот — зачем эта схема сделана так, когда ей можно было вообще всё питание схемы рубить, уводя LDO в shutdown с потреблением в районе 1 мкА?


            1. the_bat Автор
              21.11.2022 17:31

              Ауум заряжается 1,5 часа. Нет, не лень.

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

              TPS70933 150 мА - так как там мотор и редуктор - это не взлетит. Не хватит тока, чтобы сдернуть.

              В STANDBY 7,5мкА, которые я округлил до 8.

              У меня уже готова плата, на которой как раз рубится питание полностью, но она еще не запущена - не хватает времени. Вы пытаетесь посчитать мкА, когда речь в рабочем режиме идет от запуске мотора с редуктором, который еще и спускает баллон под давлением. Чтобы получить дополнительную неделю работы (это 1/4 от текущего времени) Ваши советы не помогут. 1-2 дня, но не больше.


              1. olartamonov
                21.11.2022 17:43
                +2

                Я вам левой задней лапой ~400 мкА потребления сэкономил, четверть от имеющегося. Если у вас от месяца четверть — это 1-2 дня, то мои вам соболезнования, быстро же у вас время летит.

                И да, мотор нафиг не надо питать от LDO. Мотору всё равно, а вы опять почём зря спускаете заряд аккумулятора в никуда.

                И в STANDBY должно быть 1,0 мкА Idd + 1,1 мкА Idda. Таблица 25 даташита. Если у вас в четыре раза больше — это повод для раздумий.

                ЗЫ. Относительно делителей надо не «пробовать», надо уметь пользоваться калькулятором и понимать, почему они такие или какие-то другие. Если вы сейчас просто возьмёте и поставите туда 1 МОм, у вас тоже чудеса на виражах начнутся, но другого рода.


                1. Dark_Purple
                  22.11.2022 10:21

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

                  Хотя, я посмотрел другие статьи автора, может он и не любитель, тогда могло бы быть и получше))


                  1. olartamonov
                    22.11.2022 12:36

                    Это некоторое заблуждение, что любительский уровень — это когда человек клепает из чего нашлось, не вникая, как оно вообще работает-то.

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


              1. nafikovr
                22.11.2022 22:41

                >>TPS70933 150 мА - так как там мотор и редуктор - это не взлетит. Не хватит тока, чтобы сдернуть.

                а зачем силовуху цеплять через стабилизатор?


            1. nafikovr
              22.11.2022 22:57

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

              Но если занудствовать, то:

              1 - Питание стабилизируем чем то типа MCP1700 (копейки, без обвязки, не кушает). При чем понижаем не до 3В, а до уровня гарантированного срабатывания транзисторов.

              1* - вообще в таких решениях лучше использовать контроллер работающий во всем диапазоне напряжений аккумулятора.

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

              3 - Убрать двигатель из-за стабилизатора, добавить зависимость времени работы от напряжения (или, лучше, обратную свзязь по положению вала). Это единственное, что побережет батарею во время работы

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


  1. rstepanov
    21.11.2022 15:33
    +4

    Я бы понял если бы эта штука включала вытяжку при наличии загрязнений в воздухе, но еще больше портить воздух то зачем? :)


    1. the_bat Автор
      21.11.2022 15:56
      +1

      Вытяжка включена пока горит свет. Хотя это тоже идея хорошая, чтобы выключать ее через пару минут. Нужно подумать)


      1. fio
        21.11.2022 17:50

        выключать ее через пару минут

        Или попозже, если свет горел дольше 2.5 минут. Тоже можно сделать зависимость продолжительности работы вытяжки от времени работы освещения


        1. dravor
          21.11.2022 23:12

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


    1. ducemollari
      22.11.2022 00:57
      +3

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

      Но кто-то любит запах копро+ландыш. Или кофе. Интересно, можно ли таким от кофе человека отвадить?


  1. Didimus
    22.11.2022 07:55
    +2

    «Не должен пугать детей своим «пшик» в ответственные моменты» - а то от испуга обделаются?


    1. evn
      22.11.2022 12:25

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


  1. vviz
    22.11.2022 09:43
    -1

    Какими странными стали людишки - подавитель обоняния называют освежителем...


  1. RavilMuslyumov
    22.11.2022 16:38

    Присоединюсь насчёт подавления обоняния. Для сведения в СССР в 70х на освежилках, точнее на основе ароматических углеводородов был создан замечательный яд невиданной силы и #оружиезапахов.


  1. pistoletov
    22.11.2022 17:01

    Airwick-). Любимая тема-) Именно с него и начался мой умный дом. Сделал как-то переделку ароматизатора по схеме из просторов паутины на тиньке13 с интересным режимом работы светодиода он работал и как индикатор и как светочуствительный элемент. В общем схема работала, но не очень надежно. И тогда решил сделать свою реализацию. В туалете под потолком стоит нода умного дома на базе atmega328+w5500 на софте под фреймворком Souliss. Нода управляет AIRWICK, вентилятором санузла, кранами подачи воды, и снимает температуру и влажность. Об алгоритмах рассказывать не буду у каждого свое видение. В двух словах почему Souliss - хотел автономности работы ноды, одна из ее функций влагостат, отключение от сервера не должно нарушать работу влагостата. Детектирование включения света в санузле просто и надежно - оптронная схема наличия 220в на светильнике. От ноды к пшикалке идут провода на двигатель, и на ws2812 светодиод, который индицирует режимы работы ноды. С появлением Алисы аирвик еще немного поумнел, но это уже совсем другая история......В общем уже скоро 5 лет как все это живет в санузле-).