Выбираем подарок


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

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

Подумав немного, сын решил делать продвинутый кухонный таймер. Я ему немного помог со схемой. Основные функции нашего подарка:

  • Режим таймера до 3 часов
  • Режим секундомера
  • Громкий сигнал
  • Компактный размер
  • «Вечные» батарейки — аккумуляторы, зарядка как у телефона, по micro usb
  • Ну и конечно игры — кубик (случайное число от 1 до 6), лото, бомба (очень веселая игра)

Подбираем компоненты


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

Микроконтроллер — STM8S003F3P6 — с ним мы уже работали, так что все знакомо. ST-link уже есть.

Микросхема заряда и вся обвязка у МК, как у велокомпьютера.



В качестве пищалки, очень компактная и громкая пищалка HC0903A



Аккумулятор — LIR2032. Всего 45 mAh, но этого хватит на 40 часов непрерывной работы таймера. От кварцевого резонатора решили отказаться (нужны выводы), особенная точность нам не нужна, ну и у STM8 довольно точный внутренний генератор. Микросхема заряда — TP4056.

Управление — 2 тактовые кнопки. Прибор все время находится в спящем режиме, потребление меньше 5 мкА, спать может долго. Плату защиты для аккумулятора делать не стали, особенно не нужна. У МК нижний предел 3В, так что сильно не просядет. При включении идет музыка, включается индикатор (бросок тока), и если аккумулятор севший, то МК перегрузится и перейдем в спящий режим, что является сигналом к зарядке. Заряжается он током 100 мА около 40 минут, что в принципе очень быстро. Схему и программу можно скачать на github, ссылка в конце.

Корпус сын решил делать сам из монтажного короба 40 х 16 мм. Раскрасил акрилововыми красками, в качестве стекла вырезали кусок из DVD диска. Получилось очень симпатично.



Трассировку платы сын делал сам в Kicad. Расположение компонент придумал он же. Кнопки по бокам от индикатора, пищалка внизу, аккумулятор на ней. Все вошло плотно, ничего ни куда не болтается. Плата двухсторонняя. Делали из одностороннего стеклотекстолита толщиной 0.8мм с помощью метода холодного переноса тонера. Две половинки платы соединили и зафиксировали перемычками. Из разъемов — micro usb, питание и программирование.



Программа


Данный индикатор имеет общий анод, соответственно выводить в один момент времени можно только один разряд. Для вывода одновременно трёх разрядов необходима динамическая индикация.

Программно это делается очень просто. Задействуется таймер, и через равные интервалы времени, с большой частотой, например каждые 300 мкс, будем выводить по одному разряду по кругу — 1-2-3-1-2-3. Нам будет казать что цифры светятся одновременно, как в кино. Если дополнительно добавить еще пустые разряды, то можно управлять яркостью. То есть, будет такая схема вывода информации — 1-2-3-пусто-пусто-пусто-пусто-1-2-3-пусто-пусто… Управление яркостью нужна для того, чтобы снизить энергопотребление. Таким образом, например без применения яркости, один разряд потребляет 24 мА, а с применением можно сократить до 1-2 мА. При этом цифры все еще четко и далеко видно. Сын поигрался с частотой, яркостью, когда все перестало мерцать, ему понравилось. Оказалось, программировать такой типа индикатора довольно легко и удобно.
Второй сложный момент — это придумать простой, как говорится, интуитивно понятный интерфейс, когда у нас 3 разряда индикатора и 2 кнопки. Но я считаю, ему это удалось.

Придумали с кнопками так:

  • Правая кнопка — долгое нажатие, смена режимов, их три — Таймер, Секундомер, Игры
  • Правая кнопка — одиночное нажатие, смена подрежима. У таймера — это выбор предустановленных времен, у секундомера — выбор обычного секундомера и с подтверждением, у игры — соотв. Различные игры
  • Левая кнопка — одиночное нажатие — старт/стоп или ход в игре, долгое нажатие — режим настройки, программирования

