Twist & Shoot

Arduino-Based Pan/Tilt DSLR Mount

Isaac Chasteau

Issue 35, June 2020

Isaac applied his knowledge of robotics and electronics to build this Arduino Nano controlled pan/tilt camera mount for time-lapse and video motion control.

We discovered Isaac’s amazing project online when a video of his servo controlled pan/tilt camera cradle caught our eye. We just had to get in touch with Isaac to find out more.

What we discovered was a talented robotics graduate who had built an Arduino-based DSLR cradle to take timelapse and panoramic photos. His feature rich build is wireless with Bluetooth connectivity, and portable thanks to a rechargeable LiPo. It has continuous rotation in both the pan and tilt axis, and has an auto homing feature. Once it finds its zero position, it moves to its start and end points that it will move between while taking pictures for a timelapse. The angle between each picture and the delay between them can also be changed. Genius!

Thank you for taking the time to chat with us Isaac. Can you tell our readers a little about yourself, and what got you interested in electronics, 3D printing, coding, and robotics?

My name is Isaac, I’m a spinal cord injury survivor living in the UK and trying to pursue a career in robotics engineering.

I’ve always loved making things. As a child I was always playing with LEGO and K’Nex (My current computer desk is actually made out of K’Nex!). I chose to do a general engineering course at college before studying robotics engineering at university, where I completed my Master’s degree. Robotics covers a vast number of subjects and gave me the great opportunity to discover which parts I was drawn to. Designing and prototyping is definitely the area I enjoy the most! It’s an incredible feeling to be able to have an idea then make it into a reality.

We’re sure studying something you love would have made it easier to complete your Masters. Congratulations! We were impressed by your pan/tilt DSLR project. What motivated you to build your pan/tilt DSLR mount?

The main reason was I just got a new DSLR camera and wanted to be able to do some motion controlled shots for my YouTube channel. Another reason was I wanted to mount a powerful laser module to it and have a laser turret capable of burning things. And the last reason was that I had a large bearing (which I used for the pan axis) I have always wanted to use for something.

Laser turret to burn things?! We look forward to seeing if you build that. Please tell us more about the overall functionality of your Pan/Tilt build.

The pan tilt mount can be controlled via Bluetooth or USB and has two modes: time-lapse and video motion control. In time-lapse mode you set the start and end pan and tilt angles, the angle it moves between pictures and the delay between taking pictures. This time-lapse mode can also be used for panoramic shots by setting a large angle between each picture although other software is needed to stitch the individual pictures into a panoramic one. In video motion control mode you can set multiple key frames (positions for each axis) with various speeds and delays. When executed, the key frames will be smoothly interpolated between at the desired speeds.

What camera and lens have you used in your build, and would the centre of gravity change if the user has a different camera and lens?

My camera is a DSLR Canon EOS 250D. The lens in the pictures is a Canon EF 50mm f/1.8 STM. I have also tested it with my Canon EF-S 18-55mm f/3.5-5.6 lens which works perfectly but is longer and does not allow the tilt axis to rotate 360 degrees (This is not a problem for a normal use case.)

I designed the pan tilt mount to rotate about my cameras centre of gravity when equipped with the 50mm lens. It is balanced well enough that it holds its position even when powered off. Changing the lens will change the centre of gravity hence why I had multiple holes on the Tilt U-Mount bracket and have since added a slot to allow more accurate balancing.

If the camera is too unbalanced it could put too much strain on the motors and cause them to skip steps and lose their position. The motors and gear ratios should provide plenty of torque to prevent this from happening though, and I have not had any issue with it. This could also be mitigated against by slowing the movement speed or changing to full step mode for more torque.

It’s great that you have made it versatile. I’m sure our readers are keen to know more about what’s ‘under the hood’.

The pan tilt mount can be powered by an 11.1V LiPo battery or can have a 12V DC input. The brain of it is an Arduino Nano which controls all the other electronics, monitors the sensors and battery level and triggers the camera to take pictures. It can be controlled by simple text based commands over USB or Bluetooth with the help of a JDY-31 serial pass-through module. Almost every setting can be changed and saved to non-volatile memory so it remembers your setting after being switched off.

To get precise movements I chose to use Nema 17 42mm Stepper motors, which are rated for 2.8V and 1.68A. The motors are controlled by A4988 stepper motor driver boards which have a microstepping mode. This gives 16 times more positional resolution allowing for even more precise control. When combining the stepper motor’s step angle, the microstepping mode and the gear ratios of the pan and tilt axis you get a precision of 0.0133° and 0.0369° respectively. (Stepper motors move 1.8° per full step, microstepping divides this by 16, the pan axis has a gear ratio of 144:17 and the tilt has a ratio of 64:21).

Nema 17 42mm 2.8V stepper motor.
Stripboard prototype with RGB LED, and rechargeable Li=Po for portable operation.

When the mount is powered on it doesn’t know what position it is in so I embedded magnets and Hall effect sensors in the pan and tilt axis to allow it to automatically home to a zero position. I chose Hall effect sensors because they do not need any physical contact and therefore allow for both axis to continuously rotate.

There is an RGB LED to indicate various status conditions such as homing, battery level or if it’s taking a picture.

My DSLR camera can have the shutter triggered via an input by a 2.5mm 3 pole jack. This allows the Arduino to trigger the camera shutter by using an NPN transistor to pull the 2.5mm jack down to ground.

Wow! It has some impressive features. Bluetooth for wireless control, and the use of hall effect to avoid any unnecessary connections is brilliant. Will the common HC-05 Bluetooth module work as well, and what glue did you use to avoid melting the PLA but strong enough to hold the magnets and hall effect devices in place?

As far as I am aware, the JDY-30, JDY-31, HC-05 and HC-06 all share the same pinout and will all work. I used a cyanoacrylate superglue for the magnets and a small amount of hot glue for the pan Hall effect sensor (I only used hot glue so I would be able to remove it if necessary. The tilt Hall effect sensor is clamped in place and does not require glue). The magnets and Hall effect sensors shouldn’t be subjected to any significant forces so the glue is just there to stop them from falling out.

Does it use commonly available parts if our readers wanted to make something similar?

Yes, most of the parts should be easy to get from electronics retailers. I am based in the UK, so I normally get my components from banggood.com and ebay.co.uk. I also occasionally have used Hobbyking.com, Amazon.co.uk, and rapidonline.com (Rapid Electronics).

The only part that may be hard to get is the pan bearing because it came from an industrial robot. I only got it because I was working at the company for a Summer internship, and it was being replaced so I was allowed to keep it.

The body is all 3D printed in PLA and all the design files will be open source. All the electronics use standard components and the custom PCB and schematics are open source.

That’s great that you have made your design open source, and an internship at a company using robots would have been fascinating. We see that the pan bearing is available from various bearing specialists if you search for "INA CSXU050 2RS Bearing" online. Can you tell us how you went about prototyping the project?

For the 3D design, I used CAD to model the whole assembly so didn’t need to make any physical prototypes of the complete design. However I did prototype and 3D print the gears to ensure the teeth meshed properly and moved smoothly with the tolerances I gave them.

I prototyped the electronics on a breadboard to make sure my schematic was correct; I could control the stepper drivers how I wanted; and everything would work. I actually had some trouble because the breadboards couldn’t handle the current for the motors which caused some unpredictable behaviour. Despite this it showed everything else worked so I could the progress to soldering the circuit on perfboard. With the prototype circuit I was able to test that the stepper motor would be able to smoothly turn the gears I design and that they would produce enough torque.

Prototype circuit on a breadboard.
Prototype circuit on a perfboard.

Breadboards can make prototypes challenging when dealing with high current or high frequencies. Your 3D prints look great. What printer and CAD software do you use, and how did you go about designing the chassis?

All the parts were printed in silver PLA on my Ender 3 Pro (using a 0.4mm nozzle, 0.2mm layer height and 20-30% infill). I use Ultimaker Cura to slice all the models for printing. And I modelled all the parts in Autodesk Inventor Professional 2020.

