Про электронные шахматные доски

от автора

Картинка Freepik

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

Наверное, даже не будет преувеличением сказать, что этот девайс в электронном исполнении имеет не менее культовый статус, чем разнообразные роботы по сборке кубика Рубика.

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

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

Итак, что интересного есть в этой области для повторения самостоятельно?

Если мы попытаемся произвести предварительный анализ великого множества разнообразных самодельных устройств, разработанных для роботизированной игры в шахматы, то обнаружим, что значительное их число представляет собой медленно работающие и сильно шумящие устройства портального типа. В таких устройствах для перемещения шахматных фигур используется робот-манипулятор, способный двигаться в трёх координатах (XYZ): как по самой доске, так и для поднятия и опускания фигур во время перемещения. На мой взгляд, это абсолютно избыточно. Зачем тратить время на подъём и опускание фигуры (а ведь это ещё и сопровождается шумом двигателей), если можно было бы просто сделать шахматную доску с клетками, значительно превышающими размеры игровых фигур?

Что бы это дало? Фигуры можно было бы свободно перемещать по доске, объезжая те, которые стоят на пути и мешают, без необходимости поднимать и опускать саму движущуюся фигуру!

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

Примеры подобных конструкций можно увидеть ниже:

Кстати говоря, последний вариант робота работает на базе связки из компьютера и микроконтроллера Arduino Mega 2560, где микроконтроллер получает команды от компьютера, на котором крутится опенсорс java-фреймворк MyRobotLab, специально предназначенный для тяжёлых задач робототехники (чтобы переложить вычислительные задачи на компьютер) и управления микроконтроллерами. Так что при желании вы тоже можете ознакомиться с возможностью его использования в своих проектах.

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

Проект относится к 2013 году, жёстко тормозит в процессе распознавания голоса и, в настоящее время, наверняка, может быть сделан в более расторопном варианте:-)

Более подробно о технической стороне проекта можно почитать вот здесь.

Судя по сказанному, у читателя может сложиться впечатление, что «всё плохо» и никто не додумался до более совершенных конструкций.

Тем не менее, уже в 2010 году существовали роботизированные манипуляторы, которые кардинально решали эту проблему, перемещая фигуры с применением роботизированной руки (к сожалению, самописная python-библиотека этого проекта более недоступна в сети):

Тем не менее, не стоит об этом переживать, так как существуют гораздо более современные варианты подобных устройств.

Например, весьма интересно следующее устройство, построенное на базе Raspberry Pi:

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

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

Подробное техническое описание этого проекта робота можно найти вот здесь.

Для тех, кому «Raspberry Pi сложно», существует условно более «простой» вариант, построенный на основе Arduino Mega 2560.

Однако, слово «простой» я не случайно взял в кавычки, так как механико/электронная часть проекта, к сожалению, очень сложна в плане трудоёмкости изготовления, и набраться духу собирать такое можно «только из любви к искусству» 😀

Видео проекта:

Подробное описание проекта можно найти здесь.

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

Тем не менее, как выше я уже говорил, ещё при просмотре первых проектов у меня зародилась мысль о модификации стандартной шахматной доски (чтобы игровые фигурки были существенно меньше по диаметру, чем квадрат доски, и фигурки могли объезжать друг друга — т. е. чтобы конструкция доски и фигур предоставляла для этого манёвра место), и я никак не мог поверить, что никто до этого ранее не додумался!

Но я не терял надежды найти единомышленников и, после долгих поисков, мне всё же удалось обнаружить пару проектов, где эта идея была реализована.

Итак, первый проект интересен тем, что его автор взял за основу идею из книги про Гарри Поттера, где волшебные шахматы сами осуществляли ходы, а команды им отдавали голосом:

Тем не менее, механическая часть проекта весьма проста, лаконична и представляет собой схему стандартного XY-плоттера, на каретке которого расположен маленький электромагнит на 5 в (кстати сказать, на AliExpress такого добра полным-полно, по цене примерно в районе 300 руб), который перемещает игровые фигурки, в донышко которых встроены магнитики; а в качестве «мозга» системы используется микроконтроллер Arduino Uno, вставляющийся в CNC Shield:

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

В качестве ещё одного проекта из этой области можно назвать поразительно проработанный (даже шахматные фигурки выточены на ЧПУ! О_о) в деталях проект, на практике реализующий ту же самую идею с большими промежутками между фигурами:

Выглядит очень хорошо, работает быстро и практически бесшумно, а если посмотреть с 5:20, то можно заметить, что механическая его часть построена тоже на принципе XY-плоттера, где в качестве направляющих используются стальные калёные рельсы типа Hiwin.

При этом автор не сразу пришёл к такому варианту, и изначально рассматривалась версия механического привода с так называемым «scara-механизмом»:

А в первом видео проекта выше, с 11:04, можно увидеть один из любопытных примеров работы алгоритма: во время движения, если того требует ситуация, фигурки перемещаются по границам клеток. Таким образом, для движения фигурки всегда находится место, и они не сталкиваются!

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

Проект, как я уже говорил, весьма проработанный, например, автор сначала отрисовал от руки (!), затем смоделировал в CAD и многократно распечатал на 3D-принтере игровые фигурки, чтобы оценить их реальную геометрию в жизни, а не только на мониторе (пощупать, так сказать, своими руками).

А уже после этого выточил их с помощью 5-осевого ЧПУ станка:

В качестве мозга устройства используется микроконтроллер ESP32, а также весьма усложняющий проект блок элементов, на мой взгляд, — 500 (!) датчиков Холла, расположенных под поверхностью игровой доски. Информация с этих датчиков считывается с помощью мультиплексора HC4067.

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

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

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

