RFID Cat Door





Introduction: RFID Cat Door

Microcontroller Contest

Second Prize in the
Microcontroller Contest

This is a cat door/flap that can only be opened by the animal that wears the appropriate RFID tag. Arduino controls the process. It features a custom made antenna large enough to function as a gate, which makes it easy for the animal to activate and quite reliable. Some methods and techniques are borrowed from my previous project, the RFID cat feeder. Whereas the feeder controls access to a food bowl, the door controls access to an entire room. The latest code can also distinguish between tags to allow the system to behave differently for different individuals.  

How it works:
1. In the beginning the door is locked, cat is outside
2. Cat walks up to the gate, RF tag gets read within about 4 inches
3. Door unlocks and a light comes on. 
4. Timer ensures that door stays unlocked long enough to give cat a chance to respond
5. Cat pushes open the flap and enters
6. Flap falls back, activates Hall effect sensor, and the door locks
7. Going from the inside out, an infrared proximity sensor detects the presence of an animal if within about 10 inches and unlocks the door.

Most animals will quickly learn to push the flap in response to the click (lock) and the light. Make sure that the edges of the door and the doorway are padded with soft material for when the tail gets caught! A few painful experiences may be enough to make the cat never want to go in there again. 

 The electronics are shown without enclosure, but it is advised to put an enclosure around the electronic parts once you're done. It is not further discussed in this Instructable however.  

Step 1: Parts List

- Arduino Duemilanove
- 5V RF reader module (Seeed Studio 125Khz UART or equivalent. Most readers come with a small antenna. To use the custom made antenna discussed here, you need a reader that allows connecting an external antenna)
- RF tag (I used these 35mm disc shaped ones)
- About 86 feet of 24 gauge magnet wire (longer than the piece shown in the photograph)
- Sharp GP2D12 infrared proximity sensor
- Two 12V electronic cabinet locks (Nordson electronic). Solenoids, basically.
- One 12V DC power supply
- Two TIP120 Darlington transistors
- One Hall-effect sensor
- One or more magnets to activate Hall-effect sensor over a range of about 2cm
- One 100 Ohm resistor
- Four 2 KOhm resistors
- Two pushbuttons
- One LED
- One hinge (one that moves easily but without much lateral movement, for precision)
- One 6" x 9" piece of 1/8" thick Plexiglas and perhaps another piece of about 6" x 3"  to mount the locks
- Hookup wire, including about 27" extra thin (26 AWG or thinner)
- Nuts, bolts and serrated washers
- Rubber isolation strip or other soft material for padding the edges of the door and door post

The system comprises several 'modules' (solenoids, RF reader, and so on). One of the pictures here shows the basic plan with the modules connected to the Arduino (the electronics). In the next steps the mechanical parts and each of the modules will be discussed in detail. 

Step 2: Make the Door

The door is a Plexiglas flap hanging on a hinge. At the bottom, the doorpost will have two solenoids, one on each side of the flap, to block unauthorized animals from getting in. Pretty straightforward. Just a few things to keep in mind: 

Make sure that in the resting state, the flap is centered in between the two solenoids. In the picture that is in the red area around the dotted line down the middle. To achieve this it helps to have no heavy things hanging on one side, and to use a hinge with little friction. 

It helps to have a hinge without much lateral movement (sideways movement within the plane of the wall). This will help to make the hall-effect sensor (a magnet-actuated switch) work. I will discuss this more in detail in step ... 

The door needs to be rigid but light-weight so that it is easy to push it open and doesn't hurt when a tail gets caught. Make the corners smooth and add padding on the edges and the door post to minimize tail tribulations. 

Step 3: Make an Antenna

The antenna is nothing more than a coil of magnet wire connected to the RF reader. Most RF readers come with an antenna, but some allow the use of an external antenna. For this project I made a square antenna of 10 x 10 inches by winding 24 gauge magnet wire 24 turns around a sawed off bucket to make it sturdy. The distance between turns has to be as small as possible. I mounted the thing on the plywood with two pieces of wood as spacers to make it stand off from the wall a bit so the cat could activate it farther from the wall. The 35mm disc tags that I use are read up to 4 inches of the plane of the coil. The RF reader and antenna are powered with the 5v from the Arduino. Even though the Arduino works fine with just the USB cable, the RF reader works better when the Arduino is plugged into the wall with the 9v power adapter

More info about coil antennas:
Microchip Inc. Antenna circuit design for RFID applications (pdf)

Step 4: Hook-up the RF Reader

This project consists of several 'modules' that you need to hook up to the Arduino and test in advance. First hook-up the RF reader. You can use the 5v output of the Arduino to power it, and a digital port (I used 2) to get the signal. The RDM630 that I used also has pins for a led that I don't use. It also has an RX pin to send info back to the RF reader, but I don't use that either. Hook-up your antenna, get a tag and use the serial monitor of the Arduino to see if it's detected. Now you can also start working on improving the antenna by trying adding or removing turns, trying different shapes et cetera. Power the Adruino with the 9v power supply, not just USB because at least in my case that didn't work. You can download the file named 'rfid3.pde' to test. The code requires NewSoftSerial.h which can be obtained here

Step 5: Add Solenoids

Hook-up the solenoids up to the Arduino as in the schematic: connect the TIP120s to digital ports 5 and 6 with 2k resistors in between. One pin goes to ground, the other goes to the solenoid, with a diode across it (make sure you get the polarity right), and to the 12v supply in the end. The other wire of the power supply is ground. Connect that to the other grounds. Just connect all grounds of all components including the Arduino together. Over here you can download code to specifically test the two solenoids. 

Step 6: Add Hall Effect Sensor

The Hall effect sensor is for detecting whether the door is in the center, i.e. within the range that closing the locks makes sense. There are other solutions possible, such as mechanical/optical rotary encoders, contact sensors, beam break sensors. The main reasons for choosing a Hall effect sensor were that it does not add friction, it can be covered entirely, and I also was just curious how they work.

I did not want to put magnets on the door because that would make it heavier, so instead I put the switch on the door and the magnets in the door post. I had to use thin, very flexible wire otherwise the rigidity of it would push the flap off center. The sensor and wire is simply taped to the Plexiglas. I have two little magnets in the door post. At the closest point the sensor and magnets are 5mm apart. The range is about 3cm.    

Connect the signal pin of the Hall sensor to pin 4 and to through a 100 ohm resistor to 5v. Connect ground pin to the other grounds and the vcc pin to 5v. Add an LED to digital pin 7 with the appropriate resistor (used a green one with a 220 ohm resistor). 

Download Hall_effect.pde to test this part of the system.

Step 7: Add Proximity Sensor

For this system I only cared about which cat enters, and any creature may exit. Thus, I only needed RFID on one side. The door should open to any animal that approaches from the other side. An IR proximity sensor works well. 

Connect the out-pin of a Sharp GP2D12 to Analog port 0, the ground pin to the other grounds and the vcc pin to 5v. 

Download IR_test_analog.pde to test this part of the system

Step 8: Add Two Buttons and Load Final Code

Finally you can add buttons to open the locks manually (see schematic). .

In the final code downloadable here, I stored the value of two tags worn by the our animals, one with and one without access. When the animal without access tries to get in, the door is locked immediately.   

byte goodcode[6] = {0x1C, 0, 0xFC, 0xB2, 0x90};
byte badcode[6] = {0x16, 0, 0x78, 0xE7, 0xFE};

You have to find the code of the tags you are using and put those values into the arrays 'goodcode' and 'badcode'. The values are hexadecimal which need '0x' in front of it in this programming language. 

If you don't want to tag the other cat, shortening the open time (smaller value for variable 'open_time') can help, although that puts the burden on the cat with access to respond faster.   

It is a good idea to put an enclosure around the electronics, but that will not be discussed in this instructable.  

On a final note, if your antenna has a large range extending into the secured area, you may need to calibrate the positioning of the antenna and the proximity sensor a bit to make sure the RFreader is not activated from the inside. If the cat is inside and wants to go out, the proximity sensor has to detect the cat first. Once that happens, it is okay because in that part of the program, the RF reader is not checked. 



  • Epilog Challenge 9

    Epilog Challenge 9
  • First Time Author Contest 2018

    First Time Author Contest 2018
  • Sew Warm Contest 2018

    Sew Warm Contest 2018

We have a be nice policy.
Please be positive and constructive.



how to calculate parameter of your antenna RFID ?
I dont have a knowledge in antenna



I came across this site in my search ....

I see the last comment of 2017-05-01 and I wonder if there has been any other updates that some may have done since then?

I know nothing of the tech, but I would love to have a pet door that works with my pet microchip.... I get the feeling more may be need than what is here with this project.... a better microchip reader??? Just hoping...


