Here we are with the classic RFID door lock. It’s classic in that whole, “We live in the future and take it for granted at this point” sense. In this tutorial, we will set up a door latch that can be opened with the swipe of an RFID Tag! We will program a list of acceptable ‘key’ cards that will unlatch the door for a specified amount of time. This is a really simple project, but it does require that you alter your door jamb, so be prepared to do some wood work if you the strike plate to fit securely and flush.
Step 1: Project Parts List
These are the recommended parts for this project. You can use another Arduino variant, relay, or compatible RFID Tag, but we recommend using the RFIDuino Shield so that the code we will provide you in this tutorial works without a hitch.
- RFIDuino Shield and Antenna
- Geekduino or other Arduino compatible microcontroller
- RobotGeek Relay Board
- A Door Latch Solenoid or An Electronic Strike Plate (note that these are example parts, and may not fit your specific door. When selecting an electronic strike plate, make sure to choose one marked ‘NO’, or normally open. This means that when the circuit is open, the door is secured, keeping you safe in a power outage situation)
- 3-pin Sensor Cable
- 6v Power Supply (for Geekduino)
- An appropriate Power Supply for your solenoid (in the case of the linked solenoid, 12V)
- Micro USB cable for your Geekduino or cable for your Arduino compatible board
- A compatible RFID Tag -all tags on this page are compatible with the RFIDuino
- Panel Mount Dual Power Cable
- Wire Nut, Electrical Tape, Solder, or other wire connection method.
Note that using a straight door latch solenoid requires power to unlock the door. If you lose power, you will be effectively locked out and unable to open your door until power is returned to the system. With the electronic strike plate, you can still use your regular key to open the door in the case of a power outage. Choose wisely.
Step 2: Get Your RFID Tag Data
- Connect your RFIDuino as shown. (Click here for the v1.1 Connection Diagram)
- Open
RFIDuino_helloworld
onto your board. You can find this sketch underFile>Examples>RFIDuino>RFIDuino_helloworld - You will need to make sure the code is adjusted for your RFIduino hardware.
v1.2 shields (2 pin antenna, ‘REV 1.2’ printed on the board) will need the following codeRFIDuino myRFIDuino(1.2); //initialize an RFIDuino object for hardware version 1.2v1.1 shields (4-pin antenna, no version number printed on the board) will need the following codeRFIDuino myRFIDuino(1.1); //initialize an RFIDuino object for hardware version 1.1Both lines of code are available in theRFIDuino_helloworld
sketch, simply uncomment the one you don’t need.If you are still unsure about what hardware you are using, see this page - Connect a micro USB cable from your computer to your Geekduino
- Load RFIDuino_helloworld3 onto your board using the upload button in the Arduino IDE.
- Once loaded, you can leave your board connected to your computer – you will need this connection to power the board and to communicate with the computer
- Open the Serial Monitor.Tools -> Serial MonitorThe serial monitor should be set to its default settings (‘No Line ending’, 9600 baud)
- Swipe a tag across the RFIDuino antenna. The green light will light up and your buzzer will make a noise.
- The Serial Monitor will display 5 numbers. These numbers make up the ID of your tag.
- Copy down these numbers for future use. It can be handy to write the ID on a sticky note and attach it to the tag. NOTE: You will need the ID for at least one tag for the next step.
Step 3: Wiring and Programming
- Connect your components as shown here.
- Open
RFIDuino_demo3_lockbox_multi
onto your board. You can find this sketch underFile>Examples>RFIDuino>RFIDuino_demo3_lockbox_multi - You will need to make sure the code is adjusted for your RFIduino hardware.
v1.2 shields (2 pin antenna, ‘REV 1.2’ printed on the board) will need the following codeRFIDuino myRFIDuino(1.2); //initialize an RFIDuino object for hardware version 1.2v1.1 shields (4-pin antenna, no version number printed on the board) will need the following codeRFIDuino myRFIDuino(1.1); //initialize an RFIDuino object for hardware version 1.1Both lines of code are available in theRFIDuino_demo3_lockbox_multi
sketch, simply uncomment the one you don’t need.If you are still unsure about what hardware you are using, see this page. The RFID Experimenter’s Kit comes with the version 1.2 shield. - Modify the code for the number of cards you want by editing line 58. For example, if you have three cards, use the code#define NUMBER_OF_CARDS 3 //total numer of key cards that the system will respond to.
- You will also need to modify the sketch to include the IDs of the tags that you want to include. These IDs can be found using the
Hello World
sketch. Find the block of code starting at line 62 – it looks like this.byte keyTag[NUMBER_OF_CARDS][5] ={ {0,0,0,0,0}, //Tag 1 //commenting each tag with a description can help you keep track of them {0,0,0,0,0}, //Tag 2 {0,0,0,0,0}, //Tag 3 {0,0,0,0,0},//Tag 4 }; Now insert the IDs for your tags. If we had three key tags, our code might look something likebyte keyTag[NUMBER_OF_CARDS][5] ={ {77,0,44,22,242}, //Tag 1 //commenting each tag with a description can help you keep track of them {200,1,4,98,236}, //Tag 2 {23,64,4,25,1}, //Tag 3 }; - Connect a micro USB cable from your computer to your Geekduino
- Load
RFIDuino_demo3_lockbox_multi
onto your board using the upload button int the Arduino IDE. - Once loaded, you disconnect the USB cable from your computer..
- Swipe any of the ‘key’ tags across the RFIDuino antenna. The green light will light up and your buzzer play three different notes. Additionally, the solenoid will fire.
- Swipe any tag that is not the ‘key’ tag across the RFIDuino antenna. The red light will light up and your buzzer play three monotone notes. The solenoid will not react.
Step 4: Mount It Where You Can Use It
Once you’re sure that you have it programmed and the latch releases when you swipe the correct RFID Tag, mount it in your door frame. We had a metal frame door with glass windows, so it was an easy call putting the RFID Reader behind the glass. You may want to mount the antenna in a weatherproof box for accessibility and keep the ~duino and other electronics indoors for safety.
There are instructions with the strike plate that should help you mount that. We recommend keeping the plate as flush as you can to the wall it’s mounted to, and to be careful when running wires through a wall.
Read more: RFID Door Lock With Arduino