How to Make a Remote-Controlled String Toy for Cats

by sorgan in Circuits > Arduino

135 Views, 0 Favorites, 0 Comments

How to Make a Remote-Controlled String Toy for Cats

final_catToy.jpg
Arduino Cat Toy

Cats are active creatures, and need lots of play time to remain happy and healthy. They love pouncing for dangly strings. However, sometimes relaxing on the couch sounds more enticing than running around with a string to keep my cat occupied. What if I could do both? An exciting game for your cat, entirely remote controlled. It securely attaches to a wall, drawer, or table via a custom 3D printed piece, and you can personalize the toy to make it one of a kind.

Supplies

1000000429.jpg

A. Arduino Board (I used an Uno but any Arduino board will work, smaller models may require also using a breadboard)

B. Breadboard (if applicable)

C. IR Receiver Module and Remote

D. SG90 Servo Motor

E. Arduino-compatible Female-to-Male and Breadboard Jumper wires

F. Cable to connect Arduino board to computer

G. 3D printer (I used SLA filament but most rigid-when-dry materials will work)

H. String and/or yarn

I. String cat toy (the kind attached to a plastic dowel)

J. To mount: duct tape, suction cup, velcro, nails, or sticky tack

K. Optional: pom poms, beads, bells, pipe cleaners

Build Your Circuit

1000000431.jpg
1000000433.jpg
1000000435.jpg

A. Connect the Arduino, breadboard, and computer

  1. Connect a positive (red) power rail on the breadboard to the 5V pin on the Arduino using a breadboard jumper wire (red in my circuit).
  2. Connect a negative (blue) power rail on the breadboard to the ground (GND) pin on the Arduino using a breadboard jumper wire (black in my circuit).
  3. Use the cable to connect the Arduino to the computer.

B. Connect the IR receiver module

  1. Check your IR receiver's datasheet for which pin on the receiver is power, ground, and signal.
  2. Use female-to-male wires to connect power (red wire) to the positive power rail, and ground (black wire) to the negative power rail.
  3. Connect signal (yellow wire) to a digital pin on the Arduino, I used 11.

C. Connect the servo motor

  1. Check your servo motor's datasheet for which connection on the motor is power, ground, and signal.
  2. Use breadboard jumper wires to connect power (red wire) to the positive power rail, and ground (black wire) to the negative power rail.
  3. Connect signal (orange wire) to a digital pin on the Arduino, I used 9.


Implement the Software

The program codes the servo to turn from 0 to 180 degrees when the user pushes the 1 button on the remote, and from 180 degrees to 0 when the user pushes the 2 button.


You need to download 2 libraries for the code to run: IRremote.h and Servo.h. If you navigate to Library Manager in the Arduino IDE, you should be able to search for them and click "Install".


You can customize the angle of rotation and which buttons execute the commands by editing the code below, or if you do not want to make any changes, you can just copy paste it into the Arduino IDE and upload it to your board.


//Necessary libraries: make sure you download these!
#include <IRremote.h>
#include <Servo.h>
//

// You can edit this to the pin you attached the IR receiver signal to
int receiver = 11;
//

IRrecv irrecv(receiver);
uint32_t last_decodedRawData = 0;

Servo myServo;

// You can edit this to the pin you attached the servo signal to
int servoPin = 9;
//

void translateIR() {
if (irrecv.decodedIRData.flags) {
irrecv.decodedIRData.decodedRawData = last_decodedRawData;
}
else {
}


switch (irrecv.decodedIRData.decodedRawData) {
//Corresponds to the "1" button; you can change this to the code of the button you want
case 0xF30CFF00:
//
myServo.write(180);
break;

//Corresponds to the "2" button; you can change this to the code of the button you want
case 0xE718FF00:
//
myServo.write(0);
break;

default:
break;
}

last_decodedRawData = irrecv.decodedIRData.decodedRawData;
delay(100);
}

void setup() {
irrecv.enableIRIn();
myServo.attach(servoPin);
myServo.write(0);
}

void loop() {
if (irrecv.decode()) {
translateIR();
irrecv.resume();
}

3D Print and Assemble the Mount

Screenshot 2025-07-07 130641.png
IMG_7680.jpg

Print the STL file linked in 'Supplies' titled CatToy_Mount.stl. There are two individual pieces that interlock with each other and the servo. I was looking for a design that could withstand the torque of a cat pulling on the toy, and was inspired by interlocking T-rails often used to mount heavy shelves. I printed the piece at 100% fill to maximize its sturdiness.


Wait for your piece to fully cool, then you can interlock the pieces and attach the servo, they should fit snugly.

Customize Your Toy

Screenshot 2025-07-07 174714.png
unnamed (1).jpg
unnamed.jpg

This step is optional if you just want to attach a cat toy you already own, or you can get crafty and add to your existing cat toy with items lying around your home.

I used pipe cleaners to string colorful pom poms together with some beads. Simply wrap the pipe cleaner in a cross around the pom pom, securing the end in a twist with itself. I had letter beads, so I wrote my cat's name.

With some yarn of varying color, thickness, and texture, I created a nine-strand braid by making three braids, then braiding the braids together. My cat loves it.

If you have small bells with loop attachments, you can string them together for an added audio feature.

Put It All Together

unnamed (2).jpg
final_catToy.jpg

Cut yourself a piece of string or yarn the length of your arm. Fasten the end of the plastic dowel of the cat toy securely to the servo motor. I would recommend using a motor with at least two horns, so you can wrap the string in a figure 8 motion, looping around one horn at a time. Tie the ends of the string.

Next, use duct tape, sticky tack, velcro, nails, or a suction cup to attach the back of the mount onto a wall, drawer, table, chair, or any other flat surface. The divots on the back of the mount are meant to hold the contraption more securely.

The rest of the electronic components can rest on top of a nearby counter or table, or you can tack them to the wall.

Plug the Arduino in, use the remote control, and have fun with your new creation!