Skip to main content

Grove - Barometer Sensor (SPA06-003)

Description

Grove - Temperature and Barometer Sensor(SPA06-003) is a high-precision and a low-current environmental sensor measures the temperature and barometer. It supports both I2C and SPI communication and we provide the SPA06-003 Arduino library.

note

As the sensor is quite sensitive to the environmental conditions, please DO NOT touch it with your fingers.

Feature

  • Wide measurement range: Pressure measurements range from 300hPa~1100hPa and temperature measurements range from -40℃~+85℃.
  • High accuracy: The absolute accuracy of ±0.3 hPa for pressure measurement and ±1 ℃ accuracy for temperature measurement.
  • Long standby time: Using the FIFO allows the host processor to stay in sleep mode for longer periods between readouts, reducing overall system power consumption and achieving a standby current as low as 0.5 μA.
  • Grove Interface: Features a Grove 4-pin connector, ensuring a "Plug and Play" experience to connect with mainstream hardware platforms like Arduino, Raspberry Pi, Micro:bit and many more.
tip

More details about Grove modules please refer to Grove System.

Specification

ParameterDescription
Supply Voltage3.3V
InterfaceI2C and SPI
I2C address0x77 (default)
0x76
Barometric Pressure Measure
Range300~1100 hPa
Absolute Accuracy±0.3 hPa
Temperature Measurement
Range-40℃ to +85℃
Accuracy±1℃
Dimensions40mm x 20mm x 6.5mm

BMP280 vs. BME280 vs. DPS310 vs. SPA06-003

ITEMGrove-BMP280Grove-BME280Grove-DPS310Grove-SPA06-003
Pressure Range300 ~ 1100 hPa300 ~ 1100 hPa300 ~ 1200 hPa300 ~ 1100 hPa
Temperature Range-40 ~ 85 ℃-40 ~ 85 ℃-40 ~ 85 °C-40 ~ 85 °C
Pressure Precision--± 0.002 hPa (or ±0.02 m)-
Pressure Accuracy (Absolute)± 1 hPa (or ±8 m)± 1 hPa (or ±8 m)± 1 hPa (or ±8 m)± 0.3 hPa
Pressure Accuracy (Relative)± 0.12 hPa± 0.12 hPa± 0.06 hPa (or ±0.5 m)± 0.03 hPa (or ±0.25 m)
Pressure Resolution0.18 Pa0.18 Pa0.06 Pa0.06 Pa
Humidity-0 ~ 100%--
CommunicationI2C/SPII2C/SPII2C/SPII2C/SPI
Price$9.8$18.7$7.5$4.5

Part List

ItemQuantity
Grove Temperature and Barometer Sensor (SPA06-003)×1
Grove - 20cm Cable×1

Application

  • Weather Station and Weather Sensing
  • Measure Temperature, Pressure, and Altitude

Getting Started

Indication diagram

  • SPI soldering pads.
  • Interface bus selection pads , to select I2C bus, connect the two pads by soldering (this is connected by default); to select SPI bus, cut the two pads with a sharp knife or a soldering iron.
  • Slave board address selection pads, to select slave board address to avoid address collision.
tip
  • If you have selected I2C bus, the default address for slave board is 0x77(right-two pads are connected). If you want to use the address 0x76, connect only left two (disconnect right two) by soldering.
  • You can disconnect pads with just a sharp knife.
  • If you have selected SPI bus, the default address for slave board is 0x77(right-two pads are connected). If you want to use the address 0x76, disconnect all three pads.

Hardware

Prepare the below stuffs:

  • Play with Arduino
Seeeduino V4.2Base ShieldGrove-Barometer Sensor SPA06-003

pir

pir

pir

Get One NowGet One NowGet One Now
  • Connect Grove with Arduino
  • Play with XIAO ESP32 Series
Seeed Studio Grove Base for XIAOXIAO ESP32-S3Grove-Barometer Sensor SPA06-003
Get One NowGet One NowGet One Now
  • Connect Grove with ESP32 Series

Two different combinations, but using the same code.

tip

Do not touch or shake or let this product in vibration when it works. This will cause interference and will affect the accuracy of data collected.

This connection table applies to all boards with I2C support.

BoardsGrove-Barometer_Sensor-SPA06-003
3.3VVCC
GNDGND
SDASDA
SCLSCL

Software

Step 1. Download the library from Github.


Step 2. Refer How to install library to install library for Arduino.

Step 3. Create a new Arduino sketch and paste the codes below to it or open the code directly by the path:File -> Example ->Seeed Arduino SPA06>Example1_BasicRead

Step 4. Upload the code. If you do not know how to upload the code, please check how to upload code.

Step 5. Open the serial monitor to receive the sensor's data including temperature, barometric pressure value, and altitude.

tip

The outcome will display on the Serial Port as following if everything goes well.

Fuction

Here is the code:

/*
* Author: Kennan / Kenneract
* GitHub: https://github.com/Kenneract/SPL07-003-Arduino-Library
* Created: Mar.15.2025
* Updated: Apr.14.2025, V1.0.0
* Purpose: Example usage for the SPL07-003 sensor library. Connects
* to the sensor, configures the measurement and oversampling
* rate, sets the SPL07-003 to continuous sampling mode, then
* prints pressure/temperature measurements to the serial monitor.
*/

#include <Wire.h>
#include "SPL07-003.h"

// Define SPL07-006 I2C address
#define SPL07_ADDR SPL07_ADDR_DEF // Default I2C address (SDO=high)
// #define SPL07_ADDR SPL07_ADDR_ALT // Alternate I2C address (SDO=low)

// Create SPL07-003 sensor instance
SPL07_003 spl;

//HardwareSerial SerialOut(PA10, PA9); //for STM32F103C8Tx

// Runs at startup
void setup() {

// Begin Serial
Serial.begin(115200);

// Configure & start I2C
//Wire.setSDA(PB7); //for STM32F103C8Tx
//Wire.setSCL(PB6); //for STM32F103C8Tx
Wire.begin();

// Connect to SPL07-003
if (spl.begin(SPL07_ADDR) == false) {
Serial.println("Error initializing SPL07-003 :(");
while (1) {}
}//if
Serial.println("Connected to SPL07-003! :)");

// Set pressure & temperature sampling settings
spl.setPressureConfig(SPL07_4HZ, SPL07_32SAMPLES);
spl.setTemperatureConfig(SPL07_4HZ, SPL07_1SAMPLE);

// Set SPL07-003 to continuous measurements
spl.setMode(SPL07_CONT_PRES_TEMP);

}//setup()


// Runs continuously
void loop() {

// Wait for available reading
if (spl.pressureAvailable() || spl.temperatureAvailable()) {
// Read latest values
double pres = spl.readPressure();
double temp = spl.readTemperature();
double altitude = spl.calcAltitude();
// Print to serial
Serial.print("Pres: ");
Serial.print(pres, 3);
Serial.print(" Pa, Temp: ");
Serial.print(temp, 3);
Serial.print(" C, Altitude: ");
Serial.print(altitude, 3);
Serial.println(" m");
}//if

}//loop()

The following functions are used in the example code above. Here's a breakdown of what each function does:

Serial.begin(115200)

Initializes serial communication between the ESP32 and your computer, with a baud rate of 115200. This allows debug messages to be printed to the Serial Monitor.

Wire.begin()

Initializes the I²C bus using default pins (on most platforms: SDA and SCL). This is required before communicating with the SPL07-003 sensor.

spl.begin(SPL07_ADDR)

Initializes the SPL07-003 sensor using the specified I²C address. It returns false if the sensor is not found on the bus.

  • Parameter: SPL07_ADDR – the I²C address (0x76 or 0x77)

  • Return: true on success, false if the sensor is not detected

spl.setPressureConfig(SPL07_4HZ, SPL07_32SAMPLES)

Configures the pressure sensor with:

  • 4 Hz output data rate
  • 32 samples averaging for noise reduction

Higher sample count improves accuracy but increases response time.

spl.setTemperatureConfig(SPL07_4HZ, SPL07_1SAMPLE)

Configures the temperature sensor with:

  • 4 Hz update rate
  • 1 sample averaging (faster response, less smoothing)
spl.setMode(SPL07_CONT_PRES_TEMP)

Sets the SPL07-003 to continuous pressure and temperature measurement mode, so it updates data automatically without manual triggering.

spl.pressureAvailable(), spl.temperatureAvailable()

Checks if a new pressure or temperature measurement is available from the sensor. These return true when fresh data is ready to read.

spl.readPressure()

Reads the latest pressure value from the sensor in Pascals (Pa).

spl.readTemperature()

Reads the current temperature in degrees Celsius (°C).

spl.calcAltitude()

Estimates altitude (in meters) based on the current pressure reading using the standard atmosphere model. Useful in applications like barometric altitude estimation for drones or weather stations.

Resources

Tech Support & Product Discussion

Thank you for choosing our products! We are here to provide you with different support to ensure that your experience with our products is as smooth as possible. We offer several communication channels to cater to different preferences and needs.

Loading Comments...