У проекта есть собственный сайт, а также github автора, где можно поизучать исходники проекта.

Кроме того, описание процесса сборки и множество других технических подробностей можно найти на страничке проекта.

Насколько удалось понять по описанию, этот проект позволяет разным людям играть через интернет (в том числе), что натолкнуло и меня на определённые мысли 🙂 (об этом будет ниже).

После ознакомления со всем этим поистине титаническим трудом, возникает естественный вопрос: зачем оно было надо и стоило ли оно того?!

Однако все вопросы на корню пропадают, после того как узнаёшь, что проект вышел на Кикстартер с целью собрать 6000$, где в итоге собрал аж 1912092$ (на момент 8 декабря 2024г.).

Хорошо, когда хобби приносит деньги:-)

В целом, в ходе ознакомления со всеми этими проектами меня не покидало смутное ощущение что «чего-то не хватает».

И вот этот последний проект как раз полностью попадает в эту нишу: позволяет играть физически удалённым друг от друга людям через интернет!

Только он несколько сложноват, как на мой взгляд, так как это всё можно реализовать гораздо проще.

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

Такой способ позволяет избежать зависимости от ip-адреса конкретного устройства и необходимости его хоть как-нибудь отслеживать: мы просто оставляем для этого устройства сообщение во внешней сети в определённом месте.

Устройство самостоятельно мониторит это место и выполняет команду, если она есть. Всё просто…

Такое место называется mqtt-брокером, конкретный «чат» для передачи сообщений — топиком, а протокол, по которому эти сообщения передаются, — mqtt-протоколом.

В интернете существует великое множество бесплатных mqtt-брокеров, где некоторые из них имеют браузерный клиент, который позволяет прямо из браузера отправлять сообщения в определённый топик (что избавляет от потребности создавать свой сайт, некий GUI, как то связывать сайт и устройство в локальной сети…)

Таким образом, как могла бы выглядеть, в теории, такая система, для удалённой игры в шахматы через интернет: у одного из игроков стоит доска, собранная на базе микроконтроллера esp32, которая подключена по wi-fi к роутеру и мониторит определённый топик на определённом mqtt-брокере.

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

Игроки играют в шахматы, оставляя сообщения в топике, а esp32 отслеживает эти сообщения и двигает фигуры.

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

Чтобы избежать такого, можно отправлять сообщения в топик, добавляя к ним некий префикс, о котором заранее договорились оба игрока, например: cNhf35_A1A2.

Где символы до знака подчёркивания — это секретный префикс (придумываем его из головы), который знают только два игрока, а после знака подчёркивания — непосредственно описание хода фигуры (как видно, здесь мы ходим с А1 на А2).

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

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

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

Однако, потребуется его ещё видоизменить, так как код рассчитан на работу с коллекторными двигателями, и, кроме того, потребуется туда добавить ещё работу с 2 шаговыми двигателями (а работу с коллекторными удалить).

В целом, можно сказать, что код там написан практически на процентов 80%, так что желающие вполне могут испытать свои силы, взяв за основу этот код.

В качестве механической схемы, думаю, имеет смысл использовать кинематику H-Bot, принцип действия которой показан ниже, с 6:22:

В качестве заключительного слова хочу отметить, что, на мой взгляд, для целей подобной игры, а также для удешевления устройства в целом, совершенно нет необходимости собирать монструозные конструкции размером «метр на метр на метр». Подобное устройство вполне может быть компактным, с размерами не больше длины и ширины смартфона (или даже меньше). Это позволит изготовить многие детали из доступных материалов, например, приобретённых в ближайшем хозяйственном магазине, и/или распечатать их на небольшом домашнем FDM 3D-принтере.

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

Кроме того, их можно довольно массово изготовить на фотополимерном 3D принтере в очень высоком качестве.

Для примера, скажу, что шаговые двигатели для такого размера будут стоить на алиэкспресс где-то в районе 30-50! руб за одну штуку (я покупал себе, поэтому в курсе).

И даже более того: если говорить об устройствах такого размера — даже собирать практически ничего не надо!

Например, я в своё время брал на алиэкспресс шаговые микродвигатели с планетарным редуктором и винтовой передачей. И стоили они мне…87 рублей за штуку! О_о (сейчас немного дороже будут).

На фото ниже я показал их на фоне спичечного коробка, а также указательного пальца — для масштаба:

Таким образом, в таких микро-масштабах скорость перемещения ползунка такого привода будет вполне быстрой и удовлетворять всем требованиям. Печатаем доску и фигурки на фотополимерном принтере, подключаем каждый привод к самому дешёвому драйверу для двигателей, далее -к esp32 и выводим в интернет через wi-fi/mqtt. Вуаля! 🙂

Такого, насколько я знаю, ещё не было. Почему бы этому и не быть?

По крайней мере, уникальность идеи, мне кажется, привлечёт достаточно большой интерес пользователей — мол «это у кого-то там чисто виртуально, а у нас: всё по-взрослому — только механика и ничего кроме механики. Вход в игру — 100500 кредитов. Здесь играют только серьёзные парни (и девушки)»:-)

P.S. В качестве альтернативных идей: а что, если сделать микро-кегельбан? Или микро-бильярд? Или даже микро-пошаговую стратегию? Ладно, заканчиваю, а то сам зажгусь и побегу делать :-))

© 2024 ООО «МТ ФИНАНС»

Telegram-канал со скидками, розыгрышами призов и новостями IT 💻


ссылка на оригинал статьи https://habr.com/ru/articles/864836/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *