I am currently developing a one axis motion control system to automate the process of taking time-lapses. Such systems and even more advanced ones are commercially available, but I wanted to implement such a system for a long time, such that I finally decided to make one. This project consists of a controller unit and a simple camera slider based on commonly available parts.

The main focus of this project lies on the controller unit which consists of a custom PCB that uses the ESP32 microcontroller. The board will be able to drive one stepper motor and can trigger a camera’s shutter. Currently, I only plan to implement a time-lapse mode in the software, but you could definitely use the controller unit for other motion control based applications.

The main features of the controller board will be:

  • uses powerful ESP32 microcontroller with 240 MHz
  • drives one stepper motor with a feature-rich TMC2130 chip (e.g. sensorless end stops possible)
  • electrically isolated triggering of the camera via opto-couplers and 3.5mm jack
  • powered by USB-C Power Delivery (PD) with up to 20V
  • user interface consists of an OLED display, a joystick, and a stop button
  • ESP32 has built in WiFi and Bluetooth interfaces, so remote control is possible

The following rendering shows the current state of the custom 4-layer PCB that mainly uses surface-mount components.

Custom PCB created for the control unit of LazySlider

The controller unit can be used with any compatible motion control system. However, the following picture shows the current version of my reference implementation. It will be 3d printable and uses the popular v-slot aluminum profiles as a base. As motor it will use a common Nema 17 stepper motor and the gantry will be belt driven.

First CAD rendering of the LazySlider motion control system.