Having recently discovered the ESP32, I had quite a few project ideas which could make use of this quite capable, lost-cost, low-power processor, which also includes built-in WiFi. One such idea was Environmental Monitoring. By integrating existing sensors and building the firmware / back-end to support the data, I was able to quickly build a system capable of collecting and graphing a wide range of environment data and displaying it on a map.
More details about the project can be found at EnvSense.org.
The sensor chose to initially prototype the project was a BME280 – a small sensor by BOSCH with the ability to provide accurate temperature, pressure, and humidity readings with incredibly low power-draw.
The idea for the firmware would be simple: the device should wake, record a sample, and go back to sleep. As a power-saving technique WiFi will only be enabled and data uploaded to the server at an interval of about 2-hours. Eventually configurable, this interval was chosen to ensure the battery powered device would last a predictable amount of time before needing to be charged. Later versions of the prototype will include the ability to both detect their own battery level, and initiate battery charging via an attached photovoltaic cell.