Feasibility of "vending Machine" type lockbox?

Hi all,

I've recently started learning about Arduino, and am eager to attempt my first project. As someone that is more software-inclined (with limited programming knowledge, at this point) than hardware-inclined, I am hoping that I'm not trying to bite off more than I can chew with this potential setup.

I work for a state park that rents out rustic cabins. My hope is to build a "vending machine" type keybox that will dispense a specific-numbered cabin key when that cabin's particular key code is entered on a numeric keypad. There are 14 cabins, which would mean I would need 14 unique key codes, each controlling (I'm imagining) a simple switch to drop that key into a tray below.

A few questions regarding this: First, as my first real project, am I biting off more than I can chew? I obviously want to do a little bit more reading on programming, so that I'm not just trying to piece together sketches to suit my needs, but I'm worried my complete novice status might make this a bit much for me at this time. (I last dabbled in C+ in the 10th grade, and I don't want to mention how long ago that was... =( )

Second, I'm assuming that I would be able to complete the guts of this project with the Arduino, a breadboard, keypad, the wires and resistors, the power supply, and 14 switches for each of the key holders. Is there anything else that I am overlooking, or should consider something additional/different?

I appreciate the time spent reading and posting to this.

It does not sound too difficult, but that would be for me. If you are bright, it might not be more than you could chew, but I'd still recommend getting your feet a little wet with some simpler projects. Just so you are more familiar with both the hardware and the software.

I think there are a number of things you'll want to ask yourself or plan for before starting the project. First off, what is the point? If you have to hand the customer a code number to get their key out, why not just hand them the keys? How would the keys be placed back in the mechanism afterwards? What would stop somebody from saving the code so they can get them out over and over again for free? What type of "switches" were you thinking would work to hold the keys?

It sounds like a feasible project though I'm not sure how you'd control the key holding mechanism? I guess you could use servos but then you'd need to figure how to get more pwm channels.

This doesn't doesn't sound like a very complicated project, really. It sounds like a good beginner project to start out with.

A breadboard is great for prototyping, but I wouldn't use it as a permanent place for your project in use.

Finally, what you are calling switches sound more like actuators. There are lots of different ways to drop the keys

Quick5pnt0:
.. I'm not sure how you'd control the key holding mechanism?

Small solenoids. The shaft could go right through the hole in the key. Using PNP and NPN transistors to help multiplex, you could drive 16 of them with 8 outputs.

First off, what is the point

Well, leaning to do it could be one. :slight_smile: Isn't that what hobbies are all about? Also, he could be n the situation that me may be able to e-mail the code to them. This would save having to travel to a specific place to hand out keys.

Actually, I think it's a great project. Definitely original and that, in my books, is a good thing. I see waaaaay to many "Me too!" types every day of my life. This is not a slight to the concept or it's users at all, but Arduino seems to attract a lot of them. They all need to use a genuine Arduino (which actually goes against the whole movement in the first place), the same SprkFun doo-hickey shield/brick/sensor and that same Limor Fried code. Then they anounce "Look what I did!" :grin:

Just joking, just joking.... :smiley:

and 14 switches for each of the key holders.

maybe u need just a linear stepper, how about this: the keys r put into something similar to a revolvers cylinder, where u put the bullets in.
Infront of that cylinder is a plate with one closed opening. If they right code is put in the linear motor rotates the cylinder to the right position and then the second motor opens the door and people can take out the key

Quick5pnt0:
I think there are a number of things you'll want to ask yourself or plan for before starting the project. First off, what is the point? If you have to hand the customer a code number to get their key out, why not just hand them the keys? How would the keys be placed back in the mechanism afterwards? What would stop somebody from saving the code so they can get them out over and over again for free? What type of "switches" were you thinking would work to hold the keys?

It sounds like a feasible project though I'm not sure how you'd control the key holding mechanism? I guess you could use servos but then you'd need to figure how to get more pwm channels.

Codes would be easy to incorporate into the confirmation of reservation email that we send out to guests when they initially contact us. The main purpose for us would be convenience and security for our guests. As a state agency, we don't have the budget to have an "active" employee after hours - but there are 3 of us that live on the park grounds. As it is now, we are presented with 2 options; one, guests can come to the house of the person on duty to retrieve keys, or can call that person to come bring the keys to them...or two, an unlocked keybox to hang the keys in for the guests to retrieve. That brings up the issue of security for the guests, as the keys would be left unattended for anyone to access. We have been going with option 1, but my wife was not too pleased when guests arrived last night and rang the doorbell at midnight and 1:30 am, respectively, and woke up our baby. :slight_smile: I'm striving for the convenience of the keybox, with the added security of preventing public access to the keys. My plan for the enclosure is to build an enclosure similar to a standard lock-box, with a hole in the bottom and a small shelf-like tray beneath to catch the key...low enough to allow easy removal of that key, but not too low to allow someone to easily reach up into the enclosure to snag another key.

My initial thought on the key-holder switching mechanism would be a "trap-door" that holds the key through the keychain, maybe at a 100-degree angle, then drops to 0-degrees once the correct key code has been entered...allowing the key to slide off and into the tray below. I honestly think getting this aspect of the project to work correctly every single time, without creating too large of a box, is going to be my biggest challenge. The last thing I want out of this is to have a key get caught on another key/hook/wedged in the box, and the guest have to come find me anyway...but I don't want to create a monstrous box for 14 keys, either.

I REALLY appreciate the input thus far, and am quickly figuring out that I've got a lot of reading to do on the components used, as well as the programming to make it all happen. Thank you all a lot!

You will need to think about how you are going to change the code to get a key. After it is used once, the code to get key 14 will need to be changed. Would you want to download new codes or use a DIP switch in the box?

I like your spirit. This will be a little difficult for a newbie, but not impossible.

The more I think about it, the more I like the solenoid idea. You have 14 of them mounted to the back of a sheet of aluminum inclined at about 75 degrees. Their shafts would poke through to the 'top' of the sheet like little pins. Loading the key box would be a simple matter of hanging the key onto the the desired pin. Once activated the solenoid pulls the pin out from under the key and the key slides down the inclined sheet to exit out of a narrow slot at the bottom. See the diagram for what I mean.

MaJiG:
You will need to think about how you are going to change the code to get a key. After it is used once, the code to get key 14 will need to be changed.

How about an SD card shield? A small SD card with a single text file that has 14 codes in it. Every time you load the key box, you change the SD card to one with a new file on it. The file can be created with a text editor on a PC. The key pad could just be 4 push buttons labeled A, B, C, D and an enter button. If you use an voltage divider keyboard, it only requires a single analog pin. Codes could be something like 'AABDCADB'. The code file would then just look something like:

AABDCADB
DABCADBB
ABCDABCD
CDABASDD
...

BillO:
Well, leaning to do it could be one. :slight_smile: Isn't that what hobbies are all about? Also, he could be n the situation that me may be able to e-mail the code to them. This would save having to travel to a specific place to hand out keys.

That depends on how the question is worded. If he said he was doing it to learn as a hobby, then by all means go ahead. However, he made it sound like he was doing it for his job. In that case you have to logically ask whether it makes sense to bother the customers with a custom made machine that may not work when they get there, especially if you could just as easily hand them the keys. I agree about the emailing aspect, that would be cool. Though again, he has to plan to change the code daily and ask himself whether he is secure enough in his job to risk it not working for a customer.

I like the SD card idea though.

BillO - Your diagram is almost exactly how I had it imagined in my head! The incline to the sheet would allow for the components to be housed behind without adding much bulk to the box itself.

MaJiG:
You will need to think about how you are going to change the code to get a key. After it is used once, the code to get key 14 will need to be changed. Would you want to download new codes or use a DIP switch in the box?

I like your spirit. This will be a little difficult for a newbie, but not impossible.

What I lack in knowledge right now, I hopefully will make up for in a desire to learn...:smiley:

I hadn't considered DIP switches. If I went this route, I would need a separate switch for each key, correct? That would make it easier for somebody else to change the codes in the case of my absence. My original plan was to just download new codes, as this would only need to happen twice a week, at most. I like the SD card idea a lot, too, as this could be another relatively simple way for somebody else to change the codes.

Quick5pnt0 - This project really just stems from my desire to try to troubleshoot a problem that we've been having, and to expand my knowledge in an area I admittedly don't know much about but have a great desire to learn in. The project may never see the public light of day (and definitely wouldn't until it was tested a million times! I definitely wouldn't want to create more problems than solutions) but even if I build it, test it, and decide it wouldn't really do the job I hoped it would...at least I have learned something new. If it works out, great...if it doesn't, at least I've learned something new!

Instead of programming the secret code each day... Why not add 328 each time it is used? Each day using the Uno clock? Something simple that you can predict. Nobody else will figure it out. Certainly it is better than an unlocked box.

sbright33:
Instead of programming the secret code each day... Why not add 328 each time it is used?

If more than 1 person needs to collect a key, how does he know who will arrive first? The second and subsequent arrivals won't have the correct code if it's altered after each use.

I think the mechanical side is going to be the hardest part. How secure does this need to be - I mean, do you need to be concerned about people thumping it and knocking keys loose, or trying to guess codes to release keys they aren't entitled to, or trying to break in with bent wires and so on?

It makes the whole thing harder, but if I were going to do this, I'd throw a PC into the mix. Let the PC manage the codes, so it can change them when necessary and report them when they need to be sent to a customer. The arduino in the machine can periodically poll the PC for the latest set over wifi, hard wired ethernet or xBee.

Each cabin will start with a different random number. Either every time the key is taken, or depending on the day, increment the secret number by your master number. My preference would be to increment all cabins at 3am, regardless of whether the key was taken or not. You could use a different interval for each cabin if you wanted to be more secure. You could even change the master numbers every week or month in a predictable manner. The most secure would be to create a loop of about 10 random integers for each cabin. All of this can be modified and improved after you get the hardware working. Start simple with the cabin number as the code, incrementing them by the same master at 3am?

sbright33:
increment all cabins at 3am, regardless of whether the key was taken or not.

A customer arriving at 3:05am, due to an unexpected delay, would be rather angry that he couldn't get his key and procede to wake up the OP, which the keybox is designed to avoid!
A better time to change the code would be at 9am.