Inspiration
Air conditioning is the largest contributor to electricity usage for the average US household. Heating is number two. It is almost never the case that all rooms in a house are occupied; however, HVAC systems do not discriminate. When we are asleep, there is no need to waste heating/cooling on the unused kitchen or living rooms. We wanted to build a system that can automate blocking off rooms depending on if people are present or not.
What it does
Our project detects people in a room and opens or closes vents. We use a camera and an image classification model to detect when people are in a room. To open and close the vent, we use a simple servo arm to lift up and lay down a cover. It also logs vent actions as well as room climate data to both the console and a Snowflake database. It runs entirely locally, apart from the optional database logging.
How we built it
For people detection, we used the built-in edgeimpuse Video Image Classification Brick. Remote database logging was done using the Snowflake API. Detection and logging logic is done on the MPU python side, while timing and servo logic is done on the MCU C++ side.
Challenges we ran into
Since the Arduino Uno Q and the Arduino App Lab are very new platforms, there is limited documentation, tutorials, and forum support available. The first problem we ran into was giving camera access to the Arduino. Since the Arduino can only recognize a USB camera when running as the host (ie without being plugged into our PC), it was hard to debug why the camera was not turning on. The lackluster guest Wi-Fi preventing us from ssh-ing into the Arduino was also less than ideal. We also struggled with using the RPC Bridge, but we learned how it is used through the provided examples. GenAI also struggled due to any documentation being outside its knowledge cutoff, but it was able to detect logic errors.
Accomplishments that we're proud of
Even before we came into DataHacks, we knew we were probably not a competitive team. Instead, we came to DataHacks to gain practical experience and make good use of the weekend. We are proud to have learned how to both read sensor data and control device actions in real time. We are also proud to have built something with limited GenAI assistance and instead relying on documentation, examples, and forum posts.
What we learned
We learned that working in the embedded/IoT workspace is very specific to the hardware that we have. Different IoT devices have different communication protocols, value ranges, and pin configurations. We also learned that the Arduino workspace, specifically, is hugely dependent on a dedicated community. Many solutions to problems that people in the past have encountered were solved using open source libraries that small groups or even solo developers wrote and released to the public.
What's next for Little HVAC Helper
The current Little HVAC Helper is very much at a demo stage currently. Firstly, our vent control and data logging programs are currently separate demos, which need to be merged into a single app. Also, there is some practical logic that needs to be addressed. Firstly, if a central thermostat only takes readings in the room where LHH is, then closing the vent in that area would only strain the HVAC system. Additionally, we do not currently have support for multiple rooms. We foresee that having multiple live video streams feed into the Video Image Classification model would be too computationally expensive for the Arduino, so we plan to implement the static Image Classification model instead, and schedule classification for each camera through a single model.
Log in or sign up for Devpost to join the conversation.