This project has been developed by Nil Carrillo and Robert Cabañero, two 3rd year product design engineering students at ELISAVA.

Video recording is greatly conditioned by the cameraman's pulse, since it has a direct impact on the quality of the footage. Camera stabilizers have been developed to minimize the impact of vibrations on video footage, and we can find from traditional mechanical stabilizers to modern electronic stabilizers such as the KarmaGrip by GoPro.

In this instructable guide you will find the steps to develop an electronic camera stabilizer operating on an Arduino environment.

The stabilizer we have designed is thought to stabilize two of the rotation axis automatically, while leaving the flat rotation of the camera under control of the user, who can orient the camera as he pleases through two pushbuttons located on the

We will start off listing the necessary components and the software and code that has been used to develop this project. We will continue with a step-by-step explanation of the assembly process to end up extracting a few conclusions about the whole process and the project itself.

We hope you enjoy!


This is the component list; above you will find a picture of each component starting from left to right.

1.1 - 3D printed stabilizer structure elbows and handle (x1 handle, x1 long elbow, x1 medium elbow, x1 small elbow)

1.2 - Bearings (x3)

1.3 - Servomotors Sg90 (x3)

1.4 - Pushbuttons for Arduino (x2)

1.5 - Gyroscope for Arduino MPU6050 (x1)

1.6 - MiniArduino Board (x1)

1.7 - Connection wires



2.1 - Flow diagram: The first thing we have to do is sketch a flow diagram to represent how the stabilizer will operate, taking into account its electronic components and their function.

2.2 - Software: The next step was translating the flow diagram to Processing language code so that we could comunicate with the Arduino Board. We started off by writing the code for the gyroscope and the x and y axis servomotors, as we found it was the most interesting code to write. To do so we first had to download the library for the gyroscope, which you can find here:

Once we had the gyroscope operating the x and y axis servomotors we added the code to control the z axis servomotor. We decided that we wanted to give some control of the stabilizer to the user, so we added two pushbuttons to control the orientation of the camera for frontward or backward recording.

You can find the whole code for the operation of the stabilizer in file 3.2 above; the physical connection of the servomotors, gyroscope and pushbuttons will be explained in the next step.


At this point we were ready to start the physiscal setup of our stabilizer. Above you will find a picture named after each step of the assembly process, which will help understand what is being done at each point.

4.1 - The first thing to do was loading the code to the arduino board to have it ready for when we connect the rest of components.

4.2 - The next thing to do was the phisical connection of the servomotors (x3), the MPU6050 gyroscope and the two pushbuttons.

4.3 - The third step was assembling the four parts of the gyroscope with the three junctions conformed each by one bearing. Each bearing is in contact with one part on the outside surface and with the axis of the servomotor in the inner surface. Since the servomotor is mounted on the second part the bearing creates a smooth rotational joint controlled by the rotation of the servo's axis.

4.4 - The last step of the assembly process consists in connecting the electronic Arduino circuit of the gyroscope, pushbuttons, and servos to the structure of the stabilizer. This is done by first mounting the servomotors on the bearings as explained in the previous step, second mounting the Arduino gyroscope on the arm that holds the camera and third mounting the battery, Arduino board and pushbuttons on the handle. After this step our functional prototipe is ready to stabilize.


In this last step you will be able to see the first functional test of the stabilizer. In the following video you will be able to see how the stabilizer reacts to an inclination of the gyroscope as well as its behaviour when the user activates the pushbuttons to control the recording direction.

As you can see in the video, our goal of building a functional prototype of a stabilizer has been fulfilled, as the servomotors react quickly and soothly to the inclinations given to the gyroscope. We think that even though the stabilizer works with servomotors, the ideal setup would be using stepper motors, which have no rotation limitations like servomotors, which operate at 180 or 360 degrees.