Interactive Remote Cat Toy

Timeline: 2 weeks

Tools: Raspberry Pi, Flask, SocketIO, Python, HTML/CSS

I imagine my cat is bored at home while I’m out, so I built a website that lets me (or anyone) control a laser pointer through their browser to give her some entertainment. You can move your cursor over the live video stream and the physical laser follows in real-time.

It started as a solution to a personal problem, but turned into a exploration of real-time systems, hardware-software integration, and seemingly random edge cases that come up when you're trying to make digital interactions feel responsive and intuitive in the physical world.

Screenshot 2025-11-20 at 3.53.42 PM.png

System Architecture

Hardware Stack

Raspberry Pi 5

Runs Flask server, handles camera streaming, and controls servo movements. The Pi 5 is my go-to for most projects, and the processing power helps handle simultaneous video encoding and servo calculations.

Raspberry Pi Camera Module 3 NoIR

8MP camera captures live video at 30fps. Positioned above the play area for full coverage of the laser's range. NoIR so video is clear at night, when cats are most active.

PCA9685 Servo Controller

16-channel PWM driver receives directions from the Pi and controls the servos. This offloads PWM signal generation from the Pi's GPIO pins, resulting in cleaner servo control.

2x SG90 Micro Servos (metal gear)

Pan and tilt servos mounted to position the laser pointer. Lightweight and snappy for responsive tracking. I tried the cheaper, plastic gear option, but quickly realized some things cost more for a reason.

5mW Red Laser Pointer

Standard laser module, coded to operate at 50% intensity for human and cat eye safety.