С индикатором так:
  • Когда выбран таймер — то сразу выводится некое число из предустановленных настроек (Например 5,15,30 минут), их можно перепрограммировать, хранятся в ПЗУ
  • Когда выбран секундомер — то 000
  • Когда игры — L — лото, 6 — бомба, С — кубик.
  • На индикатор цифры выводятся хитро, так как разряда только три, то выводим максимальное число значащих элементов. Например, таймер — 200 минут 30сек — то выводим 200., если таймер 10мин 15с, то выводим 10.1, если 1 минута 25с, то 1.25. При этом чтобы понимать, что таймер или секундомер запущен, точка мигает в такт секундам.
  • Когда секундомер остановлен, например на 10 мин 25с то показываем попеременно 10. и .25, раз в секунду, чтобы видеть и секунды тоже.

Программа оказалась не такой простой, сын писал ее почти 3 недели в школьное время, с небольшой моей помощью. Очень много условий, разные флажки — старт, стоп, работа с памятью и т. д. Но результатом он был очень доволен.

Испытания


Первые испытания прошли в школе. Вместо кубика, гадание на оценках. Гадал весь класс. Потом бомба — супер игра. Прибор загадывает случайное время от 5 до 20секунд и начинает тикать каждую секунду. Вы его передаёте по кругу. Когда таймер дойдёт до нуля — сигнал взрыва. Тот, у кого в руках прибор, проиграл.

Первые испытания секундомера и таймера прошли на ура. Засекали разное время, сверяли с точными часами, ошибка 1-2 секунды на час. Отрабатывали звук сигнала.

Вручение подарка


Наступил день рождения. Бабушка быстро прошла обучение и была очень рада. Все вместе испытали Лото, полностью автоматизированное. Каждые 5 секунд прибор пищит и выдает новое число, из оставшихся в мешке. Играют все, водит прибор! Кто не успел тот опоздал.

Итоги


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

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

