c
c
cavedu
Search…
Grove–VOC與eCO2 氣體感測器 (SGP30)

專案說明

此Grove–VOC與eCO2 氣體感測器不適用於吉哥自製積木的BlocklyDuino,如想使用此組感測器請使用ArduinoIDE編寫程式燒錄使用。
使用「LinkIt 7697 NANO Breakout」連接「Grove–VOC與eCO2 氣體感測器」,讀取Grove–VOC與eCO2 氣體感測器數值變化。
此Grove–VOC與eCO2 氣體感測器包含於「Grove – VOC與eCO2 氣體感測器 VOC and eCO2 Gas Sensor (SGP30)」內。

LinkIt 7697 電路圖

    LinkIt 7697 NANO Breakout
    Grove–VOC與eCO2 氣體感測器
Grove–VOC與eCO2 氣體感測器I2C訊號輸出, 可以接「I2C」的 LinkIt 7697 NANO Breakout訊號端上。 本範例連接到「I2C」,「SDA←→SDA」,「SCL←→SCL」。

Arduino 程式

使用軟體為BlocklyDuino裡內建的arduino-1.8.5。 由於Grove–VOC與eCO2 氣體感測器是函式庫型模組,所以需要先在Arduino上下載函式庫,下載方法如下。 首先先從github上下載Seeed SGP30 library 函式庫,從草稿碼選項中匯入ZIP檔程式庫。(如下圖) https://github.com/Seeed-Studio/SGP30_Gas_Sensor
1
#include <Arduino.h>
2
3
#include "sensirion_common.h"
4
#include "sgp30.h"
5
6
7
void setup() {
8
s16 err;
9
u16 scaled_ethanol_signal, scaled_h2_signal;
10
Serial.begin(115200);
11
Serial.println("serial start!!");
12
13
/*For wio link!*/
14
#if defined(ESP8266)
15
pinMode(15, OUTPUT);
16
digitalWrite(15, 1);
17
Serial.println("Set wio link power!");
18
delay(500);
19
#endif
20
/* Init module,Reset all baseline,The initialization takes up to around 15 seconds, during which
21
all APIs measuring IAQ(Indoor air quality ) output will not change.Default value is 400(ppm) for co2,0(ppb) for tvoc*/
22
while (sgp_probe() != STATUS_OK) {
23
Serial.println("SGP failed");
24
while (1);
25
}
26
/*Read H2 and Ethanol signal in the way of blocking*/
27
err = sgp_measure_signals_blocking_read(&scaled_ethanol_signal,
28
&scaled_h2_signal);
29
if (err == STATUS_OK) {
30
Serial.println("get ram signal!");
31
} else {
32
Serial.println("error reading signals");
33
}
34
err = sgp_iaq_init();
35
//
36
}
37
38
void loop() {
39
s16 err = 0;
40
u16 tvoc_ppb, co2_eq_ppm;
41
err = sgp_measure_iaq_blocking_read(&tvoc_ppb, &co2_eq_ppm);
42
if (err == STATUS_OK) {
43
Serial.print("tVOC Concentration:");
44
Serial.print(tvoc_ppb);
45
Serial.println("ppb");
46
47
Serial.print("CO2eq Concentration:");
48
Serial.print(co2_eq_ppm);
49
Serial.println("ppm");
50
} else {
51
Serial.println("error reading IAQ values\n");
52
}
53
delay(1000);
54
}
Copied!
Last modified 6mo ago