Introduction: Arduino Time-Lapse Panorama Controller

Panorama Controller for GoPro Cameras
The controller will rotate your GoPro over a set angle for a set duration or will rotate you GoPro for a full rotation for a set duration.

This project is based on the original instructable by Tyler Winegarner See instructable here and also from Mark Wheeler's version of Tyler Winegarner's instructable See Mark Wheeler's instructable here or his web site here .

My instructable combines software and hardware from both versions as well as adding some different build and control options of my own. further details on my web site.

I have added code for a 4x20 I2C LCD display and switches rather than the SainSmart LCD Keypad Shield. I have also removed the Arduino UNO shield and replaced it with an Arduino Atmega 328 mounted on vero board. Full schematics and vero board layouts included.

The Arduino controls a Geared Stepper Motor 28BYJ-48 via a ULN2003 Stepper Motor Driver Board. The 4x20 I2C LCD display and 5 micro switches form the interface to the Arduino. The controller has a Manfrotto 200PL-14 quick release tripod mount for attachment to my tripod and other mounting hardware fitted with a Manfrotto 323 Quick Release Clamp Adapter. Power is provided by a 50000mah USB Power Bank Battery Pack.

Step 1: Parts

General parts list.

I tried to use items I had left over from other projects to keep the cost down. Ebay items in links may only be available for short periods if the links are not there try a search for the items instead.

Atmega328P Kit, Arduino Uno Bootloader, 16MHZ Crystal, 22pF Capacitors Ebay

Geared Stepper Motor 28BYJ-48 + ULN2003 Driver Test Module Board for Arduino 5v

Vero board Ebay

Perspex Sheet/Aluminium sheet as required A5

50000mah Power Bank Pack Backup Mobile Phone Charger Ebay see pic 1 above

USB Lead A to B

USB B PCB socket

Stainless Steel Bar 4mm x 100mm Rod Shaft Ebay

M4 x 50mm (2") Hex Bolts

Nuts/bolts/washers as required

Aluminium Tube to cover hex bolt threads local DIY shop

Aluminium bar loca DIY shop


323 Quick Release Clamp Adapter+Plate Compatible fr Manfrotto 200PL Ebay

Bearing Flanged 4mm x2 Ebay

Bearing Flanged 3mm x1 Ebay

Hot Shoe Spirit level Ebay

Adjustable Speedlite Cold Shoe 1/4 Screw to Flash Hot Shoe Mount Adapter Ebay

Meccano Part 26A 19 tooth pinion Ebay

Meccano Black 3.5 inch Gear Wheel No 27b 133 tooth Ebay

Meccano drive shaft stop (taken off an old meccano face plate 109)

GoPro self adhesive mount

Step 2: Hardware


The stepper motor and gear wheel are mounted between 2 Perspex sheets separated by 4 x M4 x50mm (2") hex bolts and 4 x aluminium tubes to act as spacers. Flanged bearings 4mm top and 3mm bottom are fitted into holes in the sheet. Once the stepper motor and gears were fitted the control boards were then fitted in around these parts.

I drew a drilling template in Turbocad then marked up the Perspex sheet through the paper printout. Top and lower Perspex sheet were then clamped together and mounting holes and preliminary gear wheel bearing holes were drilled out. Final bearing holes were drilled out once the sheets were separated as the lower bearing is smaller. Before drilling out the stepper motor mounting/pinion hole I mounted the 133 tooth gear wheel and bearings cut the pinion hole then test fitted the stepper motor to check alignment. I slotted one of the stepper motor mounting holes to give a few millimetres of adjustment to enable correct gear meshing.

Pic 1 Top Perspex sheet drilling template for mounting bolts, stepper motor and gear wheel. Lower Perspex sheet is identical but does not require stepper motor holes. It will need additional holes though for the middle bearing plate mount.

Once the stepper motor and gear wheel had been mounted I cut a short piece of aluminium bar to mount the middle bearing. To ensure the middle bearing was in alignment with the the upper and lower bearings I drilled a 4mm hole the middle of the aluminium bar and mounted it on the gear wheel drive shaft. I then marked mounting holes on the lower Perspex sheet through small preliminary holes on the bearing mounting bar.

The 4x20 LCD display is mounted on 2 flat metal bars. These bars are bent to angle the display for viewing and also to keep the overall mounted height within the distance between the Perspex sheets. The bars are fixed to the Perspex sheets with large washers to spread the load on the Perspex. I have used one of the mounting holes to fix the spirit level in place. See pics 2 to 6 above for details.

Step 3: Motor, Gear Wheel and Bearings

The Geared Stepper Motor 28BYJ-48 has a 19 tooth Meccano Pinion attached. The pinion is drilled out to 5mm to fit the stepper motor drive shaft.

The Meccano 133 toothed gear wheel is fitted to a 4mm shaft. The shaft runs on 3 flanged bearings. One on the top Perspex sheet (4mm), one on an aluminium bearing mount fixed 10mm off the bottom Perspex plate (4mm). The 3rd (3mm) on the lower Perspex sheet. The lower bearing is 1mm smaller so the drive shaft cannot pass through but just sit on the bearing surface so it can be supported and still rotate.

Bearing locations pic 4

A. 133 toothed gear wheel B. Upper 4mm bearing C. 133 toothed gear wheel shaft stop (see below) D. 4mm 133 toothed gear wheel shaft E. Middle 4mm bearing F. Lower 3mm bearing

133 Toothed gear wheel release pic 5

133 toothed gear wheel shaft stop (C) prevents the 133 toothed gear wheel and attached camera from falling out of the controller.
Free movement (J ) allows the 133 toothed gear wheel to be lifted free of the stepper motor pinion so the camera can be rotated to any start position by hand. This is useful for initial camera positioning or a quick check of Panorama start and end points before setting on the controller.

Step 4: 323 Quick Release Clamp Adapter+Plate Compatible for Manfrotto 200PL

A Manfrotto PL200 quick release plate pic 1 (A) is fitted to the bottom of the controller
using a number of Manfrotto 323 quick release adapters pic 1(B) I can quickly mount the controller to any number of tri-pods or mounting devices.

pic 2 controller fitted to a miniature tripod via a Manfrotto PL200 quick release adapter plate
and pic 2 fitted to universal bar clamp

Step 5: Electronic

Pic 1 shows the overall schematic

Pic 2 shows the schematic of the ULN2003 stepper motor driver board

Pic 3 shows the ULN2003 board itself

Full size schematic

Step 6: Veroboard Layouts

Pic 1 shows the front of the Veroboard

Pic 2 shows the back of the Veroboard flipped down

Pic 3 shows the front of the switch Veroboard

Pic 4 shows the rear of the switch Veroboard flipped down

Pic 5 shows the switch Veroboard painted black and an aluminum label bar attached

Step 7: Code


This code is based on Tyler Winegarner/Mark Wheeler's code and has been modified to work on a 20x4 I2C LCD display without built in switches.

On normal boot/reset a modified version of Tyler Winegarner's set angled rotation Panorama is loaded. If the Rotate Mode switch is held on reset then a modified version of Mark Wheeler's full rotation panorama is loaded.

Download Code

Step 8: Video

Video shows setup of both types of panorama and also a short demo timelapse.