Introduction¶
A CircuitPython driver for the Sensirion SGP30 gas sensor with eCO2 and TVOC output. This sensor uses I2C!
Installation and Dependencies¶
This driver depends on:
Please ensure all dependencies are available on the CircuitPython filesystem. This is easily achieved by downloading the Adafruit library and driver bundle.
Installing from PyPI¶
On supported GNU/Linux systems like the Raspberry Pi, you can install the driver locally from PyPI. To install for current user:
pip3 install adafruit-circuitpython-sgp30
To install system-wide (this may be required in some cases):
sudo pip3 install adafruit-circuitpython-sgp30
To install in a virtual environment in your current project:
mkdir project-name && cd project-name
python3 -m venv .env
source .env/bin/activate
pip3 install adafruit-circuitpython-sgp30
Usage Notes¶
See the guide for wiring and installation instructions.
First, import the library:
import busio
import adafruit_sgp30
Next, initialize the I2C bus object:
import board
i2c_bus = busio.I2C(board.SCL, board.SDA frequency=100000)
Since we have the I2C bus object, we can now use it to instantiate the SGP30 object:
sgp30 = adafruit_sgp30.Adafruit_SGP30(i2c_bus)
Reading from the Sensor¶
To read from the sensor:
eCO2, TVOC = sgp30.iaq_measure()
print("eCO2 = %d ppm \t TVOC = %d ppb" % (eCO2, TVOC))
Contributing¶
Contributions are welcome! Please read our Code of Conduct before contributing to help this project stay welcoming.
Building locally¶
To build this library locally you’ll need to install the circuitpython-build-tools package.
python3 -m venv .env
source .env/bin/activate
pip install circuitpython-build-tools
Once installed, make sure you are in the virtual environment:
source .env/bin/activate
Then run the build:
circuitpython-build-bundles --filename_prefix adafruit-circuitpython-sgp30 --library_location .
Sphinx documentation¶
Sphinx is used to build the documentation based on rST files and comments in the code. First, install dependencies (feel free to reuse the virtual environment from above):
python3 -m venv .env
source .env/bin/activate
pip install Sphinx sphinx-rtd-theme
Now, once you have the virtual environment activated:
cd docs
sphinx-build -E -W -b html . _build/html
This will output the documentation to docs/_build/html
. Open the index.html in your browser to
view them. It will also (due to -W) error out on any warning like Travis will. This is a good way to
locally verify it will pass.
Table of Contents¶
Simple test¶
Ensure your device works with this simple test.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | """ Example for using the SGP30 with CircuitPython and the Adafruit library"""
import time
import board
import busio
import adafruit_sgp30
i2c = busio.I2C(board.SCL, board.SDA, frequency=100000)
# Create library object on our I2C port
sgp30 = adafruit_sgp30.Adafruit_SGP30(i2c)
print("SGP30 serial #", [hex(i) for i in sgp30.serial])
sgp30.iaq_init()
sgp30.set_iaq_baseline(0x8973, 0x8aae)
elapsed_sec = 0
while True:
print("eCO2 = %d ppm \t TVOC = %d ppb" % (sgp30.eCO2, sgp30.TVOC))
time.sleep(1)
elapsed_sec += 1
if elapsed_sec > 10:
elapsed_sec = 0
print("**** Baseline values: eCO2 = 0x%x, TVOC = 0x%x"
% (sgp30.baseline_eCO2, sgp30.baseline_TVOC))
|
adafruit_sgp30
¶
I2C driver for SGP30 Sensirion VoC sensor
- Author(s): ladyada
Implementation Notes¶
Hardware:
- Adafruit SGP30 Air Quality Sensor Breakout - VOC and eCO2 (Product ID: 3709)
Software and Dependencies:
- Adafruit CircuitPython firmware for the ESP8622 and M0-based boards: https://github.com/adafruit/circuitpython/releases
- Adafruit’s Bus Device library: https://github.com/adafruit/Adafruit_CircuitPython_BusDevice
-
class
adafruit_sgp30.
Adafruit_SGP30
(i2c, address=88)[source]¶ A driver for the SGP30 gas sensor.
-
TVOC
¶ Total Volatile Organic Compound in parts per billion.
-
baseline_TVOC
¶ Total Volatile Organic Compound baseline value
-
baseline_eCO2
¶ Carbon Dioxide Equivalent baseline value
-
eCO2
¶ Carbon Dioxide Equivalent in parts per million
-