SparkFun ESP32 Thing Environment Sensor Shield

The SparkFun ESP32 Thing Environment Sensor Shield provides sensors and hookups for monitoring environmental conditions. While incorporating three sensors capable of measuring five different environmental variables as well as providing connections for several other sensors, this sensor shield creates the best way to make your ESP32 Thing more accurate than your local weatherman! By simply soldering on a few headers as well as an optional 3-pin screw terminal, your ESP32 Thing Environment Sensor Shield will be ready to detect any type of weather you need.

The ESP32 Thing Environment Sensor Shield utilizes the BME280 pressure/humidity/temperature sensor, the CCS811 air quality sensor and the APDS-9301 ambient light sensor --- using each corresponding Arduino library. In addition to the onboard sensors, the environment sensor shield has been equipped with two RJ11 connectors for wind and rain detection and measurement, as well as optional pins for external temperature readings and our soil moisture sensor. There is even a prototyping area underneath where the ESP32 Thing is installed so you can add your own additions to the shield!

  • Pressure/Humidity/Temperature Sensor — BME280
  • Air Quality — CCS811
  • Ambient Light — APDS-9301
  • Compatible with the ESP32 Thing

SparkFun ESP32 Thing Environment Sensor Shield Product Help and Resources

ESP32 Environment Sensor Shield Hookup Guide

July 6, 2017

SparkFun's ESP32 Environment Sensor Shield provides sensors and hookups for monitoring environmental conditions. This tutorial will show you how to connect your sensor suite to the Internet and post weather data online.

Weather Meter Hookup Guide

July 20, 2017

How to assemble your very own weather meter!

Core Skill: Soldering

This skill defines how difficult the soldering is on a particular product. It might be a couple simple solder joints, or require special reflow tools.

1 Soldering

Skill Level: Noob - Some basic soldering is required, but it is limited to a just a few pins, basic through-hole soldering, and couple (if any) polarized components. A basic soldering iron is all you should need.
See all skill levels

Core Skill: Programming

If a board needs code or communicates somehow, you're going to need to know how to program or interface with it. The programming skill is all about communication and code.

2 Programming

Skill Level: Rookie - You will need a better fundamental understand of what code is, and how it works. You will be using beginner-level software and development tools like Arduino. You will be dealing directly with code, but numerous examples and libraries are available. Sensors or shields will communicate with serial or TTL.
See all skill levels

Core Skill: Electrical Prototyping

If it requires power, you need to know how much, what all the pins do, and how to hook it up. You may need to reference datasheets, schematics, and know the ins and outs of electronics.

3 Electrical Prototyping

Skill Level: Competent - You will be required to reference a datasheet or schematic to know how to use a component. Your knowledge of a datasheet will only require basic features like power requirements, pinouts, or communications type. Also, you may need a power supply that?s greater than 12V or more than 1A worth of current.
See all skill levels


Looking for answers to technical questions?

We welcome your comments and suggestions below. However, if you are looking for solutions to technical questions please see our Technical Assistance page.

  • Member #1498320 / about 5 years ago / 1

    I am planning on using this for a data logger that interfaces directly with an Arduino Mega rather than the ESP32Thing. I am just curious about which pins to connect for power (as I see multiple on this shield), as well as the SDA/SCL lines, and the pins for the wind speed&direction sensor if I will only be using the BME, APDS and the previously mentioned pins for wind speed&direction?

  • xcvbfsghrtytry / about 6 years ago / 1

    Is there a mechanical drawing of the this board? It would be nice to generally have those for making enclosures.

    • M-Short / about 6 years ago / 1

      We don't usually do mechanical drawings, partly because everyone seems to need something different measured. But also because we do include the board files. Check out the board files in Eagle and use the dimension tool. It will measure any length, angle or radius on the board you want

  • ChiefRobot / about 7 years ago / 1

    Testing this out before putting it up and temperature is off. I expect it to be a little off but by 17 degrees F is too much. Already have an ESP8266 station running but wanted to add rain, wind etc so got this. Anyone else run into temperature being off?

  • Member #1168742 / about 7 years ago / 1

    Is there any source example code written by python as I need to run it on raspberry pi?

    • SFUptownMaker / about 7 years ago / 1

      Sorry, as this is intended for ESP32 mainly the only example code is in Arduino.

  • phekno / about 7 years ago / 1

    Seems like this combined with the ESP32 Thing (and in a radiation shield) routinely reads 5-10 degrees Fahrenheit higher than a commercial weather station down the street. Initially I figured it was because I was ludicrously transmitting roughly once per second, but even after I turned it down to once per minute, the temp is still high. I don't have an IR cam, or I'd try to figure out if it's high for some other reason (i.e. the CCS811, maybe?) I'll probably end up adding a fan to the radiation shield to get air moving around it...

    Also, looks like the CCS811 is meant more for indoor air quality as opposed to I may just turn that off, anyway.

    • phekno / about 7 years ago / 1

      I've tried a couple things to get the temperature to match what other stations around me (one about 3 blocks away), like adding a fan to keep air circulating in the radiation shield, not initializing the CCS811 or the APDS-9301, and going to a 5-minute poll rate. Even with those things, the temperature was 2-5 degrees F higher than the next nearest weather station on Wunderground.

      So, I just now tried setting the BME280 runMode to 1 (i.e. :"forced") rather than 3 ("normal"), due to the fact that the datasheet says that forced mode is recommended for my application, which is an outdoor weather station. Now it doesn't report anything back other than 64.9 degrees F, and it's DEFINITELY NOT 64.9 degrees F (it's closer to 50).

      EDIT: Humidity and pressure aren't coming back right, either.

      According to the source code, it doesn't look like there's anything else needed to run in "forced" mode, so I'm just wondering if anyone else has used this mode?

  • Member #196129 / about 7 years ago / 1

    What TVS Diode was used there? Can't find it's sketch? is it something on ESP32 board?

  • PerryRT / about 7 years ago / 1

    Nice board, guys. I've got one on order now. For battery planning purposes, can you give me a ROM on the power usage that this combined with a Thing32 (assuming decent wifi reception) might run me?

    • SFUptownMaker / about 7 years ago / 1

      Sitting on my desk taking readings it's pulling down about 170mA. It's connected to WiFi with a pretty decent connection strength. It takes a very short time to transmit data to wunderground, but it looks like it peaks out at around 190mA during that period (which is about 1 second long).

    • PerryRT / about 7 years ago / 1

      Oh, and there may be a bit of a kerfuffle with the luminosity datasheet. The one in the "zip" package is for a ADPS-9960 and the one on the Github is labeled -9301, but looks to actually be a for a -9007. Mouser has a separate one for the -9301 here: . Did you change the unit in production, maybe?

      • SFUptownMaker / about 7 years ago / 1

        I'll look into this. You're right, those aren't the correct datasheets. I'm not sure what happened, exactly, but we'll fix it.

Customer Reviews

1 out of 5

Based on 1 ratings:

Currently viewing all customer reviews.

High priced based on stability and lack of accuracy

Temp reading is off by + 18 degrees (I bought this for a more reliable reading then PyPortal)

Board coupled with the ESP32 Thing power seems to go offline every couple of hours

Barometric pressure is also deviate4s by about - .8 to 2 other barometric sensors

At this point I would not rely on this for a 24x7 monitor for monitorong.