control your DSLR with a Raspberry PI
The semester vacation is over and at the end I made first steps with the libgphoto2. It is my goal for quite a while to control my DSLR remotely and without any cable connections. The solutions which you can buy have no possibility to change the camera settings. That’s the reason why I have bought a Raspberry PI Model B and a Wi-Fi nano stick. Therefore was enough performance available to handle the image data.
In the past I have tried my luck with Python and node.js but the project failed because of problems with the wrapper-libraries. Thus I wrote the application in C++ for the Raspberry. This gives me more control to find a problem because I use libgphoto2 directly. The software is a backend and provides a small REST functionality. It is “small” because at the moment only “GET” is implemented. Anyway you can send a HTTP command to the Raspberry, that will be executed and you get a JSON or XML file as response. For example the trigger-command sends you the image data as base64 string in the response file when the command was successfully executed.With this kind of process it is platform independent. Only the streaming functionality of the live view is based on the client/server principle. If the application receives a live view command you get the socket connection data as response. The socket sends the data as soon as someone is connected. The process of the stream is simple. The first 4 bytes (big endian) determine the size of the coming image. You can see on the example client on github how it works. À propos github, you can find the project under the following url https://github.com/scheckmedia/CameraControllerApi. There you will also find a readme file with an overview of the implemented features.
I have recorded a movie because picture speaks louder than words.
The following functions are to be implemented in the future:
- time lapse
- continuous shooting
- bulb mode
I have tested the application with a Nikon D90 and at the moment it isn’t a stable software. Actually I’m just beginning but for this the application works well.
If I have caught your interest, feel free to work at the project!