Розумний кікер своїми руками

Розумний кікер своїми руками

Щоб зробити розумний настільний футбол, нам знадобиться:

  • звичайний дурний настільний футбол - 1шт.,
  • контролер Arduino - 1шт.,
  • лазер - 2шт.,
  • фоторезистор - 2шт.,
  • кілька зацікавлених людей,
  • вільні вихідні.

У нашій компанії більшість співробітників не проти зіграти партійки в настільний футбол. Швидше навіть дуже люблять і, зрозуміло, однією партією справа не обмежується. Тому на обіді і ввечері біля столу збирається натовп чекають своєї черги айтішників.

І ось, одного разу, коли плутанина з чергою всім порядком набридла, нам в голову прийшла ідея:

  • А давайте зробимо електронну чергу!
  • І щоб стіл сам голи вважав!
  • І міг визначити хто з нас крутіше!
  • І смски нехай надсилає, що звільнився!


І всі розбіглися гуглити.

У п'ятницю ввечері група однодумців-футболопоклонніков зібралася біля винуватця торжества - столу - на нараду. Поділилися нагугленним, визначилися з основними вимогами і технологіями, розподілили ролі, покрутили в руках випрошений у начальства мікроконтролер.

Розумний кікер своїми руками

Насамперед в суботу вранці розгвинтити стіл. Щоб навчити його відстежувати забиті голи, причепили 2 лазера і 2 фоторезистора на ворота і контролер Arduino посередині. Систему придумали таку: коли в область між лазером і фоторезистором потрапляє м'яч, контролер фіксує зміна напруги на сенсорі. Так, зміна напруги є наслідком зміни опору на фоторезистори. Принципова схема зображена нижче.

Розумний кікер своїми руками

Незважаючи на граничну простоту системи, довелося все ж зіткнутися з деякими проблемами. По-перше, зміна освітлення в приміщенні з футбольним столом могло викликати хибно-позитивні спрацьовування датчиків. По-друге, особливо сильні вібрації столу під час гри могли привести до механічних пошкоджень компонентів системи.

Першу проблему усунули перекалібровка фоторезистора при кожному старті гри. Друга зважилася ще простіше - c допомогою викрутки, суперклею і, звичайно ж, синьою ізоляційної стрічки все компоненти системи були надійно зафіксовані.

Розумний кікер своїми руками

Розумний кікер своїми руками

Розумний кікер своїми руками

Розумний кікер своїми руками

Паралельно почали роботу над програмною складовою проекту. Насамперед конкретизували вимоги:

  • Режими гри 1x1, 2x2.
  • Рівні гравців.
  • Колекціонування досягнень гравців.
  • Ведення особистих і командних рейтингів.
  • Звуковий супровід гри.

Треба сказати, нам дуже пощастило, що в настільний футбол любить різатися і наша креативна дизайнер. Тому до обіду у нас на руках вже були симпатичні мокап. Забігаючи вперед, покажемо що з них вийшло:

Розумний кікер своїми руками

Розумний кікер своїми руками

Розумний кікер своїми руками

Розробка велася паралельно за трьома гілками:

  1. Клієнтська сторона - Angular.js, Bootstrap.
  2. Створили основні сторінки додатка, оформили дизайн, реалізували взаємодію з сервером через Rest API і Socket.io. Адаптували верстку під мобільні пристрої.
  3. Серверна сторона - Node.js, Socket.io, MongoDB.
  4. Створили структуру проекту, розробили модель даних, налаштували взаємозв'язок між клієнтом і сервером, розмежування з прав доступу. Реалізували логіку з розрахунку статистики, колекціонування досягнень, ведення рейтингів. Зробили оповіщення клієнта про виникаючі події за допомогою Socket.io.
  5. Взаємозв'язок між Arduino і сервером.
  6. Написали прошарок між контролером і сервером.


Тут треба зауважити, що ми вирішили поєднати приємне з корисним. Тому вибирали технології малознайомі учасникам проекту, щоб заодно прокачати Скіл.

Звичайно ж, було б правильніше організувати бездротове з'єднання з іншими Adruino і сервером, використовуючи wi-fi або bluetooth модулі для взаємодії з сервером. Або навіть використовувати Raspberry Pi як сервер для нашого застосування. Але у нас не було ні першого, ні другого, ні третього, зате був компот старий комп'ютер, який все ще міг послужити нам в якості сервера. Тому наш сервер з'єднаний зі столом за допомогою USB кабелю, і все спілкування між Arduino і сервером відбувається через COM-порт.

Arduino отримує з порту сигнали про включення / вимикання лазерів і, в свою чергу, відправляє сигнали про зафіксовані голах на сервер.

Контролер на серверній стороні:

Розумний кікер своїми руками

Тут моніторимо порт, до якого підключений Arduino. При отриманні команди, генеруємо ту чи іншу подію. Для запуску і зупинки Arduino у нас є дві спеціальні функції start і stop, які керують включенням і вимиканням лазерів.

Приклад обробки подій:

Розумний кікер своїми руками

Таким чином, до кінця другого дня ми отримали робочу базову функціональність клієнта і сервера і готову прошарок із взаємодії з Arduino.

У неділю нам залишалося зв'язати всі компоненти воєдино і прикрутити різні бонуси на зразок внутрішньоігрових досягнень і веселенькою Музички.

Цей день пройшов в більш творчому ключі, ми менше часу програмували, в основному придумували рівні гравців, ачівменти і музику під різні ігрові події.

Нарешті, все зібрано, підключено, запуск - запрацювало!

Приступили до функціонального тестування. Гаразд-гаразд, грали в футбол, чого вже тут)

Парочка багфіксінгов, невеликий допив і. PROFIT! Розумний футбол готовий.

В результаті вийшов прототип високотехнологічного настільного футболу, який самостійно фіксує і вважає забиті голи, веде рейтинг гравців, формує чергу і, взагалі, робить наш відпочинок набагато зручніше і цікавіше. А ще ми відмінно провели час і підвищили свої скіли, звичайно.

Схожі статті