"Умное" освещение на базе сенсора освещенности и расстояния APDS-9930. Часть 1, "железо".

Пост не совсем про Arduino, но про домашнюю поделку на микроконтроллере AVR. Об "умной" подсветке, которая включается только при открытии ящика и когда кругом темно.


Захотел я сделать в шкафу, да выдвижных ящиках комода себе подсветку. С утра собираюсь, в комнате темно, жена спит, дочь спит. Подсвечивать телефоном, чтобы найти шмотки задолбало. Тянуть провода для питания тоже не хотелось, надо было что-то на аккуме.
Взял LED модуль готовый. На Али такие COB LED называются, очень много разных вариантов, взял такой (83 рубля):

"Умное" освещение на базе сенсора освещенности и расстояния APDS-9930. Часть 1, "железо". Avr, Микроконтроллеры, Умный дом, Подсветка, Самоделки, Автоматизация, Длиннопост

Взял повышающий DC-DC преобразователь на MT3608 ($0.40):

"Умное" освещение на базе сенсора освещенности и расстояния APDS-9930. Часть 1, "железо". Avr, Микроконтроллеры, Умный дом, Подсветка, Самоделки, Автоматизация, Длиннопост

И из загашников у себя кнопку фиксируемую и акк Li-Ion на 500мАч. Всё прекрасно заработало и за пару месяцев редких включений акк просел чуть ниже половины заряда.
А дальше соб-но захотелось придать этому ума, чтобы не клацать кнопкой самому. Можно просто поставить геркон и свет будет включаться при открытии шкафа/выдвигании ящика. Но не охота, чтобы он включался, когда в комнате горит основной свет - батарею тратить почем зря. Поэтому берем датчик освещенности и расстояния (Proxmity & Ambient Light Sensor), такие, как стоят в телефонах. Недорогие и доступные на Али модули на базе APDS-9930, вот такие (60 рублей):

"Умное" освещение на базе сенсора освещенности и расстояния APDS-9930. Часть 1, "железо". Avr, Микроконтроллеры, Умный дом, Подсветка, Самоделки, Автоматизация, Длиннопост

Датчик цифровой, работает по I2C. На датчике ИК-светодиод и 2 фотодиода - один измеряет ИК диапазон, другой ИК + видимый спектр света. С помощью них датчик умеет измерять расстояние до объекта, посылая ИК импульсы и замеряя их отражение. И уровень освещенности фотодиодами (вычитаем из общей освещенности вместе с ИК отдельные показания ИК фотодиода). Далее расстояние - PS (proximity sensor), освещенность - ALS (ambient light sensor).
И приятная штука - прерывания. Датчик можно настроить так, чтобы при выходе определенных параметров PS или ALS выше или ниже заданного нами значения он "дернет ножкой" INT. Тем самым МК настроив датчик может уйти в сон (режим пониженного энергопотребления). плюс есть настройка PERS, которая отвечает за то, сколько раз подряд считанное значение должно выйти за границы заданных значений, чтобы сработало прерывание, чтобы исключить ложные срабатывания.
На модуле есть сам датчик и минимальная обвязка для него, включая конденсатор для ИК-светодиода и подтяжки линий.
Беру из загашников мелкие букашки - контроллеры ATTiny10 (фото из инета):

"Умное" освещение на базе сенсора освещенности и расстояния APDS-9930. Часть 1, "железо". Avr, Микроконтроллеры, Умный дом, Подсветка, Самоделки, Автоматизация, Длиннопост

Я покупал их под всякие мелкие задачи в довесок с заказом на DigiKey, но они есть и на Али. Я брал по $0.31 за штучку.
Контроллер может питаться от батарейки напрямую, но для APDS-9930 нужна напруга не выше 3.6В, поэтому берем стаб LDO на 2.7-3.3В. Я взял TPS78330, но можно что проще и дешевле достать, вроде XC6206P302MR. Контроллер и сенсор запитываем от LDO. LED модуль по прежнему от DC-DC модуля. Чтобы иметь возможность выключать свет, в разрыв входного минуса модуля ставим N-канальный MOSFET. Я взял IRLML6244TRPBF (пачка 100 шт на Али около $1). Минусовой выход DC-DC ес-но соединяется только с LED модулем, он общий с входным, мы его будем размыкать. Короче примерно такая схема:

"Умное" освещение на базе сенсора освещенности и расстояния APDS-9930. Часть 1, "железо". Avr, Микроконтроллеры, Умный дом, Подсветка, Самоделки, Автоматизация, Длиннопост

