With the increasing number of internet connected devices (IOT), current wireless networks are beginning to strain. For example, in most home wireless a standard star-topology is being used, meaning that there are a lot of devices connected to a single wireless router, this inevitably leads to slower transfer speeds with a larger number of devices. We all like to get our videos fast, no one wants to wait for buffering. :) So one option is to use mesh-networks with adaptive routing, this allows ever device/node to act as a "router" allow for multi-hop systems. In simple terms this allows internet traffic to be routed through the most efficient path to the internet, this is only possible by increasing the number of possible traffic paths. This improves a lot of factors, like packet congestion, response rates, evenly distributed network traffic and many other things.
We also saw a lot of different implementations of this system to provide reliable and fast wireless internet over large areas, like in the city of New York. But our favorite application would in Smart Cars, currently smart car technology is designed to operate independently from other cars on the road, meaning that they are not sharing any additional information while in operation. This is a waste, because some of the most promising aspect of these technologies is that they can outperform humans, they cannot do this as well without access to a lot of data for their environment. While current technologies like cellular data, Bluetooth, and other radio technologies can accomplish some of the capabilities of a mesh network, none of them can offer the same performance, reliability, and interconnect ability. These factors is what drove us to developing a mesh network that had adaptive routing.
What it does
We are using a 802.15 wireless development kit (OpenMote) to implement a adaptive wireless mesh-network, this network is capable of adapting in real time to changes in topology i.e. removing nodes, adding additional traffic, network congestion and several other factors. Our development kit is equipped with TI CC2538 SoC (System on a Chip), this chip contains a 32-bit Cortex-M3 microcontroller and a CC2520-like radio transceiver. We flashed our devices with the open source IOT Contiki OS. We then used the IPv6 TCP/IP in Contiki and the custom designed Linux kernel and drivers to interface with our hardware and implement Routing Protocol for LLN(Low Power Lossy Environments) (RPL). While one person worked on developing the firmware, and low level drivers and C code to implement the routing algorithm, our other member develop our front end visualization, which received data from the sensors and plotted it in a Web Interface.
How we built it
We utilized the contiki 3.0 open source IPv6 TCI/IP stack and RPL routing API and libraries to write our embedded application. We wrote all of the device driver as our specific device isn't natively supported in Contiki, until the most recent version which doesn't include full-support. We used the network simulator (Cooja) to simulate the hardware behavior and network functionality of the code we wrote before flashing the code onto each device using a Segger JTAG. For the web visualization, we used Node.js to interface with web hook to the Plot.ly data visualization API. We utilized Microsoft Azure IOT Hub and HTTP request to interface and store our data, which then relayed the data to the Plot.ly API for visualization.
Challenges we ran into
We ran into a lot of device flashing and firmware problems, as the documentation involved in implemented Contiki and a adaptive mesh-network was mostly theoretical. This caused a lot of problems while developing our low-level driver. We also ran into a lot of problems actually getting the data off of the sensors, since they operate on a different wireless standard than the provided wireless, we solved this problem by using one of laptops as a IPv6 to IPv4 network tunnel. For our visualization we originally tried to use PowerBi but were unable to get the live updating working so we abandoned it for Plot.ly.
Accomplishments that we're proud of
Get the routing simulated and flash onto hard, being able to read temperature data form the individual nodes and connecting that into a IOT visiulization in roughly 24 hrs. Neither of us got any sleep and we are so proud of what we were able to accomplish.
What we learned
We learned low-level development of hardware drivers wants to make you scream at the world. But we both got a lot of valuable experience working with Wireless networks and low-level driver. We also got some experience utilizing IOT resources on Microsoft Azure thankfully, we found some very helpful tutorials on setting up our front-end visualization which allowed us to focus on our network development. One of the most valuable lesson we learned was time management and the importance of recruiting ahead of time.
What's next for Adaptive Wireless Mesh-networking
We don't know we most likely refine this for fun and see what we can do with it.