Developing a bespoke system to monitor the environment of a computer lab
At the Rochester Institute of Technology, the electrical engineering and microelectronic engineering department maintains computer stocked with high performance workstations that students use for VSLI design and simulation. Recently, HVAC failures have caused the labs to overheat, irritating students and reducing performance of the computers. The department’s system administrator approached the multidisciplinary senior design center to get a group of students who could develop a solution for monitoring the room’s temperature and humidity and integrating with the school’s existing IT infrastructure monitoring system.
Our team developed a system that is able to capture temperature and humidity data from multiple locations in each room, collect them and display the current conditions on a display in each lab, and expose the data via SNMP and HTTP for aggregation with the IT department’s Zabbix monitoring server. Our goals included developing a system that was simple, extensible, robust, and easy to maintain. We also challenged ourselves to try out new techniques and tools and to develop an integrated solution as opposed to just assembling a collection of off-the-shelf components.
Our solution is comprised of two types modules, a control hub that acts as the centralized point of data aggregation in each room, and satellite sensing probes that can be placed at the locations to be monitored. Each module is designed to be installed in a single gang surface mount electrical box to make installation simple and match the aesthetics of existing installed equipment. The control hub features an RP2040 microcontroller, a W5500 ethernet controller, is powered over PoE, and displays the current status, temperature, and humidity on a color TFT display. It also features a light sensor that can be used to monitor room occupancy and dim the display backlight.
Assembled PCBs, front row from left to right shows: satellite lying flat, partially assembled control hub vertical, satellite node vertical, and bare control hub on its side.
The satellite nodes connect to the control hub via a 1-wire protocol over a CAT6 cable that also carries power. The nodes can also be daisy chained, allowing an unlimited number of independent sensing probes per room.
System Architecture Diagram
Each module is built around a custom PCB that integrates all the components and we assemble by hand. The PCB is the mounted with 3D printed brackets and faceplates to integrate into the room.
The software stack running on the control hub is written in Rust using the Embassy embedded async framework. librasn is used for safe decoding and encoding of the SNMP message types as described in their original ASN.1 definitions. Implementing the entire software stack in a memory safe language is one way we can improve the security model of this network connected device. We also chose to keep the processing architecture as lightweight as possible, and avoided the use of a traditional operating system so that firmware upgrades could be done with a single binary upload and we don’t rely on an operating system and suite of system packages.
At the completion of this project we hope to open-source our hardware and software designs as well as project documentation so that others may learn from and adapt our work!
Special thanks to Mike Vasile from the RIT EE/µE department for proposing and supporting this project, the RIT Multidisciplinary Senior Design office, and MSD group members Michael Fisher (EE), Nathan Koch (MechE), Mikyle Gregory (CompE), and Eddie Casalmir (EE).