На github выложена схема и плата в формате Kicad. Выложен начальный проект для STM8, там самое сложное — динамическая индикация, инициализация микроконтроллера, сложная обработка кнопок — короткое, двойное, долгое нажатие. Остальную программу предлагаю написать самостоятельно, это ведь так интересно!

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


  1. Taciturn
    07.11.2017 18:42
    +1

    Тупой кухонный таймер — www.amazon.com/gp/product/B004S0SO9M
    Человеческое управление, время вводиться не волшебными комбинациями, а цифрами. Динамик громкий. Батарейки конечно не вечные, на AAA из комплекта за два года ещё не умерла.
    Типичной бабушке на типичную кухню подойдёт куда лучше.


    1. kvazimoda24
      07.11.2017 19:10
      -1

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


      1. myowndevice Автор
        07.11.2017 20:22

        Хоть кто-то понял, что покупать конечно проще….но не полезнее. Весь ютуб пестрит обзорами, купи то, купи се. Конечно купить проще. А сделать лучше очень сложно, поэтому делать не будем ничего!


        1. rustavelli
          07.11.2017 21:08

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


      1. Taciturn
        07.11.2017 20:40
        +2

        Смотря кому. Бабушке — лучше.


        1. exehoo
          08.11.2017 09:46

          Не надо за бабушек говорить! Большинству бабушек таймер на кухне нужен как зайцу пятая нога, а вот то, что внук для нее лично старался — бесценно.


          1. Dmitry_7
            08.11.2017 10:08

            Но потом внук осознает, что его подарком не пользуются. И тут печаль, разочарование в самоделкинстве.


            1. exehoo
              08.11.2017 10:14

              А ну как все внуки в мире осознают, что их детские рисунки на стене — не шедевры никакие?! Весь мир тогда канет в пичальку.


    1. ainoneko
      08.11.2017 07:10

      (продолжая оффтопик?)
      Мне интерфейс больше у этого понравился:

      • ресет одним нажатием,
      • после срабатывания он снова готов к тому же интервалу времени.


      1. myowndevice Автор
        08.11.2017 09:08

        Примерно так и работает. в Конце после сигнала переходит опять в начало. Время хранится в памяти, есть несколько настроек. Причем можно под себя настроить. Сейчас стоит 5мин 15мин 30мин. И их быстро выбрал и все. А в конце возвращается где был. То есть замерил 5мин и опять 5мин.


  1. Sun-ami
    07.11.2017 19:50
    +1

    Как практика для ребёнка неплохо, но чтобы быть действительно удобным кухонный таймер должен иметь аналоговое управление (лучше энкодер), и несколько уставок с одновременным их отображением на экране и разными звуками при срабатывании (в идеале — с возможностью их записи при установке таймера). Иначе механический кухонный таймер оказывается удобнее. А чтобы быть хорошим подарком женщине — он должен быть красивым, просто коробка — не вариант.


    1. Mogwaika
      07.11.2017 20:00

      В следующей статье ребёнок будет изучать автокад и фрезерование шестерёнок на чпу.


    1. Blacklion_msk
      07.11.2017 20:23

      Я с вами согласен, но по частям. В том плане что удобный таймер, да, он должен быть с максимально удобным управлением. Что подарок женщине должен быть красивым и аккуратным — тоже. Но тут речь идет о бабушке. И поверьте, бабушке в 100500 раз приятнее получить пусть такую черную и, может, где-то неаккуратную коробку, но сделанную любимым внуком, чем красивую, но купленную его папой в магазине. И, поверьте, бабушка будет с гораздо бОльшим удовольствием пользоваться этим, возможно, не самым удобным таймером, но сделанным руками внука, чем любым сколь угодно продвинутым/простым/красивым/удобным (нужное подчеркнуть) таймером из магазина.


      1. myowndevice Автор
        07.11.2017 20:25

        Между тем, бабушке реально очень понравилось! Но я полностью согласен, что энкодер бы и экран ЖК, было бы гораздо лучше.


        1. Mogwaika
          07.11.2017 20:42

          Все хипсторы делают на лампах и диодах, а вы ЖК хотите, бабушке крупные сегментные индикаторы точно самое оно…
          Уж поверьте за шрифты ругани будет в 100500 раз больше.


      1. Taciturn
        07.11.2017 20:42
        +1

        Точно ли она им будет пользоваться, когда внука рядом не будет?


        1. Blacklion_msk
          07.11.2017 21:22

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


  1. ed007
    07.11.2017 20:09

    Вот потом и получаем крутую начинку и абсолютно нерабочий ui


    1. myowndevice Автор
      07.11.2017 20:24

      Потом получаем тупую начинку, крутой ui и СДЕЛАНО В КИТАЕ!


  1. myowndevice Автор
    07.11.2017 20:32

    Китайцы делают всякую ерунду и похуже, и продают. А мы все считаем, что это недостойно, надо лучше. И к сожалению ничего не делаем совсем. Российских безделушек электронных по пальцам пересчитать, а очень жаль. Между прочим, в школе он один вообще что-то сделал из электроники сам, остальные КУПИЛИ.
    И я думаю, что и программу такую напишет не каждый. Не простая.


    1. oWart
      08.11.2017 08:06

      А сколько лет сыну? Но в любом случае он молодец для школьного возраста.


      1. myowndevice Автор
        08.11.2017 08:59

        Сыну — 12лет. Начали заниматься с ардуино с 10лет. Сейчас перевожу на stm и на Kicad. Чтобы сам делал приборы, а не проводки соединял. Вот этот — полностью его разработка. Да не супер круто, но я доволен.


        1. oWart
          08.11.2017 12:03

          Для 12 лет это очень круто


    1. oWart
      08.11.2017 08:36

      Вы главное не падайте духом, продолжайте заниматься. Просто уровень статьи немного не для Хабра/GT, вот многие и возмущаются. Добавить скриншот разводки, вырезку из кода с описанием какого-нибудь алгоритма, расчеты потребления и уже повеселее будет смотреться…
      Тем не менее авторские DIY статьи редко уходят в минуса. Лично я поддерживаю любые начинания.


      1. myowndevice Автор
        08.11.2017 09:04

        Ну на github все есть, наоборот не стал замусоривать фотками. А так можно конечно добавить и схему и разводку. Но статья не об этом. Статья о том, что надо делать что-то своими руками, простые поделки. Я например сыну сказал, хочешь какую-то вещь — делай, покупать не будут! Детали куплю любые. Вот он уже месяц облизывается на power bank. Сделали вместе схему, набросали логику работы. Собрался делать.

        Я считаю, что нужен стимул какой-то. По сыну вижу, молодежь зрителями растет. Ютуб смотрят — обзор того, сего. Зачем делать? Все купить можно.

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

        А дочке (чуть младше) купили маленький комнатный. Так она запустила три раза и бросила — надоел. Только пыль сдуваем.


        1. Mogwaika
          08.11.2017 12:16

          Есть некоторая грань того что можно сделать руками, а что можно купить. Вы же не будете делать мобильник сами, надеюсь?
          Просто у существующих приборов часто настолько высокая сложность, что в одиночку повторить нереально и вот квадрокоптер, на мой взгляд, это уже из этой категории.
          Лучше бы делали что-то незаменимое, что не продают даже китайцы, ambilight для телевизора или автоматическую поливалку/открывалку парника для бабушкиной дачи…


          1. myowndevice Автор
            08.11.2017 13:05

            Ну почему. Квадрокоптер очень многие делают сами. Основной вопрос в том, что наверное весь его сделать самостоятельно сложно. Мы тоже делали только часть, регуляторы, мозг, плата питания, зарядка, датчик тока, GPS датчики. А все радиоуправление, видео передача, моторы, покупное.
            Такого что не продают даже китайцы нет наверное. Можно сделать что-то лучше чем у них.
            Про сложность согласен. Но все равно есть что поделать. Например, погодная станция, датчики теплого пола, управление по GSM.


            1. Mogwaika
              08.11.2017 21:14

              Я вам написал про ambilight, его не совсем из-за сложности не делают.
              Вот мозг у квадрика самое сложное вы сами его делали (все эти стабилизации, возвраты по gps и прочее сопровождение целей, это же самое нужное, но сложнореализуемое)?


              1. myowndevice Автор
                08.11.2017 21:36

                Ну по сути, паяли сами, программа готовая. Проект Paparazzi UAV. Дописывали только свою логику обработки пульта, автоматизация полета. По сути там уже на макроуровне. Все стабилизации там реализованы уже на низком уровне. Очень мощная программа. Интересный проект. Удобен тем, что один мозг годится и для квадрокоптера и самолета. Несколько видов стабилизации, в том числе с плавающей точкой. Посмотрите, если интересно. Рекомендую. Микроконтроллер брали STM32 с FPU. Летает очень классно.


                1. Mogwaika
                  08.11.2017 21:51

                  Если честно, я не очень верю в универсальную систему стабилизации подо все аппараты. Мне ближе подход который раскручивают на всяких семинарах матлаба, где мы отрабатываем реакцию объекта на возмущения, строим модель, вычисляем коэффициенты подгона и уже по ним строим алгоритм управления. А лучше считать на плисе, т.к. я не очень доверяю скорости обработки микроконтроллера))
                  Я согласен, что для ребёнка это супер-круто, для меня в таком возрасте обычное лего крутым казалось. Просто интереснее, если вы найдёте действительно нереализованную тему, хоть она даже и будет сложнее, но зато вы сделаете чуточку лучше чем у других.


                  1. myowndevice Автор
                    09.11.2017 07:45

                    Ну плис тут особенно не нужен. В Основном не МК не успевает, а датчики! На высокой точности датчики медленно выдают результаты. А поповоду универальной стабилизации — ее нет, там разные модели, для самолета свои, для квадракоптера свои. Просто это все один софт, одно железо. И можно опционально выбирать из большого числа вариантов.


                    1. Mogwaika
                      09.11.2017 13:09

                      Я имел ввиду, универсальность в плане развесовки каркаса и тяги двигателей на заданное воздействие и комбинации всего этого.
                      Хотя наверное я диванный теоретик и подобным никто кроме всяких DJI не заморачивается…


                      1. myowndevice Автор
                        09.11.2017 13:44
                        +1

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


              1. myowndevice Автор
                08.11.2017 21:37

                по поводу ambilight — как мне не очень интересно. Вообще не понимаю за чем он нужен. Телевизор особенно не смотрю. Он же больше туда?? Или вообще как атмосфера в комнате?


  1. REPISOT
    07.11.2017 20:34

    Всего 45 mAh, но этого хватит на 40 часов непрерывной работы таймера
    Что вы подразумеваете под «непрерывной работой »? Режим ожидания без индикации? Ибо при такой емкости надо, чтобы прибор ел 1 мА. А индикатор ест 10-20 мА на один сегмент.


    1. oWart
      08.11.2017 08:08

      Индикация же динамическая, можно считать 10мА в сумме на все сегменты. И то, это много — для настольной поделки яркость можно занизить.


      1. myowndevice Автор
        08.11.2017 08:58

        Ну вот и я о том, для комнаты, при искуственно освещении, достаточно 1-2ма. Отлично видно с расстояния и вообще. Так сказать, проверено на практике.


  1. tormozedison
    07.11.2017 20:39

    1. myowndevice Автор
      07.11.2017 22:29

      Офигенная штука. Тоже такую хочу.


  1. myowndevice Автор
    07.11.2017 22:28

    Индикатор ест 1 мА на пониженной яркости. В режиме работы таймера — он не горит, только точка мигает. Получается 0.8мА, только что есть микроконтроллер.


  1. Keroro
    08.11.2017 06:47

    Таймер, по большому счёту, баловство, механический «помидор» крутануть быстрее и проще, не требует батареек и т.д. А вот термометр в духовку (не оборудованную такой фичей) — реально полезный гаджет. Термопара типа K c Али, и модуль на MAX31855 (ну или свой усилитель на ОУ ваять, но там не сильно тривиально с т.з. схемотехники). Быстрее и точнее механического, и не надо нагибаться и через мутное стекло пытаться разобрать циферки. Рекомендую для сборки всем бабушкам (и не только).
    image


    1. ionicman
      08.11.2017 13:46

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

      У меня трудится вот такой. При этом все плюсы механического управления и электронного отображения и удобности собраны в одном устройстве.



      Хотел собрать свой изначально, но попробовав это устройство понял, что лучше вряд-ли сделаю (разве что цифры будут гореть и чуть-чуть удобнее управление — но расплата — бОльший размер и потребление).

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


      1. myowndevice Автор
        08.11.2017 14:16

        Да. Делать что то тяжело. Конкуренция большая. Такое все красивое… Сам не сделаешь.


  1. myowndevice Автор
    08.11.2017 08:56

    Ну про такие тоже скоро напишу. На mcp3421. Очень точный АЦП. Для термопары — идеально. Никакой калибровки, никакой настройки. Сразу выдает вольты с точностью до микровольт. Шина I2C — цифровой формат. И самое главное — даже не нужен референс вольтаж. Когда попробовал первый раз, термопару меряю только таким способом. Сейчас описываю датчик УФ излучения для измерения интенсивности загара, там будет и измерение термопары тоже. Делал себе на море, удобно — можно море померять, воздух и интенсивность излучения. Понравилось как работает.
    Также делал паяльную станцию на нем. Оч. удобно. С pid регулятором. Тоже планирую описать. Писать много… быстро не получается.


  1. exehoo
    08.11.2017 09:51

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


  1. ZhanD
    08.11.2017 11:27

    Даешь стимпанк интерфейс!



  1. Alexeyslav
    10.11.2017 19:43

    Так сложилось, решаю практически аналогичную проблему. Только у меня таймер до 99 минут, без звука.
    Не хватает выводов — есть регистры сдвига, а особенно хорош TB62725 — регистр сдвига, с отдельной защёлкой и токовыми драйверами на выходе, ток которых задаётся всего одним выводом. По размеру помещается прямо под индикатор. Но правда, взял их когдато и теперь найти не могу такие… везде полно 16-битных а 8-битных буд-то и небыло.
    image
    Если что, на фото корпус — KM-36B.