On one of the numerous photography blogs I once found an article describing how the artist had taken a simple light barrier from the local electronic store, combined it with an out-of-the-box delay circuitry and attached this to a DSLR shutter release cable.
The result was a tool allowing to freeze things on their way falling down. You might ask what great purpose such thing could possibly serve... Imagine you want to take cool shots of a cookie splashing into a cup of milk. After the first missed shots you start to appreciate such a tool immensely while you clean the kitchen from the milk splashes... again!
The article by this photographer really inspired me and I wanted to copy it ever since. Here now comes my implementation.
Triggering the shutter is not the only way
If I remember correctly, in the original version of this tool, the artist connected his drop-trigger with the shutter release of his camera. Something that I cannot copy, because my two cameras, the Sony Alpha 6000 and the Sony Alpha 7-II do not support simple shutter cables from the old days. Luckily for me, there is a workaround to get me the same result as with controlling the camera shutter. Given that no direct sunlight hits the place where the shot is taken and that flashes are being used, one can put the camera into manual mode and open the shutter for a few seconds - the flashes will do the rest. With small aperture and low ISO a few seconds are usually doable - a neutral density (ND) filter can help to reduce the environmental light even further if needed.
With this set up the flashes light the scene up in exactly the right moment. The long shutter time takes no effect in this case. If low to medium flash energy is enough, the light-impulse of (on-camera) flashes is even usually shorter than what most cameras can offer by shutter - allowing for super-freeze looks.
In my system I trigger a Yongnuo YN-560-III flash via cable, which is available on Ebay and Amazon. Check your flash manual for the correct cable to use. Since only one flash can be triggered this way, I operate other flashes in slave sync mode. This way they follow the master flash and fire just when it is triggered via cable.
The basic idea for the light barrier is a LED on one side and a photo transistor on the other. To be a bit independent from external light, infrared light is recommendable as well as to use reflectors on the LEDs. That improves the performance, has a professional look and is way better handleable. I had some from Conrad still, so I used them (Conrad LED reflector). Together with some small plastic boxes it produces a robust and nice looking result. The electronic circuits are very basic and can be seen in the schematics below.
The actual controller is quite simple. I used an ElectricImp in SD card format together with a Breakout board from Sparkfun that was still laying around. Really cool about the Imps is the fact that they are programmed over Wifi within seconds. Absolutely convenient for debugging. The development is entirely done in a web editor and sent to the Imp whenever one saves the code. For those of you who don't like to have no control over code or flashing, an alternative might be the Photon by Particle, which offers similar functionality with over air flashing, but also local re-programming. I simply used the Imp because it was there.
Let us come to the more interesting part: the software on the Imp. You'll find the code ImpCode here.
The Imp offers a scheduled function execution that allows a very simple way of executing repeating tasks. The program flow follows the structure of checking and tracking the light levels and then, if an object is detected, to fire the flash by pulling the signal line to ground. In order to be as independent as possible from environmental light that gets into the light sensor, two measurements are taken - one with sending LED switched on and one with it switched off. The resulting delta gives the influence of the transmitting LED. If there is an obstacle, the delta reduces or goes down to zero (because no LED light hits the sensor anymore). The light level of the beam is also constantly averaged to compensate changes in the sender and receiver constellation.
The ecosystem of ElectricImp offers also means to access Imps directly over the Internet. The connection between Internet and Imp is made by another piece of code that is called Agent. Agents are essentially webservers. Through library calls the two worlds are then connected to each other. I use an Agent in my implementation to adjust two parameters of my tool: The delay and the sensitivity of the light sensor - to be more precise the threshold ratio when the flash should fire. The code of my Agent can be found here.
Check out the first result shots I have taken with my delayed flash trigger for the Motion freeze shot glass shooting in my Photography section.