Environmental Sensors

Posted: August 4, 2019
Updated: July 28, 2020


I got some i2c sensor breakout boards from SparkFun along with one of their serial based LCD boards. I've typically avoiding i2c in the past due to the not fun I had with the DAC Sound Player project I worked on with an ATtiny2313 connected to an i2c EEPROM.

This project diplays: the temperature from a TMP117 chip, the humidity (which actually could also do the temperature) from an Si7021 chip, and air quality (CO2 and TVOC levels) with an SGP30 chip:

The sensors are all read from an MSP430G2553.

Related Projects

Thermometers: Thermometers, Clock Thermometer, Bluetooth Thermometer, MSP430 DCO, E-Ink Thermometer


A video of the circuit.


This project was filled with.. speed bumps. I started out with a BME680 breakout board and tried to talk to communicate with it using the USCI module of the MSP430G2553 in i2c mode. I could not get this working. Searching on the net it seems like a lot of other people were having the same trouble I was. I got i2c working on an MSP430G2231 in a seperate project using the USI module pretty easily, but this was just not working. I ditched the USCI module and did this with just a software i2c implemention. Took probably 30 min to get that working.

Next, the temperature readings I was getting out of the BME680 seemed too inaccurate, plus the documentation was horrible. HORRIBLE. So I switched to using the TMP117 and Si7021 boards. I got some nice temperature readings out of the Si7021 actually that were really close to the TMP117, but I already had the TMP117 so I kept both on the board.

The readings are pretty interesting on the SGP30. Seems like it never goes below 400ppm on CO2 and typically stays at 0 for the TVOC reading, but if I breath on it, or worse hold my breath and exhale on it, the readings go way up. If I sit near it and breath sometimes they go up a little bit too. I took it to the office at work and it starts out at 400ppm, but as the day progresses and more people are in the office it slowly goes up.

Source code

Copyright 1997-2024 - Michael Kohn