MATLAB and Modems

The SM-975 modem is interfaced through a serial port to an external computer. Teledyne Benthos modems interact with the user via messages of four different types: “get,” “set,” “execute,” and “notify.” Get is used to read parameters from the modem (e.g., its local address, which is a positive integer in {0, 1, 2, . . . , 63}); set is used for changing a parameter (e.g., setting the local address to a different number), and execute asks the modem to perform a certain task (e.g., send a ping). These three commands are always generated by the user. The notify message, on the other hand, is generated by the modem and carries the modem response to the computer (e.g., the response to a get request), or is used to indicate that an event has occurred (e.g., notify the user about the reception of a packet from another modem). These four message types form the entirety of communication modes to and from the modem

Commands are sent to the modem in a string of hexadecimal bytes through the serial port connection. The available commands are laid out in the proprietary manuals accompanying the SM-975 modems. We used this manuals to program our own Matlab based drivers to programmatically control the modems. These initial drivers have enabled our Matlab code now to grow in complexity and now allow us to run multiple hour long experiments through a single computer and GUI interface.


Buoy Control

Our buoy control interfaced was developed in C++ using the QT Creator framework. The GUI enables the user to connect to a local (plugged in) Xbee module and send commands to and from the Xbee’s in the remote smart buoy’s. These commands include toggling power to various onboard electronic sensor, changing the remote and local Xbee modes (API mode vs. Transparent mode) and sleeping/waking the remote Xbees. This level of control over our remote modules enables us to efficiently conserve power within the buoy (and ultimately, the network).


We also developed a second GUI that enables us to program the BeagleBone modules wireless via the Xbee radio connection. Remotely programming the Xbee modules will enable us to deploy updated code for testing without having to bring the buoys back to land for reprogramming. Deploying new code is made as easy as selecting a remote destination, uploading a compiled executable file, and pressing “send”.


The “Sapienza University Networking framework for underwater Simulation, Emulation and real-life Testing”  is a software framework developed by at team of graduate students at the University of Rome “La Sapienza.” The framework enables users to run simulations, emulations and real world experiments using a single code. The framework greatly simplifies the development and testing of networking protocols and also offers solutions for network control. In particular, the SUNSET module offers a “backseat driver” module which enables the user to control an entire network acoustically from a single node. We are currently looking exploring the option of integrating the SUNSET framework into the NU MONET.