Необходимо войти или зарегистрироваться

Авторизация

Введите логин, email или номер телефона, начинающийся с символа «+»
Забыли пароль? Регистрация

Новый пароль

Авторизация

Восстановление пароля

Авторизация

Регистрация

Выберите, пожалуйста, ник на пикабу
Номер будет виден только вам.
Отправка смс бесплатна
У меня уже есть аккаунт с ником Отменить привязку?

Регистрация

Номер будет виден только вам.
Отправка смс бесплатна
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
Авторизация

Профиль

Профиль

nstorm

nstorm

Пикабушник
45 214 рейтинг
7545 комментариев
42 поста
20 в "горячем"
Показать полную информацию
лучший длиннопост недели

"Умное" освещение на базе сенсора освещенности и расстояния APDS-9930. Часть 2, прошивка.

nstorm в Arduino & Pi

Продолжение 1ой части.

Ссылку на прошивку уже давал, повторю: https://github.com/N-Storm/autolight

В README.md описание есть, код более-менее прокомментировал. Но всё ес-но на английском.

В разделе Releases лежат скомпилированные прошивки с настройками по-умолчанию.


Прошивка написана под ATTiny10, который вписывается в эту задачу. В общем-то никаких особых сложностей, чтобы адаптировать прошивку под другой AVR нет. Кроме GPIO (ногодрыга) используется только прерывание INT0, Watchdog для сброса МК при ошибке, да и вроде всё.

Все настройки работы датчика и порогов срабатывания задаются жестко в прошивке. Все настройки в общем-то в файле autolight.h. Разберу их:


#define PROX_TH 30 - это порог срабатывания датчика приближения. В условных попугаях, потому что зависит от настроек ниже. Больше - ближе. При текущих настройках полностью прикрытый датчик вплотную пальцем выдает тут 1023. При снижении дальности ниже этого значения, считается сработало открытие. Выше - закрытие.


#define LIGHT_TH 100 - это порог срабатывания датчика освещения. Опять же в условных попугаях, да еще я использую жесткое округление при расчете. Потому что ДШ датчика приводит сложную формулу с делениями на дробные числа, это для тиньки 10 будет слишком много. Больше - ярче.


#define DELAY 600 - задержка в мс между проверками на уровень освещения и закрытие в рабочем состоянии (т.е. когда подсветка горит). Для экономии батарейки не слишком часто считаем, 600 мс реакция на такое событие для человеческого глаза вполне норм.


// #define RECHECK_AL - если раскомментировать эту строчку, слегка поменяется поведение прошивки. В рабочем состоянии помимо проверки на закрытие, будет также выполнятся проверка на изменение освещенности. Т.е. если подсветка работает, но вдруг включили свет в комнате, тогда подсветка выключится.


#define WTIME_DEFAULT 0xB6 - время ожидания между проверками расстояния датчиком в автономном режиме. Значение из ДШ и соответствует 202 мс между проверками. Потребление тока при этом будет копеечное. Порядка 66 мкА в среднем. Т.е. датчик раз в 202 мс "выстреливает" пульсами из ИК-светодиода и проверяет расстояние.


#define PPULSE_DEFAULT 4 - соб-но количество пульсов 4.


#define PERS_CON 0b00110000 - это то, о чем я говорил в прошлой части, настройка PERS. В ДШ даны значения, в данном случае это 3 раза подряд (202 мс * 3 + время на обработку) значение дальности должно быть ниже PROX_TH. Соб-но поэтому 3 и поставил, потому что 202 * 3 = 606, примерно тот же 600 мс отклик, как и на закрытие.


#define ATIME_DEFAULT 0xED, #define PTIME_DEFAULT 0xFF - время на обработку АЦП значений, тут взяты рекомендованные из ДШ на датчик.


Дальше всё уже идут определения констант адресов регистров датчика, битов и т.д.


I2C в Attiny10 нет аппаратного, используется софтовая либа, которую я чуть допилил. В i2csoft.h можно поменять пины SDA и SCL.


