eefocus_3896990 发表于 前天 20:25

【欧时RS x Arduino】5、Arduino UNO Q 读取STCC4数据

Arduino UNO Q板载的MCU和MPU通过RPC协议传输数据,MCU侧读取传感器数据通过RPC协议将传感器数据传输到MPU侧,Arduino UNO Q的Arduino接口的I2C接口上连接STCC4 CO2传感。

!(//m.qjumbo.com/forum/data/attachment/forum/202611/01/202152n2amfmmmsafccbar.png)

官方提供很多示例应用用于参考,在示例代码的基础上进行修改,添加自定义的代码实现STCC4 CO2传感器数据的读取,首先复制一个示例工程到用户目录。

!(//m.qjumbo.com/forum/data/attachment/forum/202611/01/202200bnghp6ipk6pchfgz.png)

设定应用的名称

!(//m.qjumbo.com/forum/data/attachment/forum/202611/01/202206u1a1oxauc1x1qccc.png)

工程的目录结构以及使用的文件和功能如下

!(//m.qjumbo.com/forum/data/attachment/forum/202611/01/202213j9dhw51oy3y53wey.png)

# MCU通过I2C接口读取

MCU中运行的是Arduino应用代码,`sketch.yaml`为程序的依赖库,命令行中切换到应用文件夹,使用Vim编辑`sketch.yaml`的内容

```
cd ArduinoApps/eefocus2026_stcc4
vim sketch/sketch.yaml
```

其中指定程序依赖的平台、驱动库和相应的版本,用于驱动STCC4传感器的数据读取

```
profiles:
default:
platforms:
- platform: arduino:zephyr
libraries:
- Sensirion I2C STCC4 (1.0.0)
- Sensirion Core (0.7.2)
default_profile: default
```

sketch.ino中读取传感器数据,并调用`Bridge.notify`将数据传输到MPU侧,代码如下

```

#include <Arduino.h>
#include <SensirionI2cStcc4.h>
#include <Wire.h>
#include <Arduino_RouterBridge.h>

static int16_t error;
SensirionI2cStcc4 sensor;

void setup() {
Bridge.begin();
Wire.begin();
sensor.begin(Wire, STCC4_I2C_ADDR_64);

uint32_t productId = 0;
uint64_t serialNumber = 0;
error = sensor.stopContinuousMeasurement();
error = sensor.getProductId(productId, serialNumber);
error = sensor.startContinuousMeasurement();

}

void loop() {

int16_t co2Concentration = 0;
float temperature = 0.0;
float relativeHumidity = 0.0;
uint16_t sensorStatus = 0;
delay(1000);

error = sensor.readMeasurement(co2Concentration, temperature,
relativeHumidity, sensorStatus);

Bridge.notify("record_sensor_samples", co2Concentration, temperature,
relativeHumidity,sensorStatus);

}

```
# MPU侧数据读取

MPU侧的应用依赖项由`app.yaml`设置,工程默认支持的apputil模块支持Python数据打印,不需要额外的依赖项,使用默认的Python默认功能即可。
```

name: EEFocus2026_STCC4
description: Read STCC4 data send to MPU using Bridge,print to conosle
icon: 🎛️

```
`main.py`实现RPC库Bridge模块的回调函数注册,并在回调函数打印接口的STCC4传感器数据,代码如下

```python
import numpy as np
from arduino.app_utils import App, Bridge

def record_sensor_samples(co2Concentration: np.int16, temperature: float,relativeHumidity: float,sensorStatus: np.uint16):
    print(f"co2Concentration: {co2Concentration} (int16)")
    print(f"temperature: {temperature}")
    print(f"relativeHumidity: {relativeHumidity}")
    print(f"sensorStatus: {sensorStatus} (uint16)")
   

print("Registering 'record_sensor_samples' callback.")
Bridge.provide("record_sensor_samples", record_sensor_samples)

print("Starting App...")
App.run()
```

运行应用程序,在App Lab的Python对话框中,能看到采集的STCC4传感器数据

!(//m.qjumbo.com/forum/data/attachment/forum/202611/01/202402yz8yqj0tmmbzytt0.png)


页: [1]
查看完整版本: 【欧时RS x Arduino】5、Arduino UNO Q 读取STCC4数据

Baidu
map