This is a new version without the need of an Arduino board.
Instead its based on a USB-UART Serial Adapter Module ( FT232RL in this example)
Last year I wanted to get the data out of my Diving Computer without buying $100 cable,
and I succeed doing it by using an Arduino board.
You can read about it here
I was getting lots of comments from people who didn’t succeed building this using other Arduino boards and I thought there must be a way to make it easier.
It just a half duplex (or ‘1 wire’ ) UART , so why it not build a converter from UART to ‘1 Wire’? It should’t be that complicated 🙂
Lets try to make it short
The diving computer has a connector with 2 connection points and a ground.
After poking with it for a ‘few’ hours (I drained all my computer battery and had only 6 dives with it!!) I found that:
- A voltage on the Enable pin makes the diving computer enter the Data Transfer mode.
- The Data pin is a bi-directional line, using UART for communication.
- All the metal around the pins is ‘ground’.
The Suunto DM5 application is looking for a communication port named ‘Suunto USB Serial Port‘.
I used USB to UART Serial Adapter based on the FT232R chip.
Last time I modified the Arduino driver in order to change the device display name,
but after digging I found that Suunto use PID 0xF680 with VID 0x0403 which is the Vendor ID of FTDI chips.
That’s the reason I choose to use the FT232R.
I can still modify the driver, but I have a better option now which is to write to the FT232R eeprom memory and change its PID to 0xF680.
Windows think it’s the Suunto cable and install Suunto drivers with the name we want.
With this method I don’t need to disable the driver signing enforcement.
To modify the eeprom, I used MProg which is a utility from FTDI.
I first scanned for devices on the (Device->Scan), then read the current settings (Tools->Read and Parse), and then change the PID (Product ID) to F680 as you can see in the picture.
I flashed the new settings (Device->Program), uninstalled the current driver in the device manager (right click, Uninstall Device), and removed if from the USB port and then plugged it again.
I don’t know if it’s possible to program it multiple time so it might be irreversible.
Update: It might not be possible to change the PID of a cloned FTDI chip.
In this case, you can still use a modified driver (and disable windows driver signing enforcement), or just use other app like Subsurface which just asks for a COM port number
I can still sync the diving computer without doing this step, but I have to use other apps like ‘Subsurface’.
Because there is only one data line, it was not possible to connect both RX and TX of the UART adapter together as is.
I built a converter circuit with some transistor and resistors to make it ‘1 wire’ half duplex UART.
I used the 3.3V from the USB to UART module.
I also changed the jumper on the module to 3.3V (5V might hard the diving computer)
BOM:
– 1x USB-UART module (FT232RL)
– 2x 2N7000 NPN transistors
– 2x 1k resistors
– 1x 15k resistor
– Jumper cables (optional)
– Breadboard (optional)
All can be found in eBay or Aliexpress
If you are using a breadboard you almost don’t need to solder anything.
The only problematic pin is the ’33v’ pin that you have better a jumper cable soldered to.
The Ugly Side
I still didn’t find any novel way to connect with this connector.
I took a clamp and drilled holes in it, then pushed ‘pogo pins’ in such a way they will touch the connection points.
I need to think and make something more simple.
Another option:
MudiStar has made a 3D design of a plug to the Zoop Novo.
You can use a 3D printer to print it, or a 3D printing service.
More info can be found here: https://www.thingiverse.com/thing:5184406
First prototype of a PCB version:
And.. that’s it.
I can now sync my diving computer with my PC.
You can find the modified FT232R driver and the MProg config in my gitlab:
https://gitlab.com/itaysp/suunto-data-cable