The base of the design was mostly constructed around the pan bearing and wanting to allow continuous rotation. This gave the rise to having teeth all the way around the base and having both motors mounted to the upper section that rotates. My DSLR camera determined the critical dimensions of the upper section. The upper section is all designed to rotate about the camera’s centre of mass so no holding torque is required and it is easier to accelerate and stop.

When designing the parts I always try and consider the printing orientation for both strength and the need for supports. Only two parts ended up requiring supports.

Having access to the right tools and software helps ensure success. What challenges or trial and error did you need to overcome with the project?

My biggest issue was with prototyping the circuit on a breadboard. The stepper motors drew too much current for my breadboard which ended up causing a lot of confusing behaviours and electrical issues. Once I figured out the issue was the breadboard I moved over to using a soldered PCB which solved the issues.

A silly issue was completely incorrectly dimensioning a part so the resulting 3D print was about half the size it was supposed to be.

Oops. Measure twice, cut once they say. If you were to start over again, what would you do differently?

I would like to replace the pan bearing with a much more commonly available one as I wasn’t expecting so many people to want to replicate it. The other change I would make is to have more clearance between the tilt axis and pan stepper motor because with larger lenses on my DSLR the movement range is slightly restricted.

Yes. Your project has been one of the most popular posts on our Instagram account. We imagine you were flooded with makers wanting to build one for themselves. Is any of your design and code available for download?

The code, schematics, and PCB Gerber files are all available on my GitHub repository. I intend to make the entire project open source and will release the STL CAD files on Thingiverse soon. I also intend to make a build/demo video that will be up on my YouTube channel.

Good on you for your generosity and enabling other makers to build your design. We'll share some of the construction details at the end of this article and provide some of the necessary files on our website. We were pleased to see you have also designed a PCB. Is that just a direct PCB version of the current design?

It is identical component wise but has different pin assignments for the sake of routing the traces. Two more GPIOs were also utilised to allow the stepper drivers to be set in half, quarter and eight step modes. There wasn’t enough room to route them on the perfboard and there was not much point in the extra modes anyway as I already have full step mode for higher speed and torque, then I have sixteenth stepping for precision.

You also mentioned you're still working on the 3D print files before they go onto Thingiverse. What is it you are not happy with regarding the prints? When do you think they'll be on Thingiverse?

There was a minor tolerance issue with the hole for the magnet in the base that I fixed. I counterbored the mounting holes in the base so if it was mounted to something the bolt heads would be flush and not interfere with the pan rotation. Finally I changed one of the holes on the Tilt U-Mount bracket to a slot to allow the camera to be more precisely balanced with different lenses.

Have you made any interesting projects in the past that have been as successful as this one?

Yes, I have made quite a few projects now. My most popular ones are my “RGB Time Fountain” and “3D Printed Delta Robot”.

We hope our readers spend the time to check out your clever handiwork and subscribe to your YouTube channel. What projects are you working on now?

Currently I’m working on adding a linear slider rail to my pan/tilt mount, which explains the third servo driver output. I’m also using OpenCV for some computer vision applications for my delta robot.

You must wish there were more hours in the day to keep designing and building. Finally, do you have any advice for our readers who are now inspired to go and turn their idea into reality?

Stop putting it off and make a start on it! It’s not going to design itself... I think it’s also important to remember that these kinds of project take a lot of time and work that never gets seen, so don’t feel discouraged if you’re struggling. Everyone else struggles too but you just don’t end up seeing it.

We really appreciate you taking the time to share your project with our readers. We are really interested in what you will make next so we will certainly keep in touch. Love your work Isaac!

Build One For Yourself:

If you are inspired to build a similar pan/tilt DSLR mount like Isaac's then we've published Isaac's parts list, schematic, Fritzing diagram for the perfboard build, and will point you to the relevant resources for the rest.