На схеме U3 - LDO MCP1810T стоит, это я задел на плату поставил.
Далее я написал прошивку для ATTiny10, которая это всё контролирует: https://github.com/N-Storm/autolight

О прошивке напишу в следующей части, много для одного поста. Там была отдельная возня.
Собрал это всё кое-как по-уродски на макетке:

"Умное" освещение на базе сенсора освещенности и расстояния APDS-9930. Часть 1, "железо". Avr, Микроконтроллеры, Умный дом, Подсветка, Самоделки, Автоматизация, Длиннопост

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


Всё работает. Датчик отрабатывает как положено. При запуске он инициализирует сенсор и ждет. Сенсор заводится проверять расстояние каждые 202 мс. Как только расстояние увеличивается выше порога (3 раза подряд через PERS, чтобы не было ложных срабатываний) - значит дверца открыта. Проверяем уровень внешнего освещения. Если оно ниже порога - подаем высокий уровень уровень на PB3 (затвор мосфета), тем самым включая подсветку. Как только расстояние до препятствия сенсора опять станет ниже порога - значит дверца закрыта, свет выключается и снова МК уходит в сон, "заведя" датчик опять выстрелить прерыванием когда снова откроется дверца.

Есть один нюанс. МК всего 6 ног имеет, 2 из которых - питание, 2 мы используем под I2C, 1 под прерывание и еще 1 нужна для управления подсветкой. Т.е. задействованы все, включая ножку сброса. После прошивки FUSE битов, обычным образом прошить МК нельзя будет, т.к. сброс отключен. Но можно просто подать +12В на ножку RESET (не подключая это дело к программатору ес-но!) и он снова войдет в режим программирования.


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

Arduino & Pi

1.4K постов20.6K подписчиков

Добавить пост

Правила сообщества

В нашем сообществе запрещается:

• Добавлять посты не относящиеся к тематике сообщества, либо не несущие какой-либо полезной нагрузки (флуд)

• Задавать очевидные вопросы в виде постов, не воспользовавшись перед этим поиском

• Выкладывать код прямо в посте - используйте для этого сервисы ideone.com, gist.github.com или схожие ресурсы (pastebin запрещен)

• Рассуждать на темы политики

• Нарушать установленные правила Пикабу

7
Автор поста оценил этот комментарий

Тыж от нехер делать это сваял? Да?

Иллюстрация к комментарию
раскрыть ветку (1)
6
Автор поста оценил этот комментарий

Почитай чем PIR датчик отличается от того, что написано у меня. Мне нужно включаться не по движению, а по уровню окружающего освещения. Готовых решений таких не было. Я писал об этом в посте, просто на открытие хватит и геркона, даже PIR не нужен.

Автор поста оценил этот комментарий
В детстве увлекался радиотехникой. Хотелось бы ребенку азы показать но радиодетали больше не продаются как раньше. А жаль. Электроконструкторы доверия не внушают.
раскрыть ветку (1)
3
Автор поста оценил этот комментарий

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

показать ответы
4
Автор поста оценил этот комментарий
Кнопка дороже датчика? Ну ок.
раскрыть ветку (1)
6
Автор поста оценил этот комментарий

Датчик освещенности стоит 30-40 рублей. Датчик с расстоянием как у меня - 60 рублей. Нормальная кнопка те же 20-30 рублей и будет стоить.
Не суть важны эти копейки. Не хочу механическую часть. Ящики разные бывают. Далеко не все закрываются плотно, как холодильник. Плюс как я написал, датчик можно и на расстоянии сантиметров от дверцы повесить, а кнопка только вплотную.

показать ответы
Автор поста оценил этот комментарий

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

раскрыть ветку (1)
2
Автор поста оценил этот комментарий

Не хочу провода, далеко от розетки, занимать розетку под БП, делать отверстия в ящиках и шкафу и т.д.

АКБ поставил на 2000 мАч сейчас, по прикидкам заряжать его надо будет не чаще, чем раз в пол года - вообще не сложно.

Автор поста оценил этот комментарий

не, не...бро
Даже "на отъебись" так не получится если норм делать, много флюса - это норм, потом убирается, но тут похоже на сухую пайку или недогрев.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Не отъебись и норм - несовместимые понятия =) Может и недогрев, даже не помню что за Т выставлена была. Может и флюса мало было местами. Я не спорю с тем, что пайка убога. Cразу в посте написал, что собрано "по-уродски". Это временно.
Я вообще не люблю эту херь с макеткой и проводками. Да и ЛУТ тоже. Уж лучше заказать и подождать нормальную 2х слойку. А там уже нормально всё запаять.

