Переделка автоматического освежителя Airwick
Переделка автоматического освежителя Airwick под Arduino и добавление более интеллектуального режима работы
Переделка автоматического освежителя Airwick
Версия для печати

Переделка автоматического освежителя Airwick

logo

Введение

Бренд автоматического спрея AirWick давно известен. Давным давно и я как-то поверил рекламе и купил себе это чудо. Но недолгий "ВАУ!!!!" эффект сменился быстрым разочарованием. Прежде всего меня не устраивало время работы от одного баллончика. 

Действующий режим срабатывания таймера через 9, 18 или 36 минут, меня тоже не радовал. Во первых это неоправданный расход баллона, соответственно (160, 80, 40 срабатываний в сутки соответственно), ненужная работа в ночное время или в отсутствии хозяев. Так что после пары заправок чудо распылитель был закинут в самый дальний и темный ящик стола на долгие годы.

И вот совсем недавно у меня что-то очень сильно зачесались руки модернизировать это чудо китайской мысли.

Концепция проекта

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

С этими мыслями понял, что для заводской платы управления это слишком сложно поэтому решил все управление свежестью воздуха доверить Arduino Nano. Батарейки менять постоянно, тоже не очень интересно, поэтому питание схемы решал сделать от аккумулятора. Отслеживание включения света решил сделать по простому. С помощью фоторезистора. При превышении порогового значения уровня света ардуино подавало бы питание на затвор MOSFET транзистора, а тот, в свою очередь, подавал бы питание на привод открытия клапана баллончика.

Схема проекта

В результате получилась следующая схема

scheme

Техническая часть и размещение в корпусе

Ардуино сам по себе довольно прожорливый так что для уменьшения энергопотребления сразу была перерезана дорожка на светодиод питания и выпаян стабилизатор напряжения

 

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

1

А фоторезистор в крышке

2

Написание скетча

Настало время скетча. Для написания были использованы сторонние библиотеки: GyverPower - уменьшение энергопотребления устройства и перевод его в спящий режим. а также GyverTimer, для более удобной работы с таймерами. Скачать их можно через Менеджер билиотек Arduino IDE просто вбив их название в поиске 

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

Теперь непосредственно по логике работы. При подаче питания распылитель выполняет калибровку внутренних таймеров и тут же уходит в глубокий сон. Потребление при этом падает до 1-2 мА. Через 8 секунд он просыпается и опрашивает фоторезистор. Если полученное значение больше порогового, то устройство понимает, что свет включен и начинается работа основного цикла программы

Запускается 2 минутный таймер. Если по истечении времени свет не был выключен, то распылитель понимает, что вы тут надолго и по истечении 4 минут после включения света произойдет распыление освежителя.  Если уложились в 2 минуты и выключили свет, то устройство уходит в спячку на 8 секунд, чтобы потом проснуться на 0.5 секунды, проверить не включили ли вы свет и снова уснуть на следующие 8 секунд.

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

Ну и, наконец, если вы в туалете сидите больше 4 минут, то аэрозоль просто будет распыляться каждые 4 минуты, пока вы не уйдет и не выключите свет

Все интервалы и пороговые значения яркости проверяются в скетче в этом условии


if (val>500)
if (waitFart.isEnabled()!=true) waitFart.setInterval(240000); //4 минуты 
if (wePiss.isEnabled()!=true && fart==false) wePiss.setInterval(120000); // 2 минуты
}

val>500 - вместо 500 ставим любое число от 1 до 1023. Пороговое занчение яркости света. Подбирается индивидуально. Например для одной лампочки накаливания 60W значение будет в районе 300-400

waitFart.setInterval(240000) - здесь 240000 - это время в миллисекундах интервал распыления аэрозоля. 1сек=1000мс . Соответственно 1 минута это 60000мс

wePiss.setInterval(120000) - здесь настраивается задержка по истечении которой распыление аэрозоля гарантированно произойдет

Функции энергосбережения

  • Для более экономного расхода аккумулятора в проект интегрированы функции энергосбережения:
  • Отключены шины I2C и SPI
  • Установлен режим POWERDOWN_SLEEP. Наиболее глубокий сон, отключается всё кроме WDT и внешних прерываний, просыпается от аппаратных (обычных + PCINT) или WDT.
  • Предделитель системной частоты установлен на 2. То есть, частота процессора и памяти уменьшена вдвое. Можно и больше урезать, но стабильность работы будет не очень.

Заключение

После данной модификации пользуюсь автоматическим распылителем по назначению уже больше месяца. За это время не менял ни баллон, которого раньше хватало меньше чем на месяц, ни заряжал аккумулятор емкостью 1200 mAh. Заряда там еще месяца на 3 хватит, если верить мультиметру. Так что считаю, что эксперимент удался 

Ссылка на скетч во вложении

Материал также доступен на моем канале: Яндекс Дзен и в группе ВК
Категория: Ардуино | Добавил: | Теги: DIY, Arduino, Автоматический освежитель, Airwick, самоделка
Просмотров: 2432 | Загрузок: 188 | Комментарии: 10 | Рейтинг: 5.0/1
Ссылки:
Скачать файл
1.9 Kb
Скачать
Скачать файл
Неизвестно.
Скачать удаленно
Поделиться:
Всего комментариев: 10
avatar
0
Neo • 09:42, 15.05.2023
Здравствуйте, повторил проект, в прошивке время считается в 2 раза больше, то есть 240000мс - это 8 минут
avatar
0
ALT • 12:00, 13.06.2023
В настройках ядра частота в 2 раза порезана у меня для большей экономии энергии
avatar
0
zakazorel • 22:07, 13.08.2023
Доброй ночи.
Подскажите в чем может быть причина, не могу загрузить скетч в ардуино нано.
Выдает ошибку compilation terminated.
exit status 1
GyverPower.h: No such file or directory
Скетч скачал из вашего поста.
avatar
0
ALT • 14:34, 14.08.2023
Здравствуйте. Библиотеку GyverPower не установили. В менеджере библиотек Arduino легко находится
avatar
0
zakazorel • 19:11, 14.08.2023
Добрый вечер.
Установил библиотеку, теперь другая ошибка.
compilation terminated.
exit status 1
GyverTimer.h: No such file or directory
У меня ардуино нано (китайский клон)
Очень надеюсь на вашу поддержку.
Заранее спасибо.
avatar
0
ALT • 14:23, 15.08.2023
Аналогично установите GyverTimer
avatar
0
zakazorel • 19:14, 14.08.2023
И возможно ли сделать что бы при свете он срабатывал каждые 1,5 часа, ну а без света спал.
avatar
0
ALT • 10:54, 15.08.2023
Код
waitFart.isEnabled()!=true) waitFart.setInterval(5400000);
Вот на это измените
avatar
0
ALT • 14:30, 15.08.2023
И по ссылке Скачать удаленно Github репозиторий со свежей версией скетча. Исправлены мелкие баги и добавлены комментарии для каждой функции
avatar
0
kirnet79 • 13:12, 23.10.2023
Заметил глюк. При долгом освещении после нескольких срабатываний транзистор открывается и баллон кончается за считанные минуты.
avatar