Dust Sensor - PMS 5003/6003/7003


Losant is good but in my instance I cannot get what I need at a reasonable price. I have therefore used Thingsboard.io CE version (open source and free) on an Ubuntu 18.04 server on a simple low cost dedicated PC and have had great success. YMMV


Losant’s free service has allowed me to do everything I have ever wanted for more than a year now. See if they still provide sandbox accounts and you should be good to go, I haven’t found anything else that is near as nice for no charge.


@worldburger Grafana’s interface is pretty if you are looking for a free alternative. I know SORACOM has a “free” hosted version. (you need to use their data pipeline though :cry: )

I actually self-host my instance using InfluxDB as the backend. It’s been running since early April in one capacity or another. If you’re not afraid of a little bit of Docker dev ops you can get it up and running quick. Plus it integrates nicely with Particle Webhooks. :grin:


Dear Eugene,

I red the forum and saw you got it working on a raspberry. Could you be so kind to share the code with me…there is limited documentation of the sps30 and python. I want to built this for our lab at the university of twente in Enschede, The Nederlands, as we are using fumed silica…

I hope you are willing to share the code,

Thanks in advance,

Kind regards,

Andries van Swaaij


Hi Andries,

I used the Sensirion sample implementation code from their Github. Here is what you need to do get it working on a raspberry pi running Linux.

  1. Pull the code from their repo:
    “$ git clone https://github.com/Sensirion/embedded-uart-sps.git
  2. Run: “$ make release”
  3. cd into the release directory and then replace the “sensirion_uart_implementation.c” file with the one in “sample-implementations/linux/sensirion_uart_implementation.c”
    “$ cd release/sps30-uart-3.0.0”
    “$ sudo rm sensirion_uart_implementation.c”
    “$ sudo mv sample-implementations/linux/sensirion_uart_implementation.c ./”
  4. Plugin the Sensirion SPS30 sensor using the USB cable from the dev kit into your raspberry pi. By default, it should appear under /dev/ttyUSB0 if you do not have anything else plugged into your USB ports of your raspberry pi.
  5. Compile the code
    “$ sudo gcc *.c -sps30”
    6 Run your program
    “$ sudo ./sps30”

This is what basically worked for me. Let me know if you any issues with the steps laid out above.




Hi, I am new to Particle devices and I am working with the PMS 5003 sensor on Boron and trying to output air quality values on my computer from Workbench. I have tried to run several of the codes from this thread on my computer but there were none that have successfully worked for me.

I decided to just go back to the basics and obtain raw data values and move forward from there but I am not sure what the next steps are.

//Just Reading Bits From the PMS 2.5 5003


//int PMSsignal = D10; //voltage signal from PMS
int val = 0;

int analogValue = 0;    // variable to hold the analog value

int incomingByte = D10; // for incoming serial data

void setup() {
  Serial1.begin(9600); // opens serial port, sets data rate to 9600 bps

void loop() {
  // send data only when you receive data:
  if (Serial1.available() > 0) {
    // read the incoming byte:
    incomingByte = Serial1.read();

    // say what you got:
    Serial.print("I received: ");
    Serial.println(incomingByte, DEC);

This rudimentary code reads out a series of 5 raw values every second I was wondering if you have an idea on how to proceed from here or helpful pointers on some code I may have missed along the way. It seems that Photon/Electron codes from previous posts do not work with Boron if I am not utilizing the internet/LTE features. Thanks for your support!

@ScruffR @ilak2k