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



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

У нас две дочки. Каждый раз заходя в ванную комнату, чтобы почистить зубы, они просят засечь две минуты (из четырех детских щеток, только одна имеет таймер для чистки зубов). Чтобы процесс стал более интересным, а нам не приходилось по четыре раза в день напоминать детям выйти из ванной, я решил сообразить таймер. Песочные часы отпали сразу – это как-то не спортивно.


Рис.1. Схема таймера

Схема таймера очень проста и представлена на рис.1. Механические кнопки не очень подойдут для ванной, так как от нажатий мокрыми руками могут выйти из строя (плату покрою лаком), поэтому было решено кнопку сделать сенсорной. Я ранее уже использовал микросхему TTP223, соответственно ее и поставил, но теперь она будет работать как reset для микроконтроллера. Я подумал, что так как почти все время таймер выключен (если не брать в расчет что дети будут в него постоянно тыкать, зайдя помыть руки), то можно использовать режим standby, а при нажатии на кнопку просто ресетить МК.

Микроконтроллер использовал тот, что был в наличии – STM32F031G4. Маленький UFQFPN-28 очень удобен для миниатюрных поделок. Специально не стал добавлять пищалку (для экономии батарейки) и buck-boost, чтобы габариты были минимальны.


Рис.2. Печатная плата top

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


Рис.3. Печатная плата bottom

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


Рис.4. Плата с компонентами bottom

Прошивка тоже совсем простая (генерил в CubeMX для IAR). Поморгать диодами при старте и погасить, затем зажечь с интервалом 30 секунд по одному, и снова поморгать перед сном.

Для standby используются всего пара строк:

DBGMCU->CR |= DBGMCU_CR_DBG_STANDBY;  

HAL_PWR_EnterSTANDBYMode();

После засыпания отваливается SWD, но так как у меня сенсор на ресете, то просто жмем тач и прошиваем.

Светодиоды использую китайские с ali. Мультиметром (UNI-T UT70A) получилось намерить примерно так:

  • 1 светодиод – 3,2mА;
  • 2 светодиода – 3,4mА;
  • 3 светодиода – 3,6mА;
  • 4 светодиода – 3,8mА;
  • В режиме standby 8uA.

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

Надеюсь, дети будут в восторге)

PS:


Дети в восторге!

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