Skip to content

NingZiXi/spl06

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SPL06 Poster

🌡️ SPL06 Driver

一个适用于 ESP-IDF 的 SPL06 气压/温度传感器组件
支持新 I2C 驱动、标准补偿流程和低耦合接入方式

English · 简体中文 · 更新日志 · 反馈问题

License ESP-IDF Platform Version GitHub Stars


📌 概述

本组件适用于 ESP-IDF 5.5.1+,基于 driver/i2c_master.h 新 I2C 主机接口实现,支持 0x76 / 0x77 两个地址,提供 SPL06 标准校准参数解析、温度与气压补偿计算以及海拔估算接口。组件采用应用层管理 I2C bus、驱动层管理设备句柄的方式,便于在正式项目中复用和集成。

🛠️ 快速开始

1. 获取组件

要将组件添加到项目中请在 IDF 终端执行下方命令:

idf.py add-dependency "ningzixi/spl06^0.1.0"

或者直接克隆到项目 components 目录:

git clone https://github.com/NingZiXi/spl06.git

2. 基本用法

#include "driver/i2c_master.h"
#include "esp_log.h"
#include "spl06.h"

#define EXAMPLE_I2C_SDA  GPIO_NUM_4
#define EXAMPLE_I2C_SCL  GPIO_NUM_5
#define EXAMPLE_I2C_PORT I2C_NUM_0
#define EXAMPLE_I2C_FREQ 100000

static i2c_master_bus_handle_t bus_handle;
static spl06_t spl06;
static const char *TAG = "spl06";

static void init_i2c(void)
{
    const i2c_master_bus_config_t bus_cfg = {
        .i2c_port = EXAMPLE_I2C_PORT,
        .sda_io_num = EXAMPLE_I2C_SDA,
        .scl_io_num = EXAMPLE_I2C_SCL,
        .clk_source = I2C_CLK_SRC_DEFAULT,
        .glitch_ignore_cnt = 7,
        .flags.enable_internal_pullup = true,
    };

    ESP_ERROR_CHECK(i2c_new_master_bus(&bus_cfg, &bus_handle));
}

void app_main(void)
{
    spl06_config_t cfg;
    float temperature_c = 0.0f;
    float pressure_pa = 0.0f;
    float altitude_m = 0.0f;

    init_i2c();

    spl06_init_default_config(&cfg);
    cfg.i2c_address = SPL06_I2C_ADDRESS_HIGH;
    cfg.scl_speed_hz = EXAMPLE_I2C_FREQ;

    ESP_ERROR_CHECK(spl06_init(&spl06, bus_handle, &cfg));

    while (true) {
        if (spl06_read_temperature_pressure(&spl06, &temperature_c, &pressure_pa) == ESP_OK) {
            altitude_m = spl06_calculate_altitude(pressure_pa, SPL06_SEA_LEVEL_PA_DEFAULT);
            ESP_LOGI(TAG, "Temperature: %.2f C, Pressure: %.2f Pa, Altitude: %.2f m",
                     temperature_c, pressure_pa, altitude_m);
        }

        vTaskDelay(pdMS_TO_TICKS(1000));
    }
}

3. 示例输出

I (1234) spl06: Temperature: 31.76 C, Pressure: 100814.94 Pa, Altitude: 42.55 m

更多接口请查看 include/spl06.h

📚 主要接口

  • spl06_init_default_config():填充默认配置
  • spl06_init():创建设备并完成初始化
  • spl06_deinit():释放设备句柄
  • spl06_read_temperature():读取温度,单位 C
  • spl06_read_pressure():读取气压,单位 Pa
  • spl06_read_temperature_pressure():同时读取温度和气压
  • spl06_calculate_altitude():按海平面气压估算海拔

⚙️ 默认配置

  • 地址:0x76
  • 超时:100 ms
  • 模式:连续测量温度和气压
  • 气压:4 Hz16x
  • 温度:4 Hz2x
  • 温度源:外部温度传感器

📝 说明

  • 组件默认校验 chip id = 0x10
  • I2C bus 由应用层创建并管理
  • 若模块地址不是 0x76,请切换到 SPL06_I2C_ADDRESS_HIGH

📄 许可证

本项目采用 MIT 许可证,详情请参阅 LICENSE

About

适用于 ESP32 IDF 框架 的 SPL06 气压温度传感器驱动,基于新 I2C 主机接口,提供温度、气压和海拔补偿输出。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages