Skip to content

Final Project Video

Bhumika edited this page Oct 13, 2026 · 1 revision

Overview

This page provides an over of Bhumika Sood's contribution to the AESD Final Project - Climate Control System emulator.

Video Outline

See ECEA5307 Final Project Video

This video demonstrates:

  • An overview of the components used and the protocols they use to communicate.
  • A demonstration of the push button and the resulting change in the LCD.
  • A demonstration of the rotary switch and the resulting change in the LCD.
  • THE BME280 temperature and humidity sensor responding to warmth and the resulting change in the LCD.

Challenges

My most difficult challenges when implementing this project were:

  • Implementing the compensation functions per the BME280 datasheet was particularly difficult. The equations, inputs, and functions are provided in the datasheet, but are so complex and dense that it took me many attempts just to correctly implement them in my code.
  • Deciding to implement humidity data capture in this project after already completing the temperature focused driver meant that I had to do some significant refactoring. A huge challenge with this was the register controlling humidity measurements from the sensor, which was a different control register than the one for temperature measurements, had to be enabled before the temperature measurements were enabled. I initially missed this detail when setting up the humidity sensing component of the driver and it took a significant amount of time to catch this small error.
  • I initially assumed the LCD I had on hand was enabled with I2C, only to find out in the third sprint that it was not. Fortunately, I was able to wire the LCD over GPIO, but only with a 4-bit input configuration rather than 8-bit due to the limited number of pins I had remaining. This made my LCD driver a bit more complicated as I had initially anticipated and in order to send an control commands or write to the LCD display, I had to send data in 4-bit nibbles instead of by the byte.

Lessons Learned

  • Writing unit tests for each driver and testing them independently before incorporating them into the Climate application helped resolve a lot of issues with the driver itself that would have likely been more difficult to pin down otherwise. This made troubleshooting more straightforward.
  • Reading the datasheet closely before writing could have saved a lot of time. The humidity bug was a register-ordering detail that the datasheet details and I lost a lot of time because I skimmed past it.
  • I was able to use the i2c-tools, specifically i2cget and i2cdump, to debug the BME280 sensor. These are functions that I am generally unfamiliar with and they helped me narrow down the problem with the compensation functions when my humidity numbers looked wrong. I was able to used i2cget and i2cdump to manually read the sensor's registers and then decode the raw values by another quick program which confirmed the issues with my driver code.

Clone this wiki locally