Parts Required:JaycarAltronicsCore Electronics
2 x Nema 17 42x42x40mm 2.8V/1.68A Stepper Motors--POLOLU-2267
2 x A4988 Stepper Motor Driver--POLOLU-2980
2 x Adhesive Heatsinks to suit Motor DriversHH8581H0603FIT0191
1 x Arduino Nano or Compatible BoardXC4414Z6372CE05101 or A000005
2 x A3144 Hall Effect Sensor--US5881LUA
2 x 6.4mm Diameter x 1.7mm Neodymium Magnets--See Notes Below
2 x 3.2mm Diameter x 1.7mm Neodymium Magnets--See Notes Below
1 x WS2812B Addressable RGB LED (See Notes Below)ZD0272-COM-12986
1 x 2N3904 NPN TransistorZT2326Z1200CE05245
1 × 330Ω Resistor*RR0560R7546PRT-14490
1 × 470Ω Resistor*RR0540R7550COM-10969
2 × 15k Resistors*RR0600*R7586*FIT0119
2 x 33kΩ Resistors*RR0608R7594FIT0119
3 × 100µF Electrolytic CapacitorRE6130R4825CE05258
1 x 2 Pin Plug-In Screw Terminal Block Connector 5.08mm Pitch (for Power)HM3172P2038POLOLU-2440
1 x 6 Pin Female Header Connector 2.54mm (for Bluetooth Module) ^HM3230P5390POLOLU-1014
2 x 15 Pin Female Header Connector 2.54mm (for Arduino Nano) ^HM3230P5390POLOLU-1014
2 x 15 Pin Male Header Connector 2.54mm (for Arduino Nano) ^HM3212P5430FIT0084
4 x 8 Pin Female Header Connector 2.54mm (for Stepper Drivers) ^HM3230P5390POLOLU-1014
4 x 8 Pin Male Header Connector 2.54mm (for Stepper Drivers) ^HM3212P5430FIT0084
3 x XH2.54 3 Pin Terminal Socket Header (for Hall Effect and WS2812B LED)*--FIT0255
3 x XH2.54 3 Pin Terminal Socket Plug (for Hall Effect and WS2812B LED)*--FIT0255
1 x XH2.54 2 Pin Terminal Socket Header (for Camera Shutter Trigger)*--FIT0255
1 x XH2.54 2 Pin Terminal Socket Plug (for Camera Shutter Trigger)*--FIT0255
1 x Glue (for Magnets and Hall Effect Sensor)NA1510T3016CE05762
1 x 11.1V 3S LiPo Battery or 12V DC Power Source and Connector to Screw Terminal

Parts Required:

