Приветствую, Хабр!



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



Делал я все неспешно и только в свободное время.

Сначала коротко расскажу о минусах, которые были в первом варианте. Это больше мое личное мнение. Детям и моим друзьям это нисколько не мешает играть. Недочеты можно разделить на две группы – это эстетические и финансовые. Ниже я расскажу, чего же удалось добиться.

Эстетика

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

Первое, что было необходимо сделать – это отказаться от двухплатного исполнения и штыревых разъемов (и вообще штыревых компонентов).
Второе – это уменьшить аккумулятор. 1.5А, как мне сразу показалось, было очень много по емкости и по весу.
Третье – это, конечно же, корпус (в прошлой статье про него ничего не было, но он появился почти сразу).

Первый, напечатанный на 3D принтере корпус, был порядка 18-19мм в высоту. Платы были соединены между собой металлическими стойками. Между платами был расположен аккумулятор. Вариантов корпусов было много. Пробовали делать канавки с обратной стороны лицевой грани. Были разные варианты расположения плат внутри и разные варианты сборки и крепления. Пробовали даже грунтовать и красить.



Рис.1. Одни из первых корпусов ХО

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



Рис.2. Одни из вариантов кнопки включения ХО

Я отказался от транзисторов на включение светодиодов и почти всех подтяжек (решив делать их только софтово). Естественно, ушли штыревые разъемы (в том числе и SWD). Когда я разместил на плате все компоненты, то понял что ее не получится развести в одном слое (верхний слой занят разводкой тач-кнопок и светодиодов), поэтому я решил для эксперимента на каждую группу светодиодов (8шт) поставить только один токоограничивающий резистор. Каждая группа «кушает» около 10мА (китайские светодиоды), при этом яркость у всех одинакова. Отлично. Поставил все компоненты 0603, чтобы упростить плату для ручного монтажа.

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



Рис.3. Новая версия платы ХО

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

Отличным решением, на одном из этапов, было убрать спикер и добавить вибромотор. Наличие виброотклика при нажатиях, смене игр и т.д., оказалось очень удобным (куда интереснее, чем простые «пики» бузера).

К эстетике я также отнесу и сам игровой функционал. Только игра крестики-нолики с искусственным интеллектом и соперником – это очень мало. Тогда мы с коллегами придумали еще несколько игр. Ниже я приведу кусочек инструкции, где расписаны все почти 9 игр.

Выбор игры происходит с помощью нажатия и удержания пальца на одной из клеток. После того, как в нижнем ряду по очереди загорятся все три крестика, и Вы почувствуйте виброотклик — выбор игры сделан.
  1. Крестики-нолики с искусственным интеллектом 1 (далее ИИ). Нажимайте на поля и ждите ход ИИ. Выстройте три крестика в одну линию.
  2. Крестики-нолики ИИ 2. Нажимайте на поля и ждите ход ИИ. Выстройте три крестика в одну линию. Второй ход ИИ делает произвольно, что усложняет игру.
  3. Крестики-нолики на двоих. Нажимайте на поля и ждите ход соперника. Выстройте три одинаковые фигуры в одну линию.
  4. Мемо 1. Аналог знаменитой игры для улучшения памяти. Коснитесь любого поля и запомните картинку. Нажимайте на поля повторяя рисунок. Крестики и нолики появляются по очереди. Картинки постоянно меняются!
  5. Мемо 2. Необходимо отыскать на полях крестики и после того, как картинка погаснет указать их места. Количество крестиков растет. Очередность не имеет значения.
  6. Стрелялка. Когда будете готовы, нажмите на любое поле. В верхней части появится крестик. С нижнего ряда необходимо запускать снаряды-нолики, чтобы сбивать крестики. Скорость игры постепенно увеличивается!
  7. Гонки. Вы едете на зеленом автомобиле и Вам необходимо уворачиваться от красных ящиков-препятствий, которые попадаются на дороге. Скорость игры постепенно увеличивается! (Игра еще дописывается)
  8. Мемо 3. Очень увлекательная игра даже для взрослых! На полях появляются крестики: сначала один, потом два, и так до девяти (от уровня к уровню). Необходимо нажимать на поля в той же последовательности, в какой появлялись крестики.
  9. Демо версия игры крестики-нолики. Показывает, как правильно необходимо играть.


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

Как небольшое дополнение, добавил автоматическое выключение после минуты простоя. Ничего не мудрил, просто с микроконтроллера подаю через диод лог. «1» на микросхему CD4013 – имитируя нажатие кнопки. Работает стабильно.

Себестоимость

Безусловно, все вышеперечисленное довольно серьезно сказалось на себестоимости. Вместо двух плат теперь была только одна. Ушли штыревые разъемы, 18 транзисторов и куча пассива (в основном резисторы), стойки крепления платы стали пластиковые. Чтобы еще снизить себестоимость я начал экспериментировать с аккумуляторами. Для начала я уменьшил емкость до 750мА. Посадить аккумулятор так и не удалось. Далее я снизил до 500мА. Снова он у меня так и не сел даже после того, как я игру оставлял включенной и давал играть детям. Размеры и вес аккумулятора, соответственно, уменьшились в три раза. На этом решил пока остановиться, но очень хочется поставить 300мА.

Я привру совсем немного, если скажу, что себестоимость получилась $10. На самом деле, тут многое зависит от партии, но для 50-100шт эта цифра вполне реальна.

Что получилось

