基于youyeetoo K1 的 I2C 控制完整教程,包含 BME280 温湿度/大气压强传感器模块控制示例
一、硬件接口说明:
主板上有一组接口I2C3,插座线序说明:




模块引脚说明:
| 模块引脚 | 说明 |
|---|---|
| 5V | 电源正 |
| GND | 地 |
| SCL | I2C/SPI 串行时钟线 |
| SDA | I2C 串行数据线 |
| 3 线 SPI 串行数据输入/输出端口 | |
| 4 线 SPI 串行数据输入 | |
| CSB | 片选引脚,接高电平(默认)为 IIC 通信接口 |
| 低电平为 SPI 通信接口 | |
| SDO | I2C地址选择位 4线 SPI 串行输出端口 |
示例接线方案:
BME280 模块 youyeetoo K1 开发板
1.25间距 4P端子
VCC ────────→ 3.3V
GND ────────→ GND
SCL ────────→ SCL
SDA ────────→ SDA
CSB ────────→ (可选)
SDO ────────→ (可选)

本教程使用的是 BME280 模块(工作电压支持 3.3 V),是一款APSM工艺的小封装低功耗数字复合传感器,它可以测量环境温湿度和大气压强。湿敏元件具有快速唤醒与响应时间、精度高和宽温度工作范围;
气压敏感元件是一个压阻式低噪高精度高分辨率绝对大气压力感应元件;温度感测元件具有低噪高分辨率特性,温度值可以对湿度和气压进行温度补偿自校正。
湿度感测元件和气压敏感元件可独立的启用/禁用通过配置采样率寄存器,可以设置敏感元件的采样率,非常适合空间有限的移动设备,如智能手机、平板电脑、智能手表和可穿戴设备、天气预报、垂直速度指示、费控设备、室内室外导航、智能家居装置。
温度检测范围:0℃~+65℃
温度测量误差:±0.5℃ MAX ±1℃;分辨率0.1℃
相对湿度测量范围:0~100%,湿度响应时间:大于1s
相对湿度测量误差:±2%; 湿度迟滞:±1%;分辨率0.8%
气压测量范围:300~1100hPa
气压测量误差:±1hPa 分辨率0.18Pa
数字接口类型:IIC(从模式3.4MHz)或SPI(3线或4线制从模式10MHz)

模块在 I2C 模式下通过 SDO 引脚来确定器件地址,SDO 接 GND 低电平从机地址为 0x76,本模块默认0x76;接高电平从机地址0x77;
本教程测试环境:
权限要求:
注:其他 Linux 发行版理论上也可用,但未经测试
注意:需要联网下载安装
安装必要的编译工具:
# 更新软件包列表(需要联网)
sudo apt update
# 安装编译工具链(包含 gcc, g++, make 等)
sudo apt install build-essential
验证安装:
# 检查 gcc 版本
gcc --version
# 检查 make 版本
make --version
# 解压压缩包
test@test-K1-SBC:~$ unzip K1-GPIO-Package.zip
Archive: K1-GPIO-Package.zip
inflating: fhl-api_1.0.0_amd64.deb
inflating: Installation.txt
inflating: bme280_linux.c
inflating: Makefile
# 安装 FHLAPI 支持包
sudo dpkg -i fhl-api_1.0.0_amd64.deb
# 编译可执行程序
test@test-K1-SBC:~$ make
gcc -Wall -O2 -o bme280_linux bme280_linux.c -lm
=========================================
Build successful!
=========================================
Run: sudo ./bme280_linux
编译成功后会生成:
bme280_linux - GPIO 控制程序test@test-K1-SBC:~$ sudo ./bme280_linux
[sudo] password for test:
========================================
BME280 Sensor Reader (Linux I2C)
========================================
Opening I2C device: /dev/i2c-3
Trying I2C address 0x76...
BME280 found at 0x76 (Chip ID: 0x60)
Reading calibration data...
Calibration loaded
Configuring sensor...
Sensor configured
Reading data (Press Ctrl+C to exit):
========================================
[16:35:15] Reading #1
Temperature: 25.18 °C | 77.32 °F
Pressure: 1012.22 hPa | 101221.70 Pa
Humidity: 43.69 %
Calculated:
Altitude: 8.61 m (ref: 1013.25 hPa)
Dew Point: 11.94 °C | 53.50 °F
Heat Index: 25.18 °C | 77.32 °F
Sea Level: 1012.22 hPa
[16:35:16] Reading #2
Temperature: 25.16 °C | 77.29 °F
Pressure: 1012.27 hPa | 101226.88 Pa
Humidity: 43.70 %
Calculated:
Altitude: 8.17 m (ref: 1013.25 hPa)
Dew Point: 11.93 °C | 53.47 °F
Heat Index: 25.16 °C | 77.29 °F
Sea Level: 1012.27 hPa
[16:35:17] Reading #3
Temperature: 25.17 °C | 77.31 °F
Pressure: 1012.19 hPa | 101219.21 Pa
Humidity: 43.70 %
Calculated:
Altitude: 8.81 m (ref: 1013.25 hPa)
Dew Point: 11.94 °C | 53.49 °F
Heat Index: 25.17 °C | 77.31 °F
Sea Level: 1012.19 hPa
#执行过程中可按 Ctrl + C 停止程序
^C
Shutting down...
Sensor closed. Goodbye!