RFID Cat Door




Introduction: RFID Cat Door

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. 

Microcontroller Contest

Second Prize in the
Microcontroller Contest



    • Metalworking Contest

      Metalworking Contest
    • Creative Misuse Contest

      Creative Misuse Contest
    • Tiny Home Contest

      Tiny Home Contest

    83 Discussions

    Wouldn't it make more sense to put the magnet on the door and the Hall sensor by the solenoid? less wiring and no flexing.

    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...


    1 reply

    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.

    2 replies


    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?

    1 reply

    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.

    1 reply

    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.

    4 replies

    I built another antenna, this time using 21AWG. Same result. However, now I noticed that when I bring the tag very close to the loops - pretty much rubbing the wires, then it is read with both antennas. Now I need to convince the cat to rub her tag on the wire... maybe catnip spray?

    Did you ever figure it out? I'm having the same issue where I need a larger antenna, except that I'm not getting anything at all with mine.

    No, I didn't. My next step was to try other RFID readers, but I haven't done that yet.

    I actually did get mine working. My RIFD reader can report back with the .. um.. frequency?.. of the antenna. You send a MOF (measure operating frequency?) command to it and it reports back. So used that to get my antenna sort of close (not really very close) just by guessing on the # of winds. Then I bought a variety pack of capacitors and my RFID reader also has a place to insert adjustment capacitors to 'tune' the antenna. So with that I was able to get it fairly close to 125. It worked for a while. It's not been working well lately. So I checked and the tape I used to hold the winds tight had broken down. I've fixed that but at the moment I'm not getting any readings when the tag is near.
    I also had a lot of problems with noise. The power supply I'm using is noisy and it kept it from reading tags. My fix was to ground the circuit to actual ground.. like metal in the house frame.
    My addition now is that I have a micro PIR sensor on the inside of the door, and one inside the tunnel (outside the door). I'm using the timing and cadence of those triggers to determine if the dog actually goes out the door. If so then I watch the outside one for a few minutes to let her in even without the rfid tag. However if she stayed out too long, or triggered the outside PIR without coming back in, then it would revert back to requiring RFID to enter.

    I was pretty excited to see this project. I'm hoping to build something like it because, to shorten a long story, I have 2 cats and I really need them to only go in their own boxes. The box I want to lock is basically inside a cabinet and I'm only concerned about it preventing entry from one direction. In fact when a cat is inside, I would rather leave it so they can always get out, regardless. One of my big concerns right now is the servo. I bought a couple to try them out and unfortunately they make a pretty loud noise when they engage. It made me jump so I know there's no way my cat will go near it when he hears it. Anybody heard of any similar projects that may have some support?

    Hello, you said that the code requires newsoftserial code, how can i get it to work?


    1 reply

    how do you know if you've got the windings right? Meaning, why 24, and not 30?