Grove - Air Quality Sensor v1.3
英文 wiki :https://wiki.seeedstudio.com/Grove-Air_Quality_Sensor_v1.3/
该传感器是为室内空气状况进行综合监控而专门设计的。 它可检测多种有害气体,如一氧化碳,酒精,丙酮,稀释剂,甲醛等。 由于测量机制的限制,该传感器不能输出特定的数据来定量描述目标气体的浓度。 但是它仍然足够用于仅需要定性结果的应用,如汽车清新喷雾器和自动空气循环系统。
产品特性
- 能够识别多种目标气体
- 高性价比
- 耐用
- 兼容5V和3.3V
!!!Cautions
1. 需要相对干净的空气作为初始状态。
2. 长时间暴露于高度污染的空气可能会显着削弱其敏感性。
使用方法
使用Arduino
如导言中所述,该传感器在提供多种的目标气体的定性结果方面表现更好。 在这个演示中,我们将在'.cpp'文件中定义4个状态以供参考。 他们是:
- a。 空气清新 - 表示良好的空调
- b。 低污染 - 表明目标气体浓度相对较低。
- C。 高污染(在串行监视器上没有“强制信号有效”信息) - 您应该了解污染水平,并考虑是否采取某些措施。
- d。 高污染(在串行监视器上印有“强制信号有效”信息) - 采取即时措施提高空气质量。
我们将决策结构封装在“.cpp”文件中。 您可以在此找到有关如何修改阈值的信息。
让我们试试吧!
1.将传感器连接到 Grove - Base Shield 的 A0 端口。
2.下载库文件 : AirQuality_Sensor Library.
3.打开传感器加热后等待至少2分钟。 然后通过以下路径打开示例:File(文件) - >Example(示例) - > AirQuality_Sensor-> AirQuality_Sensor。
/*
AirQuality Demo V1.0.
connect to A1 to start testing. it will needs about 20s to start
* By: http://www.seeedstudio.com
*/
#include "AirQuality.h"
#include "Arduino.h"
AirQuality airqualitysensor;
int current_quality =-1;
void setup()
{
Serial.begin(9600);
airqualitysensor.init(14);
}
void loop()
{
current_quality=airqualitysensor.slope();
if (current_quality >= 0)// if a valid data returned.
{
if (current_quality==0)
Serial.println("High pollution! Force signal active");
else if (current_quality==1)
Serial.println("High pollution!");
else if (current_quality==2)
Serial.println("Low pollution!");
else if (current_quality ==3)
Serial.println("Fresh air");
}
}
ISR(TIMER2_OVF_vect)
{
if(airqualitysensor.counter==122)//set 2 seconds as a detected duty
{
airqualitysensor.last_vol=airqualitysensor.first_vol;
airqualitysensor.first_vol=analogRead(A0); // change this value if you use another A port
airqualitysensor.counter=0;
airqualitysensor.timer_index=1;
PORTB=PORTB^0x20;
}
else
{
airqualitysensor.counter++;
}
}
4.上传代码
5.打开串行监视器。
要调整阈值和指示消息,请参阅下面的.cpp文件中的决策结构。
int AirQuality::slope(void)
{
while(timer_index)
{
if(first_vol-last_vol>400||first_vol>700)
{
Serial.println("High pollution! Force signal active.");
timer_index=0;
avg_voltage();
return 0;
}
else if((first_vol-last_vol>400&&first_vol<700)||first_vol-vol_standard>150)
{
Serial.print("sensor_value:");
Serial.print(first_vol);
Serial.println("\t High pollution!");
timer_index=0;
avg_voltage();
return 1;
}
else if((first_vol-last_vol>200&&first_vol<700)||first_vol-vol_standard>50)
{
//Serial.println(first_vol-last_vol);
Serial.print("sensor_value:");
Serial.print(first_vol);
Serial.println("\t Low pollution!");
timer_index=0;
avg_voltage();
return 2;
}
else
{
avg_voltage();
Serial.print("sensor_value:");
Serial.print(first_vol);
Serial.println("\t Air fresh");
timer_index=0;
return 3;
}
}
return -1;
}
使用 Raspberry Pi
!!! attention 如果你正在使用 Raspberry Pi with Raspberrypi OS >= Bullseye, 你只能在 python3 中使用这个命令行.
1.你需要准备一个Raspberry pi和grovepi或grovepi +。
2.您需要完成配置开发环境,Grovepi+ 配置请参考 说明 。
3.硬件连接
- 通过grove连接线将传感器插入Grovepi插座 A0。
4.跳转到示例目录:
cd yourpath/GrovePi/Software/Python/
找到这行代码
nano grove_air_quality_sensor.py # "Ctrl+x" to exit #
import time
import grovepi
# Connect the Grove Air Quality Sensor to analog port A0
# SIG,NC,VCC,GND
air_sensor = 0
grovepi.pinMode(air_sensor,"INPUT")
while True:
try:
# Get sensor value
sensor_value = grovepi.analogRead(air_sensor)
if sensor_value > 700:
print "High pollution"
elif sensor_value > 300:
print "Low pollution"
else:
print "Air fresh"
print "sensor_value =", sensor_value
time.sleep(.5)
except IOError:
print "Error"
5.运行这个示例
sudo python3 grove_air_quality_sensor.py