2 x Nema 17 42x42x40mm 2.8V/1.68A Stepper Motors-
2 x A4988 Stepper Motor Driver-
2 x Adhesive Heatsinks to suit Motor DriversHH8581
1 x Arduino Nano or Compatible BoardXC4414
2 x A3144 Hall Effect Sensor-
2 x 6.4mm Diameter x 1.7mm Neodymium Magnets-
2 x 3.2mm Diameter x 1.7mm Neodymium Magnets-
1 x WS2812B Addressable RGB LED (See Notes Below)ZD0272
1 x 2N3904 NPN TransistorZT2326
1 × 330Ω Resistor*RR0560
1 × 470Ω Resistor*RR0540
2 × 15k Resistors*RR0600*
2 x 33kΩ Resistors*RR0608
3 × 100µF Electrolytic CapacitorRE6130
1 x 2 Pin Plug-In Screw Terminal Block Connector 5.08mm Pitch (for Power)HM3172
1 x 6 Pin Female Header Connector 2.54mm (for Bluetooth Module) ^HM3230
2 x 15 Pin Female Header Connector 2.54mm (for Arduino Nano) ^HM3230
2 x 15 Pin Male Header Connector 2.54mm (for Arduino Nano) ^HM3212
4 x 8 Pin Female Header Connector 2.54mm (for Stepper Drivers) ^HM3230
4 x 8 Pin Male Header Connector 2.54mm (for Stepper Drivers) ^HM3212
3 x XH2.54 3 Pin Terminal Socket Header (for Hall Effect and WS2812B LED)*-
3 x XH2.54 3 Pin Terminal Socket Plug (for Hall Effect and WS2812B LED)*-
1 x XH2.54 2 Pin Terminal Socket Header (for Camera Shutter Trigger)*-
1 x XH2.54 2 Pin Terminal Socket Plug (for Camera Shutter Trigger)*-
1 x Glue (for Magnets and Hall Effect Sensor)NA1510
OPTIONAL:JaycarAltronicsCore Electronics
1 x 2.5mm 3 pole Jack Male (for Camera Trigger)+PP0103P0022ADA1798
1 x 11.1V 3S LiPo Battery (for Portable Applications).Available from Hobbyist Retailers.
1 x 12V DC Power Source (for Fixed Powered Application)MP3490M8936DAM8936
1 x 12V DC Power Connector to Screw Terminal (for Fixed Powered Application)PA3713P0610APOLOLU-2449
1 x Pan Tilt Mount PCB (for purpose made PCB).See Resources Section for PCB Files.
1 x Perfboard (For option similar to Isaac's prototype)HP9550H0714ADA2670
1 x JDY-31 Bluetooth Module (See Notes Below)XC4382Z6365CE00021


Bearings & Fasteners:3D Printed Parts:
2 x 8 x 22 x 7 ABEC-5 Bearing 1 x 21 Tooth Herringbone Gear
9 x M3 Hexagonal Nyloc Nut 1 x 64 Tooth Herringbone Gear
8 x M3 Square Nut1 x 17 Tooth Herringbone Gear
6 x M3 Button Head Hex Bolt 16mm1 x 144 Tooth Herringbone Gear Base Mount
13 x M3 Button Head Hex Bolt 12mm1 x Tilt U-Mount
5 x M3 Button Head Hex Bolt 6mm1 x Idle Side Bearing Mount
1 x M3 Button Head Hex Bolt 4.5mm1 x Gear Side Bearing Mount
1 x Camera Mounting Bolt1 x Idle Side Support
1 x Gear Side Support
1 x Pan Mount & Pan Mount Bearing Clamp
1 x Base Mount Bearing Clip Ring
1 x Hall Effect Stepper Mount
1 x 127 x 146.05 x 12.7mm INA CSXU050-2RS Bearing # OR 1 x Bearing with 28 x 6mm Balls #

* Quantity shown, may be sold in packs. You’ll also need a breadboard and prototyping hardware. ^ Supplied in longer lengths and need to be cut to size.

+ Connector may vary depending on the camera you are using. # Isaac has provided 3D print files to print a suitable bearing if you can not source the metal type.


  • This parts list is a guide only. The project has not been built and tested using these products from Jaycar, Altronics or Core Electronics.
  • Isaac is based in the UK and purchased parts for his project from online retailers such as Banggood, ebay, HobbyKing, Amazon, and Rapid Electronics.
  • Isaac used a JDY-31, however, a JDY-30, HC-05 and HC-06 all share the same pinout and should all work
  • Core Electronics sells magnetic rings (COM-08914) that measure 4.8mm Dia. x 1.6mm, which may be suitable, but untested.
  • General purpose hook-up wire (for Stepper motors, Hall sensors, WS2812B LED, Bluetooth module), heatshrink, and solder is also required.
  • WS2812 LED modules suggested are not identical to the one that Isaac used.

Editor's Note:

Just before going to press, we heard from Isaac that he has designed a 3D printed bearing since he originally spoke to us. Here's what Isaac had to say.

I have had a massive amount of interest in this project which I was not expecting and is great! However, it turns out the pan bearing I used is several hundred pounds to buy which is a barrier for anyone wanting to make this project. So, I designed a drop in replacement for it consisting of three 3D printable parts and 28 x 6mm BB pellets. The STL files have been uploaded with the rest of the project CAD files to Thingiverse.

Fully assembled 3D printed bearing.
28 x 3D printed ball bearings.