показать ответы
Автор поста оценил этот комментарий
Зачем)
Иллюстрация к комментарию
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Вы уже 4ый, кто пишет про подобное. Это тупо PIR датчик. Почитайте же пост. Написано же, мне не датчик движения или открытия нужен просто, а еще и датчик освещенности. И не такие убогенькие 4 светодиодика

Автор поста оценил этот комментарий

А можно вопрос, где покупал переходные панельки для sot23-6? Я на али смог найти только на 10 выводов...

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Сам нарисовал и заказал ) Вот: https://PCBs.io/share/rNVLG

показать ответы
Автор поста оценил этот комментарий

Я взял IRLML6244TRPBF (пачка 100 шт на Али около $1)

интересно почитать на чём и что нынче делают, но кажется всё же $10 ?

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Ну я именно за 1 доллар брал (см. скрин). Сейчас правда глянул, нет такого лота уже, и самый дешевый $2 стоит.

Иллюстрация к комментарию
показать ответы
Автор поста оценил этот комментарий
Жду про прошивку) Все хочу научиться, но не хватает усидчивости.
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

https://pikabu.ru/story/umnoe_osveshchenie_na_baze_sensora_o... как-то примерно так вкратце написал про код прошивки.

2
Автор поста оценил этот комментарий
Не проще ли как в холодильнике кнопку на тыльную сторону ящика и датчик освещенности?
раскрыть ветку (1)
2
Автор поста оценил этот комментарий

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

показать ответы
Автор поста оценил этот комментарий

Надо что-то с пайкой делать, не знаю, что там - паяло не то или флюса нет, жало?, температура?, но так не годится!

раскрыть ветку (1)
Автор поста оценил этот комментарий

Это - "прототип", похер. На отъ*бись и скорую руку спаяно чисто проверить. Плату и нарисовал для этого в 3ей части, чтобы нормально сделать.

показать ответы
Автор поста оценил этот комментарий
Хотя догадываюсь. У пир датчика таймаут надо делать, что впустую будет тратить аккум после закрытия дверцы или делать меньше его, но тогда моргать может свет между срабатываниями.
раскрыть ветку (1)
Автор поста оценил этот комментарий

Не. Этот датчик тоже тратит энергию на замеры расстояния. Но там копейки получаются, если измерять как я описал во 2ой части (66 мкА): https://pikabu.ru/story/umnoe_osveshchenie_na_baze_sensora_o...

Просто зачем ставить отдельный PIR датчик и отдельный фоторезистор, когда за 60 рублей есть целиком готовый малюсенкий датчик 2-в-1?

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

PIR датчик реагирует на ИК излучение теплого объекта. Это надо в шкаф заглянуть или рукой махнуть, чтобы он сработал. Плюс непонятно когда сработать на закрытие. А у меня от расстояния сразу ясно когда открыто и закрыто.

1
DELETED
Автор поста оценил этот комментарий

Да, это без датчика, у меня тоже купе. Поэтому такой. Один не понадобился. Сколько стоил не помню, но не дорого.

Иллюстрация к комментарию
раскрыть ветку (1)
Автор поста оценил этот комментарий

Это тоже PIR сенсор. Ну надоело уже про них слышать. PIR - совсем не так работает, как у меня.

показать ответы
1
Автор поста оценил этот комментарий

Oopps... ваша правда, каким то образом смотрел IRLML6244, они подороже

раскрыть ветку (1)
Автор поста оценил этот комментарий

Ooops... это я ошибся ))) 6402 со скрина - это P-канальные. Хотя можно и их легко использовать, пару строк в прошивке поменять. Или можно irlml2502 взять, они дешевле, за доллар с копейками 50 штук можно купить.

3
DELETED
Автор поста оценил этот комментарий

50 рублей. У меня на трёх батарейках висит, с датчиком движения. Стоил тоже недорого, батарей хватает на несколько лет.

Иллюстрация к комментарию
раскрыть ветку (1)
Автор поста оценил этот комментарий

Ну это не то совсем. Это на свет не реагирует, только там где есть поворотная дверца и 3 маленьких светодиодика. У меня ящики выдвижные и дверца шкафа свдижная, а не поворотная, это мне даже некуда ставить.

показать ответы
Автор поста оценил этот комментарий

а если залипнуть в ящик датчик не посчитает твое тело закрытой дверцей?

раскрыть ветку (1)
Автор поста оценил этот комментарий

Я на ящике на торец боковой перекладины датчик повесил. Сбоку не лезешь в ящик обычно. Но конечно если рукой или чем прикрыть датчик, свет выключится. Руку уберешь - опять включится. Чудеса )