|
TinyOS (http://www.tinyos.net) is the original and probably best well known operating system (OS) for the sensor nodes that make up Wireless Sensor Networks (WSNs). Sun Microsystems has also developed Java based sensors using the Squawk Virtual Machine (See https://spots.dev.java.net/). However, there is another operating system that we must consider not only for WSNs but also for embedded devices generally and what is sometimes referred to as 'The Internet of Things'.
The Contiki Operating System (http://www.sics.se/contiki) is an open source multitasking operating system for memory-constrained networked embedded devices and wireless sensor nodes. It is a well established OS. Version 1.0 was released in March 2003. The latest edition, Version 2.3, was released in June 2009. It is free to download under BSD license. It was developed jointly by several research and commercial organisations including the Swedish Institute for Computer Science (SICS), the Technical University of Munich, SAP, Cisco and the semiconductor manufacturer ATMEL.
Contiki has been ported to many of the vast range of sensor products available including Crossbow's TelosB and MICAZ sensor motes as well as this vendor's Environmental Sensor Bus (ESB) (See http://www.xbow.com). Atmel's AVR Raven sensors (See http://www.atmel.com) and Sentilla's JCreate prototyping platform (http://www.sentilla.com) are also supported.
The key feature of the Contiki Operating System to note is that the OS provides Internet Protocol (IP) Communication, both for IP version 4 and version 6 (known as IPv4 and IPv6 respectively). This has major implications as Contiki makes IP-based sensor networks possible. Contiki's uIP embedded TCP/IP stack was released in 2001 and is the world's smallest IP stack taking up 5k ROM for IPv4 and 11k ROM for IPv6. uIPv6 is the only certified IP stack (certification was achieved in October 2008) for embedded systems while uIPv4 is used in diverse applications including container tracking systems, oil pipelines, car engines and satellites.
One could argue that TCP/IP is unsuited for sensor networks because of the extreme communication conditions that sensor networks exhibit. However, there are a number of techniques which can be used to make IP-based Sensor Networks feasible. Spatial IP Address assignment can provide semi-unique addresses to sensor nodes. Application overlay networking lets distributed applications run on top of the network and decide how to process the packets. Distributed TCP caching lets sensor nodes assist each other so that neighbouring motes are able to retransmit segments that are lost due to errors on the radio channel. Finally, header compression reduces the header overhead to only a few bytes for messages carrying sensor data.
In addition to these benefits, Contiki also provides a low-power MAC (Media Access Control) layer and preemptive threads that run on top of events. Contiki provides support for both multi-threading and what are termed 'protothreads'. Protothreads are lightweight stackless variants of the threading used in computer programming and are designed for severely memory constrained systems such as wireless sensor nodes or other small embedded systems.
From the perspective of the programmer, Contiki is written in the C programming language so knowledge of C is a more than sufficient starting point for getting started with the OS. Loadable modules are used to implement the different facets of the OS. The build system will also be very familiar to C programmers who regularly program on LINUX or UNIX platforms as applications can be compiled for different hardware or simulation platforms by using the standard 'make' command with different parameters.
In addition to uIP, Contiki also provides a lightweight communication stack for low-powered radios called Rime. Rime provides a number of communication primitives from best-effort local area broadcast to reliable multi-hop bulk data flooding.
IP-based sensor networks enabled by Contiki have been deployed in diverse projects. Examples include remote water monitoring in the Baltic Sea, locating vehicles and people in road tunnel fires (this is part of the Runes project. Runes stands for Reconfigurable Ubiquitous Networked Embedded Systems. See http://www.ist-runes.org/ for more details.) and in surveillance and intrusion detection applications. Commercial users include ABB, BMW, Cisco, NASA and General Electric.
Give the open and ubiquitous nature of IP, it is an ideal candidate for networking pervasive devices. Contiki and uIP have played a major role in demonstrating the potential of using IP in these diverse, often constrained networked devices. What are termed 'Smart Objects' are evolving all the time. Roughly, Smart Objects can be categorised as sensors, actuators and smart meters. These devices are the enablers of the smart grid, smart cities, home vnd building automation, asset tracking and utility metering. Connecting these smart objects is a major issue and IP would appear to be by far the most suitable protocol for what is termed 'The Internet of Things'. To promote the use of IP for the Internet of Things Cisco, Ericsson, SAP and others founded the IPSO Alliance (The IP for Smart Objects Alliance) in October 2008 (See http://www.ipso-alliance.org). IPSO seeks to extend the use of IP for resource-contrained devices over a wide range of radio technologies.
Extending IP to low-power, wireless personal area networks (LoWPANs) that typically make up a smart object network was once considered impractical and many vendors used proprietary protocols. However, 6LoWPAN has altered this perception as efficient IPv6 communication over IEEE 802.15.4 LoWPANs is facilitated. It can be argued that uIP was the pioneer for protocols such 6LoWPAN and was the first technology to make the Internet of Things possible.
Contiki is not the only WSN OS that offers IP Networking. TinyOS was relatively late in offering IP networking but this capability finally became available in 2007. IPv6 networking is now possible using TinyOS but the OS is not yet certified as IPv6 ready. A 6LoWPAN and IPv6 stack has been implemented. IP-based sensor networks and smart objects will become ever more prevalent in the coming years so an implementation was vital for TinyOS to remain relevant.
|