Последнее, что есть на данный момент – это корпус 74x74мм и толщиной 14,5мм. Платы заказал черного цвета, корпус распечатал тоже в черном варианте. В руке держать приятно, в кармане игра почти не ощутима, аккумулятор «вечный». Верхняя часть закрывается ПЭТ 1,5мм, выполненным фрезеровкой (чтобы исключить подплавление краев). Индикация зарядки трехступенчатая, выполнена с помощью зажигания крестиков: один, четыре или восемь по кругу.



Рис.4. Новая плата в корпусе ХО

На фотографии не получается хорошо заснять светодиоды. На самом деле смотрится весьма хорошо.

Что хочется изменить

На данный момент слабое звено – это корпус. Не лучший вариант печатать корпус на принтере. Это мало того, что долго, так еще и не очень красиво. Конечно, штучный образец можно вышкурить и покрасить, но это все сложно и удвоит себестоимость.

Рассматривал литье в силикон, но по видео так и не понял подойдет ли мне такой вариант. В этом случае на корпусе останутся «литки», которые скрыть можно только покраской, а это снова усложнение.



Рис.5. Игра ХО



Рис.6. Игра ХО. Кнопка включения/выключения

Также решил разместить небольшое виде, кому интересно:



Прямая ссылка на первую статью: habr.com/ru/post/429618

ЗЫ: Отдельная благодарность программисту за код и рекламщику за игры и видео)

Спасибо за внимание и до новых встреч!

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


  1. hurtavy
    16.12.2019 21:04

    Тоже в детстве делал Крестики-нолики. Правда крупнее. Из рассыпухи. Кажется по книге Войцеховского «Радиоэлектронные игрушки»


  1. FForth
    16.12.2019 21:23

    Такое количество светодиодов, может хватить и на игру Тетрис. :)

    P.S. Проекты некоторых электроных игрушек есть здесь.
    Из игр на данном дизайне может получиться Змейка.


    1. the_bat Автор
      18.12.2019 09:50

      Светодиоды объединены группами по 8шт. Крестик и нолик — это единый сегмент.


  1. Coocos
    17.12.2019 00:37

    А какой контроллер?


    1. the_bat Автор
      18.12.2019 09:49

      Да, хороший вопрос)
      В первой версии стоял STM32F100C4T6B, сейчас стоит STM32F100C8T6B, так как код растет и его приходится даже оптимизировать.


  1. Woffko
    18.12.2019 09:05

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


    1. the_bat Автор
      18.12.2019 10:05

      Тоже думал на счет резистивного тача, но не нашел квадратного исполнения. И промелькнула мысль использовать дисплей, но это уже будет как телефон, смысла в этом почти никакого, если только это не e-ink.


      1. Woffko
        18.12.2019 10:23

        резистивной клавиатура это кучка кнопочек с резисторами, а не мембрана от экрана


        1. the_bat Автор
          18.12.2019 10:38

          ааа, я думал тач. Понятно.


  1. Javian
    18.12.2019 09:21

    По-моему нужен белый матовый рассеиватель перед диодами.


    1. the_bat Автор
      18.12.2019 10:02

      До сих пор в поиске решения для передней панели.
      Пробовали матовое оргстекло, печатать рассеиватель на принтере, тонировочную пленку, тонировку лаком (для автомобильных фар). Все эти методы неизбежно ведут либо к некрасивому рассеиванию света либо к раздваиванию изображения. Выглядит не очень.
      Сейчас в поисках цветного оргстекла или ПЭТ 1,5мм для тестов.


      1. Javian
        18.12.2019 10:16

        Рассеиватель с разбитого LCD экрана очень хорошая вещь.


        1. the_bat Автор
          18.12.2019 10:22

          Хм, попробую! Спасибо!


          1. sim2q
            19.12.2019 07:15
            +1

            да, там ещё с поляризационной плёнкой от него же можно поиграть, интересные эффекты с leds можно получить, у меня правда были не матовые и со 120 углом


  1. derduron
    18.12.2019 11:07

    Мне кажется, было бы удобнее все же оставить 2 платы, чем паять СМД на обеих сторонах.
    А по корпусу посмотрите усилитель Макса Крюкова. Там корпус полностью из текстолита. Болтов нет, держится на припаянных pogo pin как на защелках. Может найдете что применить у себя.
    Тут на видео видно как разбирается


    1. the_bat Автор
      18.12.2019 11:11

      Плата со светодиодами в любом случае с двухсторонним монтажом. На обратной стороне тачи. Да, я делал корпуса из текстолита и полностью из оргстекла. Первый вариант хорош только тем, что можно сделать шелкографию практически любую. Второй вариант достаточно дешевый. Смотрятся оба варианта так себе, как и на 3D принтере, в принципе.
      Для одного из наших изделий делали корпус фрезеровкой из алюминия, вот это действительно красиво, но дорого.


  1. Rikhmayer
    18.12.2019 12:00

    По корпусу — когда я немного игрался в печать, хорошо получилось делать ABS с постробработкой ацетоновой баней. Результат симпатичный, если ставить на поток — не очень запаристо получается.
    По игре — не реализуемо на 8-ми светодиодах, но хайпово было бы сделать квантовые крестики-нолики.


  1. Tomasina
    20.12.2019 02:22

    Опишите нюансы разводки оплаты под сенсоры. На фото, судя по всему, TTP223?


    И пластик лицевой панели я бы сделал белым полупрозрачным, либо черным тонированным акрилом, чтобы не было видно самих светодиодов (затрудняет восприятие).