Dive computer based on Arduino

Few weeks ago I did my Open Water Diver certification curse from PADI. Apart from the fun I learnt a lot of interesting things. Specially the many ways you can die underwater when you practice scuba diving. Luckily all the risks are very easy to control and manage with common sense and specific training.
One of the hazards you need to manage carefully is the nitrogen absorption at pressure. When you breath compressed air at depth your body is absorbing nitrogen at higher rates than you do at surface level, and your body is not able to get rid of it. Nitrogen is an inert gas that will form fatal bubbles in your vital organs when pressure change (Decompression sickness), furthermore higher concentrations of nitrogen in your body will lead you to a funny state called Narcosis, where the diver becomes euphoric and have a dangerous reckless behavior similar to alcohol intoxication or nitrous oxide effects. Which could be a lot of fun if you are in a college party but not for diving at 100 feet deep for sure.
To avoid this nasty side-effects and the devastating Decompression sickness (DCS), recreational divers have been using for decades dive tables to calculate maximum dive times, rest time between dives and decompression safety stops at depth. And more recently expensive dive computers in the form of trendy sport watches, which provide you even longer diving time since they can calculate nitrogen absorption in real time at multiple depths.

So at this point my embedded electronics weekend project was clear. I wanted to build a functional portable dive computer using real dive table data.

The hardware part of the project is pretty simple:

  • 2x  Potentiometers for entering dive information (depth in meter/feet and time in minutes).
  • 1x LCD to show data and results (+1x trimpot 10K to adjust intensity).
  • 1x Battery powered Arduino Uno as micro-controller and computer.
Using the two dials (you actually can use linear slide potentiometers instead rotary ones to give the computer a more retro look) you setup total dive time and maximun depth you are planning to go, and the computer will calculate all the safety information you will need to know:
  • ND: Maximum No-Decompression time (This is the safe time limit for your planned dive)
  • STOP5: Shown when a safety stop at depth is needed before reaching surface (usually 3 minutes at 5 meters/15ft deep to avoid DCS)
  • G: The Pressure Group you will have when you reach surface (this is useful when planning multiple divings in the same day)

Calculations are made using several multidimensional arrays of data based on real recreational dive tables. Check the source code here.

The computer is pretty quick and easy to use, and works awesome for checking a simple dive plan. If you want to plan same-day multiple divings or multilevel ones you will still need some paper and pencil. Anyhow I highly recommend you to don’t go diving without  a certified dive computer and an experienced dive buddy.

In next part of the project I would like to encapsulate all the hardware inside a waterproof box so I would be able to carry it to diving places and show it to my astonished dive friends.

Happy diving!


2 thoughts on “Dive computer based on Arduino

  1. Buy a watch. When you dive you change any times of depht. If you want to build your own computer you need:
    – A water pressure sensor
    – LM35 (or similar to control the temperature). When you dive the temperature it’s a parameter for calculate the ¿time on floor?, etc

    Total, si hablas español, q me es más comodo ya sabes, necesitas controlar continaumente las presiones a las que vas ya que tu tiempo de fondo se calcula de acuerdo a las profundidades a las que has estado y la temperatura (que tb afecta al consumo de aire y a tu organismo). Buceando no hay tiempo para ponerse a girar los potenciometros porq te perderias del grupo y además… ¿cómo piensas aislarlos per que puedan seguir girando en el fondo?

    No lo veo tio, pero no está mal q hayas copiado las tablas… igual algun día me valen para algo 😉

    Un saludo,


    1. Ya tengo ordenador de inmersión. Se trata de un proyecto de electrónica integrada de fin de semana, no me voy a sumergir con ningún prototipo. Pero si lees con detalle el texto se trata de un planificador simple de superficie, para usar antes de una inmersión.


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s