xblx

xblx

Пикабушник
поставил 1665 плюсов и 59 минусов
Награды:
10 лет на Пикабу
755 рейтинг 2 подписчика 42 подписки 3 поста 1 в горячем

Квест в реальности или партия raspberry pi + arduino.

День добрый! Меня занесло строить квест румы, хоть я до этого arduino в глаза ни разу не видел, меня это не остановило. Хочу рассказать о моих решениях принятых при проектировании и о реализации задуманного.


Для начала сочтёмся на том, что же такое квест в реальности или "эскейп рум", по словам вики:

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

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

Квест в реальности или партия raspberry pi + arduino. Raspberry pi, Квеструм, Длиннопост

Что такое квест для инженера:

* Помещение;

* Много проводов, очень много (освещение, звук, камеры и сами загадки);

* Горстка различных датчиков (щелевые, шумовые, магнитные и т.п.);

* Электромеханические и магнитные замки;

* ПК\raspberry\arduino и т.п.;

* Загадки.



Всё начинается с ТЗ, в идеальном мире.

Квест в реальности или партия raspberry pi + arduino. Raspberry pi, Квеструм, Длиннопост

Квест обязан быть антивандальным. Дети уничтожают любые загадки грубой физической силой, подростки под действием весны забывают о правилах и суют всё подряд туда куда не стоит, взрослые не видя очевидное делают не очевидное. В правилах конечно описывают знаки "СТОП" обозначающие неиграбельность в задачах антуражные предметы - но согласитесь, это не красиво и выбивает из ритма игры.


+ Позаботитесь о том, что бы камеры и колонки стояли как можно дальше друг от друга во избежание "глухоты" камеры. Нам ведь важно слышать игроков, а не саундтрек;

+ Камеры не должны быть рядом с освещением, или светильник не должен быть направлен на камеру;

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

+ Прячьте всю проводку, будь то 220 или звук. Всю прятать в ноль по максимуму, где нельзя спрятать - в гофру!;

+ Ведите кабель с запасом: если надо 1 кабель 5 метров, ведите 2-3 кабеля 7 метров. ТЗ в квестах часто бывает динамичным;


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


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



Поэтому все элементы заводились в один ящик, получилась дикая каша :) Главное всё подписывать!

Квест в реальности или партия raspberry pi + arduino. Raspberry pi, Квеструм, Длиннопост

Все задачки (arduino) в квесте независимы друг от друга, но все они связаны с raspberry по шине I2C для того что бы сообщать центру о решении задачи. Или же raspberry может сообщить адруинке о том, что задачку считать "решенной" и активировать последствия. На raspberry поднят веб сервер apache для управление квестом через веб панель.



Общение raspberry и веб панели происходит за счёт файла JSON. В качестве общения малины и ардуин я использовал библиотеку WiringPi. Весь код писал на C++, подружил плюсы и JSON с помощью библиотеки JSON for Modern C++. Панель для управления квестом написана на PHP с использованием bootstrap для кроссплатформенной верстки и скорости разрабокти.

Квест в реальности или партия raspberry pi + arduino. Raspberry pi, Квеструм, Длиннопост

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


За время постройки удивительные свойства показали ардуины - настоящие бронетранспортёры! Вот к примеру если подключить df player неправильно, высокий шанс не услышать с него больше музыки :). А вот сама ардуина после плевком в меня сизым дымом работала дальше :D


С++ был выбран т.к. с python или bash я знаком еще хуже, на самом деле ведь совершенно не важно на чём написано.


Пример куска кода С++ для малинки. Для квестов код очень прост, ничего вычурного, справиться и второкурсник.

Квест в реальности или партия raspberry pi + arduino. Raspberry pi, Квеструм, Длиннопост

Буду очень рад критике и вопросам.

Первый пост - судите строго!

Показать полностью 5

Силы есть - ума не надо.

Собственно, вот почему не надо экономить.
Силы есть - ума не надо. Собственно, вот почему не надо экономить.

Крупы в Черном: Начало. Trailer

Под столом. Во имя святого холестерина!
Отличная работа, все прочитано!