В autolight.c основная логика работы. Первым делом из main() вызывается функция init(), где мы вырубаем Watchdog и устанавливаем параметры МК. Включаем тактирование от внутреннего источника и ставим предделитель, чтобы получить итоговую тактовую частоту 250 кГц. Да, нам этого с головой тут, зато тайминги I2C можно делать просто одной инструкцией NOP.

Дальше вырубается не используемая аналоговая периферия для снижения потребления.  Ну и соб-но настраивается прерывание INT0.

После init() "инициализируется" I2C через SoftI2CInit() и через функцию apds_init() отправляем в датчик все описанные ранее настройки из .h. В случае ошибки тут и любой ошибки на I2C дальше, вызывается функция reset(), которая через Watchdog сбрасывает МК через 15 мс. Т.е. если связь с датчиком пропадет (отвалится линия или еще что), МК будет пытаться перезагружаться.


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


Я думаю он должен быть достаточно понятен, для человека более-менее понимающего в программировании для МК. Но если есть какие-то вопросы - отвечу в комментариях.


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

Показать полностью

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

nstorm в Arduino & Pi

Пост не совсем про 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 (не подключая это дело к программатору ес-но!) и он снова войдет в режим программирования.


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

Показать полностью 5

Почта России в очередной раз врет.

nstorm в Почта России

Едет мне посылочка из Китая. Доставка типа ePacket, трек на буквы LZ. Это характеризуется как экспресс-доставка. О которой Почта России и администрация Китая договорились. Да по требованиям к трек-номерам Международного Почтового Союза (UPU) S10 треки на букву L являются экспресс-почтой. А конкретно LZ - вообще требует двухстороннего соглашения между почтовыми администрациями! О чем соб-но выше и написано, что такое соглашение есть.

Но у операторов Почты России другая позиция. Т.к. моя посылка с 15го апреля выпущена таможней и никакого движения до сих пор. При попытке на сайте почты подать заявление на розыск, после заполнения всех пунктов, меня просто возвращает назад в меню выбора типа претензии! Никакой ошибки, просто молчаливый игнор от сайта.

Связываюсь с оператором. И выслушиваю поток некомпетентного вранья:

Почта России в очередной раз врет. Почта России, Почта, EPacket, Обман
Почта России в очередной раз врет. Почта России, Почта, EPacket, Обман

Сорри, в виде текста не сохранил. Если кратко то мне поведали следующее:

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

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

- Отправление "простое", т.е. нерегистрируемое (нет)

- За данные отправление ответственность Почта России не несет (нет)

- Предложили мне получить возмещение у продавца (сами не можете доставить, а продавец должен платить?!)


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


@DmitriyMarkin, почему Почта России во всех СМИ трубят о такой двухсторонней договоренности про экспресс доставки с Китая, а на деле операторы врут что это отправление даже неотслеживаемое? Почему pochta.ru/claim молча не принимает заявление на розыск?

Показать полностью

"Клиентоориентированность" от Макдональдс

nstorm

Заказывал давеча в "макдаке" поесть, "на вынос". Домой, т.к. готовить некогда было. В т.ч. бургер "Вестерн гурмэ". На картинке он выглядит так:

"Клиентоориентированность" от Макдональдс Макдоналдс, Бургер, Сервис, Плохое качество, Длиннопост

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

"Клиентоориентированность" от Макдональдс Макдоналдс, Бургер, Сервис, Плохое качество, Длиннопост

Кучкой всё свалено в одном месте, а 70% "площади" бургера тупо котлета и сухая булка. Думаю ну компания же западная. Должны же быть какие-то стандарты качества. На западе вообще такое переделывают молча и бесплатно, если и случается. Ради интереса решил написать им. Сначала в Facebook. И вот какой ответ получил:

"Клиентоориентированность" от Макдональдс Макдоналдс, Бургер, Сервис, Плохое качество, Длиннопост
Т.е. главное чтобы "все было на месте"? А че не через блендер пропустить и выдать? Написал на почту, но и там ответ:
"Клиентоориентированность" от Макдональдс Макдоналдс, Бургер, Сервис, Плохое качество, Длиннопост

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

Показать полностью 3

АО "Чистый город", вы там совсем?

nstorm

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

