Algorithmic Camera Trigger – Shutterino
Things used in this project
Shutterino – control the camera’s shutter with a sensor-sensitive algorithm. Powered by Arduino MKR1000.
I want to make a stop motion short film similar to “Pacer” but I’m nowhere close to having artistic skills to do it. I hope that programming skills will come to rescue. Let’s have the algorithm decide when it is the best moment to take a photo!
For example, Shutterino takes a photo when the accelerometer provides a similar reading to the last photo’s, or when you move 10 meters from where you took the last photo.
To make a good film I need a good camera, and as you can see from the short video below, my phone has a rather poor quality of sensor. In its defense, it costs just $100. My actual camera doesn’t have remote shutter capability, so Shutterino will use a servo motor to press the shutter button.
Choose from a Variety of Triggers to take the Photograph
I’m using my Windows Phone as a source of triggers for taking the photographs. User can choose one of the following events:
• Matching accelerometer reading
so that all the shots are level
• Change in GPS coordinates
for road trips
Simultaneously with pushing the shutter button, the phone is taking a picture with its camera, for correlation with status of every sensor. The readings are recorded in a .csv file and uploaded to Azure FileStorage, which appears to be a very young sibling of TableStorage and BlobStorage that lets you download files from Azure portal!
You may take a lot of photos one day, so you will need to filter, for example, to just find these caused by change of GPS coordinates. In post production the accelerometer readings may be useful to rotate the photo
The phone shows the accelerometer’s desired and current reading, which helps you orient the camera for the right shot. As soon as you have the shot, Shutterino takes the photo.
You can run this app on any Windows 10 device. If your device lacks any capability, it just won’t be active.
On a desktop computer, you will have access to timer, log and Arduino connection.
A webcam will give you camera preview.
A phone will complete the features with accelerometer and GPS data. Actually, my phone has only accelerometer but no compass nor gyrometer. If your phone has a gyro and you’re interested in this project, feel free to hack on it and send in a PR!
Ultimately, I want to learn reactive extensions and use them in this project, so a big refactoring is imminent.
Very Simple Firmware
The Universal App uses the Firmata to communicate with the Arduino. Firmata is a fantastic platform for all makers: The Arduino is running nothing more than StandardFirmataWiFi and all processing is done on the more capable phone.
TIP: check out the remote-wiring-experience app for rapid prototyping and debugging using the Firmata protocol.
Shutterino is currently highly capable, but it’s awkward to use – you need to hold the phone, Arduino, camera and the servo, but you don’t have 4 hands! Therefore, Shutterino calls for a rigid enclosure. Below I drew a design for a 3D printed enclosure that will contain all components.
To create really interesting stop-motion video like “Pacer”, the algorithm needs to know more than the phone’s orientation in space. An edge detectionalgorithm will let Shutterino take a photograph when the viewfinder matches shape from the previous photo (with a configurable shift).
The source code is available at https://github.com/AmadeusW/Shutterino. I will keep updating it.
Bill of Materials:
• BLU WIN HD W510u (any Windows 10 device is ok)
• Arduino MKR1000
• Digital camera
• Micro Servo 9g A0090 (any generic servo is ok)
• Appropriate connector wires
• USB Cable, not needed in the final product
Finished product Bill of Materials:
• 3D printed case
• Battery for Arduino MKR1000
Custom parts and enclosures