Grove - Sensor de Qualidade do Ar v1.3

Este sensor é projetado para monitorar de forma abrangente as condições do ar em ambientes internos. Ele é sensível a uma ampla variedade de gases nocivos, como monóxido de carbono, álcool, acetona, diluente, formaldeído e assim por diante. Devido ao mecanismo de medição, este sensor não consegue fornecer dados específicos para descrever quantitativamente as concentrações dos gases alvo. Mas ainda é suficientemente competente para ser usado em aplicações que exigem apenas resultados qualitativos, como borrifadores de renovação automática e sistemas automáticos de circulação de ar.
Nós lançamos o Guia de Seleção de Sensores de Gás da Seeed, ele irá ajudá-lo a escolher o sensor de gás que melhor se adapta às suas necessidades.
Versão
| Versão do Produto | Alterações | Data de Lançamento |
|---|---|---|
| Grove - Air Quality Sensor v1.3 | Inicial | Maio 2016 |
Recursos
- Responsivo a uma ampla variedade de gases-alvo
- Custo eficiente
- Durável
- Compatível com 5V e 3.3V
- Requer ar relativamente limpo como condição inicial.
- Exposição prolongada a ar altamente poluído pode enfraquecer significativamente sua sensibilidade.
- Cofre e armário-forte:
Plataformas Suportadas
| Arduino | Raspberry Pi | ESP-IDF |
|---|---|---|
|
|
|
As plataformas mencionadas acima como suportadas são uma indicação da compatibilidade de software ou teórica do módulo. Na maioria dos casos, fornecemos apenas biblioteca de software ou exemplos de código para a plataforma Arduino. Não é possível fornecer biblioteca de software / código de demonstração para todas as possíveis plataformas de MCU. Portanto, os usuários precisam escrever sua própria biblioteca de software.
Primeiros Passos
Se esta é a primeira vez que você trabalha com Arduino, recomendamos fortemente que veja Primeiros Passos com Arduino antes de começar.
Brincar com Arduino
Demonstração
Como descrito na Introdução, este sensor funciona melhor fornecendo resultados qualitativos para uma ampla variedade de gases-alvo. Nesta demonstração, definiremos 4 estados para referência no arquivo '.cpp'. Eles são:
- a. ar fresco -- indicando uma boa condição do ar
- b. baixa poluição -- indicando que existe uma concentração relativamente baixa de gases-alvo.
- c. alta poluição(sem a mensagem "Force signal active" impressa no monitor serial) -- você deve estar ciente do nível de poluição e considerar se algumas medidas podem ser tomadas.
- d. alta poluição(com a mensagem "Force signal active" impressa no monitor serial) -- medidas imediatas devem ser tomadas para melhorar a qualidade do ar.
Encapsulamos a estrutura de decisão em um arquivo '.cpp'. Você pode encontrar lá informações sobre como modificar os limites.
Vamos experimentar!
Hardware
- Passo 1. Prepare os seguintes itens:
| Seeeduino V4.2 | Base Shield | Grove - Air Quality Sensor |
|---|---|---|
|
|
|
| Adquira Agora | Adquira Agora | Adquira Agora |
- Passo 2. Conecte o Grove - Air Quality Sensor à porta A0 do Grove-Base Shield.
- Passo 3. Conecte o Grove - Base Shield ao Seeeduino.
- Passo 4. Conecte o Seeeduino ao PC através de um cabo USB.

