The OpenWSN project serves as a repository for open-source implementations of protocol stacks based on Internet of Things standards, using a variety of hardware and software platforms.
The Internet of Things enables great applications, such as energy-aware homes or real-time asset tracking. With these networks gaining maturity, standardization bodies have started to work on standardizing how these networks of tiny devices communicate.
The goal of the OpenWSN project is to provide open-source implementations of a complete protocol stack based on Internet of Things standards, on a variety of software and hardware platforms. This implementation can then help academia and industry verify the applicability of these standards to the Internet of Things, for those networks to become truly ubiquitous.
Our OpenWSN effort at UC Berkeley is one of many open source hardware and software projects for wireless sensor networks. Here are links to some of our friends and colleagues around the world.
The standards under development most applicable for the Internet of Things are:
- The IEEE802.15.4e standard defines MAC amendment to the existing IEEE802.15.4-2011 standard. One mode, called Time Synchronized Channel Hopping, significantly increases robustness against external interference and persistent multi-path fading, while running on legacy IEEE802.15.4 hardware.
- The IETF 6TiSCH working groups standardizes mechanisms of running an IPv6-enabled protocol stack on top of IEEE802.15.4e TSCH.
- The IETF 6LoWPAN working group has standardized a mechanism for an IPv6 packet to travel over networks of devices communicating using IEEE802.15.4 radios; this includes header compaction techniques to fit long IPv6 headers into short IEEE802.15.4 frames.
- The IETF ROLL working group has standardized the RPL routing protocol, i.e. the distributed algorithm which finds the multi-hop path connecting the nodes in the network with a small number of destination nodes.
These standards can be layered one on top of another, forming the following protocol stack: