A program to set instructions and get information from an SVM30. It has been
tested to run on ESP32, MEGA2560, ESP8266, UNO, Apollo3 and Feather Lora 32U4.
It will also work on Wire1 for a DUE, because of the onboard pull-up resistors on the standard Wire. use example7
A detailed description of the options and findings are available in the SVM30.ODT in the extra directory
A version for the Raspberry Pi is available on
As part of a larger project I am looking at analyzing and understanding the air quality. I have done a number of projects on air-sensors. The SVM30 sensor was a new kid on the block that looks interesting. This is a working driver + examples.
A word of warning: the SVM30 needs a female plug, which is different depending on the product version of your board
SVM30-Y Yeonho Electronics, 20037WR-04
SVM30-J Scondar SCT2001WR -S-4P compatible to JST part no. S4B-PH-SM4-TB
For example6 : LMIC : For example8 : LCD : defined in top of sketch
Otherwise no special library dependencies. The standard libraries will work.
Obtain the zip and install like any other.
8 examples are included:
-
- read all the values from the SVM30
-
- update humidity while reading all the values from the SVM30
-
- update baseline and then read all the values from the SVM30
-
- perform a self-test on the SGP30
-
- Read basic information, add functions for heatindex, dewpoint and Celsius/Fahrenheit selection
-
- Sketch to read the data from the SVM30 and connect Feather Lora 32U4 to TTN
-
- like example1 but you can now select different Wire-channels (Needed for DUE)
-
- lime example1 but with an LCD display
Please see the description in the top of the sketches as well as the SVM30.ODT
- lime example1 but with an LCD display
- Tested on UNO-R4 WIFI. Works unmodified on Wire. Wire1 can NOT be used as the SVM needs 5V.
- fixed pf_buffer warning on ESP32 when compiling with -Werror=all
- Added support for Artemis / Apollo3 boards
- fixed some typo's and some small coding issues
- added example8 (display including a LCD screen)
- it seems that older product version(level 9) of the SGP30 / SVM30 fail to read raw data.
- added raw boolean (default true) to include(true) / exclude (false) raw data in case of older product version.
- added read-delay setting based on the kind of command request to improve stability
- added example7 to select and I2C/ Wire channel (Wire1 is needed for Arduino Due)
- added functions for inceptive baseline of the SGP30 (requires level 34 at least). Documented in SGP30 datasheet May 2020.
- added dewPoint and heatindex
- added temperature selection (Fahrenheit / Celsius)
- updated examples
- added example 5 and 6
- Initial version Arduino, ESP32, UNO, ESP8266
- Paul van Haastrecht (paulvha@hotmail.com)
This project is licensed under the GNU GENERAL PUBLIC LICENSE 3.0
Make sure to read the SVM30, SHTC1 and SGP30 datasheets from Sensirion.
They provide good starting point for information and are added in the extras directory.
Philipp : Extra clarification on about female plug.
Amy Kim : Help diagnosing older product version raw-reading issue.