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

Потом эти данные отправляются на архаичный сервер Dell OptiPlex 3020 (примерно 2014 года), времён ещё когда Делл был Деллом. Мы их до сих пор закупаем, кстати, для всех 12 Бруклин Боулов.

И вот нам очень хочется выгружать данные с кегельной машины (пинсеттера) в приложение на телефоне игрока.

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

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

Сейчас расскажу, в чём мы застряли)

Вот так выглядит сзади ряд машин:

Вот видео, чтобы было понятнее, как работает машина-пинсеттер:

Архитектура такая:

  • Есть дорожка для боулинга. Дорожка смазана маслом. По ней гоняют шары.

  • В конце дорожки стоят кегли.

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

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

  • Есть ещё попытка выбить остальные.

  • Затем рамка снова опускается и считает оставшиеся кегли.

  • Специальная рельса сбивает оставшиеся и сбрасывает назад.

  • Сзади их подбирает система автозарядки и тащит вверх машины, а оттуда заряжает в пинсеттер — ту самую рамку с дырками.

  • Рамка с дырками опускает кегли в дырки и тем самым выставляет их заново.

В машине одновременно 23 кегли, чтобы не приходилось ждать полного цикла подъёма и раскладывания кеглей — пока одни внизу на дорожке, вторые уже заряжаются. Ещё 3 дополнительных кегли — это запас на разные застревания и проблемы. Число подбиралось по статистике разного рода отказов и является магической константой, оптимумом функционирования машины.

В большей части боулингов используются механические машины Brunswick. Делл 3020 используется там как сервер управления администратора — Front Desk.

Вот такой
Вот такой
Это экраны
Это экраны

 Сама машина выдаёт наружу по кабелю сигналы датчиков гребёнки — той самой матрицы с дырками. Машина не оцифровывает сигнал, это делает блок NextGen, который уже превращает её в логику игры.

20 лет назад не было IoT, MQTT или стандартизированного Ethernet для промышленных машин. В результате блоки NextGen объединяются в гирлянду по проприетарному последовательному интерфейсу (токовая петля). Данные летят в сыром hex. Документации нет. Сервер постоянно опрашивает блоки, обновляет статус игры, отправляет счёт на подвесные мониторы над дорожками.

Это приходит в сервер
Это приходит в сервер

Почему оттуда сложно тащить данные — есть три причины.

  • Во-первых, Brunswick (и их конкурент AMF) очень не хотели, чтобы кто-то, кроме них, ставил какие-то апргейды. Они зарабатывали на продаже дополнительных модулей. Чтобы выводить результаты на сайт, показывать их в баре или интегрировать с клубными картами — надо купить дополнительную лицензию.

  • Во-вторых там полный легаси стек. Может встретиться крайне интересный набор блокировок FoxPro (база может блокироваться при записи софтом боулинга, и если пытаться читать файл во время игры, софт можно отвалиться). Есть Sybase SQL Anywhere — ей нужны драйвера ODBC, а логины и пароли к которой зашиты в бинарниках Brunswick.

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

Мы попробовали следующие подходы:

  • Читать базу данных на Dell 3020

  • Читать показатели НекстГена

  • Ставить камеру над дорожкой и распознавать состояние игры.

  • Переписывали NextGen.

Не пробовали OCR с монитора через HDMI-сплиттер, эмулировать принтер (там печатаются результаты игры от администратора на Dell), сетевой сниффинг в других местах.

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

