All Projects → Sensirion → arduino-sps

Sensirion / arduino-sps

Licence: Unknown, BSD-3-Clause licenses found Licenses found Unknown LICENSE.i2c_master_lib BSD-3-Clause LICENSE.sps30
Arduino library for Sensirion SPS30

Programming Languages

C++
36643 projects - #6 most used programming language
c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to arduino-sps

embedded-sps
Embedded i2c Driver for Sensirion Particulate Matter Sensors - Download the Zip Package from the Release Page
Stars: ✭ 36 (+0%)
Mutual labels:  i2c, particulate-matter, particulates-sensors, sensirion, sps30
pm-home-station
Indoor use particulate matter sensor on USB or Bluetooth
Stars: ✭ 31 (-13.89%)
Mutual labels:  particulate-matter, particulates-sensors
sps30
Sensirion SPS30 driver for ESP32, SODAQ, MEGA2560, UNO, ESP8266, Particle-photon on UART OR I2C coummunication
Stars: ✭ 57 (+58.33%)
Mutual labels:  sensirion, sps30
ESPHome-Air-Quality-Monitor
ESPHome configuration for a DIY indoor air quality monitor for CO₂ concentration, PM2.5 and PM10 concentrations, and temperature, humidity and pressure
Stars: ✭ 42 (+16.67%)
Mutual labels:  sensors, particulate-matter
M5Stack-Air-Quality-ESPHome
ESPHome configuration for M5Stack's PM2.5 Air Quality Kit with the PMSA003 particulate matter sensor and the SHT20 temperature and humidity sensor
Stars: ✭ 19 (-47.22%)
Mutual labels:  sensors, particulate-matter
embedded-sht
Embedded SHT Drivers for Sensirion Temperature and Humidity Sensors - Download the Zip Package from the Release Page
Stars: ✭ 53 (+47.22%)
Mutual labels:  i2c, sensirion
arduino-sht
Repository for Sensirion humidity and temperature sensor support on Arduino
Stars: ✭ 43 (+19.44%)
Mutual labels:  i2c, sensirion
awesome-embedded-swift
⚡️🛠🧰 A curated list for Embedded and Low-Level development in the Swift programming language.
Stars: ✭ 57 (+58.33%)
Mutual labels:  i2c, sensors
Drivers
TinyGo drivers for sensors and other devices that use I2C, SPI, GPIO, ADC, and UART interfaces.
Stars: ✭ 250 (+594.44%)
Mutual labels:  i2c, sensors
tinnymodbus
RS485 ModBus tiny multi-sensor module
Stars: ✭ 75 (+108.33%)
Mutual labels:  i2c, sensors
IOsonata
IOsonata multi-platform multi-architecture power & performance optimized software library for fast and easy IoT MCU firmware development. Object Oriented design, no board package to define, just pure plug & play any boards
Stars: ✭ 40 (+11.11%)
Mutual labels:  i2c, sensors
SwiftySHT20
⚡ A Swift library for the I2C SHT20 Humidity and Temperature Sensor.
Stars: ✭ 19 (-47.22%)
Mutual labels:  i2c
vl53l0x-linux
Library for interfacing with VL53L0X time-of-flight distance sensor under Linux
Stars: ✭ 19 (-47.22%)
Mutual labels:  i2c
clockkit
Sub-msec accurate distributed timestamps.
Stars: ✭ 47 (+30.56%)
Mutual labels:  sensors
FiremonkeySensorFusion
Delphi/Firemonkey sensor fusion sample ( accelerometer+magnetometer+GPS) to obtain tilt compensated rectangular coordinates (azimuth/elevation/roll)
Stars: ✭ 24 (-33.33%)
Mutual labels:  sensors
SuperGreenOS
🧠 SuperGreenOS home farming automation software for esp32, all in one package, and controllable from your smartphone, pc, mac, linux, toaster, plumbus, whatnot...
Stars: ✭ 83 (+130.56%)
Mutual labels:  sensors
amdpwrman
Please see the newer 'gpumgr' instead -- amdpwrman is a BASH shell script for managing AMD GPU's power limits and fan speeds under Linux via the sysfs interface of the amdgpu driver.
Stars: ✭ 14 (-61.11%)
Mutual labels:  sensors
AndroidPersistentSensors
An example service which keeps getting sensor events even after the screen turns off.
Stars: ✭ 33 (-8.33%)
Mutual labels:  sensors
gobot
Golang framework for robotics, drones, and the Internet of Things (IoT)
Stars: ✭ 7,869 (+21758.33%)
Mutual labels:  i2c
psutil
Cross-platform lib for process and system monitoring in Python
Stars: ✭ 8,488 (+23477.78%)
Mutual labels:  sensors

Arduino library for the SPS30 particulate matter sensor

To learn more about the SPS30, please visit https://www.sensirion.com/sps30/. For support questions on the SPS30, please visit https://sensirion.com/contact.

This library is using the code from Sensirion's embedded-sps library, and adding a handful of changes to adapt to Arduino.

Most notably, for AVR based platforms (like Arduino Uno and friends), this is using an alternative I2C Master Library to work around the I2C buffer size limit that exists on those boards.

Compatibility

This library has been tested on the following platforms:

  • AVR based Arduino, like Arduino Uno
  • ESP8266, using v2.5.0 or newer (Tested on Adafruit Feather Huzzah ESP8266)
  • ESP32, using v1.0.1 or newer (Tested on Adafruit Feather Huzzah ESP32)
  • SAMD (tested on Arduino MKR 1010)

Hardware setup

Important Notes:

  • The SPS30 requires 5V supply voltage +/-0.5V in order to provide correct output values; the SPS30 should be compatible with 3.3V I2C levels, so as long as the supply voltage is correct the SPS30 should work fine with 3.3V setups
  • Make sure that the SPS30's Pin 4 ("Interface select") is connected to GND, on power-up of the sensor, otherwise the sensor works in UART instead of I2C mode and this driver will not detect the sensor. Note that the interface-select configuration is read on every start of the sensor including after a soft-reset.

ESP8266 partial legacy support

This library automatically detects ESP8266 core versions 2.3.0, 2.4.0, 2.4.1 and 2.4.2 and supports a limited subset of functionality on there. The following features are not available:

  • Reading out number concentrations,
  • Reading out the average particle size
  • Reading out the serial number

Installation

Through the Arduino IDE

This library is available through Arduino IDE's Library Manager. To install, select Tools> Manage Libraries..., then search for sensirion-sps. Select the matching library and press Install.

Manual installation

For manual installation, follow these steps:

  1. Download the latest ZIP file from the Github release page
  2. Start the Arduino IDE
  3. Select Sketch > Include Library > Add .ZIP Library...
  4. A dialog will open; here, select the file you selected in step 1

Usage

Serial Monitor (Text output)

  1. Open the example from File > Examples > arduino-sps > sps30.
  2. Open the serial monitor from the Tools menu
  3. Press the "Upload" button to compile and upload the sketch

If you check the serial monitor window, you should see something like this:

Serial monitor

Serial Plotter (Graphical output)

  1. Open the example from File > Examples > arduino-sps > sps30.
  2. Open the serial plotter from the Tools menu (if you have the serial monitor open, you'll need to close it first)
  3. Uncomment line 8 of the sample program; it should now read #define PLOTTER_FORMAT
  4. Press the "Upload" button to compile and upload the sketch

If you check the serial plotter window, you should see something like this:

Serial monitor

FAQ: How PMx is defined / Why values are the same

A frequently asked question about values that are the same, which seems unlikely. However, this is due to the definition of PM_x_, that says that it's particles of diameter x and smaller. As such, PM10 includes all particles of diameter 10 μm and smaller, and therefore includes particles from PM4 (which itself includes particles from PM2.5). To illustrate, here's a diagram that shows this

How PMx is defined

In this example:

  • PM2.5 would be 3.1 μg/m^3
  • PM4 would be 3.2 μg/m^3 (3.1 particles [2.5 and smaller] + 0.1 [>2.5, <= 4.0])
  • PM10 would be 3.2 μg/m^3 (3.1 particles [2.5 and smaller] + 0.1 [>2.5, <= 4.0] + 0 [>4.0 <= 10])
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].