bclose

Sensor de CO2 SGP30

Objetivos

 

 
  • Usaremos un módulo SGP30 con el M5Stack.
  • Escribiremos un programa que mide concentración de CO2 e índice VOC.
  • Haremos que el fondo de pantalla sea de color verde, amarillo o rojo en función de la concentración de CO2.
 

 

Material requerido.

 

MOdelo basico 

M5Stack

Sensor VOC y CO2Un sensor TVOC SGP30

 

Sensor de COSGP30

 

 

Sabido es que medir las concentraciones de CO2 se ha convertido en poco menos que una obsesión en los ambientes públicos, y en especial en los centros educativos, por lo sensible de sus ocupantes, no son ajenos a esta tendencia

Por eso en Prometec hemos ido probando diferentes sensores que puedan medir el CO2 ambiente, en tutoriales previos, y en esta sesión vamos a probar un nuevo sensor de Sensirion, el SGP30, que pertenece a la familia de nuevos sensores de calidad de aire y en particular a los que miden los VOC totales (O también conocidos como TVOC)

Sensor VOC y CO2

Estos sensores del tipo TVOC se desarrollan con la intención de detectar diferentes compuestos químicos volátiles que pueden afectar a la salud si se producen exposiciones prolongadas y son sensibles a un amplio espectro de componentes, entre los que podemos destacar: Alcoholes, Fenoles, Acetonas, Aldehídos y CO2, así como partículas en suspensión (Como el humo de tabaco)

Es importante entender que los sensores VOC no son capaces de diferenciar cual de los distintos gases diana detecta, sino que más bien nos presentan un índice combinado que se obtiene como una representación general de la calidad del aire. Esto es especialmente importante cuando nos da la medida del CO2 ambiente, porque en realidad no mide CO2  directamente, sino que estima (Calcula) la proporción correcta de CO2 en el ambiente, a base de suponer que se trata de un local cerrado expuesto a la respiración de las personas y a cosas como humo de tabaco o consumo de bebidas alcohólicas, pero no cubas de fermentación o procesos industriales que expulsen cantidades altas de los gases a los que el SGP30 es sensible.

Como ya comentamos con el sensor MG811 este tipo de sensores VOC están diseñadas para indicar la correcta calidad del aire ambiente en oficinas, aulas y similares y cumplen muy bien con función a bajo coste y su estimación del CO2 es bastante correcta fuera de condiciones extremas, por lo que se usan mucho en lugares donde la precisión no es especialmente importante y donde están habitualmente libres de contaminación más o menos química como suelen ser dichos locales.

Su bajo coste y buena fiabilidad en esas condiciones, los hacen ideales para medidas generales y muy apreciados en los proyectos domésticos o educativos que siempre buscan hacer este tipo de proyectos sin que los sensores disparen el precio

En esta sesión vamos a usar un M5STACK (Que hacia tiempo que no tocábamos) y un sensor de TVOC basado en el SGP30 para mostrar lo fácil que es hacer un medidor que se ponga en verde, amarillo, o rojo en función de la lectura del sensor.

Para los que tengáis inclinaciones más técnicas aquí os dejo el datasheet del SGP30:

 

 

Conectando el Sensor de VOC / CO2 SGP30

 

Vamos a usar el M5STACK por que dispone de un modulo VOC basado en el SGP30 con lo que la conexión del sensor es trivial a través del I2C:

Sensor VOC y CO2

Basta con conectar y listo para empezar la programación:

 

Sensor VOV

 

 

Programando el SGP30

 

La lectura del SGP30 es trivial usando la librería correspondiente. Puedes cargarla desde tu IDE Arduino:

\\Programa\Incluir Libreria\Administrar Bibliotecas

menu arduino

Para luego escribir SGP30 en la zona de búsqueda:

Añadir libreria

Instala la primera opción que sale de instalar la librería de Adafruit y listo. Vamos a por el programa:

#include <M5Stack.h>
#include "Adafruit_SGP30.h"

Una par librería para el M5Stack como siempre y otra para el sensor. Ahora creamos una instancia del sensor de VOC:

Adafruit_SGP30 sgp;

Y pasamos al setup():

void setup()
{ M5.begin(true, false, true, true);
  M5.Lcd.setCursor(80,0);

Empezamos inicializando el M5 y posicionando el cursor y ahora vamos a comprobar que el sensor está conectado para que en caso negativo no sigamos adelante:

if (!sgp.begin())
{   M5.Lcd.println("Sensor not found");
    while (1);
}

Si no podemos iniciar el sensor nos quedamos aquí para siempre. En caso contrario podemos seguir con el loop. Empezamos tomando una lectura y comprobamos que ha sido correcta:

if (! sgp.IAQmeasure()) //Leemos el sensor eCO2/VOC
{     Serial.println("Measurement failed");
      return;
}

Si la lectura es válida, asígnanos los valores a nuestras variables:

int tvoc = sgp.TVOC ;
int eCO2 = sgp.eCO2 ;

Todo lo demás es gimnasia. Vamos a imprimirlos en la pantalla con el siguiente criterio. Si la lectura del COes menor de 600 ppm (Partes por millón), pondremos en verde el fondo de pantalla (Para indicar que la calidad del aire es adecuada). Si el COestá entre 600 y 1000 ppm  pondremos el color de fondo en Amarillo y si pasa de 1.000 ppm pondremos el fondo de pantalla en rojo para indicar el peligro.

Contenido solo disponible para suscriptores. ¡Accede al contenido!

       

El resultado lo podemos ver en este mini video: