There are a lot of locks out there. There are locks open with a key, with a combination of digits, with various bodily parts, or with a correct geolocation. I decided to make a lock that I have not seen yet. Since I am learning to play piano an idea for this project came quite naturally. I decided to make a box that would open only if a correct tune is played.

This instructable talks about an algorithm that I used, circuit design and box design. But first, here is a video that illustrates how it all works together:

Step 1: Music Theory

Before getting into the details of project design, allow me to give a brief 101 on the theory behind tune detection.

As you might know sound is just air pushing against nerves in our ears. An air wave pushes – a nerve tracks the irritation. What we hear as a note are actually these air pushes with a constant period. In other words, if the nerve is tickled 130 times a second one hears a "C".
Devices that detect notes try to figure out how many times a second its microphone was "tickled", what was the frequency. Figuring out what note corresponds to what frequency is simple because there are "frequency → note" tables.

There are several algorithms that transform data read from a microphone into a frequency. The most prominent is a Fourier transform. The idea is quite simple: an input to is how strong was the air pushing in any given point in time. An output is how much of each frequency was contained in the input.  I think it is best explained by a picture attached to this step.

It is obvious that you can detect a tune using this algorithm. However, a music lock project can be a little more efficient. We don't really need to know how much of each frequency the input contained. We just care if the input had a frequency of a note we are detecting. For instance, if the first note of our unlock sequence is D, we don't care how much A's or B's were in the input. We just need to know if D was there.
This is when Goertzel algorithm comes in handy. It is used to identify one target frequency. As a matter of fact, it is used in telephones to recognizes the tones produced by the buttons pushed on a telephone keypad. 

Step 2: Components

I chose following components for the project:

ATMega328P with 16Mhz crystal is device's core. I chose this part because it is very easy to work with.

Electret Microphone with OPA344 opamp. Both are sold together from Sparkfun. Output from this device could be fed directly  into the analog input of the ATMega.

Spektrum SPMAS2000L Servo  this servo opens and closes box's lock mechanism. It needs 3.3V and delivers a linear motion of about a centimeter. It uses regular servo control interface.
As far as I understand such motors are usually used in airplane models to control ailerons. More could be read on the manufacturer's website.

TPS2020 Switch is a great switch with a very low quiniscent current which is less then 10 μA when the switch is off. This switch will control power to the lock servo.

LM2936Z Regulator is a 3.3V linear regulator with low quiescent current. It is precisely what we need because the box would be battery-powered.

MAX1555 is a battery charging circuit that can turn on a little LED when the battery is full.

Step 3: Circuit Design

There is nothing especially complicated about the device itself. Full schematic could be found here. Attached to the step is a simple diagram that explains basic components.

It was not trivial to put everything into a small box. Since I wanted to manufacture everything at home, multi-layered circuit design did not quite work. So, I had to fake a multi-layered board with an Arduino shield-like circuit. Blue lines on the attached schematics represents bottom layer, red lines are connections via shield headers.

I used photoresist method to etch the actual board. 

Step 4: Box Design

Project enclosure consists of a trunk and small walls around the motor compartment. I bought an unfinished walnut trunk from amazon. I deceived to finish it myself. Walls and lock components were ordered from Ponoko: I just had to send them an SVG design of components I needed and they would laser cut it from a thing wooden board. My design could be found here. It took about three weeks to manufacture the enclosure.

I have applied two layers of Minwax wood finish and a layer of their Polyurethane to protect the surface. Although the process was quite strait forward, I must confess that I have underestimated importance of sanding the surface before applying wood finish. Spots that did not get enough sending are quite visisble.

A picture of a lock mechanism is also attached to this step.

Step 5: Software

Full source code could be found in this repository.

Program logic follows a simple flow that checks if the box is closed. If so, it attempts pattern recognition. If it takes too long to discover the pattern device goes back to sleep. If the pattern is detected the lock is opened.

If device is woken up when the lid is open it waits until the lid is actually closed. Once that happens it shuts the lock.

Step 6: Result

The circuit board fit the project enclosure without any issues.

I took the box to several friends of mine: correct tune was detected when played on different pianos: grands, uprights and digital once. Detection resolution is a halftone.

I would be happy to receive any commands or answer any questions about this project.
<p>Hi, is there someone, who can remake this code for Arduino?</p>
<p>hey were u able to make this?</p>
So quick question, I don't know my head from my rearend when it comes to stuff like this. How realistic is it for me to actually try and build this thing? Is there a lot I would have to learn first? Where would I start?
<p>Any chance you could provide the software again, and perhaps an <br>updated list of necessary components? A lot of those items are <br>discontinued. I've never made anything like this before, but I really <br>want to give it a try!</p>
<p>Could you share the circuit draw in pdf? THX</p>
Any chance I could buy the circuit board for this? Or the completed circuits? We are designing an escape room and a box that opened by music notes would be amazing! We have been looking for something like this, but it just doesn't exist commercially. We would pay you for you time. Thanks in advance.
Did you have any luck finding someone to sell you one of these? I too would be interested in building one
<p>cool i did one of those escape rooms the other day! where is yours? and were u able to build this box ? was it hard. teaching my niece piano, wanted to make/get something like this for her.</p>
<p>I made the box :L (:L is someone eating noodles with a noodle hanging from his mouth)</p>
Hi basil. This is awesome. What board board would you recommend if we didn't want to etch it ourselves?
if i played that tune on my ocarina not only will the box open but i can travel time. now i want to make a box like this for a mini replica of the master sword
oh and awesome tutorial btw..
The schematic and board files seem to be corrupted, unless they aren't Eagle files.
That's odd: I just downloaded them and it opened fine. I am using Eagle 6.1 on OS X.
I was unable to open these in Eagle 5.7, so I updated to Eagle 6.2 and still had the same error. <br> <br>&quot;Error: <br> <br>line 6, column 6: This is not an EAGLE file.&quot; <br> <br>I opened and read the html of the files. They are Eagle files alright. <br>I've tried this on few machines now, all with an updated Eagle, all fresh downloads with the same results. <br> <br>I'm new to Eagle, so perhaps I've overlooked something?
Thanks. They don't open in Eagle 5.3.0 which I am currently using.
What software did you use to design the laser-cut parts?
Inkscape. It is a pain to use on OS X, but I found it to be the only free alternative.
Thanks again. I heard of Inkscape, I was going to use it too (after I learn how).
That's a really cool idea! Never saw a song lock before! Would be really cool if the lock use a whistle recording, then you can open it up without any other tools such as the piano.<br><br>Nice work and congrats on your inventive idea!
Theoretically one could whistle the right tune to open the lock. It detects a frequency, not a recording.<br><br>Unfortunately, I am not a very good whistler, so not matter how I hard I tried I couldn't get all notes correctly. Hence the piano.
Well then I guess I will just have to try it out :)
I love this! <br> <br>I could see it being used as a tuning aid. Tune your instrument correctly, and get a reward! :-) <br> <br>As for the whistling question, could you get it to recognize the same tune in a different octave?
No, it won't recognize different octave: it is configured to detect exact note frequencies, not relative ones.
Cant see the video here at work, but reminds me of the door lock in Willie Wonka.
That's cool.<br><br>Will it work if you play the same tune on another instrument, or maybe whistle it?
Oh yeah, it should. It detects a frequency. As long as the instrument can produce the same one as the key tune, the box will open.
including voice? (singing?)
Well, in theory, yes. You would have to be really good at it: a lock will open only if exact notes are produces. If relative note relationship is correct, but starting note is not D5, the lock would not open.<br><br>In other words, if something sings or whistles D5-A4-D5-A4-B4-D5 it would open. If he produces D4-A3-D4-A3-B3-D4 the box wouldn't open.
Cool project, and +10 awesome-points for having <a href="http://zelda.wikia.com/wiki/Prelude_of_Light">Prelude of Light</a> as the lock song
Yep, that is correct. I got the idea for the tune from jigarbov, who built <a href="http://youtu.be/zrWBRv5-XWE?t=11m56s" rel="nofollow">something resampling such lock in Minecraft</a>.

About This Instructable




More by basil.shikin:Electronic Market Minder Board Vintage Toothbrush Timer Box with a Music Lock 
Add instructable to: