It’s been quite a while since our last project because we’ve been busy releasing 3.0 (check it out!). When we finally sat down to think about what to make, we concluded that we’ve made a few projects for dogs, but none for cats, And that’s just wrong! From there, it didn’t take long until the cat laser pointer was underway. It’s a perfect mix of playfulness and laziness, just the way we like it.

So what did we do?

We made an interactive cat laser game that’s controlled via mobile, and also has an automatic mode. We used a pan-tilt unit we found online (info and credit later on in this post), adjusted it to fit the laser diode, connected it to our phone with a Bluetooth module and started playing around with Pepper the cat, who turned out to be quite the Flamenco dancer.

Start Making the Circuit >>

On a side note – we read in various places that laser toys are not a replacement for physical cat toys, but you can combine the two, and use the cat laser to point at physical toys that the cat can play with. We’re not experts on the subject, so just use your common sense and we’re sure you’ll figure out what’s best for your cat.

Electronics for the Cat Laser

Primary Components

  • Arduino Uno
  • 650nm Red Laser Diode
  • 9G Micro Servo X 2
  • HC – 05 Bluetooth Serial Module
  • Wall Adapter Power Supply – 12VDC 2A

Secondary Components

  • USB Cable A to B
  • Voltage Regulator 5v
  • Electrolytic Capacitor – 1uF/50V
  • Capacitor Ceramic 100nF
  • HeatSink TO-220 (Optional)
  • M3 Bolt for HeatSink (Optional)
  • M3 Nut for HeatSink (Optional)
  • Jumper Wires Pack – M/M

Physical Components

  • 3D printed Pan/Tilt laser mount
  • Plastic enclosure box (we used 12cm x 7cm x 6cm box)
  • 10mm M2 Screws Phillips x 4
  • 10mm M3 Screw Phillips
  • M2 Nuts x 4
  • M3 Nut
  • M2 Sheet Metal Screw Phillips x 2
  • Servo horns (comes with the servo) x 2
  • Servo horns screws (comes with the servo) x 2

How We Built the Cat Laser

Pan-Tilt Mechanism

We started off by looking for an affordable pan-tilt mechanism. We found this model on Thingiverse (credit to Fernando Bueno from 3D Open Hardware) and it was a good starting point.

The mechanism has three parts. We remodeled the top part of the servo and added a small dome with a hole so that the laser diode could fit in it. The other two parts we printed as is. You can find the printable files on Thingiverse.

Parts for Laser Cat

The slider below explains exactly how to put together the pan-tilt and the electronics:


  • Wiring the laser diode
    Step 1: Insert the laser diode into its hole in the top plastic part. You may need to solder longer wires to the diode. Note: Home 3d printers tend to be inaccurate, so if the laser doesn’t fit into the hole, you can use a 6mm drill manually to expand it. Just make sure that you don’t drill all the way because the tip is a bit more narrow to prevent the laser from popping out of its place.

Assembling the Circuit

We decided to use two small servo motors because they are relatively cheap and have no problem carrying the weight of the laser (which is pretty light).

We chose a simple laser diode and a Bluetooth HC-05 connectivity device so we can control the laser from my phone. Unfortunately, it only works for Android (sorry iPhone users).

Here’s a link to the circuit wiring instructions

After you wire the circuit, use the test code in the project guide, to check that it’s wired correctly.


The code from uses the built-in servo library of the Arduino IDE, but it doesn’t provide the behavior we want for this project. Therefore, I’ve replaced it with “VarSpeedServo” library. This library adds a smoother movement to the servos, giving the cat time to respond and play.

You can also find it on our GitHub repo of this project.

Download the source files. Only edit pin numbers from the original code from

To connect to the unit wirelessly, we used HC-05 Bluetooth module and paired it with the ‘Arduino BlueControl’ app. You can find it for free on Google Play Store.

How to Configure the Arduino BlueControl app

  1. Open the app and connect to your HC-05 device
  2. In the upper right corner click the settings gear icon
  3. Configure the Arrows under the ‘Arrow Keys’ section of the menu
    1. Click Keys configuration
    2. You will be presented with four arrow keys to configure
    3. Click on them and configure their names to be: Up, Down, Right and Left. This defines the string to be sent via Bluetooth when pressing the arrow key. You should make sure that these strings are the same as in the code (case sensitive).
  4. Configure the Buttons: Under the ‘Buttons and Slider’ section of the menu
    1. Click on ‘command buttons configuration’.
    2. You will see six button configurations, clicking on them will open a dialog box to edit the button name, as before this name is the string that is sent to the Arduino over Bluetooth. You can name them as you like just make sure to support it correctly in the Arduino code.
    3. In our case, matching the given code:
      1. A: Laser On/Off
      2. B: Autoplay
      3. C: Speed Up
      4. D: Speed Down
      5. E: Area +
      6. F: Area –
  5. The strings are case sensitive, therefore, if some button or key does not work – double-check the string that is being sent from your app. You can always print the string on the receiving side – the Arduino.

The Cat Laser has two Modes:

  • Manual:
    • On startup, it is in manual mode, in the Arduino BlueControl app go to ‘Arrow Keys’ ( see define arrow keys)
    • If set correctly, each arrow will move the corresponding servo a random number of steps(angels).
  • Autoplay:
    • Go to ‘Buttons & Slider’, clicking the ‘Autoplay’ button will start the automated cat game. The laser will jump from a random point to another with a smooth path.
    • You can adjust the speed of the game by pressing the ‘Speed Up’ or ‘Speed Down’ – this decreases/ increases the delay between the points.

More Buttons:

  • ‘Laser On/Off’ – turn on/off the laser
  • Area +/- – this will change the servo margins, adjusting the overall playing area.

Code for Laser cat


Making the Arduino Shield

After everything was in place, we wanted to make the circuit a bit more durable, so we decided to make an Arduino Shield using Sparkfun’s Proto Shield.

we moved the parts from the breadboard to the Proto Shield and soldered them the same way they were wired on the breadboard.

Sequence 02.00 01 37 05.Still021

we used 6 female headers instead of soldering, to connect the Bluetooth module to the Arduino so we can plug and unplug it easily.

we also used two 3-pin male headers for easily plugging the laser.

Sequence 02.00 01 41 03.Still024

Putting All the Parts Together

Before the final assembly, we checked that the new circuit with the Proto Shield was working and placed the pan-tilt unit on the edge of the wiring box.

Then we did the final assembly, as you can see in the slider below:


  • Drill 2 3mm holes
    Step 1: Mark the corners of the pan-tilt unit and drill two holes with a 3mm drill in the box


And that’s how we built the cat laser pointer! We’re glad to have shared this project with you and hope you have as much fun making it as we did. You’re welcome to share the results in the comments below. Also, if you have any questions or ideas, we’d love to hear those as well.

Enjoy Making!