Собственно, я подозреваю, что есть способы сделать это правильнее, но это пока единственный работающий. Если вдруг у вас есть идеи — стучите сюда в комментарии или в rakhmeev@brooklynbowl.ru, такое оборудование стоит по всей стране, можно много кому продать. И уж точно это надо во всех 12 наших боулингах по России )

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


  1. Arhammon
    17.04.2026 09:55

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


    1. Artem_Rakhmeev Автор
      17.04.2026 09:55

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


      1. Arhammon
        17.04.2026 09:55

        Я в общем-то про тоже самое только без модного распознавания - что-то типа лидара присобаченного где-нить сбоку, который смотрит есть препятствие по координатам итп.


        1. xSVPx
          17.04.2026 09:55

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

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

          Но лучше, конечно, снимать инфу с тех датчиков, что уже есть... Вряд ли там что-то сильно редкое используется.


          1. Arhammon
            17.04.2026 09:55

            Я мельком глянул(может что-то пропустил) одиночные ИК и лазерные датчики вроде не то чтоб дешевые и лидар от пылесоса с расковырянным энтузиастами протоколом возможно экономически целесообразнее...


            1. xSVPx
              17.04.2026 09:55

              ИК какие-то копеечные довольно. Единицы долларов при измерении максимум полметра-метр.

              Но у них размер окна миллиметр. Если там грязюка...

              Что выбирать аппаратно имеет смысл думать только если нельзя с имеющихся данные снять.


              1. xSVPx
                17.04.2026 09:55

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

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


      1. Xexa
        17.04.2026 09:55

        В 2000+ делал на Атмеге контроллер панели и пультов кнопок рулевых, а на другой контроллер нагрузки(лампы/зажигание). И всё это на мотоцикле Урал. Неделю назад заводил его. Ни каких проблем из-за вибрации и накопленной пайки не возникло с контроллерами за десяток тысяч км в разных климатических/дорожных условиях.

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

        Зачем усложнять то, что делается легко и просто? Особенно сейчас при наличии множества готовых компонент в ближайшем "чипдипе" под контроллеры


        1. xSVPx
          17.04.2026 09:55

          Контроллеру то наверняка ничего не будет. Яб больше о пайке беспокоился. Но согласен, что в боулинге вряд ли могут быть и с этим серьезные проблемы. Всеж это не НАСА, не ступень ракеты итд итп.

          Ну отвалится что-то через пяток лет, починить придется. В любом случае это как-то все надо поддерживать.


          1. Artem_Rakhmeev Автор
            17.04.2026 09:55

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


            1. yudelex
              17.04.2026 09:55

              Не просто простой вариант, а именно простую интеграцию.


            1. xSVPx
              17.04.2026 09:55

              Я вам буквально бесплатно написал куда можно двигаться. Можно ли это превратить в продукт и как "по фото не понять". То, что вы готовы платить деньгами - это отлично, вопрос всегда в их количестве.

              Напишите в лс хотя бы где вы находитесь. Удаленно вряд ли возможно разобраться с железом.

              Хоть фото того что уже стоит (датчиков) пришлите. Хоть документацию. Хоть что-то.


              1. xSVPx
                17.04.2026 09:55

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


  1. Fqyeh29
    17.04.2026 09:55

    Я бы в этом случае смотрел в сторону "OCR с монитора через HDMI-сплиттер" - как по мне самое простое решение в этом случае.

    Там даже не столь OCR сколько просто анализ Паттернов и цветов. И не надо "влезать" в оборудование. Для анализа понадобится небольшой сервер.


    1. Artem_Rakhmeev Автор
      17.04.2026 09:55

      А вы можете подсказать специалистов? Мы не знаем, за что хвататься, компетенций в команде нет, а три предыдущих попытки в молоко, как видите.


    1. Xokare
      17.04.2026 09:55

      В зависимости от картинки, но, в самом простом случае вполне хватит opencv, raspberry pi и камеры с алиэкспресса


      1. I_I_V
        17.04.2026 09:55

        Opencv, raspberrypi с 1 шилдом для видео ввода. Остальное потом выводить хоть куда по сети.


  1. MEGA_Nexus
    17.04.2026 09:55

    Вы попадаете мячом по кеглям, срабатывает оптический датчик прохождения мяча.

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

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

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


    1. Artem_Rakhmeev Автор
      17.04.2026 09:55

      Если ставить внутрь — проще собрать свою машину учёта. Ставить снаружи — камеру с распознаванием видеопотока — получилось неточно, а дальше чтобы прямо совсем точно с Йолой — оказалось, что экономически правильнее с дублирующей машиной. Либо мы что-то не так делали.


  1. xSVPx
    17.04.2026 09:55

    Сама машина выдаёт наружу по кабелю сигналы датчиков гребёнки — той самой матрицы с дырками. Машина не оцифровывает сигнал, это делает блок NextGen, который уже превращает её в логику игры.

    Завести параллельно в свой МК оцифровать и дальше делать то, что нужно. (Брать сырые данные до некстгена и скармливать их ацп итп)

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

    ЗЫ. Читать с монитора тоже скорее всего можно. Вам это вообще зачем ? Если чисто показать, то показывайте им в приложении скриншот просто :)).


    1. xSVPx
      17.04.2026 09:55

      ЗЫ. А скорее всего надо просто всё выкинуть и переделать на мк. Без легаси. Вдлинную будет дешевле. 100%. Не исключено что какой-нибудь esp32 всё это легко потянет.(т.е. в идеальном случае все эти сервера можно заменить микроконтроллером за 5$)


      1. DGN
        17.04.2026 09:55

        Не подскажете микроконтроллер за 5$ с HDMI?


        1. xSVPx
          17.04.2026 09:55

          Даже и не знаю куда в hdmi вы собрались сотовый телефон подключать...


    1. Artem_Rakhmeev Автор
      17.04.2026 09:55

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


      Про датчики — у нас нет компетенций в команде, если вы знаете, кто это делает, подскажите, пожалуйста.


      1. xSVPx
        17.04.2026 09:55

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

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

        Не исключено, что вам надо целиком от делла отказаться. Вообще. Иметь отдельно мониторы какие-то любые "киоски" и отдельно относительно простой МК, который обрабатывает один аппарат и выдает в нужном вам виде странички в html для этих киосков, данные для приложения итд итп. Т.е. вообще потихоньку отползать от этого древнего железа. Это ныне вполне реально и будет надежнее скорее всего(возможно еще нужен отдельный любой сервер для обработки каких-то соревнований итп, я честно не в теме боулинга совсем как там у вас устроено всё). Но сколько тут работы зависит от многого.

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

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


  1. propell-ant
    17.04.2026 09:55

    Под виндой есть такая штука - Volume Shadow Copy. Можно попробовать делать снепшоты почаще, и читьть базу из снепшотов (можно даже копировать ее в отдельную папку). Основная прога просто не увидит ваших обращений. Если в снепшоте установлены блокировки - берете предыдущий.


  1. yudelex
    17.04.2026 09:55

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

    А какие у вас варианты? Реверсить проприетарное ПО и пытаться соорудить для него костыль выгрузки данных? Так это еще сложнее чем сниффить обмен по токовой петле своей железкой и потом делать что угодно с этими данными.


  1. yudelex
    17.04.2026 09:55

    Если есть вывод картинки всех счетов и номеров дорожек, то скринте и нейросеткой ищите значения, потом в своем ПО будете их использовать. Тут допжелезки не потребуются.


    1. I_I_V
      17.04.2026 09:55

      Зачем нейронкой дергать? Проще. Тут все положения всех цифр известны наверняка. Задача для чистой opencv с простейшей логикой по определенным точкам в кадре.


  1. digrobot
    17.04.2026 09:55

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


  1. AllExK
    17.04.2026 09:55

    А на самом Dell, насколько увидел, стоит Win.

    1)Какая из версий?

    2) К нему подключен монитор? На мониторе отображается вся нужная Вам информация, на одном экране?

    3) Если на предыдущий вопрос ответ - "да", можно попросить скриншот/фото как это выглядит?)


  1. sim2q
    17.04.2026 09:55

    кондёрам на материнке кирдык.....

    Скрытый текст


    1. Valet2
      17.04.2026 09:55

      Абсолютно! Тоже хотел сказать


  1. ktod
    17.04.2026 09:55

    На сервере делл можно запустить свой софт параллельно со штатным?


  1. drandulet2024
    17.04.2026 09:55

    В 90-х на американ ком оборудовании для боулинга была реализация ПО под dos, кегли определяло по аналоговой камере. Там просто кадр делился на точки и выставлялись квадратики в кадре где стоят кегли. Камера чёрно-белая. Если в квадратике белого больше чем чёрного считалось что кегля есть, если квадрат тёмный кегли нет. В ё просто. Массив кадра довольно не большой, нужна древняя аналоговая камера и ардуино, прямого контакта с механизмом не нужно. Главное правильно установить камеру.


  1. Hemml
    17.04.2026 09:55

    Как я понял, там есть какой-то электронный блок, который обрабатывает датчики и потом посылает пакет по пропиетарной шине на управляющий комп. Подключите логический анализатор с записью к шине, потом (самая приятная часть работы) просто играете в болулинг, записывая на бумажке сколько кеглей сбито каждым броском. Под конец рабочего дня, усталые, но довольные, снимаете запись логического анализатора и ищете повторяющиеся пакеты (или какая-то часть в них будет повторяться) и сверяете с бумажными записями о количестве кеглей. Если найдете совпадение, то есть, скажем, для трех кеглей 7-й байт в пакете всегда был 3, а для 2-х кеглей 2, то всё, задача решена. Ставите на шину простое устройство, которое только слушает, оно ловит пакеты, выбирает 7-й байт и шлет пуши в телефон клиента. Но, разумеется, для отладки и тестирования нужно будет еще 2-3 дня поиграть всей командой!


    1. vdudouyt
      17.04.2026 09:55

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