Пошла она к ним разбираться. С оригиналами всех квитанций. Оказалось что в 2015 году прозошла передача прав на вывоз мусора от ОАО "Водоканал" к АО "Чистый город". Нюансов всех не знаю, но раньше за вывоз мусора в общем оплата была в "Водоканал", а потом к ним. И где-то они профукали данные о платежах в момент передачи.

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

Знатно у меня пригорело, когда я это всё услышал. Разводят пенсионеров. Сами накосячили где-то, просрали платежи. И теперь пенсионер должен из-за них бегать и за свои деньги доказывать что не должен ничего им. А сама манера подачи "вам проще заплатить" вообще охреневшая.

Претензию на их имя отправил, но печет конкретно.

Лицемерие или "разоблачение разоблачения"

nstorm

Вот в этом посте один человек из мира косметической стоматологии @WSZone обвиняет другого @Dr.Zderzhikov в "лицемерии и некомпетентности". Я почитал пост и вроде как всё грамотно разложено. Однако смутил один момент. Вот это заявление:

Если вкратце о том - что отбеливается: за оттенок зуба отвечает дентин. Он находится под эмалью. Чтобы проникнуть внутрь зуба, в нашем геле (InSmile) формируется перекись водорода (именно формируется, при взаимодействии со слюной и лампой, изначально в геле есть карбонат натрия в дозировке 0.27%, который формирует перекись водорода в размере 0,16%), проникая внутрь зуба - оттенок обесцвечивается и осветляется.

Я не стоматолог. И не химик. Но как-то смутило меня это. Потому что знаю я, что "карбонат натрия" - это обычная "кальцинированная сода", которую в отделе бытовой химии, возле стиральных порошков можно купить в супермаркетах обычно для умягчения воды. Химически это соль с формулой Na2CO3. И мне не понятно какой-такой алхимией "при взаимодействии со слюной и лампой" она превращается в H2O2.

Далее меня смутило, что в целом этот абзац был возражением на заверения @Dr.Zderzhikov, что в косметических салонах гели не проникают глубже эмали. Тут утверждается, что проникает. Но механизм никак не раскрыт. Просто "проникает" и всё тут.

О чем я честно спросил в комментариях вчера и ответа не получил:

Лицемерие или "разоблачение разоблачения" Стоматология, Лицемерие, Разоблачение, Длиннопост

Зато сегодня я увидел много других комментариев, которые спрашивали про механизм этой алхимии. Не один я заметил эту нестыковочку. Самый популярный вопрос на эту тему удосужился "ответов"... и оные вынудили меня создание данного поста:

Лицемерие или "разоблачение разоблачения" Стоматология, Лицемерие, Разоблачение, Длиннопост
Лицемерие или "разоблачение разоблачения" Стоматология, Лицемерие, Разоблачение, Длиннопост

Было бы простительно... хотя нет, я бы не простил. Человек работает в стоматологии, хоть и в косметической и не понимает принципов действия веществ, которыми он "людям зубы мажет". И не знает основ химии. Извините, но раз решили заниматься чем-то хотя бы около медицины, пусть это косметология, извольте хотя бы разобраться. А тут и ответы в стиле - "Знать не знаю и знать ничего не желаю! Просто поверьте, оно так работает!". Детский сад.

При этом человеку хватает наглости обвинять в некомпетентности и лицемерии коллегу. А точнее видимо просто конкурента. Хотя сам проявляет данные качества.

К посту были и другие комментарии на тему этих нестыковок. Но в целом пост "зашел в горячее" и был воспринят плюсами. Будьте бдительны, не дайте себя обмануть умными словечками. )

Показать полностью 2

А вы уже проверили себя в Digital Диктанте?

promo спoнсорский пост

Сегодня и завтра, в честь 25-летия Рунета, на сайте цифровойдиктант.рф все желающие могут проверить свой уровень компьютерной грамотности. А вы что подумали? Нет, правильно писать слова и расставлять запятые — это другой диктант.


Знание современных технологий — одно из ключевых требований во многих профессиях, и с каждым годом эти знания становятся все более ценными. По мере прохождения Digital Диктанта вы сможете закрыть некоторые пробелы в знаниях (ну или узнать, что у вас их нет!).


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


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

Отличная работа, все прочитано!