Расскажу про еще одно устройство, которое довелось сделать по работе больше двух лет назад. Идея простая - есть круглое поле, по которому можно двигать фишку, по специальным прорезям. Для решения задачи нужно пройти фишкой правильный маршрут (загаданный в другом месте). Если пройден неверный маршрут, то фишка сама возвращается в начальное положение. При этом пройденный маршрут подсвечивается красным, а все поле - синим, символизируя волнующееся море.
Click to view
Эта задача была реализована уже больше двух лет назад и являлась для меня одной из первых подобных задач. Сейчас же их приходится делать пачками :)
Изначально эта задача была дана другим "коллегам", которые попытались ее реализовать. Вот, что они сделали:
Всего в игре нужно было подсвечивать поле 56-ю светодиодами и считывать 41 датчик положения фишки. Конечно было бы удобно разместить и светодиоды и датчики на одной большой плате. Да только вот диаметр поля был около 30 сантиметров и сделать плату такого размера самостоятельно представлялось мало реальной задачей, а заказывать вышло бы очень дорого и не каждая фирма вообще за такое бралась (по словам "коллег"). Поэтому они сделали тот полуфабрикат, что на фото выше, из составных плат.
Почему полуфабрикат? Потому что некоторые детали не были продуманы толком при разработке, что привело бы к существенной доработке платы паяльником и навесным монтажом в случае попытки ее реально использовать. Также была перепутана ориентация датчиков холла, из-за чего они были загнуты зеркально и располагались с приличным смещением от необходимого положения. От всех этих плат, как видно по фото шел адский клубок ужасных шлейфов, который предполагалось подключить к управляющей плате. Управляющая плата тоже была сделана. Фото ее искать лень, но она была мертворожденной изначально. Например дорожка питания шириной 0.3-0.4 мм идущая кругом вокруг всей платы, проходя через мощные транзисторы, заходящая одним концом петли с одной стороны микроконтроллера, другим концом петли с другой стороны микроконтроллера. Было много и других прелестей. Мне предлагалось "всего лишь" написать прошивку к этой плате, ибо авторы платы делать этого не умели :))
Данное счастье, разумеется, было отправлено в помойку и был разработан собственный вариант, куда более продуманный. Сделать большую плату на все поле было действительно проблемой, поэтому идея состояла в том, чтобы разбить ее на части, но сделать их одинаковыми. Разбить круг по вертикали/горизонтали на четыре одинаковых сектора не получилось бы, потому что на линиях разделения плат были и светодиоды и датчики. Поэтому у меня появилась идея разбить плату на части вот таким образом:
При таком разбитии плата получалась уже сравнительно небольшого размера, около 13х13 сантиметров, а на линии разделения не попадали датчики и светодиоды. На плате были использованы адресуемые светодиоды WS2812 и прямо на плате были установлены сдвиговые регистры для считывания значений с датчиков холла. Более того, плата была сделана таким образом, чтобы она могла соединяться по сути сама с собой, образуя круг, при этом в нужных местах на торцах были сделаны площадки для спайки плат между собой. Всего между платами было по шесть соединений. Благодаря использованию сдвиговых регистров и адресных светодиодов получалось, что ко всему большому полю требовалось подключить всего 6 проводков. Это было в разы надежнее, чем целая охапка шлейфов, ибо именно провода и их контакты чаще всего отказывают в подобных устройствах. Первый вариант сегмента платы:
А вот и весь круг полностью в сборе. Так как по центру должен быть датчик, а участка платы там нет - был просто запаян геркон на ножках. Сейчас бы я уже сделал по другому. Впрочем этот геркон работает уже два года без проблем и по сей день.
На фото ниже плата установленная в основание устройства. Туда же был поставлен оптический датчик положения внешнего колеса, а также шаговый двигатель, вращающий внешнее колесо.
В целом, устройство с точки зрения электроники получилось очень похожим на устройство про которое я рассказывал в
прошлом посте. Но, конечно, сейчас я делаю все намного аккуратнее и системнее, во многом благодаря опыту полученному на первых устройствах :)