| Camera Controller |
|
Notions (as already mentioned in the introduction): |
|||
| a. Intervalometer b. Trigger the shutter from sensors (e.g. a motion control sensor) c. Remote control (iPod, web) including remotely viewing the image |
|||
|
Possible solutions: |
|||
|
|||
|
|||
|
|||
|
|||
|
Solution 2a
This is my first pass at implementing the goals (Notions (a) and (b)). The video of this implementation is on the introduction page.
I am releasing this code under the Creative Commons Attribution-ShareAlike License. It is released as-is without any waranty. I'd like to say I'll respond to bug reports and suggestions for improvement, but the reality is that I travel a lot (being retired) and don't generally have my Arduino or DSLR with me. [I'll add a link to the download page here]
At this time, there are a couple problems. The first is that I haven't (yet) been able to get caching to work in the browser. With a manifest file, my pages would successfuly cache (woo-hoo :-) with simple pages. But when I added communications from the pages back to the webserver, the caching stopped working. I'm guessing this is something basic that I'm doing wrong, but haven't figured it out yet. I'll look at it again now that I'm back in the states and have access to my Arduino stuff. Without caching, the webpage is refetched each time the user moves from page to page in the UI. I'd guess the delays are less than 1 sec to render a simple page (Rem, Int), maybe 1 sec for a medium size page (Tgr, Adm) and several seconds for the graphic monitor (about 15K is fetched for the graphics library). These should all be avoidable with page caching. Not the end of the world as-is, but definitely could be improved.
The second area for improvement is end-to-end reliable deliver of the requests to the server. Sometimes the request from the UI to the server doesn't get through. This could be for whatever reason and is probably not uncommon in the initial pass of a distributed system. I have tried to include (at least) confirmations that a command has been received by the server and acknowledged (e.g. when the Start button is pressed on the Intervalometer, and the server receives it, there is a response back to the browser that causes the text on the button to change to read, "Stop"). But IMO these communications would all need to be hardened and end-to-end retransmission added to make this a useful tool. As it is, it's a bit of a toy. You are welcome to try it and make improvements (feedback is welcome). And I hope you can reuse ideas or parts of it in your project.
The code
The installation of the code is a bit tedious IF you want to include the features on the Admin page. They're kind of neat features (monitoring the Arduino and webserver), but do take a little extra work. [I'll add a link to the installation instructions here]
The User Interface code
The UI code resides in the folder, /ui. It is HTML and Javascript. Since the WiFi connection will be a little slow, I've tried to keep the number and size of the communication with the server small. Makes sense, huh.
You should be able to see a demo of the UI using the directions and link here. The demo is more interesting if you use an iPod or iPhone. The UI consists of 4 main pages and a graphical monitor:
|
|
|
| ||||||
|
|
|||||||
|
||||||||
The server side code
[To-do]
Modifications to the webserver
[To-do]
The graphics library used on the Arduino/webserver monitoring page
[To-do]
Hardware
[Photos and intro are a To-do] Following are some notes regarding the hardware:
Arduino and WiShield
[To-do]
Shutter control
For the circuit between the Arduino and the camera shutter, I used the design found here. It uses an optocoupler to isolate the Arduino card from the camera's shutter input. I used two copies of the circuit - one connected from Arduino's pin 5 to the camera pre-focus input and one from pin 6 to the camera shutter release. The circuit design also includes test LEDs (in place of operating the actual camera) which is handy for testing. As well as reducing wear and tear on the cammera. [More.. To-do]
Voltage divider to monitor the power supply and breadboard voltages
[To-do]
|
References: |
|
|
Arduino as iPod remote control Arduino Intervalometer Basics Arduino Flash library gphoto.org - open-source code for interfacing to cameras Gumstix Overo Meets Arduino High speed photography Using the USB Host Shield |
|









