Kist
- Door Ali Muzammil Syed
Wat is het?
De kist vormt het centrale element van de escape room en bevat twee afzonderlijke mechanismen. Het eerste mechanisme wordt geactiveerd wanneer de spelers het sterrenbeeldgedeelte en Flappy Bird succesvol hebben voltooid. Op dat moment moet een vereenvoudigd muziekpartituur van Mozart uit een spleet in de kist verschijnen zodat de spelers verder kunnen met de piano-puzzel. Het tweede mechanisme wordt geactiveerd wanneer de spelers de volledige escape room hebben opgelost. Hierbij opent een poortje aan de voorkant van de kist waardoor de uiteindelijke beloning zichtbaar wordt.
Voor beide mechanismen werd gebruikgemaakt van een SG90-servomotor.
Ontwerpkeuzes
Uitgeven van het partituur
Voor het eerste mechanisme werden verschillende oplossingen onderzocht.
Het oorspronkelijke idee bestond uit een systeem waarbij het partituur tegen het plafond van de kist werd vastgehouden. Wanneer een signaal werd ontvangen zou een servomotor het papiertje loslaten zodat het naar beneden kon vallen. Tijdens het testen bleek deze oplossing echter niet betrouwbaar. Het papiertje bleef soms hangen of viel niet correct naar buiten.
Daarom werd gekozen voor een eenvoudiger ontwerp. Het partituur werd op een klein platform geplaatst en de servomotor geeft het papiertje een lichte duw wanneer het juiste signaal wordt ontvangen. Hierdoor schuift het partituur via een spleet naar buiten. Deze oplossing bleek veel consistenter en eenvoudiger te realiseren.
Openen van de eindbeloning
Ook voor het tweede mechanisme werden verschillende ideeën onderzocht.
Een eerste ontwerp maakte gebruik van een houten deurtje met scharnieren. Omdat hout relatief zwaar is, zou hiervoor een krachtigere servomotor nodig zijn. Dit zou zowel de kostprijs als de complexiteit verhogen.
Vervolgens werd overwogen om een schuivend deurtje te ontwerpen en te 3D-printen. Hoewel dit technisch mogelijk was, vereiste dit extra voorbereiding zoals het ontwerpen van het model, het reserveren van een 3D-printer en toezicht tijdens het printproces.
Uiteindelijk werd inspiratie gehaald uit een garagepoortmechanisme dat naar boven opent. Dit concept was eenvoudiger uit te voeren en kon volledig thuis gebouwd worden. Om het gewicht laag te houden werd karton gebruikt in plaats van hout. Hierdoor kon een standaard SG90-servomotor voldoende kracht leveren om het poortje te openen.
Communicatie
De kist communiceert met de hoofdcomputer via bluetoothmodules. Wanneer de hoofdcomputer een statuscode verstuurt, reageert de microcontroller door het overeenkomstige mechanisme te activeren.
- Statuscode 0x01 activeert het mechanisme voor het uitgeven van het partituur.
- Statuscode 0x11 activeert het mechanisme voor het openen van het eindpoortje.
- Statuscode 0x21 vraagt de huidige status van de kist op.
Na ontvangst van een geldige statuscode stuurt de microcontroller dezelfde code terug als bevestiging.
Componenten & schema
- Houten kist
- 2x SG90-servomotor
- Karton voor het poortje
- Karton voor het platform van het partituur
- Jumpwires
- Bluetoothmodule
- Arduino microcontroller

Stappenplan
- De hoofdcomputer verstuurt een bluetoothsignaal naar de kist.
- De microcontroller ontvangt de statuscode.
- Indien statuscode 0x01 wordt ontvangen, activeert de microcontroller servo 1.
- Servo 1 duwt het partituur via de spleet naar buiten.
- De spelers ontvangen het partituur en kunnen de piano-puzzel starten.
- Nadat alle puzzels zijn opgelost verstuurt de hoofdcomputer statuscode 0x11.
- De microcontroller activeert servo 2.
- Servo 2 opent het kartonnen poortje geleidelijk naar boven.
- De uiteindelijke beloning wordt zichtbaar voor de spelers.
- Na tien seconden sluit het poortje automatisch opnieuw.
Code
#include <SoftwareSerial.h>
#include <Servo.h>
#define bluetoothRX 2
#define bluetoothTX 3
// Verbinding voor bluetooth
SoftwareSerial mySerial(bluetoothRX, bluetoothTX);
Servo servo1;
Servo servo2;
// Variabele waarin de huidige spelstatus wordt opgeslagen
byte gameStatus = 0x00;
void setup() {
// Start seriële verbinding
Serial.begin(9600);
servo1.attach(7);
servo2.attach(8);
// Servo's in hun startpositie
servo1.write(70);
servo2.write(10);
// Start de bluetoothcommunicatie
mySerial.begin(9600);
}
void loop() {
// Controleert of er data ontvangen werd
if (mySerial.available()) {
// Leest het ontvangen bericht in
byte received = mySerial.read();
// Toont de ontvangen code in hexadecimale vorm
Serial.println(received, HEX);
// Game 1: Partituur uit de kist
if (received == 0x1 && gameStatus != received) {
// Verstuurt een bevestiging terug
mySerial.write(received);
// Updatet de spelstatus
gameStatus = 0x1;
// Servo staat eerst in rustpositie
servo1.write(70);
delay(1000);
// Servo beweegt naar voren en duwt het partituur naar buiten
servo1.write(150);
delay(1000);
// Servo keert terug naar de beginpositie
servo1.write(70);
delay(1000);
}
// Game 2: Eindpoortje openen
else if (received == 0x11 && gameStatus != received) {
// Verstuurt een bevestiging terug
mySerial.write(received);
// Updatet de spelstatus
gameStatus = 0x11;
// Opent het poortje geleidelijk
for (int pos = 10; pos <= 130; pos += 10) {
servo2.write(pos);
delay(500);
}
// Houd het poortje 10 seconden open
delay(10000);
// Sluit het poortje opnieuw
for (int pos = 130; pos >= 10; pos -= 10) {
servo2.write(pos);
delay(500);
}
}
// Status opvragen
else if (received == 0x21) {
// Stuurt de huidige status terug naar de hoofdcomputer
mySerial.write(gameStatus);
}
}
// Kleine vertraging om de lus stabiel te houden
delay(100);
}
Mechanismen van dichterbij
Binnenzijde van het poortje.
Platform met servomotor als duwmechanisme.