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

Однажды к нам с идеей квест-проекта “Комната” обратился Артем Крамин (соучредитель свободного пространства Циферблат в Казани). Он хотел привнести некий элемент магии в свой квест и для этого модернизировать старое пианино. Задача ставилась так: при проигрывании правильной мелодии должна открыться дверь в соседнем помещении.
Функционал инструмента и его звучность не должны пострадать в процессе модернизации, ничто не должно мешать извлечению звука. Важное требование, музыкальный инструмент не должен иметь изменений в своем внешнем виде, чтобы участник квеста ни о чем раньше времени не догадался.
В процессе раздумий родились такие варианты решения как:
Практически все, кто интересовались процессом разработки чудо-инструмента были уверены, что используется микрофон, но вариант с ним быстро отпал, ведь проигрывать мелодию может человек никогда не имевший дела с пианино, а значит равномерно сыграть мелодию у него не получится, плюс инструмент может быть расстроен, а использование камеры было слишком дорогим и долгим в реализации, да спрятать ее от участников стало бы той еще проблемой. В конечном итоге выбор пал именно на концевики.
Так выглядит общая схема устройства:

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

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

Затем купил ЭМ замок, блок питания и кнопку включения.
Все что приобрел проверил на работоспособность.



Затем установил и спаял все необходимые элементы схемы, выглядит грубо, но работает уже месяца полтора без сбоев.


Так вот выглядит устройство в сборе.


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



Итог: Артем остался доволен, а мне было интересно сделать что-нибудь необычное.
P.S. Читателям из Казани даже после прочтения этой статьи будет интересно пройти квест, потому что магическое пианино — только маленькая часть магии Комнаты.


Однажды к нам с идеей квест-проекта “Комната” обратился Артем Крамин (соучредитель свободного пространства Циферблат в Казани). Он хотел привнести некий элемент магии в свой квест и для этого модернизировать старое пианино. Задача ставилась так: при проигрывании правильной мелодии должна открыться дверь в соседнем помещении.
Функционал инструмента и его звучность не должны пострадать в процессе модернизации, ничто не должно мешать извлечению звука. Важное требование, музыкальный инструмент не должен иметь изменений в своем внешнем виде, чтобы участник квеста ни о чем раньше времени не догадался.
В процессе раздумий родились такие варианты решения как:
- использование микрофона
- инфракрасной камеры
- кнопок или концевиков
Практически все, кто интересовались процессом разработки чудо-инструмента были уверены, что используется микрофон, но вариант с ним быстро отпал, ведь проигрывать мелодию может человек никогда не имевший дела с пианино, а значит равномерно сыграть мелодию у него не получится, плюс инструмент может быть расстроен, а использование камеры было слишком дорогим и долгим в реализации, да спрятать ее от участников стало бы той еще проблемой. В конечном итоге выбор пал именно на концевики.
Так выглядит общая схема устройства:

Для установки концевиков я начертил и вырезал в нашем хакспейсе на лазерной резке раму для крепления.
Процесс вырезания по версии Google Автокреатив

Крепление представляет собой единый элемент, установленный на направляющих внутри пианино.

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

Затем купил ЭМ замок, блок питания и кнопку включения.
Все что приобрел проверил на работоспособность.



Затем установил и спаял все необходимые элементы схемы, выглядит грубо, но работает уже месяца полтора без сбоев.


Так вот выглядит устройство в сборе.


Вся схема работы такая: система находится в постоянном ожидании нажатия первой верной клавиши, затем следует ожидание второй верной ноты и так далее. В ситуации, когда участник квеста ошибается и нажимает неправильную ноту комбинация сбрасывается и “код” необходимо набирать заново, а если вся мелодия проиграна верно, то открывается замок, запирающий дверь комнаты.
Исходники скетча
const int key1 = 4; //до
const int key2 = 5; //ре
const int key3 = 6; //ми
const int key4 = 7; //фа
const int key5 = 8; //соль
const int key6 = 9; //ля
const int key7 = 10; //си
const int lock = 12; //замок
int lastKey = 0; //последняя нажатая кнопка
// открытие замка
void openLock() {
digitalWrite(lock, LOW);
delay(10000);
closeLock();
}
//закрытие замка
void closeLock() {
digitalWrite(lock, HIGH);
}
//нажатали кнопка с номером key
boolean isKeyPressed(int key) {
int what = -1;
while(true) {
int countPressed = 0;
if(digitalRead(key1) == HIGH) {
if(lastKey != key1) {
countPressed++;
what = key1;
lastKey = key1;
}
}
if(digitalRead(key2) == HIGH) {
if(lastKey != key2) {
countPressed++;
what = key2;
lastKey = key2;
}
}
if(digitalRead(key3) == HIGH) {
if(lastKey != key3) {
countPressed++;
what = key3;
lastKey = key3;
}
}
if(digitalRead(key4) == HIGH) {
if(lastKey != key4) {
countPressed++;
what = key4;
lastKey = key4;
}
}
if(digitalRead(key5) == HIGH) {
if(lastKey != key5) {
countPressed++;
what = key5;
lastKey = key5;
}
}
if(digitalRead(key6) == HIGH) {
if(lastKey != key6) {
countPressed++;
what = key6;
lastKey = key6;
}
}
if(digitalRead(key7) == HIGH) {
if(lastKey != key7) {
countPressed++;
what = key7;
lastKey = key7;
}
}
if(what != -1) {
Serial.print("pressed ");
Serial.println(what - 3);
if((countPressed == 1) && (key == what)) {
break;
}
if((key != what) || (countPressed >= 1)) {
break;
}
}
}
if(what == key) {
return true;
}
else {
return false;
}
}
void setup() {
// pinMode(test,INPUT);
Serial.begin(9600);
pinMode(key1, INPUT);
pinMode(key2, INPUT);
pinMode(key3, INPUT);
pinMode(key4, INPUT);
pinMode(key5, INPUT);
pinMode(key6, INPUT);
pinMode(key7, INPUT);
pinMode(lock, OUTPUT);
closeLock();
}
// пароль изменен в целях предотвращения жульничества в комнате
void loop() {
if(isKeyPressed(key2)) {
if(isKeyPressed(key3)) {
if(isKeyPressed(key6)) {
if(isKeyPressed(key2)) {
if(isKeyPressed(key4)) {
if(isKeyPressed(key6)) {
if(isKeyPressed(key1)) {
if(isKeyPressed(key7)) {
openLock();
}
}
}
}
}
}
}
}
}
После всех подготовок устройство было установлено в пианино, а замок закреплен в дверном проеме (в каком именно секрет).



Итог: Артем остался доволен, а мне было интересно сделать что-нибудь необычное.
P.S. Читателям из Казани даже после прочтения этой статьи будет интересно пройти квест, потому что магическое пианино — только маленькая часть магии Комнаты.
