This project is a battery-powered wireless outdoor weather sensor. It is designed to run on an MSP-EXP430G2 LaunchPad with 430BOOST-CC110L and BOOSTXL-SENSORS BoosterPacks.
Data from the TMP007, BME280, and OPT3001 sensors are periodically sent to a wireless receiver hub using the CC110L BoosterPack.
The project is designed for low-power operation. The current implementation has run on a pair of AA batteries for over 18 months. The limiting factor in the life of the batteries is the TMP007 sensor, which is specified to operate down to 2.5 V. The MSP430 (running at 8 MHz) will work down to 2.2 V, the BME280 sensor down to 1.8 V, and the OPT3001 sensor down to 1.6 V.
Previous versions of the weather sensor were implemented for an MSP-EXP430F5529LP LaunchPad and used Rei Vilo's Weather Sensors Library. However, that design required new batteries every two months, so I looked for ways to cut power usage and improve the design.
The new design uses an MSP430G2553 processor running at 8 MHz.
By moving to a G2553 controller, I had to switch to a software I2C implementation, since the G2 processors share hardware I2C with the hardware SPI signals. So I created my own Software I2C Weather Sensors library.
The sketch collects the following data from the SENSORS BoosterPack:
- TMP007 Sensor:
- Die temperature
- External Temperature
- BME280 Sensor:
- Temperature
- Humidity
- Pressure
- OPT3001 Sensor:
- Lignt Intensity
It also collects the following data from the MSP430:
- Die temperature
- Battery voltage (Vcc)
After collecting the sensor data, the data is packaged and transmitted to a receiver hub which can then further process and store the data over time.
All data is processed using integer math and is transmitted to the receiver hub as follows:
- Temperature is formatted in tenth degrees Fahrenheit. For example, 733 represents 73.3 degrees Fahrenheit
- Humidity is formatted as tenth percent relative humidity. For example, 643 represents 64.3 % RH
- Pressure is formatted as hundredth inches of Mercury. For example, 3012 represents 30.12 inHg
- Light Intensity is formatted as a long integer lux unit.
The compiled sketch currently takes about 15K of program space, and therefore fits on a G2553 controler. Further code reductions could be made by removing the Serial.print
operations, which are currently only used for debugging.
Note that for low-voltage MSP430G2553 operation, it is necessary to program the processor to run at 8 MHz instead of the standard 16 MHz.
- Weather Sensors - Weather Sensors interface using software I2C.
- SWI2C - Software I2C implementation, used by the Wether Sensors library.
- Calibrated Temp and Vcc Library - Internal MSP430 temperature and battery voltage measurements.
- TMP007 Temperature Sensor.
- OPT3001 Amient Light Sensor.
- BME280 Temperature, Humidity, and Pressure Sensor.
Although pictured here with an F5529 LauchPad, the current implementation uses an MSP-EXP430G2 LaunchPad.
The software and other files in this repository are released under what is commonly called the MIT License. See the file LICENSE.txt
in this repository.