I just finished building the OCC and thought I'd share my experiences in case they're useful for others.
First off, I created a
project at Mouser with all the components except for the Atmega328, which I got with the Arduino bootloader from
Adafruit. I used an Arduino I already had to program it.
Useful tools are a pair of
flush cutters, a high-speed rotary tool, and a decent soldering station (temperature control and a fine soldering tip are very helpful).
I ordered a v3.2a board from Circuitboards to Go, but ran into a couple problems with it. Most importantly, the microcontroller is positioned too far forward to take full advantage of the large vertical space at the back of the Warioware: Twister cartridge. I couldn't get the lid to close fully even before trying to squeeze in the LED and resonator. Also, there's no place to connect the ground pin on the ZTT resonator. The advantage of that particular resonator is that it has built-in load capacitance (see the
datasheet), but without the ground pin connected I doubt it's functional. It may still run ok, just not at 16.00MHz.
So I made these changes to the board design:
- made it longer, 1.925in, to take advantage of the Warioware:Twisted cartridge and its extra vertical space. The LED, resonator and socketed microcontroller now fit in much easier.
- added a hole in the middle for the screw boss, so the board doesn't need to be glued in and the cartridge screws back together just like it was.
- added guides for cutting the two notches on the sides, to keep the board held in place
- added a hole for the resonator ground pin, but kept the option of a crystal oscillator with 2 SMD caps
- added an option for the LED: either connect the cathode straight to ground or to an SMD resistor
- grouped the 3 shutter release lines together
- removed the Guitar Hero lines, since they'd never been used and new versions of the OCC (with USB control, say) will need a complete redesign anyway
Here's the design:

If it looks useful to anyone, maybe Achim can put the final touches on it, like a version number and the other info.
Dave at CircuitBoardsToGo will drill that 6mm hole for no extra charge. I made it slightly small to allow for precise positioning during assembly; widen it as needed with a drill or rotary tool.
Use the rotary tool to round the two back corners of the circuit board and cut out a notch for the remote cord so it sits as low as possible.
For the optocouplers, the trick with them is to
carefully cut off the flanges at the top of each pin so that they sit flush on the board. Otherwise they'll sit above the board and the top won't fit on. I used flush cutters for this.
One other trick: position the microcontroller socket a couple mm off the board, just enough so you can get a thin soldering iron tip and solder in there without touching the plastic.
As for the LED, I used a
blinking one. These run at 3V, have a built-in resistor, and don't require any programming to make them blink :-)
This design also changes a couple pin assignments, so I modified the code too, removing some clutter along the way. This version turns on the LED for 1.5s at power up, and then whenever the shutter is open.
Code:#define FullPressPin 13 //Pin assignments
#define HalfPressPin 11
#define LEDPin 7
void CloseShutter() {
digitalWrite(FullPressPin, LOW);
digitalWrite(HalfPressPin, LOW);
digitalWrite(LEDPin, LOW);
}
void OpenShutter() {
digitalWrite(HalfPressPin, HIGH);
digitalWrite(LEDPin, HIGH);
digitalWrite(FullPressPin, HIGH);
}
void setup() {
pinMode(HalfPressPin, OUTPUT);
pinMode(FullPressPin, OUTPUT);
pinMode(LEDPin, OUTPUT);
digitalWrite(LEDPin, HIGH);
delay(1500);
digitalWrite(LEDPin, LOW);
attachInterrupt(0, CloseShutter, RISING);
attachInterrupt(1, OpenShutter, FALLING);
}
void loop() {}
I tested it with a Canon 1Ds Mark II. The only issue is that it clicks the shutter when first turned on. I think this occurs when the Atmega is powered up--before it begins running any code--so there doesn't seem to be any way to fix that, other than turning on the DS before the camera. But it's a pretty minor grievance! Otherwise it works quite well.
Here are a few photos:



