loading

As a person without a car, I don't need to carry keys around everywhere I go. Because of this, I've been locked out of my own house several times. It's a pain to wait for someone with a key, so I thought I would do something about it.

This project is my way of solving this problem, while getting the chance to interface with an awesome fingerprint scanner (aka: FPS).

Also, this module isn't restricted to just garage doors, for you can create different kinds of simple motorized locks to suit your needs.

Step 1: Materials

Electronics:

Part Supplier (pictures are clickable!)
Fingerprint scanner (and JST connector) Sparkfun Sparkfun
Serial LCD kit (w/ATmega328)Sparkfun
ATtiny85Sparkfun
NPN transistor Sparkfun Radioshack
BuzzerSparkfun Radioshack
Speaker wireRadioshack
3D printed caseSee step 9 for files
Copper tapeSparkfunAmazon
5V voltage regulatorSparkfunRadioshack
9V batterySparkfunRadioshack
9V battery connector SparkfunRadioshack
SPDT limit switch
SparkfunRadioshack

Here is a list of almost all of the parts (It's a Sparkfun wishlist).

Tools:

  • Soldering iron/solder
  • Electrical tape
  • Hook up wire/ jumpers
  • Wire cutter/stripper
  • Perfboard
  • Assorted resistors
  • Screws
  • Drill
  • A few LEDs for testing
  • 5V FTDI board (Sparkfun)
  • Hot glue gun
  • Access to a 3D printer
  • Optional: IC holder (8 pin for ATtiny and 28 pin for ATmega)
  • Optional: Another Arduino board/10uF capacitor (see step 5 for details)
<p>hey can you show me ur code please ? I need an exemple for my door pls ^^ </p>
<p>I believe that the code you're referring to is in step 8 =)</p>
<p>Actually I didn't see it thx :D</p>
Can you all help me, i want to built an attandence thumbprint project , anybody here can tell me about the circuit or have some video how to make it , really need it , as soon as possible ?
You can follow the same instructions for this project, but just make the main case. Then you will need to enroll everyone's fingerprint that it would need to scan. Finally, the code can be changed to save an attendance log in the EEPROM which can be read only by scanning your fingerprint. <br>Something of the sort may already exist, so you should definitely browse around a little more if you need more specific instructions!
<p>That looks really nice, Great job!</p>
Thanks!! =D
What type of motorized lock would you use if used for a locker
<p>I solder a USB cable at the back of the scanner and when I used the demo software I successfully managed to enrol two prints. However, when I used the FPS_Enrol example file, I am not getting any thing at the serial monitor ? Any feedback will be much appreciated. </p>
<p>Can you send a picture of your setup please? It should be the same as mine in the picture attached, but using an Uno instead of the serial LCD.</p>
<p>I am working with the same scanner and an arduino uno, however, I am not getting anything at the serial mointor </p>
<p>@nodcah, here is my current situation and I believe it branches off of seppderdepp's problem, running my blink example I get the same errors as him, so I figured alright, it's a programming error (im probably wrong), so, since I have everything hooked up I uploaded the final code just to make sure everything works before I hook it up permanently to the garage. Here is the current state of everything:</p><p>1.) LCD is on, nothing is displayed however.</p><p>2.) FPS blinks for a millisecond and takes a watchful eye to see and then stays off.</p><p>3.) RED LED is on for a bit when first attached to battery and then stays off (probably because there is no need for it to come on because everything else is not working at the moment.)</p><p>4.) Here is the output when I uploaded the final code, for you to hopefully interpret.</p><blockquote><em>In file included from C:\Users\hampt\Downloads\FPSGarageDoorOpenner\FPSGarageDoorOpenner.ino:20:0:</em></blockquote><blockquote>C:\Users\hampt\Documents\Arduino\libraries\FPS_GT511C3/FPS_GT511C3.h:12:21: warning: extra tokens at end of #include directive [enabled by default]</blockquote><blockquote> #include &quot;Arduino.h&quot;;</blockquote><blockquote> ^</blockquote><blockquote>C:\Users\hampt\Documents\Arduino\libraries\FPS_GT511C3/FPS_GT511C3.h:13:28: warning: extra tokens at end of #include directive [enabled by default]</blockquote><blockquote> #include &quot;SoftwareSerial.h&quot;;</blockquote><blockquote> ^</blockquote><blockquote>C:\Users\hampt\Documents\Arduino\libraries\FPS_GT511C3\FPS_GT511C3.cpp:9:25: warning: extra tokens at end of #include directive [enabled by default]</blockquote><blockquote> #include &quot;FPS_GT511C3.h&quot;;</blockquote><blockquote> ^</blockquote><blockquote>In file included from C:\Users\hampt\Documents\Arduino\libraries\FPS_GT511C3\FPS_GT511C3.cpp:9:0:</blockquote><blockquote>C:\Users\hampt\Documents\Arduino\libraries\FPS_GT511C3\FPS_GT511C3.h:12:21: warning: extra tokens at end of #include directive [enabled by default]</blockquote><blockquote> #include &quot;Arduino.h&quot;;</blockquote><blockquote> ^</blockquote><blockquote>In file included from C:\Users\hampt\Documents\Arduino\libraries\FPS_GT511C3\FPS_GT511C3.cpp:9:0:</blockquote><blockquote>C:\Users\hampt\Documents\Arduino\libraries\FPS_GT511C3\FPS_GT511C3.h:13:28: warning: extra tokens at end of #include directive [enabled by default]</blockquote><blockquote> #include &quot;SoftwareSerial.h&quot;;</blockquote><blockquote> ^</blockquote><blockquote>C:\Users\hampt\Documents\Arduino\libraries\FPS_GT511C3\FPS_GT511C3.cpp: In constructor 'Response_Packet::Response_Packet(byte*, bool)':</blockquote><blockquote>C:\Users\hampt\Documents\Arduino\libraries\FPS_GT511C3\FPS_GT511C3.cpp:89:108: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]</blockquote><blockquote> CheckParsing(buffer[0], COMMAND_START_CODE_1, COMMAND_START_CODE_1, &quot;COMMAND_START_CODE_1&quot;, UseSerialDebug);</blockquote><blockquote> ^</blockquote><blockquote>C:\Users\hampt\Documents\Arduino\libraries\FPS_GT511C3\FPS_GT511C3.cpp:90:108: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]</blockquote><blockquote> CheckParsing(buffer[1], COMMAND_START_CODE_2, COMMAND_START_CODE_2, &quot;COMMAND_START_CODE_2&quot;, UseSerialDebug);</blockquote><blockquote> ^</blockquote><blockquote>C:\Users\hampt\Documents\Arduino\libraries\FPS_GT511C3\FPS_GT511C3.cpp:91:105: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]</blockquote><blockquote> CheckParsing(buffer[2], COMMAND_DEVICE_ID_1, COMMAND_DEVICE_ID_1, &quot;COMMAND_DEVICE_ID_1&quot;, UseSerialDebug);</blockquote><blockquote> ^</blockquote><blockquote>C:\Users\hampt\Documents\Arduino\libraries\FPS_GT511C3\FPS_GT511C3.cpp:92:105: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]</blockquote><blockquote> CheckParsing(buffer[3], COMMAND_DEVICE_ID_2, COMMAND_DEVICE_ID_2, &quot;COMMAND_DEVICE_ID_2&quot;, UseSerialDebug);</blockquote><blockquote> ^</blockquote><blockquote>C:\Users\hampt\Documents\Arduino\libraries\FPS_GT511C3\FPS_GT511C3.cpp:93:66: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]</blockquote><blockquote> CheckParsing(buffer[8], 0x30, 0x31, &quot;AckNak_LOW&quot;, UseSerialDebug);</blockquote><blockquote> ^</blockquote><blockquote>C:\Users\hampt\Documents\Arduino\libraries\FPS_GT511C3\FPS_GT511C3.cpp:95:67: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]</blockquote><blockquote> CheckParsing(buffer[9], 0x00, 0x00, &quot;AckNak_HIGH&quot;, UseSerialDebug);</blockquote><blockquote> ^</blockquote><blockquote>C:\Users\hampt\Documents\Arduino\libraries\FPS_GT511C3\FPS_GT511C3.cpp:100:85: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]</blockquote><blockquote> CheckParsing(buffer[10], checksum_low, checksum_low, &quot;Checksum_LOW&quot;, UseSerialDebug);</blockquote><blockquote> ^</blockquote><blockquote>C:\Users\hampt\Documents\Arduino\libraries\FPS_GT511C3\FPS_GT511C3.cpp:101:88: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]</blockquote><blockquote> CheckParsing(buffer[11], checksum_high, checksum_high, &quot;Checksum_HIGH&quot;, UseSerialDebug);</blockquote><blockquote> ^</blockquote><blockquote>Sketch uses 15,732 bytes (51%) of program storage space. Maximum is 30,720 bytes.</blockquote><blockquote>Global variables use 1,451 bytes (70%) of dynamic memory, leaving 597 bytes for local variables. Maximum is 2,048 bytes.</blockquote>
<p>Have you tried using a downgraded version of Arduino? Maybe <a href="https://www.arduino.cc/en/Main/OldSoftwareReleases#1.0.x">try 1.0.5</a>?</p>
<p>I'm currently out of town so I can't access my project, however, I think the wiring of my voltage divider may be a problem. So right now here is how I have it.</p><p>PIN_2 goes to a 560 ohm resistor.</p><p>PIN_3 goes to a 1k resistor.</p><p>The opposite end of both resistors lead to a jumper wire that leads to D11</p><p>I have PIN_1 going to D10</p><p>Also on the schematic there is a connection between PIN_3 and the limit switch ground but does not have a dot on it. Is it connected or not.</p><p>If it is supposed to be how you say, where does PIN_3 go to?</p><p>You have been super helpful. thanks again. </p>
<p>Oops that is supposed to be a connection, thanks for the catch! Pin 3 on the FPS is the GND pin, which is connected to the LCD's ground. The picture in step 6 might help you too! :-)</p>
<p>Sorry I've been a bit preoccupied. Does it perhaps matter that i have the FTDI breakout board connected during testing? Also I have a designated ground area where the FPS, and LCD ground area both go into, and then it goes to the limit switch via 22 gauge wire. The same goes for VCC supplies. I would send you pictures but the solder connections would be hard to follow (if you still want them let me know.)</p>
<p>Having the FTDI breakout connected shouldn't interfere. And yes, please send a picture!</p>
<p>imgur.com/a/4SwHX</p><p>The wire that just goes to nothing off the LCD is the source wire (the jumper I had on it fell off.)</p><p>Tell me if you need a picture of something specific, and i'll get back to you ASAP</p>
<p>Hmmm... I can't really see the voltage divider clearly in the pictures, but that might be where your issue lies. Can you retake a picture of just the voltage divider (the two resistors) and that board. You may need to push some wires out of the way for me to see the connections clearly. Before taking a picture though, double check that the black wire is connected to pin 10 and the white wire right next to the black wire is connected to pin 11 through a voltage divider. I fixed the table in step 2 by the way, sorry if that was confusing you. I didn't realize it was wrong until now</p>
<p>Also for the voltage divider, the schematic has it coming from the same lcd pin and two resistors going to fps pins 2 and 3, however, in step six it appears to be the opposite of that, thanks for your help.</p>
<p>Pin 1 of the fps should go to DIO 10 and DIO 11 should be going to pin 2 through a voltage divider. The connections might be your problem</p>
<p>All right, so some good news, the FPS now powers on completely, and stays on (green light indicator) however the blink and enroll sketch are still not working. I also noticed the FPS seems to get suspiciously hot when turned on (cant put finger on back and parts of front for more than five seconds.) if this is a sign of a wiring problem it would be great to know! thanks for all your help with my noob questions :)</p>
Also, can you send me a picture of your setup so I can see if there is anything wrong with the wiring? Lastly, I'd suggest running a program that blinks an LED on the arduino and see if that works. This will tell you if there is a problem with programming the chip.
The fps actually does get that hot on mine too (it's technically supposed to run on 3.3v, so the excess energy is being released as heat). But for this application of it, it doesn't REALLY matter because it's on for such short periods of time
<p>Also, try following the suggestion I made on seppderdepp's comment :)</p>
<p>Hello. I am making this exact same project and was wondering how the 10 uF capacitor was connected into the board. Thank you in advance.</p>
<p>See step 7 for details. The 10uF capacitor is only for programming the ATtiny, not for operation. </p>
<p>Hy. At first great Projekt. But when i upload the Blink Example it always comes the message C:\Program Files (x86)\Arduino\libraries\Fingerprint_Scanner-TTL-master/FPS_GT511C3.h:12:21: warning: extra tokens at end of #include directive [enabled by default]</p><p> #include &quot;Arduino.h&quot;;</p><p> ^</p><p>C:\Program Files (x86)\Arduino\libraries\Fingerprint_Scanner-TTL-master/FPS_GT511C3.h:13:28: warning: extra tokens at end of #include directive [enabled by default]</p><p> #include &quot;SoftwareSerial.h&quot;;</p><p>what can i do?</p>
<p>Hello, I think I've found a solution to your problem. Try removing the comments that follow that line. If that doesn't work try updating your version of Arduino and use <a href="https://drive.google.com/folderview?id=0B_Q5x1Nsa--eaUZfWXBvT1I5MWc&usp=sharing">this folder</a>. </p>
<p>Ok now it's working. Thanks.</p>
What is the algorithm of saving fingerprints samples? And where these samples are stored, in controller or in sensor's memory?
All of the algorithms and actual storage/processing of the fingerprints is done on the fps module, not the ATmega. If you're curious, you should definitely take a look at the data sheet for the fps!
I am also making Fingerprint security system but I had used ATmega instead of Aurduino, I am making this for domestic purpose. Can you guide me how could I make it work for a long time with single battery?
@nodcah could you please help to get the block diagram of this fps ?
<p>What do you mean by block diagram? Having it last a long time on a battery is tricky and unreliable. I'd try to go with a wired power source if possible. </p><p>If there are no other options, I'd wire the limit switch to disconnect the power source from the circuit. In other words, the power and ground for the ATmega and ATtiny are connected, but there is a switch between the positive of the battery and the positive of the circuit.</p>
<p>Excellent project. Thanks for sharing.</p><p>Could you please help me in finding the schematics for the finger print scanner module?</p><p>Thanks!!</p>
<p>The finger Scanner Was ordered on Spark Fun. Its like $50 so.... You might be able to make one if you're that smart Lol. But Ya just look up finger print scanner and look for the link to sparkfun</p>
my device can't store more thn 5 data.<br><br>what should I doo??<br><br>how can I manage foor external mememorry???<br><br>I need more thn 100 people.
Thanks for your interest in my project! If you want to store fingerprints outside of the fingerprint scanner, you will have to use another device that has more <a href="https://en.m.wikipedia.org/wiki/Non-volatile_memory" rel="nofollow">non-volatile</a> memory than the Arduino, like the <a href="https://www.sparkfun.com/products/9530" rel="nofollow">OpenLog</a>. Then, you'll need to use the Arduino to get the fingerprint template from the fps, then immediately relay it to the OpenLog.<br> -Nodcah:-)
Thanks for your interest in my project! If you want to store fingerprints outside of the fingerprint scanner, you will have to use another device that has more <a href="https://en.m.wikipedia.org/wiki/Non-volatile_memory" rel="nofollow">non-volatile</a> memory than the Arduino, like the <a href="https://www.sparkfun.com/products/9530" rel="nofollow">OpenLog</a>. Then, you'll need to use the Arduino to get the fingerprint template from the fps, then immediately relay it to the OpenLog.<br> -Nodcah:-)
<p>you could maybe use a relay instead of a transistor</p>
<p>The thing is, a relay needs a transistor and a diode. The whole setup is bigger and bulkier than just using a transistor. A transistor can be controlled directly from a microcontroller (with a resistor), but a relay cannot.</p>
<p>Why would a relay need a transistor and a diode? </p><p>Might be, but I&acute;m not that into Arduino projects, just up to clarification ;)</p>
<p>A relay would work fine! And you would only need a resistor (diode and transistor are extraneous in this setup)</p>
<p>WOW, as a newbie this is a bit beyond me for the moment but I'm learning so forgive me if these questions are &quot;dumb.&quot;</p><p>I don't have a garage, but love the chest idea to practice, but ultimately want to put it on an armoire door, which I use as a home office. </p><p>1. I don't understand about the part about the sero needing more power since the trunk is a movable item. Is that because its not hardwired into the garage's electrical system?</p><p>2. What happens when the battery dies? Are you locked out? How many opens/closes do you think you will get on 6AA bateries? Since, there's no way of telling when the battery is low, or is there?</p><p>3. Is a fingerprint scanner as easy to break into with just a clear transparency sheet like in the movies? Is it more or less secure than a digital pin lock?(I don't need bank level security, but I plan on moving the hinges to the inside of my armoire to eliminate any super easy break ins.)</p><p>4.How (besides not having any wires exposed and drilling the plastic case to the armoire) would you suggest to make it more secure? I'm thinking of a wooden case for the outside, which would also be less noticeable therefore less appealing to thieves if attached to the door with metal clamps and screws.</p><p>Thanks so much if anyone replies to these pain in the neck questions on a post that's a year old!!</p>
<p>If you're worried about security and getting locked out, maybe you could design yours so that it operates a pre-existing lock. If you put a lock that can be turned on the inside with your fingers and with a key on the outside, you could then rig a servo to turn the inside portion of the lock. This way, the lock is more secure and if the batteries die, you can just use your key.</p>
<p>1.) The setup will need more power for a longer life</p><p>2.) Yes, you are locked out, but a built in battery detector shouldn't be too hard to code.</p><p>3.) I'm not quite sure. If you wipe the sensor off after use, then you're guaranteed much better security. It sounds like you need something with a bit more rigidity than I can offer, so I'd recommend maybe buying a commercial lock than hacking it.</p><p>4.) For the best security, everything besides the edge of the fingerprint scanner and the screen should be in the case. This would require a modified case.</p><p>Thanks for commenting! :-D</p>
<p>Hi !</p><p>Is it possible to get the code for the chest and servo ? I would like to do something like this ! Here is my email address: raphbrc@yahoo.com</p><p>Thanks a lot !</p>
<p>Wow. I found this instructable 7 months ago. I was using a Yun, which does not support SoftwareSerial, only AltSoftSerial. So, I reversed the connections and pumped 5V into a 3V3 pin... Now, 7 months later, I found out that it worked! I'm probably going to modify it so that it works on a Yun (datalogging? or integrate with our home automation system?).</p>

About This Instructable

306,157 views

3,059 favorites

License:

Bio: I am a senior in high school and a member of a FIRST robotics team. I love to tinker on my own, which is mostly ... More »
More by nodcah: Turn Your Entire Phone into a Touchscreen DIY Glowing Bracelet Fix Any Video Game Controller
Add instructable to: