We will be closed on November 25, 2021 and November 26, 2021 in observance of the Thanksgiving holiday. We will resume normal operations on November 29, 2021. Wishing you a safe and happy holiday from all your friends at SparkFun!


Receive a free SparkFun USB Thumb Drive with every order this weekend. Details.

Particulate Matter Sensor - SPS30

The Sensirion Particulate Matter Sensor SPS30 is a compact, high quality, optical particle sensor that uses laser scattering and Sensirion's innovative contamination resistance technology to achieve superior binning and particle measurement. This sensor allows users to measure mass concentration and number of particles of 1 µg/m^3, 2.5 µg/m^3, 4 µg/m^3, and 10 µg/m^3.

The compact form factor, measuring just under 41mm x 41mm x 12mm, combined with a sensor lifetime over 8 years and a self cleaning procedure, makes the SPS30 the perfect sensor for projects in difficult to access locations. We've designed and included an easy to use 5-pin cable to make using the SPS30 a snap. The 1.5mm connector is broken out to 5 breadboard friendly wires color coded to make hooking up the SPS30 easy.

The SPS30 has a five pin interface that can communicate over two different protocols: UART and I2C. The SPS30 requires a 5V power supply, but can work with 3.3V and 5V microcontrollers. The logic is 5V and 3.3V tolerant.

Sensirion has written drivers for both the UART protocol and I2C. Unfortunately we've found the I2C is limited to only mass concentrations (not number concentrations) using the Arduino platform. So if you plan to use this sensor with an Arduino, use the UART interface. Both interfaces are described in their datasheet.

  • SPS30 Sensor
  • 5-pin 150mm Interface Cable
    • Red: 5V
    • White: SDA/RX
    • Purple: SCL/TX
    • Green: SEL (Connect to GND for I2C)
    • Black: GND


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.

  • Okay so I finally got some working code and can help others. This is for the Arduino Uno R3 using I2C comms

    First, head to this github link and download and install this library from the very helpful Paulhva

    I then made some edits to his example code and made a circuit diagram for hooking up to the R3. In the picture, those are 10k resistors.

    You can find the code and the circuit diagram and a log of my changes here

    Just make sure you change your serial monitor to the 115200 baud rate and use the Carriage return option instead of No Line Ending

  • I'd love to see a hookup guide for this. Seems like the internet is having a lot of problems getting a working library that is easy to use.

    Found this one: https://github.com/paulvha/sps30

    Edit: See my new comment for how to fix this

  • I'm received this sensor but can't get the Arduino library setup to correctly compile to run on aan Arduino UNO.

    Can anybody share what is working for them if they have this running on an Arduino device please?

    Looks like a great sensor, all my other voc, temp and humidity chips from them work perfectly

    • I can't get the library to compile on a ATSAMD21 Cortex M0, the library is a bit of a nightmare / maze. I spent a few hours on the UART with no luck. Did you get yours to work?

      • I've gotten it working with SAMDs using I2C (and all the measurements seem to be available) - but can't figure out how to get it working on any of the atmega Arduinos after endless faffing with sensiron_arch_config.h. Definitely second the request for a sketch that works on Uno from Sparkfun!

      • Did you ever get the library working for this sensor?

      • No, I’m not sure what the minimal code is to get the UART library to run on an Arduino Uno just to see it working.

        Can somebody at Sparkfun please provide a sketch that works and compiled with the Arduino Uno without all other nonessential stuff in the library removed? It would really be helpful for a lot of us who bought this sensor.

  • "number of particles of 1 µg/m3, 2.5 µg/m3, 4 µg/m3, and 10 µg/m3", should instead possibly be units of size in µm?

    • The sensor can count the concentration of particulates of those sizes and so it can then use simple math to give you the concentration of them as well. Thats how the Honeywell HPMA115SO does it as well. Both are laser particulate matter counters which are much more accurate than ones that use simple infrared LEDs and a lens.

Customer Reviews

4.6 out of 5

Based on 7 ratings:

Currently viewing all customer reviews.

2 of 2 found this helpful:

Very good unit

I also have the evaluation kit and using the SPS30 software that can be downloaded from their web site it gave very accurate. Used in 3D printing to see what the environment is like.

2 of 2 found this helpful:

Good reliable PM sensor

I have been using this sensor with a Raspberry Pi. The example code works reasonably well and isn't too bad to set up. It seems to be a little harder to use it on an Arduino, but still possible. This sensor is far more accurate than any other PM sensor I have purchased in this price range and has extra particle count bins and is able to detect particles down to 300 nanometers.

5 of 6 found this helpful:

I'm so excited its finally available!

This little guy is half the size (thickness) of the Honeywelll HPMA115S0 and it gives 2 more points of data (1 µg/m3 & 4 µg/m3)! Not only that but it also has self cleaning which the Honeywell does not have. I'm hoping after I test this dude out I can see if it has a standby mode which the Honeywell has some serious issues dealing with make it not nearly as useful as it could be since its almost always running.

Wire connection to white plastic is a bit fragile

A student was working with the wires that plug into the sensor and the red wire broke right off. Nothing we can do (glue etc) seems to get it to stay. We may have to strip the wire and reconnect it somehow. That just seemed a bit too fragile. Other than that, still don't have the full assembled air quality monitor fully up and running. We are having an overheating issue, but that is likely due to our circuit board (not the sensor).

Count on this

I got this to determine if our home-brew air purifiers (https://www.youtube.com/watch?v=kH5APw_SLUU) were really working while we had orange air from the recent wildfires. Very easy to hook up to an Arduino Uno R3, though to hook up to esp32 I first needed to modify the Sensirion example software to use the esp32's second I2C channel since the first I2C channel was talking with the OLED on the esp32 dev board. The Arduino /was/ able to read the number concentrations as well as mass concentrations using the I2C interface, which the Sparkfun description says doesn't work. The outdoor particle mass readings from this sensor were right in line with the ones posted on purpleair, and the indoor ones were much less. So, were the home-brew purifiers working? As it turned out, yes; the rooms with the purifiers had far lower particle mass readings than the outside air, and substantially lower readings than other rooms in the house. (Unfortunately, I also discovered that the house is remarkably porous to particles 2.5um and smaller.)

Great sensor

Love the Sensiron products, and this is a great particulate sensor. Easy setup (i2c for our purposes) on PI and Arduinos. Great data. Highly recommended sensor.