【测评SGP40】快速部署实现的人工智能环境空气质量跟踪模型 #2 上电测试的arduino篇
[复制链接]
1、在开箱之后,现在获得的资料之后,用arduino代码开始测试。
具体连接参见上贴子,可以连接UART,如下图,其中UART选择SEL为悬空。
2、 不过从代码分析看,只是支持I2C读取。
- #include "sgp40_voc_index.h"
-
- void setup() {
- int16_t err;
- Serial.begin(115200);
-
-
-
-
- while(!Serial);
-
-
- while ((err = sensirion_init_sensors())) {
- Serial.print("initialization failed: ");
- Serial.println(err);
- sensirion_sleep_usec(1000000);
- }
- Serial.println("initialization successful");
- }
-
-
-
- void loop() {
- int16_t err;
- int32_t voc_index;
- int32_t temperature_celsius;
- int32_t relative_humidity_percent;
- err = sensirion_measure_voc_index_with_rh_t(
- &voc_index, &relative_humidity_percent, &temperature_celsius );
- if (err == STATUS_OK) {
- Serial.print("VOCindex:");
- Serial.print(voc_index);
- Serial.print("\t");
- Serial.print("Humidity[%RH]:");
- Serial.print(relative_humidity_percent * 0.001f);
- Serial.print("\t");
- Serial.print("Temperature[degC]:");
- Serial.println(temperature_celsius * 0.001f);
- } else {
- Serial.print("error reading signal: ");
- Serial.println(err);
- }
-
- sensirion_sleep_usec(1000000);
- }
头文件如下,
-
- #include "sgp40_voc_index.h"
- #include "sensirion_arch_config.h"
- #include "sensirion_voc_algorithm.h"
- #include "sgp40.h"
- #include "shtc1.h"
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- static VocAlgorithmParams voc_algorithm_params;
-
- int16_t sensirion_init_sensors() {
- int16_t ret;
-
- sensirion_i2c_init();
-
- ret = shtc1_probe();
- if (ret)
- return SENSIRION_SHT_PROBE_FAILED;
-
- ret = sgp40_probe();
- if (ret)
- return SENSIRION_SGP_PROBE_FAILED;
-
- VocAlgorithm_init(&voc_algorithm_params);
- return 0;
- }
-
- int16_t sensirion_measure_voc_index(int32_t* voc_index) {
- return sensirion_measure_voc_index_with_rh_t(voc_index, NULL, NULL);
- }
-
- int16_t sensirion_measure_voc_index_with_rh_t(int32_t* voc_index,
- int32_t* relative_humidity,
- int32_t* temperature) {
- int32_t int_temperature, int_humidity;
- int16_t ret;
- uint16_t sraw;
-
- ret = shtc1_measure_blocking_read(&int_temperature, &int_humidity);
- if (ret)
- return SENSIRION_GET_RHT_SIGNAL_FAILED;
-
- if (temperature) {
- *temperature = int_temperature;
- }
- if (relative_humidity) {
- *relative_humidity = int_humidity;
- }
-
- ret = sgp40_measure_raw_with_rht_blocking_read(int_humidity,
- int_temperature, &sraw);
- if (ret) {
- return SENSIRION_GET_SGP_SIGNAL_FAILED;
- }
-
- VocAlgorithm_process(&voc_algorithm_params, sraw, voc_index);
- return 0;
- }
-
- #ifdef __cplusplus
- }
- #endif
不过下载代码后没有正确启动数据,读取失败。就是如下指令返回的是读取错误。
err = sensirion_init_sensors()
这下进度就受阻了,需要分析看为什么这样的情况出现。
|