Project showcase
Drone Powered 360º Circular Smartphone Camera Rig

Drone Powered 360º Circular Smartphone Camera Rig © GPL3+

This Arduino & XBEE connected camera rig shoots flat 360º degree round video/footage using only one smartphone camera/recording device.

  • 7,084 views
  • 0 comments
  • 22 respects

Components and supplies

Necessary tools and machines

Metal Lathe
Cordless Drill
Pillar Drill
Metal Mitre Saw
Tig Welder
Waterjet Cutter

Apps and online services

About this project

My Project Videos

Check out how I made this rig here:

Video showing the entire build process and first user interaction with final prototype

See the build process of the project (0:00) and the camera rig working for the first time (5.50).

Check out my first test outside with the rig here:

First test outside with three users and post production editing effects

Check out the rig being used without a user subject in the centre:

Summer Garden Spin - Rig being used as regular 360º filming rig

Check out the rig being used with bubbles!

Bubbles - Rig being used while user plays with bubbles for effect

Please Subscribe to my YouTube channel to watch all my latest videos including experimentations with the camera rig!

How I made it

This was my first ever Arduino and physical computing project as part of my BSc Product Design course at Middlesex University London. The brief given was:

"To develop a new user experience for smartphone camera users. The system should enable users to shoot amazing video that has either not previously been possible or that can only be done with expensive professional systems"

I wanted to focus on the Bullet time effect the visual technique made famous by the Matrix films and more recently used in BBC's Sherlock.

As part of my project I was required to use Arduino & related physical computing resources that I had available to me.

I looked at several ways of achieving the desired effect, the original idea was to have a device which could hang from a suspended pivot point (e.g. a ceiling or tree) and then spin around the user standing below. However, it was quickly identified that this could pose a risk to the user and also limit the areas where it could be used.

I then looked at potential tech which I could implement in order to get the high speed required to shoot the bullet time effect as well as other 360º surround video.

Initial Prototype

I tested out the Arduino & drone motor setup using a simple Fade code from the Arduino example basic sketches.

I then looked to make a device that wouldn't require an specific environment in order to work and came up with the idea of a pivot point which the user would stand on and have the camera swing around below their feet.

Wanting to prove my concept worked, I made an initial prototype using materials readily available to me which included scrap ply & metal, an old bicycle wheel and a plastic platform. I then roughly attached the Arduino and all the other tech including the motor with a soft propeller.

This prototype proved that I could achieve the desired effect as you can see in the first part of my YouTube video below however it wasn't as stable for the user because of the narrow bicycle pivot point. I then went to a scrapyard to look for wheels with bigger hubs and bearings.

Final Prototype

I found this discarded office chair and had hoped to apply the bicycle wheel and its bearing system from the prototype to the mechanism and base from this chair - as it was ideal to overcome the stability issues that I had had with the initial prototype but they proved to be unsuitable for working with together in order to get the compact finish I wanted.

However, I realised that I could still use the strong and stable base from the chair and make a custom fit bearing to go around the stem of the base and swing around with the user standing where the person would have sat on the chair.

I made the custom fit bearing and fitted it to the metal base. I had an extension arm fitted where I attached and mounted the Arduino, motor (onto water jet cut bracket) & battery with the Monopod (selfie stick) into the top part of the arm.

I used Digi's Xbee Series 2 Wireless connectivity to allow the operator to have full control of the speed and the status of the rig when the user was within it. I needed to have a second Arduino to communicate with the one on the arm that controlled the speed and on/off status which became a remote control.

ICYMI:

Watch the final result footage from the Camera rig in the series of videos that I have made for my YouTube Channel:

First test outside with three users and post production editing effects

Summer Garden Spin - Rig being used as regular 360º filming rig

Check out the rig being used with bubbles!

Bubbles - Rig being used while user plays with bubbles for effect

Video showing the entire build process and first user interaction with final prototype

Thanks for reading about and watching my first ever Arduino project!

For updates on my work, please follow me on:

Code

