A remote control panoramic head for cameras

The purpose of this project was to make a device that slowly and steadily rotates the camera, which makes it possible to do timelapse photography. The project was based on a stepper motor, Arduino module and Bluetooth module. To control the movement of the head, an application for Android was written, which through the Bluetooth interface sends commands to the microcontroller controlling the head. Thanks to the use of gears it is possible to smooth and slow rotation of the device which weights up to 1.5 kg. The construction consists of two modules. The first one is a metal stand mounted to the camera. The second one is a base for the whole device. The project was created mainly for taking time-lapse photography.


Elements

Finally, the system was implemented using four modules that work together to provide the full functionality of the device. The component responsible for controlling the panoramic head is Arduino Leonardo with ATmega32u4 microcontroller, which controls the stepper motor. Between the MCU and the Bluetooth module, there is a logic state converter. This allows communication in both directions between 3.3V and 5V standards. Commands are transmitted via Bluetooth communication between HC-05 module mounted in the head and a smartphone with a dedicated application. An important aspect while choosing the components was their popularity and affordable price.

Mechanical components

The goal of the designed device from the mechanical point of view is to rotate a camera weighing up to 1.5 kg in the range of 360° and to maintain its weight and position in time reaching 24 hours. This has been achieved by using gears and transferring the weight of the camera to ball bearings. The camera is attached to a stand, which is mounted on the shaft of the head. The rotational movement is generated by a mini stepper motor 28BYJ-48-5V.

App

The head is controlled using an Android smartphone. In order to support Bluetooth connectivity and perform calculations on floating point numbers, the StepperHead app was created. With this application the user sets the angle, direction and time of rotation of the head with the camera, all within one command. Importantly, the conversion of rotation angle to motor steps and time are performed by the smartphone. At any time it is possible to change the program by sending a new command. In addition to configuring the transmitted command it is also possible to send a command to stop the device or perform a test procedure. User interface is clear and easy to use. Current operating status of the panoramic head can be determined not only by observing the device but also by using the application that receives messages sent by Arduino module.
The MIT App Inventor platform was used to develop the head control application.

Code

The microcontroller firmware was written in Arduino language. The program is based on eleven functions declared inside the executable code. The code doesn't use any external libraries. Inside the Setup function the pins D4 to D7 are defined as outputs. The signal controlling the four phases of the stepper motor will be sent through these lines. Then a serial transmission with HC-05 via UART is declared. Inside the Loop, functions responsible for recognizing and handling received commands are executed, as well as functions controlling the motor operation.

See GitHub page