A prior version of this underwater camera housing leak detector was posted on Instructables last year where the design was based upon an Atmel AVR based AdaFruit Trinket. This improved version employs the Atmel SAMD M0 based AdaFruit Trinket. The result is much longer battery life given the superior Atmel microprocessor.
The problem with the AVR design was in part due to AdaFruit's choice of AVR parts. The minimum operating voltage of the AVR processor is 2.7 volts, where the battery (CR2032) is nominally 3 volts. The net result is the processor resets as soon as the battery voltage droops to ~2.7 volts (e.g. under load from flashing the leak detector's LED).
The SAMD M0's processor can operate down to 1.6 volts and has a much lower standby power consumption (3.5 uA versus 25 uA for the older AVR). The result is a battery life projection is 3 years. Fortunately the AdaFruit Trinket M0 is identical with respect to form factor and pinout with respect to the older AVR.
Underwater camera housing rarely leak, but if this event occurs the results are normally catastrophic causing irreparable damage to the camera body and lens.
SparkFun published a water detector project in 2013, where the original design was intended as a replacement for a NautiCam leak sensor. This project adapts the SparkFun design to an AdaFruit Trinket. The resulting implementation is sufficiently small as to fit within an Olympus PT-EP14 housing (e.g. for the Olympus OM-D E-M1 Mark II body).
Step 1: Cut Vero Board and Attach Ribbon Cable
A section of Vero board is used to create a sensor that sits at the bottom of the underwater camera housing. Vero board has parallel strips of copper, where normally one creates segments for individual circuit nodes.
The Vero board can be cut with a number of tools, but the cleanest solution is to use a diamond saw blade (e.g. normally used for cutting tile), where water is not required for the blade. The width of the sensor is two copper strips wide and the length is whatever is suitable for the housing in question. Olympus housings normally have two grooves in the bottom center of the housing which are used to trap a desiccant pouch. The sensor is fit between the grooves, as shown in the picture. Attach ribbon cable (two conductors wide) to one end of the Vero board and optionally add heat shrink tubing over the end of the board, covering the solder joints.
Step 2: Flash Software
Using the Arduino IDE, flash the firmware to the Trinket using a USB cable WITHOUT the CR2032 battery installed. Both files must be placed into a directory named "H2OhNo".
Wiring.c was modified to allow the processor's pins to be left in their default state versus forcing them to be configured as inputs. Setting the processor's pin as an input without a pull-up or pull-down causes excessive power consumption. The AdaFruit Trinket does not provide any pull-up or pull-down resistors.
Test the leak detector by wetting the sensing vero copper strip prior to the next step.
Note: Once the regulator is removed or output pin lifted, the 3V CR2032 does not supply sufficient voltage to flash the SAMD processor. Thus the flashing step must be performed prior to removing the regulator. Or an external power supply set to 3.3 V must be used while flashing.
Step 3: Remove DotStar LED and Lift Regulator Output Pin
Unfortunately the AdaFruit M0 Trinket includes a DotStar LED pixel, when even when put into standby draws almost 1 mA which adversely affects battery life. Remove the DotStar from the Trinket.
The onboard regulator per its data sheet is very low power. But in practice its consumption is 10x the datasheet. The solution is we connect the CR2032 battery directly to the processor and lift the regulator's output pin isolating it, thus ensuring it doesn't draw power. Either remove the regulator or lift the output pin.
Step 4: Move Resistor to Rear Side of the Circuit Card
Unfortunately the SAMD processor struggles to provide a pull up resistance on analog inputs. Thus we need to add a resistor to the circuit via repurposing a component that is already on the board. The trinket has a power on LED which we don't want given this would discharge the battery. The resistor for this LED is removed and moved to the back side of the board, connected between the 3V and SCL pads.
Step 5: Install Into Housing
The battery holder and Trinket are attached to the underwater housing using a Velcro dots (e.g. ~1 inch diameter). The piezo transducer has a self adhesive ring, where the transducer is attached to the wall of the housing near the Trinket. The sensor is a friction fit into the lower portion of an Olympus housing. Other housings might require special accommodations. Picture hanging putty has been used to secure a sensor when no suitable housing features are available.
Note: The piezo transducer must be mounted to a surface, otherwise the volume of its output is a faction of what is achieved when the circumference is constrained.
Step 6: Test
Wet your fingers and touch the Vero boards strips. The LED should flash and the piezo transducer produce an audible warble.
Step 7: Bill of Material
- AdaFruit Trinket M0
- Red LED
- 47K ohm resistor
- Piezo transducer (TDK PS1550L40N)
- CR2032 battery holder (Memory Protection Devices P/N BA2032SM)
- CR2032 battery