This project develops a host user interface for the meshed network of sensor-equipped illumination devices, which can be used in disaster site illumination and mark points of interest in exploration.
The meshed network supports:
- Network with up to 100+ nodes
- Individual control and broadcasting
- Collect sensor data from nodes
- Grouping nodes and commands together
- Error checking and return transmit status
The user interface is devided into 3 subwindows. On the left, we have main windows including menu, node graph view and node list view. On top right, it's the function panel, where related commands are grouped together and put into each tab. On bottom right, we have logger windows showing infos, errors, network modifications and transmit status.
The comprehensive GUI enables all the functionality within the network, includes graph view, network request, stauts check, new node discovery and source routing.
The brightness, color and light patterns of end devices can be set. GPS, temperature and acceleration values are collected and sent to host. It's convenient to set up cyclic tasks to get device information automatically.
Defined by network protocol, when direct communications between two nodes are not available, the message will pass through several realy nodes before reaching the destination. Source routing will return the exact path connecting sender and receiver. We can lighten up this path by command.
Depend on the actual network connection, the latency to each node in the network is different. In latency-sensitive use cases, such as aligning light patterns, we need to synchronize the clocks of the end devices.
The node connection is constantly checked inside the network, if a node is offline, it is shown on the graph view and a notification will be sent to logger. When this node is back online, the status also refreshes. This connection check also applies to new node, when a new node that is not discovered occurs, it it saved in the network and plotted onto the grapgh view.
The settings and code on zigbee modules can be updated without connecting them locally.This is done by selecting a system image and transmit it to remote node.
There is test tool integrated in the user interface for latency test and payload test. The test mode should be enabled in the menu and a single node must be chosen for the test.
Hardware | Software |
---|---|
ESP32 | deployed code |
XBee3 ZigBee Module | code in micropython |
Host PC | host_gui.py |
Note: code running on end devices is not included in this repo.