Tabla de contenido
- resumen
- Lista de materiales
- Sensor de calidad del aire SGP30
- SGP30 Spark Biblioteca Juan Arduino
- Sensor SGP30 CO2 y TVOC e interfaz Arduino
- Código fuente/programa: Read CO2 & TVOC
- Código fuente/programa: Lectura de etanol e hidrógeno (H2)
- Mostrar los valores de CO2 y TVOC en la pantalla OLED
- Código fuente/programa de pantalla OLED
- Video Tutorial y Guía
resumen
En esta publicación, vamos a interactuar Sensor de CO2 y TVOC SGP30 Y Arduino muestra el valor en Pantalla OLED. El sensor SGP30 puede detectar Dióxido de carbono equivalente & Compuestos orgánicos volátiles totales De la atmósfera. En proyectos anteriores, se utilizaron CO2 y TVOC para medir. CCS811 Sensor de gas y también BME680 Sensores ambientales integrados.
Pero el SGP30 es un sensor completamente diferente, con la capacidad de tomar rápidamente una buena lectura. un lado CCS811 Requiere 48 horas de quemado y 20 minutos de rodaje, el SGP30 está listo en solo 15 segundos.
En este proyecto, primero CO2 y TVOC Uso de los valores del sensor SGP30 Biblioteca Arduino Spark Fun & Mostrar su valor en el monitor serie. El sensor es etanol Y Hidrógeno (H2) Valor del valor sin procesar. Más tarde, puede agregar las lecturas del sensor al Pantalla OLED I2C de 0,96 pulgadas Pruebe el sensor colocando perfume cerca del sensor.
Lista de materiales
Los siguientes componentes se pueden comprar en Amazon:
Sensor de calidad del aire SGP30
el SGP30 Gas Sensor es un sensor de calidad del aire utilizado para medir COV y eCO2. Esto está muy bien Sensor de calidad del aire De los expertos en sensores Sensilion. El sensor tiene Interfaz I2CProporciona una señal de salida totalmente calibrada con precisión estándar. 15% Dentro de las mediciones. SGP combina múltiples elementos de detección de óxido metálico en un solo chip para proporcionar una señal de calidad del aire más detallada. Este módulo se llama TVOC (compuestos orgánicos volátiles totales) Y dióxido de carbono Excelente estabilidad a largo plazo y bajo consumo de energía. Esto lo convierte en la elección perfecta Detección de la calidad del aire interior Usa Arduino o cualquier otra cosa Microcontroladores.
El Sensirion SGP30 es un sensor de gas digital multipíxel que se puede integrar fácilmente con purificadores de aire y ventilación controlada por demanda. El sensor es suministrado por Tecnología Sensirion CMOSens® Integra un sistema de sensores completo con una microplaca calefactora con temperatura controlada y dos señales de calidad del aire interior pretratadas en un chip. Como el primer sensor de gas de óxido metálico con múltiples elementos de detección en un solo chip, el SGP30 proporciona información más detallada. cheque Hoja de datos de la SGP30 Para más información.
Salida equivalente Dióxido de carbono (polipropileno) Y Compuestos orgánicos volátiles totales (TVOC) (en ppb)El sensor también proporciona acceso a sus lecturas en bruto etanol Y H2. El SGP30 cuenta con una alta estabilidad con una baja deriva a largo plazo. El algoritmo de corrección de línea de base continua garantiza que las mediciones sigan siendo precisas a lo largo del tiempo. También puede ajustar las lecturas interactuando con un sensor de humedad externo y agregando compensación de humedad.
Características y especificaciones
- Sensilon SGP30 TVOC y sensor eCO2
- 0-60,000 ppb (partes por billón) de detección TVOC
- 400-60,000 ppm (partes por millón) de detección de CO2
- Frecuencia de muestreo de 1Hz
- Interfaz I2C (dirección 0x58)
- Compatible con 3.3V o 5V
- Pinout compatible con Raspberry Pi (pines 1, 3, 5, 7, 9)
- Compatible con todos los modelos de Raspberry Pi, y Arduino
aplicación
- Purificador de aire
- Ventilación controlada por demanda
- Aplicaciones de IoT
- Nuevo monitor de aire acondicionado para el hogar
SGP30 Spark Biblioteca Juan Arduino
La biblioteca para la SGP30 es Adafruit pero también Ventilador de chispaSin embargo, este proyecto utiliza la biblioteca SGP30 Sparkfun Arduino.
La biblioteca SGP30 se puede descargar desde. Enlace de GithubDescargue la biblioteca y agréguela al IDE de Arduino usando el Administrador de bibliotecas.
Sensor SGP30 CO2 y TVOC e interfaz Arduino
Ahora vamos a conectar el sensor SGP30 con la placa Arduino. Diagrama de conexión conjunta Arduino y SGP30 Es así de simple.
Conecte los pines VCC y GND del SGP30 a los pines de 3,3 V y GND del Arduino, respectivamente. Dado que el SGP30 es un módulo I2C, conecte los pines SDA y SCL a los pines Arduino A4 y A5, respectivamente.
Código fuente/programa: Read CO2 & TVOC
El siguiente código está tomado del ejemplo de la biblioteca Sparkfun SGP30. El código imprime las siguientes medidas: Compuestos orgánicos volátiles totales (TVOC) 1 en mil millones (Teletipo), Dióxido de carbono (CO2) Equivalente en partes por millón (Teletipo).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | #include “SparkFun_SGP30_Arduino_Library.h” // Haga clic aquí para obtener la biblioteca: http://librarymanager/All#SparkFun_SGP30 #include <wire.h> SGP30 Mis sensores; Creación de objetos de clase SGP30 No válido arreglo() { serial.empezar(9600); alambre.empezar(); Inicialización del sensor AdemásY (Mis sensores.empezar() == falso) { serial.Printrung(“SGP30 no detectado. Compruebe la conexión.); mientras (1); } Inicializar el sensor para lecturas de calidad del aire La calidad del aire medida debe llamarse en incrementos de un segundo después de la llamada a initAirQuality. Mis sensores.Inicialización de la calidad del aire(); } No válido bucle() { Las primeras 15 mediciones se verán así Dióxido de carbono: 400 ppm TVOC: 0 ppb demorar(1000); Espera 1 segundo Medir los niveles de CO2 y TVOC Mis sensores.Calidad del aire medida(); serial.Impresión(“CO2: “); serial.Impresión(Mis sensores.dióxido de carbono); serial.Impresión(” ppm\tTVOC: “); serial.Impresión(Mis sensores.Teletipo); serial.Printrung(“ppb”); } |
Desde el administrador de la placa, seleccione la placa Arduino que está utilizando. Además, seleccione el puerto COM. Luego presione el botón de carga para cargar el código en su placa Arduino.
Una vez que el código haya terminado de cargarse, abra el monitor serie.
Inicialmente, el monitor serie muestra un valor de CO2 de 400 ppm y un valor de TVOC de 0 ppb. Después de 15-20 lecturas, el sensor se estabiliza a medida que se calienta. Después de eso, el valor del sensor se muestra correctamente.
Código fuente/programa: Lectura de etanol e hidrógeno (H2)
En relación con la SGP30, Algoritmo de corrección de línea base dinámica También un parámetro de calibración en chip que proporciona dos señales complementarias de calidad del aire. El Baselin e debe almacenarse en EEPROMNo hay ningún valor de referencia en la EEPROM en el primer encendido, o el registro de referencia tiene más de 7 días. El sensor debe funcionar durante 12 horas antes de poder almacenar una línea base. Vea el diagrama de flujo del programa a continuación.
el H2_Signal Y Ethanol_signal, utilizando ambas señales, la concentración de gas C para la concentración de referencia CRe puede calcularse de la siguiente manera: ln(C/Cref)=(Serf-Sout)/a A = 512, sref la salida H2_signal o Ethanol_signal a la concentración de referencia, Sout = Sout_H2 o Sout = Sout_EthOH.
Para mediciones más precisas, se puede establecer una compensación de humedad absoluta y el valor predeterminado es 11,57 gramos/m3, Un poco problemático es que no hay un componente de medición de humedad integrado en SGP30, por lo que es necesario obtener el valor de humedad relativa del ambiente de otro método.
Aquí está el código completo para leer CO2, TVOC, H2 & etanol Valor.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | #include “SparkFun_SGP30_Arduino_Library.h” // Haga clic aquí para obtener la biblioteca: http://librarymanager/All#SparkFun_SGP30 #include <wire.h> SGP30 Mis sensores; Creación de objetos de clase SGP30 largo T1, T2; No válido arreglo() { serial.empezar(9600); alambre.empezar(); El sensor admite velocidades I2C de hasta 400 kHz alambre.Configurar reloj(400000); Inicialización del sensor Si (Mis sensores.empezar() == falso) { serial.Printrung(“SGP30 no detectado. Compruebe la conexión.); mientras (1); } Inicializar el sensor para lecturas de calidad del aire La calidad del aire medida debe llamarse en incrementos de un segundo después de la llamada a initAirQuality. Mis sensores.Inicialización de la calidad del aire(); T1 = Milis(); } No válido bucle() { Las primeras 15 mediciones se verán así Dióxido de carbono: 400 ppm TVOC: 0 ppb T2 = Milis(); Si ( T2 >= T1 + 1000) Ocurre solo después de que haya transcurrido 1 segundo { T1 = T2; Medir los niveles de CO2 y TVOC Mis sensores.Calidad del aire medida(); serial.Impresión(“CO2: “); serial.Impresión(Mis sensores.dióxido de carbono); serial.Impresión(” ppm\tTVOC: “); serial.Impresión(Mis sensores.Teletipo); serial.Printrung(“ppb”); Obtenga valores brutos de H2 y etanol Mis sensores.Señal bruta medida(); serial.Impresión(“Raw H2:”); serial.Impresión(Mis sensores.H2); serial.Impresión(” Etanol crudo :”); serial.Printrung(Mis sensores.etanol); } } |
Una vez que se carga el código, puede volver a abrir el monitor serie. Si observa las lecturas después de 15-20 lecturas, puede ver los valores de CO2, TVOC, H2 y etanol. Nota: Los valores de H2 y etanol son solo valores brutos.
Mostrar los valores de CO2 y TVOC en la pantalla OLED
Ahora, en lugar de mostrar los valores de CO2 y TVOC en un monitor serie, vamos a mostrarlos en varios módulos de visualización. El mejor módulo para eso es la pantalla OLED I2C de 0.96 pulgadas. El diagrama de conexión también es bastante simple.
Las pantallas OLED también son módulos I2C. Por lo tanto, se conecta directamente al pin I2C de la placa Arduino.
Código fuente/programa de pantalla OLED
el Pantalla OLED SSD1306 Necesitas dos biblioteca Para compilación. Descargue las siguientes bibliotecas y agréguelas a la carpeta Biblioteca:
- Biblioteca Adafruit SSD1306: https://github.com/adafruit/Adafruit_SSD1306
- Biblioteca Adafruit GFX: https://github.com/adafruit/Adafruit-GFX-Library
Copie el siguiente código y cárguelo en su placa Arduino.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | #include “SparkFun_SGP30_Arduino_Library.h” // Haga clic aquí para obtener la biblioteca: http://librarymanager/All#SparkFun_SGP30 #include <wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #define SCREEN_WIDTH 128 // Ancho de pantalla OLED en píxeles #define SCREEN_HEIGHT 64 // Altura de pantalla OLED en píxeles #define OLED_RESET 4 // Restablecer pin # (o -1 si comparte el pin de restablecimiento de Arduino) #define SCREEN_ADDRESS 0x3C // 0x3D para 128×64, 0x3C para 128×32 Adafruit_SSD1306 Monitor(SCREEN_WIDTH, SCREEN_HEIGHT, &wire, OLED_RESET); SGP30 Mis sensores; Creación de objetos de clase SGP30 No válido arreglo() { serial.empezar(9600); alambre.empezar(); Si (!Monitor.empezar(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) { serial.Printrung(F(“Error al asignar SSD1306”)); para (;;); No continúes, bucle para siempre } Monitor.Borrar pantalla();
Inicialización del sensor Si (Mis sensores.empezar() == falso) { serial.Printrung(“SGP30 no detectado. Compruebe la conexión.); mientras (1); } Inicializar el sensor para lecturas de calidad del aire La calidad del aire medida debe llamarse en incrementos de un segundo después de la llamada a initAirQuality. Mis sensores.Inicialización de la calidad del aire(); } No válido bucle() { Las primeras 15 mediciones se verán así Dióxido de carbono: 400 ppm TVOC: 0 ppb demorar(1000); Espera 1 segundo Medir los niveles de CO2 y TVOC Mis sensores.Calidad del aire medida(); serial.Impresión(“CO2: “); serial.Impresión(Mis sensores.dióxido de carbono); serial.Impresión(” ppm\tTVOC: “); serial.Impresión(Mis sensores.Teletipo); serial.Printrung(“ppb”); Monitor.Establecer cursor(0, 10); Pantalla OLED Monitor.Establecer tamaño de texto(2); Monitor.Establecer color de texto(Blanco); Monitor.Impresión(“CO2:”); Monitor.Impresión(Mis sensores.dióxido de carbono); Monitor.Establecer tamaño de texto(1); Monitor.Impresión(“ppm”); Monitor.Establecer cursor(0, 40); Pantalla OLED Monitor.Establecer tamaño de texto(2); Monitor.Establecer color de texto(Blanco); Monitor.Impresión(“TVOC:”); Monitor.Impresión(Mis sensores.Teletipo); Monitor.Establecer tamaño de texto(1); Monitor.Impresión(“ppb”); Monitor.Monitor(); Monitor.Borrar pantalla(); } |
La pantalla OLED se inicializará y comenzará a mostrar valores de CO2 y TVOC. Inicialmente, muestra los valores de CO2 y TVOC como 400 ppm y 0 ppb, respectivamente.
Después de 15-20 lecturas, el OLED comenzará a mostrar el valor estable correcto.
Para probar el funcionamiento del sensor, acerque el perfume, el aerosol o los compuestos orgánicos al sensor. El sensor muestra el valor en un gran número en ppm y ppb.
Video Tutorial y Guía
Sensor de calidad del aire SGP30 – Determinación de CO2 equivalente y compuestos orgánicos volátiles totales (TVOC)
Así es como puede utilizar el sensor SGP30 CO2 & TVOC en Arduino. El sensor también se puede utilizar para el monitoreo ambiental en interiores utilizando pantallas ESP32 y TFT LCD.