I don't have a room to spare for an escape room game so I made this box instead. Several exciting tricky levels to overcome!
In case you missed the piano lessons you're going to have a hard time. The box will play a tune and your job is to repeat it and learn to play. However you won't use a regular piano keyboard but a 5 button array of super tactile cherry switches. This was actually the seed to this level, I wanted to give the player the satisfaction of pushing these buttons. But I'll start in the other end. How do we get the tunes?
I wanted to be able to play fairly hi-fi sounding piano tunes and so the Arduino was not sufficient, at least the not existing stuff I could find. I came up with two options.
1. I want to add an mp3 player to the box so that you can have a theme-song to every level. I could have created an mp3 track for each note and play a corresponding track each time a note is pressed.
2. Acquire a toy keyboard and remove the keyboard and take out the tune-IC and give input from an Arduino instead. This is the option I went for.
So off I wen't to the toy store for the first time in many years, I found this little keyboard for a good price and immediately took it apart.
Turns out all buttons on the keyboard (25 different notes) are played by connecting the following wires.
The fire wires on the left each have a unique digital signal pushed out to them and the five on the right are listening for a signal signal. The combination of what signal is sent and what pin receives it determines what note to play. I also noticed that the IC on the synth circles around the pins and only plays one signal stream at a time (a kind of multiplexing). Below you can see one of these signals on the scope.
This was not what I expected and made matters a bit more complicated than I'd hoped for. I though that I could simply control these by pulling the pins low or high but instead I had to route the signal using the Arduino. I bought two of these DG418DJ analog signal switches.
I wanted a simple song and found "Marry had a little lamb". This was great since it could be played using only 5 keys. Below is what the player will have to imitate in four segments, one per row.
I 3D printed a holder for five cherry switches and put them in place. I had a bunch of extra buttons and they all looked the same. Maybe I'll write the notes on them but it's a bit too much of a giveaway I feel.
The small speaker on the keyboard was not loud enough, and I needed a larger speaker setup for the mp3 soundtrack anyway. And now it came quite handy to have the analog switches with free channels because when this level is active the box will swap the speaker input from mp3-player to the keyboard circuit and then back again when it is over. As usual the dumpster came to rescue with a basic but perfectly working computer speaker system. I removed the power amplifier and the SMPS from the subwoofer box and skipped the woofer speaker entirely. All this could later be mounted inside the box.
After soldering on a ribbon cable and connecting the cherry buttons, the keyboard circuit and the analog switch ICs I could try the whole setup. It worked!
Now everything could be soldered onto a board and mounted on the panel. I added a external volume control that will control the volume of both the music and the keyboard. The speaker on the board is the one that came with the keyboard and it's there just for testing. It won't be active when it's all done.
Here the task is to decode binary numbers and enter their decimal counterpart. The binary numbers are shown on a ИВ-25/IV-25 tube. The idea is to then enter the number on a keypad and the decimal number will be shown on three ИВ-11/IV-11 tubes. Whenever you think that you've successfully translated the binary number to decimal and entered it you hit the "CONVERT" button. If you we're right the next number will show, if not, you'll have to try again. You'll have to enter a number of numbers to complete the level.
First I found a suiting brass pipe part to mount the first tube in, a real piece of steampunk in itself.
I then soldered a bunch of wires to the tube, made a hole in the box and dry-fitted it to see how it looked.
Now more junk-box-diving! I had an old keypad from some vacuum pump controller that I wanted to use. To be able to make a square hole I decided to remove the "0" and have only 1-9. This will limit my options a bit but never mind. After taking away some components from this board I soldered on new wires to the board and made a nice square hole using my dremel as a router.
Next up I prepared mounts for the other tubes and the button.
To make sure all the tubes were working I tried them with 25V supply for the grid and 5V and a 100 ohm resistor in series with the filament. They worked just fine after 25+ yerars in a box!
Now I made a test circuit with 4 shift registers (SN74HC595) and 4 darlington arrays (ULN2803) to se if the circuit was feasible. It was, yay!
As you can see the middle tube is not very bright. The brightness depends on the current through the filament, and here I'm using fixed resistors and the resistance for the middle one should be lower. In the perf-board version below I've replaced the filament resistors with 500 ohm pots in order to make the brightness adjustable.
Next it was mounting time! Everything fits as seen below. The only thing left is to figure out how to hold the tubes in place. They are now twisted a bit. The glass surface is very slippery so I think I need some sort on glue. Maybe epoxy. That, however, makes it very non-repairable. I'll try some less permanent solutions before that. Anyway!
Here is also a video of the game being played. The correct numbers are: 8, 21, 127, 2 69, and then they restart. When the game is done it won't restart bur unlock the next level. When my guess is wrong it simply resets the digits. Right now the LSB (least significant bit) is on the top of the binary tube. Maybe it makes more sense to have it in the bottom. I'll ask my beta testers, if you have any input please say so in the comments!
As a fellow raver I wanted to include some UV light and fluorescent paint. This puzzle is as follows:
1. A UV light turns on as soon as Level 6 is completed.
2. The player sees that there are some patterns that is visible only under UV light.
3. The player must realize that the UV light is detachable from the wall, it's hanging there with magnets.
4. By using the UV light as a torch you can see all the different hidden symbols and find the right ones to place 5 magnets.
5. Once all the magnets are in the correct spot it is done!
First I had to find a way to make a magnet engage an electric signal. I've previously worked with hall sensors and though that they would be the way to go but I found something way simpler. The reed switch. So I ordered 100 pcs of desoldered pieces from ebay. One of them was put behind a steel sheet and I connected a led via the reed switch and managed to turn it on with a magnet.
Happy with the test I mounted five reed switches to the back of this plate with metal epoxy. And the led turns on only when all five magnets are in the right place.
Now I needed to create the UV setup with clues. First I did the lamp. I took a piece of UV LED strip and glues it onto a piece of wood.
I then dragged the wires through a metal wire tube and mounted it to the plate with some piping parts. The two screws running through the wood are holding magnets and these magnets are strong enough to hold the light onto the plate. The plate was also mounted to the one side of the box with wing nuts (just because I like to looks of them)
Then the next step was to paint. I though about how to do this using canvas or a printer or whatever but I settled with using high quality paper covered with transparent packing tape for protection. I also needed to find a UV reactive "magic paint". After some research I found a method to do this using bleach. In Sweden where I live I believe the heavy environmental regulation has limited the options found in the supermarket because the product I found did not work. There are two options to make UV reactive inc: 1. Make the inc extra reactive to UV so that it shines stronger that the white paper when shined upon or 2. Make the inc absorb UV so that it goes black/dark. With this in mind I though sunscreen might work but no, that was also a failure.
I decided to settle to commercial solutions and went to the store to buy a "magic-inc-pen". I did however already have fluorescent paint in my workshop, purchased at a full moon party in Thailand. Yay! I proceeded with painting a decorative pattern with these color on a paper. In all the circles there will be magic-inc and you'll have to find the right symbols somewhere, yet to be decided.
In all these circles I then painted symbols and tried it out.
This post is a bit backwards but as the second part I'll explain how you get the clues to this puzzle. I came up with it after I built the UV part. And I wanted to use an analog meter.
I found an old one in my parts bin going up to 10mA. I put the meter in series with a resistor and this way I could control the current with analogWrite and therefor control the needle. I also made the panel with my own symbols corresponding to the ones on the UV plate.
The meeter moves between the 5 symbols in a random pattern. The currents is controlled by shifting the voltage in increments of 5*1/256 Volts. This creates a smooth movement.
The moving meter:
The next puzzle is slightly inspired by one of my favorite childhood games, Ratchet & Clank 2. I couldn't find that exact puzzle but something like this (from a later game I haven't played):
I came up with a way to imitate the same feeling with one ring of neopixels. In the game the ring consists of three layers (I call them orbitals) of points/pixels that are either on or off. These are contained in three boolean vectors, they all have the same patterns but the puzzle starts with them shifted/offset.
The player must shift these rings so that all of the points aligns and the offset is gone. However nothing of this is explained but must be figured out. When you turn the big knob in the middle you shift the orbital that is active. And the leds on the ring shines in the following pattern:
Off = No active pixels
Red = One active pixel
Green = Two active pixels
Blue = Three active pixels
The player must switch orbital using the rotary switch in the corder in order to shift the rings around. Once they are all aligned they will all shine blue and the level is done!
Here is a video of the first iteration with only two orbitals:
Well good on you to get this far! Now what's next? It is a game of one-button Snake on a 128x64 pixel OLED display behind a lens from a slide show projector - I mean what else right?
Let's go through the steps and I'll become apparent what I'm saying.
First I fired up my OLED display and put it behind the lens. It's from an old thingy I had lying around, the donor apparatus is long gone and I had only saved the lens from it since I thought it might come in handy. And it did.
This is just the display with some example program.
Now you can see the game behind the lens. On the image it looks unsharp but it is actually very crisp and quite pleasurable to look at since the display is enlarged and slightly curved. Although I've written a snake program in a previous project for a big pixel wall I did not reuse that code but found a great code from Bauerpauer instead made for my kind of OLED module. https://github.com/Bauerpauer/ArduinoOLEDSnake
I was first confused when I tried it since this version uses only one button and not four like my own version or on the Nokias. The way you play is by pushing the one button and the snake will turn 90 deg to the left. It only turns left. At first I though this would be a problem and that I'd rewrite it but I then thought that this might actually ad a bit of extra puzzleness to the box. Here is a short gameplay:
Next up was to mount the stuff in the box:
The last step was to modify the code so that the game stopped when you reached 100 points = 10 apples, or whatever it is the snake eats. Once you reach 100 the game will stop and the display says "Next Level" and then shuts itself down.
After plugging in the plugs in the right order the Morse Code stops and a LASER is engaged. That's what you typed right? To complete this level you have to realize that the mirror that is mounted on the box can be used to direct the laser into a hole with a ring of ws2812b leds around it. When you get the light into the little pipe the ring will start to gradually light up until it reaches full charge. This is a bit tricky since if you miss for a few seconds it'll loose charge and the leds will dim. But if you are accurate for long enough you'll see that the leds goes to full brightness and then the ring flashes blue and off you go to the next level.
I first experimented with a photoresistor in a pipe to not accidentally trigger the sensor if you are in a light room. You could still use a flashlight and shine straight into the sensor to trigger it but if you figure that out I guess you deserve to pass the level anyway...
The LED feedback ring is not shown on these photos but it is attached around the sensor pipe.
Now what to do with those letters? Well I like the feeling of plugging in a 6,3 mm / 1/4 inch audio jack just like in the old days:
And very conveniently the dumpster provided a nice little box with 18 large jacks on it. I recycled this front panel and put it in the box.
Here you can see the panel mounted on the side of the box. As you can see there are now letter under each of the jacks as well and 5 plugs inserted. The awake reader will see that the 5 letters are L A S E and R. That's right, you should put your Morse Code into this board. To make it a bit harder each plug has a number on it and an internal resistor that makes each plug unique by dividing the volatge in a unique ratio for each plug. You therefore have to put nr 1 in the first letter (L) and numer two for A and so on. The five jacks are then connected to 5 analog inputs and the analog value is right for only one of the plugs.
Here is the voltage on the letter R. It is 4.17 Volts after the voltage divider.
Resistors in the plugs. They are numbered as well when you put on the covering part of the contact.
As a final touch these plugs was mounted on the box with magnets. I drilled a slightly too small hole and hammered five neodymium magnets into these holes with a vinyl hammer. Quite neat!
Well well you managed to figure out how to engage the sonar sensors, now you'll hear a slightly annoying beeping sequence from the box. I wanted this beep to sound just right and I consulted my assortment of salvaged noisemakers:
After some time you should realize that this is Morse code and if you are not a hardcore HAM-radio person or similar it is up to you to find a cheat sheet for morse code and decipher the 5 letters. (Spoiler Alert - it says LASER).
First we need a box to put this all into. I found an interesting piece of old tech in the dumpster the other day and it came in a perfect wooden box with plastic cover. This box will hold all the electronics.
On to Level 1
The idea to the first level (well as another level) I got from another project I found on Youtube: