I am creating an open source dive computer (www.diydivecomputer.com) and I am having a little bit of a problem trying to figure out how to power the device on and off. The problem is that the device needs to be completely sealed since it will be operating underwater and at high pressure (up to 200 psi) so there cannot be any holes in the case for a switch. I will be using hall effect sensors/magnets for the user interface buttons and would like to be able to power the device on and off using one or all of these buttons (i.e. press any button to power on). I would also like to be able to power off the device by holding down one of the buttons for several seconds (to reboot the device in case of a software crash). Lastly, I would like the device to automatically power on when the device is emersed in water. I will have connections leading to the outside of the case for charging so I could add another for water sensing (or somehow use the charging pins). Of course, the power consumption when the power is off needs to be zero or as close to it as possible since the device may be stored for months between uses.

I am a software engineer and electronics hobbyist so this is a bit outside of my capabilities. I know this is "question" with no simple answer but if anyone can point me in a direction, I would appreciate it! However, if you do find this an interesting problem I invite you to join the project! I could use the help!


2 Answers 2


Don't even try to power it on or off : leave it powered on, but in a low power "sleep" mode from which a button press can wake it by a "pin voltage change" interrupt.

The TI MSP430 processor can "sleep" at under 1 microamp (with a timer running) and wake up this way in a microsecond. Asleep, a small button cell could power it for years so there is nothing to be gained from power down. If it doesn't have enough processing power, there are ARM based MPUs which aren't far behind in deep sleep power or wakeup time. This is a $10 starter kit for a couple of the smaller MSP430 devices.

Magnetic sensors (reed switches) are the way to go for button press detection. They need no power while asleep. Hall effect switches may work, though I don't know how low you can get their power consumption. Or possibly opto (reflective) sensors as Anindo suggests, though they consume power all the time.

Capacitive sensors may have difficulty detecting fingers when underwater! However a capacitive sensor is probably ideal to signal immersion in water.

  • \$\begingroup\$ Thanks for the help. My original plan was to use the processor's low power mode but I settled on using the Teensy 3.0 platform because it is very small, powerful and using the Arduino IDE for development which makes it accessible for people with little programming experience to customize. The Teensy processor has many low power modes but the low power libraries have not been ported yet and I do not have the bandwidth to port them. However, you do make a good point and I do not need to support all low power modes, just one, so it might not be hard to implement. Thanks! \$\endgroup\$
    – Vic320
    Apr 4, 2013 at 14:05
  • \$\begingroup\$ Bare metal programming on the Arduinos (ie below the level of the Arduino interface) is not hard, and you're right : you only need the lowest power mode that does the job. I don't know how to combine low power modes with the Arduino interface, I find Ada easier to get right than C. \$\endgroup\$
    – user16324
    Apr 4, 2013 at 14:10

Assumption: By "Power off" the question implies a "ultra low-power sleep mode" of some sort - since any electronic sensing solution will require some power to sense the "power on" actuation.

A common approach for sealed-unit switching is to use a capacitive touch switch to sense finger proximity. However, this will not work under water, due to (impure or sea) water being a conductor of electricity.

An out of the box alternative suggestion is to use an optical reflectance-based proximity sensor such as the Sharp GP2Y0A21YK, sealed within the enclosure, as a switching mechanism.


If a finger (or other object) approaches within triggering distance of the sensor, the reflection of the emitted infrared beam from the device, would be detected by its sensor, and can be used to toggle device power.

Note that infrared does not carry very far through water - smaller wavelengths such as blue or UV fare much better. Also, the enclosure needs to be sufficiently transparent to Infrared for this to work.

Another solution, perhaps further outside the box, is to use an inexpensive latching hall effect sensor like the Melexis US1881 inside the pressure sealed device enclosure. A flexibly mounted small magnet outside the enclosure can act as a tactile "button" for the user to press.

Latching Hall Effect Sensor

A third, more inside-the-box approach is to use toggle switches specifically designed to operate under water, such as the Otto HTL2, rated for IP68S watertight sealed operation:

HTL2 Linear Toggle Switch

  • 1
    \$\begingroup\$ I hadn't thought along the lines of using an IR sensor for UI input but it is very interesting! I could use one reed switch for power up (since it takes no power) and use IR for the others since it might be more reliable. Thanks! \$\endgroup\$
    – Vic320
    Apr 4, 2013 at 14:09
  • \$\begingroup\$ I have to say that I would love to use this joystick however, it's rated IP68S, which according to the spec says that it can operate underwater at depths greater than 1m but a dive computer may operate at 100m. The "S" part says that the device was standing still during the test and a dive computer never stands still. A hall effect and magnet is what I was originally thinking however, I did not know they made latching ones, that is interesting... \$\endgroup\$
    – Vic320
    Apr 4, 2013 at 14:20

Not the answer you're looking for? Browse other questions tagged or ask your own question.