Hi Everyone, its an exciting day here as we finally have the Water Linked M64 Acoustic Modem in stock! Supply is a bit limited right now, but we have more on the way!
Due to the nature of the modems where one is usually mounted underwater and the other one topside, we have opted to not put penetrators or other connectors on the modem wire ends. Based on user feedback, we may change this in the future.
Earlier in the week, we tested a pair and wanted to relay our results. Here are some of the things we learned getting set-up:
Make sure you have a 3.3V compatible UART to USB serial converter. We used a pair of these from Sparkfun for our testing. Blue Robotics’ BLUART USB to serial testing TBD.
Make sure you have a common ground from the UART to USB converter and the ground from the modem.
The UART TX from the modem goes into the UART RX on the converter board and likewise for the RX line.
Watch the polarity! The wiring interface can be found here and on the product page.
The modems will get warm when powered, recommend placing them in water to keep them cool.
A blinking light about every 2 seconds on the modem will indicate it is powered, but no link is established.
Follow the steps in the setup to make sure you have the proper libraries installed. You may have to go back and install Python 3 and Pip if not already installed.
python3 -m pip install wlmodem is the terminal command that worked for us to install the wlmodem library.
Run though the terminal commands in the Quickstart on the Github page. We had to switch it around to another USB port to get a connection.
After you have a connection, and you have two modems set up on two different computers, try running the example Python script.
a. On the modem setup you designate as the receiver, configure Line 27 to success = modem.cmd_configure("b", 4) instead of “a”. Edit: Example script has been changed to auto-configure.
b. Put the modems in water.
c. Run the script on the “a” modem setup first, then the “b”
If successful, you should get what is pictured below:
Water Linked has now added a UDP-like abstraction which will make it much easier to send arbitrary length data with the modems (ie datagram). It is available in the version 1.2.0 of the wlmodem Python library.
There is an example on how to accept UDP packets and sending them with the modems. This should make it much easier to test the Modem-M64 in an existing system.
Our product page (and several other places) specify a range of 200m. The Water Linked underwater communication guide discusses auto-sync functionality which confirms that if the modems go beyond 200m apart they lose communication, and they’ll rejoin and sync back up once they’re back in range.
Our product page ‘Learn’ tab links to the relevant protocol specification. I just checked and the link we had there was outdated, so I’ve now updated that to the one I’ve linked you to here (apologies if that caused any confusion initially).
From a quick look, it doesn’t seem like the protocol has a built in message for testing current range between two modems. You can potentially set up that kind of functionality yourself by sending short messages and measuring the response time, although it would be subject to the timing of the parsing code, along with the modem potentially not sending packets exactly when you ask it to (the Water Linked latency.py example mentions that it’s not known exactly when the modem will transmit).
It might be worth asking for/about such a feature on the Water Linked forum
Hi, I’m currently working with the two water-linked modems to facilitate communication. Sadly, the modem’s one acoustic modem light does not blink once every two seconds when it is turned on. Can you offer any solutions to this issue?