Электронная игра XO

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



    Как Вы уже догадались по фотографии, речь сегодня пойдет не о классификации коньяка. Я буду делать игру крестики-нолики… Кому интересно – прошу под кат ->

    Идея, как всегда, родилась спонтанно. Как-то тихим осенним вечером я нарисовал на листике девять клеточек и предложил дочке сыграть в новую для нее игру. Сыграв несколько раз, я увидел, что есть неподдельный интерес … и тут Остапа понесло.

    Казалось бы, что проще продолжать рисовать клеточки на листке или скачать программу на телефон, но разве это интересно? Нет!

    Что хотелось получить:

    1. Компактный девайс на батарейке (всякие емкостные тачи и MIPI дисплеи отпадают сразу).
    2. Соответственно, зарядка от USB (желательно с индикацией).
    3. Минимум затрат по времени на плату и ПО (ну как обычно, в общем).
    4. Сенсорные кнопки.
    5. Интеллектуальный девайс с возможностью играть с контроллером (без второго игрока). Переключение на одного и двух игроков.
    6. Включение/выключение одной кнопкой и желательно не сенсорной, чтобы не происходило случайных включений.
    7. Корпус напечатать на 3D принтере + матовое стекло чтобы закрыть светодиоды.

    Обо всем по порядку.

    1. Итак, было решено взять контроллер STM32F100. На нем я вполне смогу реализовать простую логику игры для начала. На корпусе с 48 ногами получились занятыми все GPIO (без использования мультиплексоров и расширителей). Для каждого крестика и нолика используется по 8 светодиодов (соединенные параллельно), которые коммутируются полевиками (IRLML6401).

    Девайс состоит из двух плат, одна со светодиодами и тачкнопками, вторая с контроллером, зарядкой, аккумом и т.д. Соединяются разъемами с шагом 2мм, между платами стоит аккумулятор 1250мА.


    Рис. 1. Плата контроллера


    Рис. 2. Плата светодиодов

    Через несколько дней платы наконец пришли с производства. Меня не покидало чувство, что игра получится неудобной из-за размеров или тачкнопок. Забегая вперед скажу, что играть очень прикольно! Кнопки отлично срабатывают через оргстекло 1,5-2мм.


    Рис. 3. Сторона TOP платы контроллера и светодиодов


    Рис. 4. Сторона BOTTOM платы контроллера и светодиодов

    2. Схема зарядки самая простая, которую я тыкаю в подобные устройства.


    Рис. 5. Схема контроллера заряда.

    3. Все бы ничего, но компонентов оказалось больше, чем я ожидал, и паять я замучался. Вот что получилось после пайки.


    Рис. 6. Плата контроллера с компонентами


    Рис. 7. Плата светодиодов с компонентами


    Рис. 8. Плата светодиодов с компонентами со стороны тачкнопок.

    Первый, и пока единственный, вариант софта я сделал на if’ах и в одном бесконечном цикле. Просто и работает без багов. При выигрыше гаснет все поле и дважды моргает выигравшая комбинация.

    4. Сенсорные кнопки решил реализовать на микросхемах TTP223, я их уже использовал в одном из своих проектов. Они не требовательны к разводке и к наличию/отсутствию полигона под сенсором.


    Рис. 9. Схема включения тачкнопки.

    Их у меня было больше 9шт и поэтому я решил не использовать мультиплексор и повесить каждую кнопку на свой GPIO контроллера.

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

    6. Долго думал как по простому реализовать включение/выключение одной кнопкой. Самый быстрый и правильный вариант, на мой взгляд – это на транзисторах и используя два GPIO контроллера, которых у меня нет. Поэтому поставил микросхему CD4013BM. Включение производится нажатием около 1с, выключение – быстрым нажатием. Работает отлично.


    Рис. 10. Схема включения CD4013BM.

    Пин «OUT_KEY» идет на ногу включения (EN) DC/DC AP3418 (он делает 3V3). Таким образом потребление минимально.


    Рис. 11. Плата с микроконтроллером и аккумулятором.

    7. Корпус пока находится на стадии проектирования. Планируется просто аккуратненькая коробочка с матовым оргстеклом 1,5мм сверху.

    Когда я положил сверху несколько листов бумаги, чтобы посмотреть, как идет просвечивание, я понял, что это фиаско. Нет, просвечивает отлично, а вот разлиновки поля не видно. Поэтому на «Рис. 2.» видны установленные еще 4 дополнительных светодиода по углам центрального квадрата (их нет на моей спаянной плате). Если все получится как это выглядит у меня в голове, то если сделать фрезеровку с обратной стороне на оргстекле, то эти 4 синих светодиода дадут 4 тонких луча, которые образуют разметку поля, которая будет включаться при включении девайса. Если лучей не получится, то в любом случае будет видно фрезеровку.

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

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



    До новых встреч!

    UPD:
    Добавил цены при покупки компонентов на 1 устройство, может что-то забыл. Платы и сборку не считал. Что-то можно поменять на более дешевое.

    1. STM32F100C4T6B – 1шт – 130р.
    2. CD4013BM – 1шт – 16р.
    3. LTC4054 – 1шт – 5р.
    4. AP3418KTR – 1шт – 30р.
    5. IRLML6401TRPBF (Si2307DS) – 18шт – 11р.
    6. LP503759 – 1шт – 300р
    7. C191KRCT/ C191KGCT – 148шт – 436р.
    8. TTP223 – 8шт – 40р.
    9. Кнопка, разъем, пассив – куча – 100р.
    10. Платы
    11. Сборка

    Итого: 1068р.

    UPD:
    Ссылка на видео

    Средняя зарплата в IT

    111 111 ₽/мес.
    Средняя зарплата по всем IT-специализациям на основании 6 720 анкет, за 2-ое пол. 2020 года Узнать свою зарплату
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 46

      +3
      Шикарная реализация! Спасибо за статью!
        0
        Спасибо! Сам тащусь!
        +1
        Сначала долго смотрел на рис. 1 и пытался понять, что спрятано за серыми прямоугольниками? :)
          0
          )) Да — это аккум, торопился рисовать
          +2
          Прикольно.
          Но надо было поле побольше, крестики-нолики 3x3 игра не интересная, в ней всегда ничья
            +1
            Спасибо! Если запретить ставить крестик по центру, то становится интереснее)
              0
              Крестики ходят первыми? Тогда непроигрышный ход — крестик в угол. Дальше рассчитать несложно. =)
              0
              Да, классические крестики-нолики 3х3 неинтересны тем, что там есть готовый выигрышный алгоритм.
              Но реализация красивая и качественная.
                +1
                Не могли бы вы привести ссылку на выигрышный алгоритм? Я думал, что всегда можно свести к ничьей.
                  0
                  Если не ошибаться и просчитывать, то да, можно всегда свести к ничьей. Но если играть быстро или играть с ребенком, то интересно)
                    +1
                    Или, как в моем случае, когда играют два ребенка)
                0
                Если не секрет, в чем проектировали плату и писали софт?
                  +1
                  Не секрет. Платы в альтиуме, софт в иар
                  0
                  Тут находится редактированный комментарий, во избежании недопониманий.
                  Отличная работа, нет слов, ооочень хочу повторить, аффтар молодец, ждем корпус.

                  А это первые мысли в голове после прочтения
                  Ну шож ты делаешь-то в преддверии нового года!(ничего что на ты?) И без того глаза разбегаются чего бы сделать/купить… У меня в голове теперь только:
                  дай...



                  Заверните две!!!


                  Кстати,
                  Если лучей не получится, то в любом случае будет видно фрезеровку.

                  если и не получится, можно использовать световод, в мышках работает отлично, раз уж все равно фрезеровать собираешься.
                    0
                    Спасибо! Корпус будет!
                    +1
                    игрушка получилась очень интересной
                    (Ориентировочные) цены компонентов и производства бы ещё озвучить для желающих повторить.
                      0
                      Завтра напишу. Забыл
                        0
                        За верхнюю границу можно принять цены из каталога Чип и Дип. )
                          0
                          Дописал в статье про цену
                          0
                          Идея интересная. Сделайте видео игры, пожалуйста.

                          Не знаю, какой у вас опыт, но я с некоторого времени перестал делать термобарьеры для USB-разъемов. Уж очень они легко отрываются с платы, если пользователь попался сильный и не очень зоркий/аккуратный.
                          И… вы когда-нибудь перестанете оставлять острова на платах? Ну не серьезно же.
                            0
                            На падах USB разъема стоят переходные отверстия. Уже очень давно так делаю. Для переходных 0,3-0,7 припой не перетекает. По поводу островков я подумаю)))
                              0
                              Вот видео игры. На фото и видео светодиоды выглядят тусклее. В реале намного лучше.
                              www.youtube.com/watch?v=yTMTCbUEIdI&feature=share
                                0

                                Подробнее про острова?

                                  0
                                  Имеются ввиду части полигонов никуда не подключенные.
                                +1
                                Отличная затея и реализация, спасибо
                                  0
                                  Спасибо!
                                  0

                                  Супер!
                                  P.S.если не ограничивать себя ардуино, много интересного можно сделать :)

                                    0
                                    Спасибо!)
                                    0
                                    Здравствуйте, визуально красивый проект, разделяю вашу радость от его создания, потому что сам делаю нечто похожее! У меня вопрос шкурного характера — где вы заказывали платы? Они напомнили мне мой старый калькулятор из начала 90-х своей цветовой гаммой. Я знаю что платы можно заказать в куче мелких производств/Китай/сделать утюгом и т.д. но мне интересно где и наверно почему плата имеет такой «бронзовый» оттенок. Или это камера так цвет изменила?
                                      0
                                      Платы заказывал в резоните. Просто к фото применен фильтр «Теплый яркий».
                                        0
                                        Ну вот, вся магия пропала =(
                                      +1
                                      Шикарная самоделка. Встречал тут много таких, которые не смогу повторить, но с радостью купил бы.

                                      Может, стоит устроить маленькую фирмочку, которая бы выпускала такие штуки?
                                      Могу помочь с корпусами и печатью/литьём в силикон корпусов.
                                        0
                                        Спасибо!
                                        По одной штуке будет дорого. Нужно сразу 20-30 делать, чтобы снизить себестоимость. Для этого нужны заказчики.
                                        +1

                                        Очень круто! И без ардуино)

                                          0
                                          Спасибо!
                                          0
                                          Замечательно получилось!
                                          Интересно, дорого бы вышло заказать платы уже собранными, и есть ли вообще такая возможность?
                                            0
                                            Спасибо!
                                            Смотря сколько штук
                                              0
                                              Не смотрели на предложения по изготовлению пластиковых корпусов на Alibaba?
                                            0
                                            Просто замечательно! Мне понравилось
                                              0
                                              Спасибо!)
                                              0
                                              Получилось красиво! И конечно, хорошо бы дальше развить эту электронную игру, добавив режим игры человека с компьютером.
                                              В прошлом веке когда-то собирали подобный автомат на куче релюшек, например, по книге "Юный кибернетик" (Ю.М.Отряшенков, 1978, Дет.лит.), в кот. есть глава «Кибернетическая машина, играющая в крестики-нолики» (в школьные годы эта книга была одной из главных моих книг). Для упрощения алгоритма беспроигрышной игры (и уменьшения количества используемых в схеме реле) машина первой ставила в центральную клетку крестик.
                                                0
                                                Спасибо!
                                                Игра с компьютером в процессе)
                                                0
                                                Спасибо, интересно. А никому не попадалась реализации игрушки «Электроника», где волк яйца ловит?
                                                  0
                                                  Великолепная работа и классная идея!
                                                  Не слишком ли ярко? или фото так передаёт? Ждём фото с корпусом, там же должно быть рассеяние по фигурам. Есть ли в корпусе препятствия свету, чтобы не размывались световые контуры фигуры?
                                                  Крестики-нолики была у меня первой игрой, я писал ещё под DOS. Интересно бы сравнить алгоритмы AI, вы планируете выкладывать их?
                                                    0
                                                    А чем закончилось?
                                                    Тоже TTP223 использую и подумываю также сделать с подсветкой в устройство очень отдалённо напоминающее DJ контроллер. Но пока всё в режиме неспешного формирования ТЗ у коллеги и обдумывание вариантов. У нас правда роса может быть иногда :)
                                                      0
                                                      Еще не закончилось) Переделал все на одну плату. Сделал корпус на 3D принтере. Пока думаю, что делать дальше.
                                                      TTP223 работают отлично! С росой может быть плохо)

                                                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                    Самое читаемое