Se não tivermos o Grove Base Shield, também podemos conectar diretamente o Grove - Air Quality Sensor ao Seeeduino como abaixo.
| Seeeduino | Grove - Air Quality Sensor |
|---|---|
| 5V | Vermelho |
| GND | Preto |
| Not Conencted | Branco |
| A0 | Amarelo |
Software
- Passo 1. Baixe a AirQuality_Sensor Library.
- Passo 2. Consulte How to install library para instalar a biblioteca para Arduino.
- Passo 3. Copie o código para a IDE do Arduino e faça o upload. Se você não souber como fazer o upload do código, verifique how to upload code.
/*
Grove_Air_Quality_Sensor.ino
Demo for Grove - Air Quality Sensor.
Copyright (c) 2019 seeed technology inc.
Author : Lets Blu
Created Time : Jan 2019
Modified Time:
The MIT License (MIT)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
#include "Air_Quality_Sensor.h"
AirQualitySensor sensor(A0);
void setup(void) {
Serial.begin(9600);
while (!Serial);
Serial.println("Waiting sensor to init...");
delay(20000);
if (sensor.init()) {
Serial.println("Sensor ready.");
} else {
Serial.println("Sensor ERROR!");
}
}
void loop(void) {
int quality = sensor.slope();
Serial.print("Sensor value: ");
Serial.println(sensor.getValue());
if (quality == AirQualitySensor::FORCE_SIGNAL) {
Serial.println("High pollution! Force signal active.");
} else if (quality == AirQualitySensor::HIGH_POLLUTION) {
Serial.println("High pollution!");
} else if (quality == AirQualitySensor::LOW_POLLUTION) {
Serial.println("Low pollution!");
} else if (quality == AirQualitySensor::FRESH_AIR) {
Serial.println("Fresh air.");
}
delay(1000);
}
- Passo 4. Veremos a distância exibida no terminal como abaixo.
Waiting sensor to init...
Sensor ready.
Sensor value: 48
Fresh air.
Sensor value: 51
Fresh air.
Sensor value: 49
Fresh air.
Sensor value: 48
Fresh air.
Sensor value: 48
Fresh air.
Sensor value: 48
Fresh air.
Para ajustar os limites e as mensagens indicativas, consulte a estrutura de decisão abaixo no arquivo .cpp.
int AirQualitySensor::slope(void) {
_lastVoltage = _currentVoltage;
_currentVoltage = analogRead(_pin);
_voltageSum += _currentVoltage;
_volSumCount += 1;
updateStandardVoltage();
if (_currentVoltage - _lastVoltage > 400 || _currentVoltage > 700) {
return AirQualitySensor::FORCE_SIGNAL;
}
else if ((_currentVoltage - _lastVoltage > 400 && _currentVoltage < 700)
|| _currentVoltage - _standardVoltage > 150) {
return AirQualitySensor::HIGH_POLLUTION;
}
else if ((_currentVoltage - _lastVoltage > 200 && _currentVoltage < 700)
|| _currentVoltage - _standardVoltage > 50) {
return AirQualitySensor::LOW_POLLUTION;
}
else {
return AirQualitySensor::FRESH_AIR;
}
return -1;
}
Brincar com o Codecraft
Hardware
Passo 1. Conecte um Grove - Air Quality Sensor à porta A0 de um Base Shield.
Passo 2. Conecte o Base Shield ao seu Seeeduino/Arduino.
Passo 3. Conecte o Seeeduino/Arduino ao seu PC através de um cabo USB.
Software
Passo 1. Abra o Codecraft, adicione o suporte ao Arduino e arraste um procedimento principal para a área de trabalho.
Se esta é a sua primeira vez usando o Codecraft, veja também o Guia para usar Codecraft com Arduino.
Passo 2. Arraste os blocos como na imagem abaixo ou abra o arquivo cdc que pode ser baixado no final desta página.

Carregue o programa para o seu Arduino/Seeeduino.
Quando o código terminar de ser carregado, você verá a qualidade do ar no Serial Monitor.
Brincar com Raspberry Pi (Com Grove Base Hat para Raspberry Pi)
Hardware
- Passo 1. Itens usados neste projeto:
| Raspberry Pi | Grove Base Hat for RasPi | Grove - Air Quality Sensor |
|---|---|---|
|
|
|
| Adquira agora | Adquira agora | Adquira agora |
- Passo 2. Conecte o Grove Base Hat ao Raspberry Pi.
- Passo 3. Conecte o Grove - Air Quality Sensor à porta A0 do Base Hat.
- Passo 4. Conecte o Raspberry Pi ao PC através de um cabo USB.

Software
Se você estiver usando Raspberry Pi com Raspberrypi OS >= Bullseye, você deve usar esta linha de comando apenas com Python3.
- Passo 1. Siga Setting Software para configurar o ambiente de desenvolvimento.
- Passo 2. Baixe o arquivo-fonte clonando a biblioteca grove.py.
cd ~
git clone https://github.com/Seeed-Studio/grove.py
- Passo 3. Execute o comando abaixo para rodar o código.
cd grove.py/grove
python3 grove_air_quality_sensor_v1_3.py 0
A seguir está o código grove_air_quality_sensor_v1_3.py.
import math
import sys
import time
from grove.adc import ADC
class GroveAirQualitySensor:
def __init__(self, channel):
self.channel = channel
self.adc = ADC()
@property
def value(self):
return self.adc.read(self.channel)
Grove = GroveAirQualitySensor
def main():
if len(sys.argv) < 2:
print('Usage: {} adc_channel'.format(sys.argv[0]))
sys.exit(1)
sensor = GroveAirQualitySensor(int(sys.argv[1]))
print('Detecting ...')
while True:
value = sensor.value
if value > 100:
print("{}, High Pollution.".format(value))
else:
print("{}, Air Quality OK.".format(value))
time.sleep(.1)
if __name__ == '__main__':
main()
Se tudo correr bem, você poderá ver o seguinte resultado:
pi@raspberrypi:~/grove.py/grove $ python3 grove_air_quality_sensor_v1_3.py 0
Detecting ...
138, High Pollution.
139, High Pollution.
140, High Pollution.
141, High Pollution.
139, High Pollution.
140, High Pollution.
140, High Pollution.
140, High Pollution.
139, High Pollution.
138, High Pollution.
139, High Pollution.
138, High Pollution.
138, High Pollution.
^CTraceback (most recent call last):
File "grove_air_quality_sensor_v1_3.py", line 71, in <module>
main()
File "grove_air_quality_sensor_v1_3.py", line 68, in main
time.sleep(.1)
KeyboardInterrupt
Você pode usar este sensor para detectar a qualidade do ar. Pressione ++ctrl+c++ para sair.
Você pode ter notado que, para a porta analógica, o número do pino na serigrafia é algo como A1, A0, porém no comando usamos o parâmetro 0 e 1, exatamente como na porta digital. Portanto, certifique-se de conectar o módulo à porta correta, caso contrário, pode haver conflitos de pinos.
Brincar com Raspberry Pi (com GrovePi_Plus)
Hardware
- Passo 1. Prepare os itens abaixo:
| Raspberry Pi | GrovePi_Plus | Grove - Air Quality Sensor |
|---|---|---|
![]() | ![]() | ![]() |
| Adquira agora | Adquira agora | Adquira agora |
- Passo 2. Conecte o GrovePi_Plus ao Raspberry.
- Passo 3. Conecte o Grove-MOSFET ranger à porta A0 do GrovePi_Plus.
- Passo 4. Conecte o Raspberry ao PC através de um cabo USB.
Software
- Passo 1. Navegue até o diretório de demonstrações:
cd yourpath/GrovePi/Software/Python/
- Passo 2. Para ver o código
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"
- Passo 3. Execute a demonstração.
sudo python grove_air_quality_sensor.py
- Passo 4. Veremos a saída exibida no terminal como abaixo.

Brincar com ESP-IDF
Hardware
- Passo 1. Prepare os itens abaixo:
| Seeed Studio XIAO ESP32C3 | Seeed Studio Grove Base for XIAO | Grove Air Quality Sensor v1.3 |
|---|---|---|
![]() | ![]() | ![]() |
- Passo 2. Conecte o Grove - Air Quality Sensor à sua placa ESP32:
- Conecte o VCC do sensor a 3.3V
- Conecte o GND do sensor ao GND
- Conecte o SIG do sensor a um pino GPIO com suporte a ADC (por exemplo, GPIO34)

Software
-
Passo 1. Instale o ESP-IDF seguindo o guia oficial
-
Passo 2. Clone o componente Grove Analog Air Quality Sensor:
cd your_project/components
git clone https://github.com/Priyanshu0901/grove_analog_aqs.git
- Passo 3. Configure o componente usando o menuconfig:
idf.py menuconfig
Navegue até "Component config → Grove Analog Air Quality Sensor" para configurar:
-
Número da unidade ADC (0 para ADC1, 1 para ADC2)
-
Canal ADC (correspondente à sua conexão GPIO)
-
Atenuação do ADC (padrão: ADC_ATTEN_DB_12 para 3,3 V)
-
Limiares de qualidade do ar
-
Opções de gerenciamento de energia (opcional)
-
Passo 4. Crie um novo projeto e use o componente:
#include "grove_analog_aqs.h"
void app_main(void)
{
// Initialize with default configuration
grove_aqs_config_t config = GROVE_AQS_DEFAULT_CONFIG();
esp_err_t ret = grove_aqs_init(&config);
if (ret != ESP_OK) {
ESP_LOGE(TAG, "Sensor initialization failed: %d", ret);
return;
}
// Read sensor data
grove_aqs_data_t data;
ret = grove_aqs_read_data(&data);
if (ret == ESP_OK) {
ESP_LOGI(TAG, "Raw ADC value: %d", data.raw_value);
ESP_LOGI(TAG, "Voltage: %d mV", data.voltage_mv);
ESP_LOGI(TAG, "Air quality: %s", grove_aqs_quality_to_string(data.quality));
}
// Cleanup when done
grove_aqs_deinit();
}
- Etapa 5. Compile e grave o projeto:
idf.py build
idf.py -p /dev/ttyUSB0 flash monitor
Substitua /dev/ttyUSB0 pela porta serial do seu ESP32.
Saída Esperada
I (242) sleep_gpio: Enable automatic switching of GPIO sleep configuration
I (249) main_task: Started on CPU0
I (249) main_task: Calling app_main()
I (249) grove_aqs_example: Initializing Grove Analog Air Quality Sensor
I (259) grove_aqs_example: Using ADC Unit: 0, ADC Channel: 2
I (259) grove_aqs: Initializing with ADC Unit: 0, ADC Channel: 2
I (269) grove_aqs: ADC calibration enabled
I (269) grove_aqs: Grove Analog Air Quality Sensor initialized successfully
I (279) grove_aqs_example: Waiting for sensor to stabilize...
I (3279) grove_aqs: Air quality reading: Raw=300, Voltage=218mV, Quality=Fresh
I (3279) grove_aqs_example: Reading #1:
I (3279) grove_aqs_example: Raw ADC value: 300
I (3279) grove_aqs_example: Voltage: 218 mV
I (3279) grove_aqs_example: Air quality: Fresh
I (3289) grove_aqs_example: Advice: Air is fresh and clean!
I (4289) grove_aqs: Air quality reading: Raw=298, Voltage=216mV, Quality=Fresh
I (4289) grove_aqs_example: Reading #2:
I (4289) grove_aqs_example: Raw ADC value: 298
I (4289) grove_aqs_example: Voltage: 216 mV
I (4289) grove_aqs_example: Air quality: Fresh
I (4299) grove_aqs_example: Advice: Air is fresh and clean!
I (5299) grove_aqs: Air quality reading: Raw=286, Voltage=208mV, Quality=Fresh
I (5299) grove_aqs_example: Reading #3:
I (5299) grove_aqs_example: Raw ADC value: 286
I (5299) grove_aqs_example: Voltage: 208 mV
I (5299) grove_aqs_example: Air quality: Fresh
I (5309) grove_aqs_example: Advice: Air is fresh and clean!
I (6309) grove_aqs: Air quality reading: Raw=283, Voltage=206mV, Quality=Fresh
O componente fornece os seguintes recursos:
- Calibração automática do ADC
- Limiares de qualidade do ar configuráveis
- Controle opcional de alimentação via GPIO
- Tratamento de erros e registro de logs
- Suporte para ADC1 e ADC2
Visualizador Online de Esquemático
Recursos
- [Library] Biblioteca AirQuality Sensor
- [Eagle] Grove_-_Air_quality_sensor_v1.3_sch_pcb
- [PDF] Grove_-_Air_quality_sensor_v1.3_sch
- [PDF] Air_quality_sensor_MP503_Chinese
- [PDF] Air_quality sensor_MP503_English
- [Codecraft] Arquivo CDC
- [ESP-IDF] Componente Grove Analog Air Quality Sensor - componente ESP-IDF para Grove Air Quality Sensor
- [ESP-IDF] Guia de Programação ESP-IDF - guia oficial de programação ESP-IDF
Projetos
SPCPM (Solar Powered City Pollution Monitor): Poluição do ar e sonora de baixa manutenção e alta saída que pode ser distribuída pela cidade sem fiação.
Um site para ver os dados ambientais ao seu redor:
Suporte Técnico & Discussão de Produto
Atualizável para Sensores Industriais
Com o controlador S2110 e o registrador de dados S2100 SenseCAP, você pode facilmente transformar o Grove em um sensor LoRaWAN®. A Seeed não só ajuda você na prototipagem, mas também oferece a possibilidade de expandir seu projeto com a série SenseCAP de robustos sensores industriais.
O invólucro IP66, a configuração via Bluetooth, a compatibilidade com a rede global LoRaWAN®, a bateria interna de 19 Ah e o forte suporte do APP fazem do SenseCAP S210x a melhor escolha para aplicações industriais. A série inclui sensores para umidade do solo, temperatura e umidade do ar, intensidade de luz, CO2, EC e uma estação meteorológica 8 em 1. Experimente o mais recente SenseCAP S210x no seu próximo projeto industrial de sucesso.