It's not going to work with your pet's microchip. There are several reasons why not. But basically, the placement under the skin and orientation of that chip vs the orientation of the reader means your pet would have to be trained to rub up against the reader in a very specific way. If you could train your dog to do that you wouldn't need an rfid reader. You could just train them to use the toilet or to use a level or button to open the door. So forget about the microchip they already have. It won't work. In fact with my dog door the rfid tag has to hang down from her neck in a specific orientation or it won't work. RFID sensors read like this | | not like this – |, where the two lines represent the orientation of the tag and the reader coil. Off angle like this / | won't work very well either. This is why when you get to work you have to lay your security card flat against the reader. When you have coil alignment the read distance will be at max it can be. Turn it off axis slightly and the read distance decreases exponentially based on how off axis it is.

I'm trying to build this project except that I already have an electronic dog door mechanism. The door I have uses an ultrasonic collar to trigger the door and it's super finicky, the dog collar is large for a small dog, and the batteries are proprietary and ultra expensive. So my goal is to hack the door I already have to use RFID instead of ultrasonic.

The exiting through the door part is easy. I'm using a micro PIR sensor for that and it works great. The coming back in will need the RFID and the reader and antenna I have is very short range. I belive it's the same one used in this project. I have to place the tag right on the antenna. Although to be fair I have been powering it over USB. I tried to build my own antenna using the same sized wire and method shown here (10x10 inch square at 24 winds) but with that one it doesn't read anything at all. I also don't have equiment to measure inductance (that I know of).

I've looked at the microchip pdf but it's over my head. I wish I could just buy a large antenna that I could use that would read the dog tag at the distance I need.


I came across this site and your comment.... Sounds like I am in the same boat as you.... an pet door with ultrasonic collar that dose not work well for my dog. I have an active dog and the collar moves around, therefore the door sensor dose not pick it up :-( After many emails with the company, they offer nothing to help me with their door :-( So, I too am hoping to do a DYI with better sensors. I see your post is over a year old and I am wondering if you were able to to find better sensors to use with this door??? If so, would you be willing to share what you did?


I have the HIGH TECH Power Pet electronic door. I am willing to share my work. I just did a reworking of the door a couple of weeks ago. So I can include those fixes. My new system has an LED that shows the status of where the dog is (green for outside, blue for inside). And the new sensor the dog wears is very cheap ($1) requires no batteries, and is smaller than a normal dog tag. It's a dog tag RFID.

I'm not sure it belongs here on instructable but maybe on my own blog. It'll take me a little while to write it up though.

Are you using the cat's embedded RFID or an additional tag? How close does the cat have to be to be sensed?

The embedded tag probably won't work. For one the 3d alignment of the tag to the antenna is significant. For another it might not be the same frequency. An example of the alignment is imagine you have a loop antenna that is like a circle in front of you and you turn your tag so that it's 90 degrees off from that alignment and pass it thru the loop - it might not read at all. But turn it so that it's flat against that circle and it will read much better and farther away. The tag in your cat isn't going to match that alignment.

Same problem as everyone else, although the largest antenna I have tried so far is only 3" x 4". Always the same result with all of my antennas so far: approximately 1" read distance using a keyfob. They all work, but I am not seeing ANY increase in read distance as the antennas get bigger. I have tried several different brands of 125KHz readers. I have also tried two different brands of 13.56 MHz readers but the read distance only improves to 1.5 inches. Completely stumped.

My antenna goes around the entire tunnel the dog travels through to go in and out. When the dog passes thru it reads the tag, but only if the tag is aligned with the antenna. So the rfid tag had to be fixed to her collar so that when hanging down naturally it faces forward. When I properly tuned the antenna and removed noise in my system I got about 9-12 inches (not cm) from the center axis. In other words it would read the tag when the dog was entering the tunnel, before she was in the middle of the antenna. Which is where I needed it to work. Noise was a problem when I used a power supply instead of a battery. I fixed this by grounding my system to the actual ground. Recently I've been having problems with my system again. I think antennas are tricky and fragile.

Hi! I'm trying to build the cat flap. I have almost everything finished, except for one step: I tried to make an equivalent antenna, as described, by wrapping 30 gauge magnetic wire around a 26x17 cm PVC box (I need 26.5 loops). I even bought an LC meter, to make sure the inductance is the same. The antenna that came with the RFID module is 477uH, and the one I made around 472uH (It seems somewhat dependent on where and how exactly the exit wires go), but I get nice strings from the original antenna, and nothing from the one I made. I checked the resistance, and it is almost the same - 6 ohm (original) vs 8 ohm (mine).

What could the problem be??? I can't figure it out.