Project update 5/5/2015 - HackerLab IoT Incubator Program
We've continued to work on this project as a participant in the Sacramento HackerLab IoT Incubator program. There is now a webserver user interface and new microcontroller firmware supporting multi-hop packet routing. Our team has also grown to include two more members - Mario Escalante and Trushant Kalyanpur.
Above is the current webserver interface based on vis.js for viewing and altering the radio network. Each node is colored for the kind of radio is supports and the edges represent an estimate of the link strength. A user is able to change which paths a packet can be routed over by using the ‘Mask Node/Edge’ function from the top toolbar. Routes can also be manually added or deleted through this interface.
The webserver provides an additional interface for visualizing the data from nodes over time via angular-charts. In this example, 10 nodes were simulated to upload a random RSSI value. The graph automatically scrolls as new data is received, and displays additional information when the user selects a specific trace; the interface permits selectable zooming, as well.
This image shows Node1 sending a message to Node3 using Node2 as an intermediate router. The wider pulses means a node is transmitting or receiving a full packet. A shorter pulse shows that a node has heard there is a packet on the air, but since the destination ID doesn’t match the node ID the radio filters out the packet and stops receiving it. This means the link and application layers aren’t tied up processing this packet so the node is free to listen for a different packet instead.
The goal of our project is to develop a framework for managing and testing a network of wireless sensors.
The components of the network will be encapsulated so that a user can easily test different aspects such
as topology, traffic management, and communication protocol. The team for this project consisted of
Mark Bunney and David Buchman.
Project repository: bunneydude/DOGE · GitHub
Power & Sensor Subboard: bunneydude/sensor_node · GitHub
Leaf Node: bunneydude/leaf_node · GitHub
Blog - hardware aspects: The Electronics Cache
Two types of nodes were developed for this project: the BoosterPack Node and the Leaf Node. The
BoosterPack Node is based on Texas Instrument's CC110L RF BoosterPack kit and uses a 915MHz radio
along with an optional 2.4GHz radio. The Leaf Node is a custom board with an LPC812 microcontroller
and 2.4GHz radio. Both nodes include a temperature sensor.
To assist in adding new nodes to the network, two smaller boards were made to provide power
and environmental sensors. The Power Subboard provides a 3.3V supply derived from USB, single-cell
LiPo battery, or a coin cell. The three power sources are hot-swappable and the current power source is
represented by two open-drain outputs. Hardware-based undervoltage LiPo protection and charge circuit
are also included.
The Sensor Subboard integrates several common sensors into a small package. It includes pressure,
altitude, temperature, relative humidity, ambient light, IR light, UV index, and a microphone with
digitally controlled amplifier. The sensors share the same I2C bus and all interrupt pins are broken out
to the breadboard-compatible header.
Currently the network is managed from an Intel Edison board with both a 915MHz and 2.4GHz radio.
An Arduino sketch interfaces with the radios and posts its data to a Python thread via shared memory.
The data is formatted and sent over a socket to a webserver running on Edison. The webserver is able
to plot certain aspects of the network in real time.
Plot of signal strength from four 915MHz nodes over time via the webserver.
MSP430, 3.3V LDO, temperature sensor, and 915MHz radio.
LPC812, temperature sensor, and 2.4GHz radio.