UASN – Underwater Acoustic Sensor Networks

This post is about the underwater acoustic sensor networks project that I worked on with one of my professors and two of my friends in the last semster.  Underwater acoustic sensor networks(UASN) is a very niche field. Not a lot of work is going on for developing applications for underwater networks. So working in this field was not only a challenge but something that I found very interesting because of the lack of proper documentation and transfer speeds of 8 bits/second. This post will tell you about how to setup a small testbed with 7 telosb motes and a Simple Acoustic modem that gave us 8 bits/second and worked only on RS232 standard. So to use telosb motes we used a max232 converter to convert data from UART to RS232.

The 10 pin expansion header on the telosb has the following pinout:

telosb_connector

 

We connected pin 2 and pin 4 of the expansion header to the max232 connector which was connected to the Acoustic modem. The circuit for the board was

olpc-xo-ttl-rs232-circuit

 

Now that we had the hardware ready, we started working on the software part.

We used the normal TinyOS repository from Github. You can find the instructions for doing this at https://lakshbhatia.wordpress.com/2014/02/11/installation-of-tinyos-on-ubuntu/ .

When you have a working tinyos repository.. navigate to tos/platforms/telosa and edit the PlatformSerialC.nc file and change the line

components new Msp430Uart1C() as UartC to components new Msp430Uart0C() as UartC .

Then modify the file PlatformHdlcUartC.nc and change the line components new Msp430Usart1C() as UsartC to components new Msp430Usart0C() as UsartC .

We also modified the TelosSerialP.nc file to match the baudrate that the modem could support. We modified the

const msp430_uart_union_config_t msp430_uart_telos_config = { {

ubr: UBR_1MHZ_115200,

umctl: UMCTL_1MHZ_115200,

ssel: 0x02, pena: 0, pev: 0, spb: 0, clen: 1, listen: 0, mm: 0,

ckpl: 0, urxse: 0, urxeie: 1, urxwie: 0, utxe : 1, urxe : 1

} };

to

const msp430_uart_union_config_t msp430_uart_telos_config = { {

ubr : UBR_1MIHZ_4800,

umctl: UMCTL_1MIHZ_4800,

ssel: 0x02, pena: 0, pev: 0, spb: 0, clen: 1, listen: 0, mm: 0,

ckpl: 0, urxse: 0, urxeie: 1, urxwie: 0, utxe : 1, urxe : 1

} }; 

Also to use any standard radio code we need to wire SerialActiveMessageC instead of ActiveMessageC in your code.

This completed the software and hardware part. Now a simple make telosb install would compile the code that would help in running this modem.

You can also clone the source for the same at https://github.com/shady33/tinyos-main/tree/underwater .

We tested the entire system with 7 modems arranged as follows:

setup_uasn

 

Here the box is node 1 and the other nodes have been numbered.

Node 1 acts as the link between the underwater communication and the wireless network. It is responsible for collecting the data via UART and send it wirelessly to the Basestation. Nodes 2 and 5 are cluster heads and nodes 3,4,6 and 7 are all children nodes.

In the first phase the entire network is time-synchronized starting from node 1. Node 1 syncs its time with 2 which in turn syncs it with 5 followed by time-synchronization of the children nodes by their respective cluster heads.

In the second phase the children nodes transfer data from 6->5 and 7->5. Then 5 transmits its data to 2 followed by data from 3 and 4. After 2 has all the data it transmits it to 1 and then it sends it to the base-station over the 2.4GHz channel.

This was the entire experiment that we conducted with underwater acoustic modems and telosb motes.

Edit: The Acoustic modem that we were using was called SAM-1

 

sam1

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.