Welcome to the Timelapse Project!

The Timelapse Project is the open source hardware and software project which is made to create dynamic time-lapse videos.

It allows you to specify the sequence of commands. For example: rotate a camera to 30 degrees clockwise, then stay at that position for 10 minutes, then rotate a camera to 90 degrees counter clockwise. This sequence can be of arbitrary length. This is the example of timelapse which has been made by using this device.

Using this instructions you should be able to make the device yourself. If after reading the instructions something remains unclear please ask, I will be happy to answer or correct these instructions.

To make the device you will need:

  1. WeMos D1 or WeMos D1 mini controller
  2. A stepper motor driver board with ULN2003 chip.
  3. A stepper motor 28BYJ-48.
  4. A ballhead camera mount
  5. A rigid box
  6. Tools to make a hole in the box and mount the stepper motor inside the box
  7. Wires
  8. 2 LEDs of different colours
  9. An infra red LED
  10. Resistors to limit the current which is going through the LEDs
  11. If you buy the controller boards without pre soldered pins you will need a soldering gun and solder.

The stepper motor I've used though is not very good for this application as has a shaft slack. I had to load the motor shaft on a rubber band to get rid of it. You can use any stepper motor and a stepper motor driver you like. The components I listed here are only the reference point.

All this stuff can be bought from Chinese web stores and delivered to you by the post service.

Assembling Hardware

Basically all you need to do to create a hardware part of the device is to connect pins using wires.

In the WeMos board you will find a number of pins. Most of the pins are programmable and have a positive polarity. These are the pins which are used in the project:

  • D7. - IR LED for controlling the camera.
  • D1. - The LED which indicates that the wifi communication is established between the device and the wifi point.
  • D6. - The LED which indicates that the power is on and the software is working.
  • D2, D4, D3, D5. - Pins to control the stepper motor. This pins should be connected to the stepper motor driver board.

All LEDs should be connected to pins via resistor to limit the current. To calculate a resistor value the Ohm law could be used. Let's say we have a LED and it can handle a 20 mA current and we have 3.5 volts DC on the controller pins. Then:

Resistance = Volts / Ampers
3.5 / (20 / 1000) = 175 Ohm

It is not necessary to use a resistor with the exact value but the value should not be lower than the calculated value because the lifetime of the LED will be reduced.

Also mind the polarity because it can damage the LED. Ground pins of the WeMos D1 controller should be connected to the LEDs minus (cathode), and pins D1, D6 and D7 to the LEDs plus (anode).

Most probably the way of connecting the stepper motor driver board should be very straightforward. If not, check the information about your driver in the internet.

  1. It should have 4 input pins - these inputs should be connected to the pins D2, D4, D3, D5 of WeMos D1.
  2. It should have 2 DC power supply inputs
  3. It should have 4 output contacts to be connected to the stepper motor.

The ULN2003 chip based stepper motor driver connects this way:

  1. Pin D2 of WeMos to ----> pin IN1 of ULN2003
  2. Pin D3 of WeMos to ----> pin IN2 of ULN2003
  3. Pin D4 of WeMos to ----> pin IN3 of ULN2003
  4. Pin D5 of WeMos to ----> pin IN4 of ULN2003
  5. Pin 5V of WeMos to ----> pin + of ULN2003
  6. Pin GND of WeMos to ----> pin - of ULN2003

Installing Software

After everything is wired together you need to install a software to the WeMos D1 board.

  1. Follow the instructions Get started in Arduino in the WeMos official site to install the driver and the libraries.
  2. Install Platformio from the official site. You will find the installation manual there. The version used in the project is 2.9.1.
  3. Download the source code for the Timelapse project from this repository and unpack it somewhere.
  4. Enable the WiFi spot on your mobile phone.
  5. Open the file timelapse.ino in your favorite code editor and find these two lines of code:
    const char *SSID = "phone_wifi_spot_name";
    const char *PASSWORD = "wifi_password";
    Change the values to the name and password of your WiFi spot.
  6. Connect WeMos D1 to your computer using the USB cable.
  7. Run the command prompt and navigate to the folder with the source code. In the command line type:
    platformio run --target upload
  8. If everything is ok you should be able to see that the LED which is connected to D6 starts glowing. That means that the power is on and the software is working.
  9. Then the LED connected to D1 should start glowing. If so WeMos D1 is successfully connected to your phone's spot.
  10. Now to control your device from your phone you should find out the IP address of your device. Open the WiFi spot settings on your phone and look for the IP address of the device that is connected to it.
  11. Open a web browser on your phone and type in the IP address you just found into the URL string.
  12. You should be able to see this page.

Control Page Overview

  1. To be able to operate cameras of different manufacturers you need to pick your manufacturer in the drop down list.
  2. Choose between the normal mode and the bulb mode. The normal mode is when the shutter speed settings is specifyed in the camera. Bulb mode is when the external device tells the camera when to close the shutter. Use the bulb mode if you need a long exposure. Usually 1 second or more. To use the bulb mode you should activate it in your camera. The bulb mode in my camera activates when I'm increasing the exposure to the maximum value. Always switch your camera to the manual mode when shooting timelapses.
  3. The shooting rate is the delay between each shot. The minimal posible value depends on your camera. If the value will be too small your camera will not be able to shoot at that rate.
  4. The shutter open time is the exposure time. It is using only in the bulb mode. Keep in mind that a camera might make photos much slower when the exposure is high. So usually you would want to make this value much smaller then the shooting rate value.
  5. Then you have Add stay and Add move. By pressing these buttons you are specifying the sequence of commands which your device will be making.
  6. In the Stay iteration you are specifying how long the device will be staying without rotation while shooting at the same time.
  7. In the Move iteration you are specifying the rotation direction, the rotation angle and how many steps the stepper motor will be making before taking each picture.
  8. The Go! button sends your commands to the device and initiates shooting. After that the device will not respond to you commands till the job will be finished. That is made to make sure there will be no time deviations between shots caused by the client-server communication. If you want to interrupt the shooting simply unplug the power supply.
  9. After you press Go! button the IR LED which is intended to control you camera should start blinking. You can see it blinking using the camera built in your phone. Look through the phone camera at the IR LED. Unlike other LEDs IR LEDs usually have a very focused and narrow beam so you should look directly in front of it.
The control page screenshot

Making the Casing

To make the casing you can use any rigid box with the sufficient weight. The heavier it is the more sturdy it will stay.

For the first version I made my casing from the 12 mm plywood and used 4 bolts as the adjustable stand. In the future I'm going to make a 3D printed case and share the model for printing here.

If you don't mind carrying a tripod then probably it would be a good idea to make a tripod mount at the bottom instead of the stand. It will definitely give you more control.

To attach the ball head I used the metal epoxy putty. It's a bi-component soft substance which hardens if the components are mixed together. This is not the most professional way of joining metal parts but it's handy for quick prototyping.