INFORMACIÓN
El SGP30 es un sensor digital de calidad del aire que utiliza tecnología de óxido metálico (MOX) para medir compuestos orgánicos volátiles (TVOC) y el equivalente de dióxido de carbono (eCO₂) en el ambiente. Funciona mediante una superficie sensible que cambia su resistencia al contacto con gases presentes en el aire; el chip interpreta estos cambios mediante algoritmos internos y genera lecturas precisas en tiempo real. Se comunica a través de I2C, lo que facilita su integración con microcontroladores.
El SGP30 se utiliza ampliamente en sistemas de monitoreo ambiental, domótica, purificadores de aire, estaciones meteorológicas, ventilación inteligente, y dispositivos portátiles que requieren medir TVOC y eCO₂ para evaluar la calidad del aire interior. Gracias a su interfaz I2C, es compatible con una gran variedad de tarjetas de desarrollo, incluyendo Arduino UNO, Arduino Mega, ESP32, ESP8266, Raspberry Pi, STM32, y otros microcontroladores que soporten comunicación I2C.
ESPECIFICACIONES Y CARACTERÍSTICAS
- Sensor: SGP30.
- Tipo: Sensor de Gas MOX.
- Voltaje de Alimentación: 1.8 a 5 VDC.
- Consumo de Corriente: 40 mA.
- Interfaz de Conexión: I2C.
- Precisión Típica: 15%.
- Rangos de Medición:
- Compuestos Orgánicos Volátiles (TVOC): Desde 0 hasta 60 000 ppb.
- Dióxido de carbono (eCO2): Desde 400 hasta 60 000 ppm.
- Frecuencia de Muestreo (sampling rate): 1 Hz (una medida por segundo) para TVOC y eCO₂.
- Dimensiones: 11 mm x 11 mm x 1.6 mm.
- Peso: 0.73 g.
DOCUMENTACIÓN Y RECURSOS
INFORMACIÓN ADICIONAL
¿Cómo probar el SGP30 Sensor de Calidad del Aire I2C?
Aquí tienes una guía paso a paso (clara y práctica) para probar el SGP30 (I²C) con un Arduino UNO.
Materiales Necesarios.
- Módulo SGP30.
- Arduino UNO (u otra placa compatible I²C).
- Cables dupont.
- PC con Arduino IDE instalado y acceso a la Biblioteca Adafruit_SGP30.
Diagrama de Conexión.
- Conecta VIN → 5V del Arduino.
- Conecta GND → GND del Arduino.
- Conecta SDA → A4.
- Conecta SCL → A5.

Código de Programación.
- Abre Arduino IDE.
- Ve a Sketch → Include Library → Manage Libraries.
- Busca: SGP30.
- Instala Adafruit SGP30.
- Carga el Ejemplo → SGP30_test.
El código lo puedes abrir desde ejemplos o copiarlo de aquí:
#include <Wire.h>
#include "Adafruit_SGP30.h"
Adafruit_SGP30 sgp;
/* return absolute humidity [mg/m^3] with approximation formula
* @param temperature [°C]
* @param humidity [%RH]
*/
uint32_t getAbsoluteHumidity(float temperature, float humidity) {
// approximation formula from Sensirion SGP30 Driver Integration chapter 3.15
const float absoluteHumidity = 216.7f * ((humidity / 100.0f) * 6.112f * exp((17.62f * temperature) / (243.12f + temperature)) / (273.15f + temperature)); // [g/m^3]
const uint32_t absoluteHumidityScaled = static_cast<uint32_t>(1000.0f * absoluteHumidity); // [mg/m^3]
return absoluteHumidityScaled;
}
void setup() {
Serial.begin(115200);
while (!Serial) { delay(10); } // Wait for serial console to open!
Serial.println("SGP30 test");
if (! sgp.begin()){
Serial.println("Sensor not found :(");
while (1);
}
Serial.print("Found SGP30 serial #");
Serial.print(sgp.serialnumber[0], HEX);
Serial.print(sgp.serialnumber[1], HEX);
Serial.println(sgp.serialnumber[2], HEX);
// If you have a baseline measurement from before you can assign it to start, to 'self-calibrate'
//sgp.setIAQBaseline(0x8E68, 0x8F41); // Will vary for each sensor!
}
int counter = 0;
void loop() {
// If you have a temperature / humidity sensor, you can set the absolute humidity to enable the humditiy compensation for the air quality signals
//float temperature = 22.1; // [°C]
//float humidity = 45.2; // [%RH]
//sgp.setHumidity(getAbsoluteHumidity(temperature, humidity));
if (! sgp.IAQmeasure()) {
Serial.println("Measurement failed");
return;
}
Serial.print("TVOC "); Serial.print(sgp.TVOC); Serial.print(" ppbt");
Serial.print("eCO2 "); Serial.print(sgp.eCO2); Serial.println(" ppm");
if (! sgp.IAQmeasureRaw()) {
Serial.println("Raw Measurement failed");
return;
}
Serial.print("Raw H2 "); Serial.print(sgp.rawH2); Serial.print(" t");
Serial.print("Raw Ethanol "); Serial.print(sgp.rawEthanol); Serial.println("");
delay(1000);
counter++;
if (counter == 30) {
counter = 0;
uint16_t TVOC_base, eCO2_base;
if (! sgp.getIAQBaseline(&eCO2_base, &TVOC_base)) {
Serial.println("Failed to get baseline readings");
return;
}
Serial.print("****Baseline values: eCO2: 0x"); Serial.print(eCO2_base, HEX);
Serial.print(" & TVOC: 0x"); Serial.println(TVOC_base, HEX);
}
}
Resultados.
Una vez cargado el código, abra la consola serie a 115200 baudios. Las primeras 10 a 20 lecturas siempre serán TVOC 0 ppb eCO2 400 ppm. Esto se debe a que el sensor se está calentando, por lo que tendrá lecturas nulas. Después de unos segundos, verá que las lecturas de TVOC y eCO2 fluctúan. También se imprimirá un valor de referencia aproximadamente cada minuto.

Sensor Receptor Infrarrojo IR KY-022
Soldador de Gas Tipo Bolígrafo
LILYGO T5 E-Paper
Eliminador 9V 1A con Plug
HT-PD27W-US Eliminador 27W USB Tipo C PD para Raspberry Pi 5
Cable de Extensión USB con Orejas Macho a Hembra 1m
Fuente para Protoboard con Señuelo de Carga UNIT
Limpiador Electrónico en Aerosol 454 ml SILIJET E-7 Plus
Alcohol Isopropílico en Aerosol 400 ml
FFQ939 Pluma de Succión SMT SMD
RM409B Multímetro Digital True RMS RICHMETERS
VS1053B Reproductor MP3 TF Shield Arduino
Pasta Limpiadora para Puntas de Cautín 6g
Pluma Flux 951 Kester 10ml Non Clean
Congelante Detector de Falla para Circuitos Electrónicos 170 ml SILIJET E-3
Osciloscopio DSO138 con Carcasa y Display TFT
Sonoff SNZB-06P Sensor de Presencia Humana Zigbee
Limpiador Dieléctrico para Circuitos y Tarjetas Electrónicas 454 ml COMPUKLIN
Interruptor por Campo Magnético KY-025



























Valoraciones
No hay valoraciones aún.