Project Overview
To optimize the airflow I would use a system of remote temperature sensors (initially 3 -> 1 each at an air outlet register on each floor and 1 at the air return inlet on the first floor). I would adjust the baffle position to best equalize the temperature differential between floors. The system would continuously monitor the temperature between floors and also between the outlets and the return inlet and send an alert if the differentials were outside set limits (separate limits for heating and cooling). To monitor system health I would use a main control unit attached to the HVAC unit to monitor system sound and vibration patterns.
I would use ESP32 units with temperature sensors added as the remote sensors. I would use the QuickFeather board as the main controller and take advantage of the MEMS microphone and the accelerometer to do the sound and vibration sensing. I would add an ESP32 unit to connect with the QuickFeather via UART to allow communication with the remote sensors and the SensiML cloud. I would use the SensiML Toolkit to train a model to detect abnormal operating conditions.
To facilitate communications with the remote sensors and the main controller, I am going to use MQTT over WiFi. I will set up a Mosquitto MQTT broker (server) running on a Raspberry Pi 4.
Building the Project
Step 1: Build the remote sensors
For the remote sensors, I am going to use an M5StickC Plus with a BME280 temperature/humidity sensor. The M5StickC Plus is an ESP32 module with a small display and internal battery. I am using the I2C interface on the top module connector with the BME280 sensor. I am going to mount these sensors on the inlet and outlet vent registers, so I 3D printed a mounting plate and mounting clip for each unit.
Step 2: Install MQTT and create HVAC Dashboard
I am using a Raspberry Pi 4 as the host for the MQTT broker, so installation is reasonably straightforward.
Install Mosquitto Broker
Step 3: Build Main Controller
I purchased a plastic case to house the controller's two boards and the LiPo battery. I printed a mounting plate to hold the proto PCB that is used to interconnect the boards and to separate it from the battery which is mounted under it.
Step 4: Program the Controller Boards
The primary board in the controller unit is the QuickLogic QuickFeather. The QuickFeather uses an ARM Cortex M4F MCU which is augmented with an EOS S3 FPGA. For my project I am initially only using the MCU capability.
Step 5: Install SensiML Analytics Toolkit
SensiML offers a free Community Edition of the Analytics Toolkit Community-Edition. You just need to register for an account. The two components of the Analytics Toolkit that I'll be using for this project are the Data Capture Lab (DCL) and the Analytics Studio.
Step 6: Capture HVAC operating data for training TinyML model
I tried different locations on the HVAC unit's frame for sensitivity and I settled on the side adjacent to the water heater.
Step 7: Build TinyML model
Data Capture Lab automatically uploads all of the project data to the cloud, so it is immediately available when you log into SensiML Analytics Studio. Here is the top level view of my project:
Step 8: Deploy and Test TinyML model
There are two deployment options from Analytics Studio. It can build a binary file that can be flashed to the QuickFeather that provides a simple recognition streaming interface that can demonstrate classifier operation or it can create a library that can be integrated with custom code.
To test the model, I'm going to download a binary of the Knowledge Pack that is configured for the QuickFeather board and use the Simple-Streaming