SparkFun Qwiic Sensors
The SparkFun Qwiic Sensors lineup offers an easy way to add motion detection, environmental sensing, and distance measurement to your embedded projects. All of these sensors feature the Qwiic Connect System, allowing simple I2C daisy-chaining—no soldering required.

SparkFun Qwiic Atmospheric Sensor
This sensor integrates temperature, humidity, barometric pressure, and sometimes gas resistance sensing into one compact board.
Key Features
- Bosch BME280/BME688 sensor (model-dependent)
- Measures Temp / Humidity / Pressure
- Optional IAQ and gas sensing
- Qwiic I2C Interface
Reference
SparkFun Qwiic Distance Sensor
Highly accurate time-of-flight (ToF) distance sensor using laser-based measurement (VL53L1X or similar).
Key Features
- Ranges from 4cm to 4m (sensor-dependent)
- Fast and accurate ToF distance readings
- Interrupt and shutdown pins
- Qwiic I2C Interface
Reference
SparkFun Human Presence & Motion Sensor - STHS34PF80
A powerful human detection module built around passive infrared (PIR) and/or presence sensing using technologies like mmWave or radar (variant dependent).
Key Features
- Human presence detection and motion sensing via PIR or radar.
- Configurable distance and sensitivity thresholds.
- Low-power operation suitable for battery-powered systems.
- Qwiic I2C Interface
Reference
SparkFun Qwiic Indoor Air Quality Sensor
Designed for monitoring indoor air conditions including volatile organic compounds (VOCs) and CO₂ equivalents.
Key Features
- Sensirion SGP30 or SCD40/41 sensors (varies)
- Measures TVOC, eCO₂, and sometimes temperature/humidity
- Pre-calibrated and ready to use
- Qwiic I2C Interface
Reference
Installing the Sensor(s)
Sparkfun has a wonderful overview video about the Qwiic Connect System here.
(Coming soon: Plug-and-play wiring with Qwiic cables, I2C addressing tips, and power supply notes)
Installing the Software
First let's check a few things:
python2 --version // 2.7.18
python3 --version // 3.8.10
python --version // not found!
Next, let's update and install some essentials:
sudo apt update
sudo apt-get install -y python3-pip
sudo apt install --upgrade python3-setuptools
sudo apt install -y python3-venv python3-libgpiod
Let's setup and activate the viritual python environment for Sparkfun libraries:
mkdir -p ~/.virtualenvs/sparkfun
python3 -m venv ~/.virtualenvs/sparkfun --system-site-packages
source ~/.virtualenvs/sparkfun/bin/activate
To deactivate, you can run this... but leave it active for now.
(sparkfun) deactivate
Let's set the python
command to prefer python3
over python2
.
(sparkfun) sudo update-alternatives --install /usr/bin/python python $(which python2) 1
(sparkfun) sudo update-alternatives --install /usr/bin/python python $(which python3) 2
(sparkfun) sudo update-alternatives --skip-auto --config python
(sparkfun) python --version // Should now show Python 3.8.10
Upgrade a few python tools
(sparkfun) pip install --upgrade pip setuptools wheel build
Now we want to make a spot for our code to live (customize the name as desired):
(sparkfun) mkdir -p code
(sparkfun) cd code
Download and install these library dependencies for Tachyon
(sparkfun) git clone https://github.com/sparkfun/Qwiic_BME280_Py.git
(sparkfun) git clone https://github.com/sparkfun/Qwiic_VL53L1X_Py.git
(sparkfun) cd Qwiic_BME280_Py
(sparkfun) pip install .
(sparkfun) cd ../Qwiic_VL53L1X_Py
(sparkfun) pip install .
(Coming soon: Python ports of the Arduino libraries for SparkFun's Human Presence & Motion Sensor and Qwiic Indoor Air Quality Sensor)
Finally, let's test that everything is working. Run Python
in your virtual environment and paste in these lines. Type exit()
to exit. If you have the Qwiic Atmospheric Sensor attached, you should see the temperature printed.
import qwiic_bme280
sensor = qwiic_bme280.QwiicBme280()
sensor.begin()
print("Temperature:\t%.2f°F" % sensor.temperature_fahrenheit)
Another Qwiic test for the Distance Sensor:
import qwiic_vl53l1x
import time
sensor = qwiic_vl53l1x.QwiicVL53L1X()
sensor.sensor_init()
sensor.start_ranging()
time.sleep(.005)
distance = sensor.get_distance()
time.sleep(.005)
sensor.stop_ranging()
print("Distance(mm): %s" % (distance))
Running Example Applications
(Coming soon: Example use cases including motion alerts, indoor climate monitoring, air quality tracking, and automated distance-based triggers)