Creative Commons images are CC BY-NC-SA 3.0


added to your
shopping cart

In stock 126 in stock
39.95 1+ units
35.96 10+ units
31.96 100+ units

Previous Versions

Description: The Weather Shield is an easy to use Arduino shield that grants you access to barometric pressure, relative humidity, luminosity and temperature. There are also connections on this shield to optional sensors such as wind speed, direction, rain gauge and GPS for location and super accurate timing.

These Weather Shields utilize the HTU21D humidity, MPL3115A2 barometric pressure, and ALS-PT19 light sensors and relies on the HTU21D and MPL3115A2 Arduino libraries. Each shield comes with two unpopulated RJ11 connector spaces (for optional hook up of rain and wind sensors) and a 6-pin GPS connector (for optional hook up of a GP635T GPS module). Finally, each Weather Shield can operate from 3.3V up to 16V and has built in voltage regulators and signal translators.

Note: The Weather Shield comes as a stand-alone board. Headers, connectors, and additional sensors will need to be purchased separately, check the related items or wish list below!


  • Humidity/Temperature Sensor - HTU21D
  • Barometric Pressure - MPL3115A2
  • Light Sensor - ALS-PT19


Comments 63 comments

  • What the purpose of the milled out channels in the middle of the board near Humidity and Pressure?

    • Maybe isolation for the temperature sensor? This may keep the heat generated by other components on the board away.

      • Close - it’s isolation specifically for the HTU21D humidity sensor, but I’m sure the temp. sensor benefits too. The HTU21D datasheet recommends this pattern for ventilation slits, along with clearing copper layers (which has been done, based on the picture of rear of this pcb).

        Btw, its not 100% clear based on the pcb picture, but it seems D6 may not be grounded (due to the gnd fill being pinched off by the through-hole connector). However, D6 is for neg. volt. protection on ‘RAIN’ and not critical to operation.

        I’ve been considering putting together a weather station - this is a nice collection of sensors on one convenient card, may finally give it a try.

        • You had me a little worried about your ‘D6 not grounded’ comment. I double checked the layout and the diodes are correctly grounded. It’s a bit hard to explain but the ground pour does go underneath the 2nd diode.

  • Cool!

  • My temperature will only show up as “tempf=-1766.2”. The humidity is working however. Anyone know what could be the issue here? Any help would be fantastic.

  • So I have both the old weather board and the new weather shield and while my opinion is unencumbered by the thought process, here it is.

    I know Sparkfun is updating the weather board but I like the shield better. Having an Uno underneath is less of a burden and it does make the whole process of development simpler. My suggestion would be to add a second shield. Take the current Xbee shield (which I love) and add LIPO charging circuit, an I2C RTC, and an SD slot. This would take the current shield and make it easily standalone. Xbee for wireless, LIPO for remote power, the clock and shield to store data if the wireless link drops. The Weather board will end up pretty dense pretty fast and having 3 boards isn’t a big deal.

    Just my thought

  • Can the GS407 gps unit be used with this, in place of the GP635T?

  • Sparkfun, What is the minimum number of pins required to use this shield and get all of the data from it? I am looking at locating this away from my Arduino in a separate enclosure and connecting it via an 8 conductor cable and RJ-45 connectors. Will 8 conductors be enough or will I need more? Thanks.

  • A sensor that measures Solar Radiation in W/m2

  • A sensor that measures Solar Radiation in W/m2

  • Is there something for Solar Radiation Sensor?

  • How accurate does this read the temperature? I thought I remembered reading + or - 0.3 C, but that seems like a big error.

  • Im looking to connect this to your weather meter (so far so good) and transmit wirelessly to a raspberry pi. However, I would like to connect this straight to an Xbee, without the Arduino. Basically keeping it even simpler. Is that possible?

    I got the idea from the Wired ( but that’s using your old board.

    Of course, otherwise I would simply have to go with an Arduino, but it’s another thing to program and maintain that could break when the -20c winter comes :)

  • Just got my weather shield, but forgot to order headers. (In my impatience) I slapped on what I had, forgoing VIN, and pins 8 and 9. It took me a visit to the schematic to figure out why I was getting bogus values without VIN connected, but now that it’s working I’ve still run into some interesting issues with the example sketch on the Leonardo:

    1. The serial seems unreliable, starting indeterminately. I think this is a known issue with the serial reset on the Leonardo.
    2. When serial data is being output, everything looks in order, except for the rain sensor. It just keeps racking up values despite being disconnected.
    3. After the anaeometer spins for the first time, serial data is only output when the aneometer is still spinning. Otherwise it stops sending.

    Any suggestions?

    Edit: Guessing that this is an interrupt problem, further inspection of the datasheet reveals that the anaeometer is supposed to close a switch once per revoluion, but checking it on a multimeter it’s actually a normally closed contact that opens when the magnet passes. Did I get a deffective/different anaeometer, or is this just an interrupt issue?

    Edit 2: I isolated the issue to interrutps being fired whenever working with the I²C bus to read the barometer, etc. The Leonardo uses pins 2 & 3 for I²C, so an interrupt gets fired every time data is sent. As a work around in software, you can detach the interrupts for the weather sensors before using I²C data, and reattach them when done.

  • I am using this with the weather sensor kit. Mostly working, but I noticed that with the rain sensor, i’m getting some false readings. It seems to be worse when the units are outside, but I get them inside as well. I left it running indoors for 12 hours today and measured .03 inches of rain, yet the house was quite dry. :-) When the sensors and arduino were outside (arduino was under an enclosure and on a covered patio) the number of false readings was much greater - every few minutes at some times. Any clues?

    • I managed to catch some of these interrupts on the logic analyzer. Very short duration drops, like less than 100 nanoseconds. Changed the interrupt handler in the sample code to confirm the pin is low. Seems to work better now. Maybe the pull-up just isn’t enough at times? I found the same problem with the wind speed by the way. Taped it in position and still saw occasional clicks. Much less of an issue there I think since it takes so many to get even 1 mph of wind speed.

      • Hmm, this is very interesting. Thanks for coming back to tell us what you found. I have seen one or two rain gauge ‘measurements’ on the station on top my house that don’t quite match to conditions. I’ll see if I can replicate the short pulses you’re seeing.

        • I have a La Crosse WS2310 that periodically tells me wind is 100+ mph (When dead calm) - it looks like this uses the same sensors. There are some things you can do to reduce sensitivity to noise. The long wires pick up noise from lightening etc. Took a while to find the link again. Reminds me that I still need to do this.

  • The status LEDs should be labeled “Blinding Blue” and “Is It On? Green” since the mcd ratings are not matched. =P Or is that so the light sensor can measure the dark? I feel the ambient light sensor circuit needs some work… Mine reads 0.00 right now sitting above my monitor in very softly lit room. I’ll probably grab a few to experiment with an op-amp.

    I wish I looked at the schematic closer before purchasing; the Wind pin-out is not compatible with the Davis anemometer I already had lying around.

  • hi, i am interseted in using the weather station (and the weather board)with the arduino ethernet shield.Is that possible to happen and how it will be the best to put together the three boards (arduino+ethernet shield+weather board) I mean which comes first is it of any importance?if you know any tutorial regarding that I would be grateful too thank you in advance!

    • I suggest putting it top most so it is more exposed to the environment. I used these longer non-stacking pins on my boards:

  • How can I get the sensor library files that are needed to run the example program for the Sparkfun weather shield? Looks like I need 3 libraries, HTU21D, MPL3115A2 and maybe ALS-PT19.

  • I tried to use the libraries in mpide because i use chipkit of digilent, when i compile the program show me problems about wire.h can you help me please to solve this problem?

  • Below freezing I got some strange results using the example code. It appears that MPL3115A2.cpp does not take into account the 2’s complement nature of negative numbers used by the device; (see Application Note). The following shows additions to readTemp() which appear to fix this:

        word foo = 0;
        bool negSign = false;
        if(msb > 0x7F)
                foo = ~((msb << 8) + lsb) + 1;  //2’s complement
            msb = foo >> 8;
            lsb = foo & 0x00F0; 
                negSign = true;
    // The least significant bytes l_altitude and l_temp are 4-bit,
    // fractional values, so you must cast the calulation in (float),
    // shift the value over 4 spots to the right and divide by 16 (since 
    // there are 16 values in 4-bits). 
    float templsb = (lsb>>4)/16.0; //temp, fraction of a degree
    float temperature = (float)(msb + templsb);
    if (negSign) 
        temperature = 0 - temperature;

    This affects pressures also, if there is a negative value.

    Note that -999 results indicate a timeout. In the cpp, the timeout values have been increased versus other examples.

    Also, there was question about the Ethernet shield. It’s fairly easy to combine this code with the Arduino BarometriPressureWebServer example. But, keep in mind that the Wiznet W5100 is quite hot and very close. It added about 10F at room temperature.

    It’s 1.1 degrees Fahrenheit right now. Sorry about not knowing how to use GitHub…

    • (headsmack) Thanks D.D.G.! I forgot to test the sensor in the freezer. I’ve pushed your fix to github and the tutorial. It compiles but I haven’t been able to get the sensor to negative temps yet. Please double check my work and thanks for helping out!

      • Nate, I think the library is over with the breakout board on github. I added it to the shield example and it’s working fine… in my freezer.

  • Got this board and ordered the anemometer/rain gauge. I’m trying to make this wireless, but I’m somewhat of a newbie. I was hoping to use XBee (series 1), and I have the parts needed, just having trouble on the software/comms side. The Xbee tutorials seem to use a much older version of the X-CTU, and I can’t find how to set up the XBees to my network. Is there a better way to do this, or someone willing to help dumb-down the XBee comms for a newbie? Thanks!

  • Brain freeze the units are good. I mistook psi for in" of HG when comparing. (I wish we would just move on to SI units like the rest of the world) Ken

  • Cool Board, I am having fun with it so far. Working to make it solar powered and log to a SD card to “duct-tape” to a hang glider.

    I am getting a nonsensical value out from the pressure sensor. 94967.75 What units are these? The data sheet claims Pascals. I am at about 610m. The altitude reported is 548m (in altitude mode). This is much closer than the pressure value reported yet is not corrected to known weather pressure conditions. Raw pressure would be more useful to me in my application.

    The values change with altitude with sensitivity that seems to be within the 30cm.

    Thanks for any comments or ideas Ken

    • Sounds like you got it figured out. The pressure sensor outputs readings in Pascals. Check the example sketches and let us know if you run into any other problems.

  • I’m using this shield with the freetronics EtherTen Aurdino clone and it came right up using the provided libraries. I have noticed that the HTU21D always reads 1°C higher than the MPL3115A2, and both seem to read a bit warm. I guess I need to calibrate them and adjust the readings in software…

    For anybody else using this with the EtherTen, you can cut out a slot in the weather shield where the RJ45 jack protrudes. This cuts the traces to the dedicated I2C pins (for R3 arduinos) and the serial wires (for GPS). You don’t need the I2C pins with the EtherTen, and if you need to use GPS, you can add the serial lines back with a couple wires. This allows the weather shield to seat onto the EtherTen without extra spacers. The only negative is that it places the sensors about 1cm closer to the warm chips on the EtherTen. Also, it voids your warranty and removes the SparkFun logo, so I guess those are negatives too ;)

    • I have noticed that the HTU21D always reads 1°C higher than the MPL3115A2, and both seem to read a bit warm. I’ve got exactly the same behavior. Have you got any fix / explanation to this discrepancy ?

      • Sorry, I don’t have a good reason why one sensor may be higher than the other. Calibration is really going to be required if you need to get 1°C accuracy.

      • Unfortunately, no. I’m just using the MPL temperature, since it seems to agree with other thermometers.

  • Will this work with the ethernet shield too ?

    • I am using this board with the Ethernet Arduino (not shield, The SS for the SD card on pin#4 conflicts with the GPS TX. So I pulled out the header pin and hardwired #4 to #9 on the Weather Shield. Works fine.

  • Will this work with the Yun?

    • Just got a Yun and the weather shield this week. Out of the box they will not work but with some simple changes you can get most of the features working.

      I was looking to record temperature, and humidity, and I now have this working with the Yun and the weather shield.

      As noted here the two wire interface on the Yun is on D2&D3 as opposed to the UNO which is on A4&A5. The temperature, humidity and pressure sensors on the shield are wired to A4/A5. So for now I have jumped A4 to D2 and A5 to D3.

      Second, the weather shield wants power via VIN which it regulates to 3.3V for the pressure, temperature humidity sensors etc. Unloaded there is 5V present on VIN on the Yun but as soon as you plug in the shield it goes away. Simple solution is to jump 5V to VIN (I am powering Yun via USB). Note there is a warning about VIN on the YUN spec sheet.

      I now have the example code running, but I removed all of the code related to wind, and rain because of the jumps I made above (Wind and Rain are on D2 and D3).

      • Thanks your post gave me the key piece of information that I needed to get the Yun working with the wind, rain, pressure and humidity sensors. I used a soft I2C library( ) so interrupts are no longer an issue and ported the libraries that Sparkfun provide for each of the sensors. Anyway incase someone finds this useful I have posted the code here: This has only had a very quick test, 5 minutes on my bench, so there are probably lots of bugs lurking in the code. To get this to send back weather information you need to send a W over the serial line.

    • I started testing this unit, and I was able to get the Yun to output data from the example code. But, you can’t use the rain or wind sensors. The rain and wind sensors are on D2 and D3 because those are the interrupt pins on the ATMega328. While they are also the interrupt pins on the ATMega32U4, they are also the I2C pins on the ATMega32U4. Because the sensors on the board are I2C, this means there is conflict with the Rain/Wind sensors. The logical resolution would be to connect the rain/wind sensors to the ATMega32U4s interrupts, but, the ATMega32U4 only has them on D2, D3, and D7 (and the hardware serial lines which are not available on the YUN). In other words there just aren’t enough free interrupt pins to use the rain/wind sensors. If you aren’t using them it should work though. Keep in mind that the shield will short A4/A5 and D2/D3. Also with the Yun the Ethernet jack is tall enough that no shield will fit on it well. I would just get an extra set of stackable headers.

      • I’m attempting to use a soft I2C library( to get this shield to work with the Yun, but I’m noticing some odd behaviour. Here what I have tried so far. Firstly I got the the MPL3115A2 breakout board working with this library, basically converted the sample sketch with an Arduino Duemilanove. Then once that worked I got the humidity sensor to work and did a simple sketch that read from both sensors and plugged in the weather shield and it worked, much to my surprise. I also tested this with a Uno.

        Then I repeated the same process with the Yun, the MPL3115A2 breakout board worked but the weather shield did not, with Simple humidity/pressure sketch or the weather shield sketch. The other odd thing I noticed that the rain and the wind interrupt had to be swapped to read correctly.

        So can anyone here shed some light on why this may be so?

        I can share the code if anyone is interested, once I’ve tidied it up.

        *UPDATE: I got the Soft I2C to work with the weather shield and Yun when I plugged the 5V pin from the Yun to the Vin pin on the Yun, not too sure why this works because when I measured it they were about the same voltage. I will wire up the wind and rain sensors when I have time and report back if they work.

      • Thanks for the research…much appreciated.

    • I would also like to know if it works with a Yun. Or what I would need to adapt the weather shield to the Yun. Thanks in advance for any help or tips! (no guesses please, I am interested if someone has actually done it, I know you guys can make anything work :-) but I would like to have a little head start and know the Yun and weather shield really play well together :-).

      PS: FYI I noticed today (Dec. 11) the GPS module and the rain/wind sensor package are on backorder :-(.

    • I haven’t tested the weather shield on a Yun but it should work.

      From Arduino’s site: The Yún’s 32U4 functions in the same way as the Leonardo, except you cannot use Serial1.

      The weather shield works swimmingly with the Leonardo so it should work just fine with the Yun. The major interface pins are the I2C bus. Everything else is just GPIO. The ATmega32U4 on the Yun should work well.

      • Hardware wise it might work then, but what about conflicts with the bridge library. Can it please be tested and let us know if it actually works?

    • Any feedback yet? I know the I2C pins are different on the YUN/Leonardo vs Uno etc. Sparkfun have you guys tested this on the YUN? If it work I want to order a few!

  • Does this require a 3.3V Regulator on the Arduino Board?

  • Temperature sensor?

  • Let’s see now - The light sensor is buried on the board. So if we are in an enclosure (ventilated) there is no way to determine the light outside the enclosure. Is there any way to remote the Light sensor? Other than that it looks like a great board. I will be ordering one soon.

    • I agree, many of the sensors are directly on the board. I was planning on using this in an environmentally stable enclosure (no light, controlled temp, weather proof, dust proof, etc). It would be great if this board had the sensor connect via connectors, so that I can locate the sensors outside, while the shield, arduino and other electronics are safely inside. Looks like I’ll have to build my own version and use this board to prototype the software with.

      Another thing that I noticed, the weather shield and the ProtoShield (DEV-07914) both do not fit on the Arduino Uno, Arduino Ethernet Shield, or the Arduino Yun. They all make contact with either the ethernet connector metal case, the USB-A port, or the USB-B port (on the Uno) and cannot be fully seated on the headers. I presume metal around the ports are all grounded and would therefor ground this shield and the ProtoShield (leds, resistors, and switches). Not sure which Arduinos the shields will fit on.

      EDIT: (SOLVED) I inserted an additional set of stackable headers (PRT-11417) between the Arduino Board and the Weather Shield. Additionally, I’m going to use the weather shield as is, since it has the pressure sensor, rain and wind connectors, etc already, and they will work within the enclosure. The on board humidity and temp will give me data for temp within the enclosure. Then, I’m going to add an additional board on top that will have a RJ-11 connector that I’ll connect additional temp and humidity (for inside and outside of my greenhouse) via I2C to multiple HTU21D Humidity Sensor Breakout (SEN-12064) boards.

    • I was about to set out on the project building comparable functionality out of the Arduino FIO (need XBee to communicate the data points), so this definitely looks like a product that could save me some time. However, like the prior poster, I’m at a loss as to how to weatherproof this board and its enclosure.

      • I use a weather tight box that opens on the bottom. I cut an opening on the bottom and covered it with a screen. This fits inside my solar shield (from Ambient Weather) which makes it weather proof and alows the temperature and humidity to be read. This way you get double protection.

    • You could always add a light-pipe ( or possibly fiber optic cabling ) that extends to the outside of your enclosure. You can always handle the variances in software.

      • That sounds like a good idea. Fiber optic will transmit the light with little loss. A multi fiber bundle would get even more light.

        Thanks john

        • How about a transparent box? - you get the bonus of a cool view of all your gear. This will also help in early detection of moisture issues.

          • Clear box would be really bad idea since the light source would be the sun and that would obviously cause the temperature sensor to not give accurate results.

            • While what you say is true, it also applies to any enclosure - a black box with a lightpipe/fiber optic would certainly suffer from solar heat gain as well - at least with a clear enclosure you could add a foil shield to reflect the solar radiation and hopefully mitigate this gain.

Related Products