How to Make an Interactive Cat Laser Pointer
It’s been quite a while since our last project because we’ve been busy releasing circuito.io 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.
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.
The steps below explain exactly how to put together the pan-tilt and the electronics:
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.
Step 2: Place the servo so that its ribs interface those of the top plastic part.
Step 3: Use two M2 Sheet Metal Screws to keep the servo in place. Make sure that the servo doesn’t crush the laser wires, and the wires are placed in the tunnel underneath it.
Step 4: Place the second servo inside the middle plastic part. Insert the wires through the niche, this can be a bit difficult because the servo needs to sit pretty tight. We used a screwdriver to force it in.
Step 5: Place one servo horn in the niche
Step 6: And an M3 nut in the niche on the opposite arm. Connect the middle and top plastic parts
Step 7: Connect the Servo horn to the servo head, and from the other side screw the M3 bolt into the nut. At this point you need to check the servo movement range manually by moving it from side to side. It’s important to do this because if the range is limited the servo might get stuck (you can see how we did this in the video). After adjusting the range, place the servo horn screws in between the servo horns and the servo.
Step 8: Moving on to the base - place the servo horn into the niche
Step 9: Place the servo head into the servo horn and check the servo movement range like you did before.
Step 10: Once the range is right, insert the servo horn screws between the servo horns and the servo, from underneath the plate.
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.
Code
The code from circuito.io 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 circuito.io.
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
- Open the app and connect to your HC-05 device
- In the upper right corner click the settings gear icon
- Configure the Arrows under the ‘Arrow Keys’ section of the menu
- Configure the Buttons: Under the ‘Buttons and Slider’ section of the menu
- 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:
- Autoplay:
More Buttons:
- ‘Laser On/Off’ - turn on/off the laser
- Area +/- - this will change the servo margins, adjusting the overall playing area.
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.
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.
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.
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!