Receiver CodeArduino
Code from the Arduino Uno attached to the receiver chip which is on the Camera rig arm. I did not write this code.
/*   ~ Simple Arduino - xBee Receiver sketch ~

  Read an PWM value from Arduino Transmitter to fade an LED
  The receiving message starts with '<' and closes with '>' symbol.
  
  Dev: Michalis Vasilakis // Date:2/3/2016 // Info: www.ardumotive.com // Licence: CC BY-NC-SA                    */

//Constants
const int ledPin = 3; //Led to Arduino pin 3 (PWM)

//Variables
bool started= false;//True: Message is strated
bool ended  = false;//True: Message is finished 
char incomingByte ; //Variable to store the incoming byte
char msg[3];    //Message - array from 0 to 2 (3 values - PWM - e.g. 240)
byte index;     //Index of array

void setup() {
  //Start the serial communication
  Serial.begin(9600); //Baud rate must be the same as is on xBee module
  pinMode(ledPin, OUTPUT);
}

void loop() {
  
  while (Serial.available()>0){
    //Read the incoming byte
    incomingByte = Serial.read();
    //Start the message when the '<' symbol is received
    if(incomingByte == '<')
    {
     started = true;
     Serial.print("true");
     index = 0;
     msg[index] = '\0'; // Throw away any incomplete packet
   }
   //End the message when the '>' symbol is received
   else if(incomingByte == '>')
   {
     ended = true;
     break; // Done reading - exit from while loop!
   }
   //Read the message!
   else
   {
     if(index < 4) // Make sure there is room
     {
       msg[index] = incomingByte; // Add char to array
       index++;
       msg[index] = '\0'; // Add NULL to end
     }
   }
 }
 
 if(started && ended)
 {
   int value = atoi(msg);

   
   analogWrite(ledPin, value);
   Serial.println(value); //Only for debugging
   index = 0;
   msg[index] = '\0';
   started = false;
   ended = false;
 }
}
Transmitter CodeArduino
Code for the Arduino on the remote transmitting the change in position of the potentiometer.
/*   ~ Simple Arduino - xBee Transmitter sketch ~

  Read an analog value from potentiometer, then convert it to PWM and finally send it through serial port to xBee.
  The xBee serial module will send it to another xBee (resiver) and an Arduino will turn on (fade) an LED.
  The sending message starts with '<' and closes with '>' symbol. 
  
  Dev: Michalis Vasilakis // Date:2/3/2016 // Info: www.ardumotive.com // Licence: CC BY-NC-SA                    */

//Constants: 
const int potPin = A0; //Pot at Arduino A0 pin 
//Variables:
int value ; //Value from pot

void setup() {
  //Start the serial communication
  Serial.begin(9600); //Baud rate must be the same as is on xBee module
}

void loop() {
  //Read the analog value from pot and store it to "value" variable
  value = analogRead(A0);
  //Map the analog value to pwm value
  value = map (value, 0, 1023, 0, 255);
  //Send the message:
  Serial.print('<');  //Starting symbol
  Serial.print(value);//Value from 0 to 255
  Serial.println('>');//Ending symbol
}

Schematics

Receiver Setup
6660741 orig yjzfv6v3ju
Transmitter Setup
7694908 orig 8s5odoha7o

Comments

Similar projects you might like

Arduino Powered CPR Feedback Device

Project showcase by David Escobar

  • 3,790 views
  • 8 comments
  • 25 respects

Weather Station v.1.0

Project showcase by derapados

  • 12,948 views
  • 4 comments
  • 40 respects

RING PONG

Project showcase by aerodynamics

  • 5,330 views
  • 2 comments
  • 12 respects

Circuito Arduino Controller Pad

Project tutorial by AhmedAzouz

  • 2,676 views
  • 1 comment
  • 7 respects

Infinity Run

Project showcase by Vishank

  • 1,474 views
  • 3 comments
  • 6 respects

Simple Programmable Robotic Arm

Project showcase by Ryan Chan

  • 49,046 views
  • 63 comments
  • 145 respects
Add projectSign up / Login