Medidor de CO2 en tu móvil con ESP32 y sensor Sensirion SCD30 [VERSIÓN BÁSICA]

Bienvenido a este tutorial en el que aprenderás cómo construir la versión básica del medidor de CO2 con App para Android e iOS, mediante Bluetooth, siguiendo el proyecto oficial del fabricante de sensores Sensirion.

Calculo que puedes completar el proyecto en menos de una hora, siguiendo los pasos del tutorial.

Tanto el firmware como como la App de este medidor de CO2 han sido preparados por Sensirion, uno de los mayores fabricantes de sensores de CO2 de calidad del mundo y, por tanto, que más sabe sobre su medición.

El medidor funciona muy bien, no podíamos esperar menos viniendo de uno de los principales fabricantes de sensores de CO2 del mundo, como es el caso de Sensirion.

Por cierto, la App para el móvil es muy profesional y de alta calidad. Estoy seguro de que te va a encantar.

El sensor utilizado es el SCD30. Un sensor NDIR de doble canal de muy buena calidad, con sensor de temperatura y humedad integrados. Una de las mejores opciones disponibles en el mercado a un precio razonable.

Como datos más importantes del Sensirion SCD30, podríamos nombrar los siguientes:

Especificaciones del sensor de CO2
Rango de medición de CO20 – 40’000 ppm
Precisión±30 ppm + 3% de la medida
Especificaciones del sensor de humedad
Rango de medición de humedad relativa0 – 100 % HR
Precisión típica±3% HR (0-100% HR)
Especificaciones del sensor de temperatura
Rango de medición de temperatura-40 °C – 70 °C
Precisión típica (°C)± (0,4 °C + 0,023 x (T [°C] – 25 °C))
Especificaciones eléctricas
Tensión de alimentación3.3 – 5.5 V
Tasa de medición promedio de corriente @ 2s19 mA
Corriente máx.75 mA
Especificaciones más importantes del Sensirion SCD30

Si quieres saber más, puedes descargar aquí el datasheet del SCD30.

Sensor de CO2 Sensirion SCD30

El principal objetivo de haber preparado este tutorial detallado es el de que resulte más sencillo construirlo para todo el mundo, especialmente para personas que no entienden inglés o que no saben mucho de electrónica y/o de programación con Arduino.

Es un proyecto apto para todos los niveles y el resultado es muy bueno. ¡Completamente profesional!

Este tutorial está acompañado de un video, que podrás encontrar más abajo, con todo explicado paso a paso y con detalle.

En este tutorial vas a ver, paso a paso, como:

  1. Preparar el Hardware: Aprender cómo hacer el cableado del sensor a la placa de desarrollo
  2. Grabar el firmware en la placa de desarrollo
  3. Visualizar los niveles de CO2 en tu ordenador y en móvil o tablet con la App Sensirion MyAmbience
  4. Extras: Algunos trucos, consejos e informaciones adicionales

Te recomiendo que utilices mi propia versión ampliada del firmware

Es un salto adelante muy importante sobre lo que puedes ver en este artículo. Lo han construido cientos de usuarios y probablemente sea el medidor de CO2, de su clase, más avanzado del mundo (incluyendo medidores comerciales y no comerciales).

Lo tienes en el siguiente artículo:

En este tutorial encontrarás dos versiones del medidor. Una versión muy sencilla, sin display, para que construyas un medidor compacto y veas la concentración de CO2 en tu móvil o tablet y un medidor con display en color y preparado para funcionamiento con batería como este:

Esta pantalla te permitirá visualizar la concentración actual de CO2 y su nivel en color verde, amarillo o rojo, dependiendo de si el nivel de CO2 es bueno, malo o muy malo.

He decidido separar la versión con pantalla en color en su propio artículo. Lo encontrarás aquí (te recomiendo que termines de leer este artículo primero, porque es la base del otro):

Video-tutorial paso a paso

Para empezar, te dejo el tutorial paso a paso en video, que acompaña a este artículo. Te recomiendo que lo veas, si aún no lo has hecho.

Hacer estos videos lleva mucho trabajo. Si te gusta el video, por favor, no te olvides de darle a «Me gusta» y suscribirte al canal. Eso me motivará a seguir haciendo más videos como estos.

Material necesario

Para completar este tutorial, vas a necesitar:

  • Una Placa ESP32 DevKitC-32D o una placa LILYGO® TTGO T-Display ESP32 para la versión con display
  • Un sensor de CO2 Sensirion SCD30
  • Unos cablecillos para hacer las conexiones
  • Cable USB para conectar el módulo ESP32 DevKitC a tu ordenador o computadora

Más adelante, en la sección «La cesta de la compra» te doy algunos consejos sobre el material a comprar, así como algunos enlaces útiles a sitios donde puedes comprarlos a buen precio y con garantías.

Preparar el Hardware

La preparación del hardware es tremendamente sencilla.

Conecta, con cuidado, el sensor SCD30 al ESP32 DevKitC como puedes ver en este diagrama. Presta atención a cada cable para que vaya del pin correcto del sensor al pin correcto de la placa con el ESP32. Te recomiendo que utilices cables de diferentes colores para que te resulte más sencillo.

ESP32 DEVKITC + SENSIRION SCD30

Ten en cuenta que tu placa puede tener un diseño de pines diferente. Si estás utilizando otros pines o tienes una placa con un diseño distinto, es posible que tengas que ajustar el código en consecuencia.

Tienes que conectar:

  • El pin VIN del SCD30 al pin marcado 3.3V del ESP32
  • El pin GND del SCD30 al GND del ESP32
  • El SCL del SCD30 al pin IO22 del ESP32
  • El pin marcado SDA del SCD30 al pin IO21 del ESP32

Te recomiendo que utilices cables con los mismos colores que he utilizado yo para que te resulte más sencillo seguir los ejemplos. SI usas otros colores, presta una atención especial.

En el caso de la versión con pantalla el conexionado es el mismo, aunque la posición de los pines cambia (*en breve encontrarás imágenes detalladas de la versión con display en esta página, lo estoy preparando)..

Grabar el ESP32 DEVKIT

Forma «extra-super-rápida y sencilla» (recomendada)

La grabación del firmware del medidor de CO2 de Sensirion en la Placa ESP32 DevKitC-32D no puede ser más rápida y sencilla. Ni siquiera tendrás que descargar ni instalar nada en tu PC.

Utilizando esta opción «extra-super-rápida y sencilla» grabarás el programa tal y como yo lo he preparado, sin necesidad de ninguna preparación ni de modificar nada.

Pulsa el botón “Install”, seleccionar el puerto donde tienes conectada tu placa y pulsar “Conectar”. Así de simple, la grabación del ESP32 se hará en un momento sin más complicación.

¡Tu navegador no es compatible! Tienes que usar Windows con Microsoft Edge o Google Chrome para ver el botón

Opción tradicional, utilizando el Arduino IDE

Con el Arduino IDE podrás realizar los cambios que quieras antes de grabar el firmware en el ESP32 y adaptarlo a tus gustos, necesidades y preferencias.

Puedes encontrar el código fuente original en el repositorio de Sensirion en GitHub.

Uso del medidor

Solamente tienes que conectarlo a 5V (mediante un cargador y cable USB, por ejemplo), abrir la App Sensirion MyAmbience en el móvil y ver los valores.

Para asegurarte de que los valores que proporciona el sensor sean estables, tendrás que esperar un tiempo tras encenderlo. En mis pruebas he visto que tras aproximadamente un minuto de funcionamiento los valores ya son completamente estables.

El medidor, además de por bluetooth, puede funcionar conectado a un ordenador, ya que saca por el puerto serie/USB las lecturas del sensor cada 2 segundos, de forma que puedes verlas con un Monitor serie (el del Arduino IDE, por ejemplo), graficarlas (con el Serial plotter de Arduino IDE, por ejemplo) o procesarlas desde cualquier software.

Algunas características adicionales del medidor son las siguientes:

  • Envío mediante «broadcasting» de valores en tiempo real mediante sin necesidad de conexión bluetooth.
  • Monitorización simultánea de los datos de los sensores desde varios dispositivos bluetooth simultáneamente (varios móviles y tablets a la vez).
  • Compatibilidad con Sensirion MyAmbience CO2 App – te permite monitorizar tus sensores, hacer gráficas con los valores recibidos y compartir y exportar datos.
  • Almacenamiento local de datos de los sensores para su posterior descarga (descarga de histórico de los sensores)

Cuando recibas el sensor SCD30 probablemente no esté calibrado por lo que las medidas de CO2 no serán correctas. Tendrás que mantener el sensor funcionando durante una semana (sin apagarlo) para que la calibración automática haga su trabajo y obtengas medidas fiables (más en el siguiente punto de este tutorial) o bien, si tienes poca paciencia, puedes forzar una calibración manual.

Calibración del sensor Sensirion SCD30

Calibración automática

El sensor de CO2 Sensirion SCD30 cuenta con un sistema de calibración automática, llamada por Sensirion Automatic Self-Calibration (ASC), y funciona bastante bien.

Su funcionamiento es el siguiente:

Puesto que la concentración de CO2 natural en la atmosfera es de aproximadamente 400 ppm (realmente algo menos de 420 ppm de media en el año 2021), cuando el ASC está habilitado, el sensor asume que, durante un periodo de aproximadamente 7 días, la mínima concentración de CO2 que encuentre será equivalente a 400 ppm.

Esto significa que, en una habitación bien ventilada, que en algún momento del periodo de siete días tenga aire limpio, la medida más baja será de alrededor de 400 ppm y el sensor asumirá esa concentración (sea la que sea) como punto cero, o 400 ppm.

Dicho de otra forma, el sensor asumirá que la medida más baja de cada periodo de 7 días será de 400 ppm.

Si, he explicado lo mismo de tres formas distintas, pero es necesario comprenderlo bien porque eso supone que:

  • No puedes utilizar la calibración automática si vas a utilizar el sensor en un invernadero, por ejemplo, ya que el aire del invernadero nunca bajará a 400 ppm.

Esta es una forma muy cómoda de mantener el sensor calibrado, utilizando el aire limpio como valor de referencia y automatizando el proceso.

El medidor de CO2 que te estoy mostrando en este tutorial tiene la calibración automática activada y funcionando. Ten en cuenta que, cuando lo construyas, tendrás que mantener el sensor conectado y funcionando durante siete días seguidos (sin apagarlo) para que se calibre (o hacer una calibración manual, como te indico más abajo).

Calibración manual

El sensor de CO2 Sensirion SCD30 permite la calibración manual para que no tengas que esperar esos siete días para que se calibre automáticamente, pero Sensirion no ha implementado esa posibilidad en su firmware.

He preparado un firmware especial de fácil uso e instalación por si quieres calibrar el sensor manualmente.

Este firmware, que solamente sirve para calibrar el sensor SCD30 a 415 ppm, hace lo siguiente:

  • Cuando lo pones en marcha, esperará cinco minutos, para que el sensor se estabilice, durante los cuales el LED de la placa (por defecto un LED conectado a GPIO2) estará parpadeando cada segundo.
  • Transcurridos los cinco minutos calibrará el sensor y, una vez calibrado, dejará encendido el LED de forma permanente.

Lo único que tienes que hacer para calibrar el sensor es grabar este firmware, poner el medidor en un sitio con aire limpio (en el exterior de una ventana, por ejemplo), encenderlo, esperar cinco minutos a que el LED se quede fijo y ya está. El sensor quedará calibrado a 415 ppm.

Pulsa el botón “Install”, seleccionar el puerto donde tienes conectada tu placa y pulsar “Conectar”. Así de simple, la grabación del ESP32 se hará en un momento sin más complicación.

¡Tu navegador no es compatible! Tienes que usar Windows con Microsoft Edge o Google Chrome para ver el botón

Este programa es extremadamente simple. Si quieres modificarlo, o ver cómo funciona, tienes el código fuente en el GitHub de eMariete.

Un consejo: El SCD30 es muy sensible a las corrientes de aire (como todos los sensores NDIR, en mayor o menor medida) por lo que es importante que al sacarlo al exterior para calibrarlo no le de mucho aire. Si hay cierto viento donde lo vayas a calibrar, puedes incluso meter el medidor en una bolsa de plástico transparente, no hermética, y pulsar el botón a través suyo). Si ya está en su caja no deberías tener problema.

La cesta de la compra

Si eres un usuario avanzado, compra los materiales que quieras donde tú quieras. No necesitaras muchos consejos porque todos son componentes fáciles de comprar y sin mucho misterio y si te encuentras con alguna diferencia sabrás adaptar el tutorial a esas diferencias tú mismo.

Si no tienes tanta experiencia, aquí te dejo algunos consejos y enlaces a los sitios de internet donde yo los he comprado (con alternativas a sitios donde otros usuarios de eMariete los han comprado) y que son recomendables.

Comprando los componentes en estos enlaces te asegurarás de tener exactamente los mismos componentes del tutorial y que todo coincida (no todas las placas, por ejemplo, aunque parezcan casi iguales y se llamen igual, tienen todos los pines en el mismo lugar o los tienen rotulados de la misma forma).

Comprar el sensor Sensirion SCD30

Sensor Sensirion SCD30

Esta es la misma tienda de AliExpress donde yo lo compré y me llegó a casa en 7 días.

Casi todos los usuarios de eMariete han comprado el sensor en este enlace y lo han recibido rápidamente.

Comprar la placa con el ESP32

ESP32-DevKitC-32D

Placa ESP32 DevKitC-32D

Aunque no es exactamente la misma placa que he utilizado en el tutorial (es una versión algo más moderna) tiene la misma distribución de conexiones y viene con los pines ya soldados.

He comprado otras cosas en esta tienda de AliExpress y es completamente de fiar.

Tienes también la opción de comprar la placa en Amazon. Es un poco más cara (no demasiado) pero la tendrás en tu casa rápidamente.

AZDelivery ESP32 ESP-WROOM-32 NodeMCU Modulo Wifi + Bluetooth Dev Kit C Placa de Desarrollo 2.4 GHz Dual Core con Chip CP2102 (sucesor del ESP8266) compatible con Arduino con E-Book incluido!
  • ✅ Novedad en el mercado: AZ-Delivery Módulo Placa de Desarrollo ESP32 NodeMcu WiFi CP2102 tiene el potente Microcontrolador ESP32 instalado.
  • ✅ Prototipos Rápidos: Esta placa de desarrollo ESP32 permite la dinámica creación de prototipos con una sencilla programación a través de un script Lua o en la construcción compatible con Arduino-IDE y Breadboard. Integra funciones Wi-Fi y Bluetooth.
  • ✅ Consumo ultra bajo de energía: Cuenta con chips Bluetooth Wi-Fi de modo dual de 2,4 GHz y TSMC, así como tecnología de bajo consumo de 40 nm.
  • ✅ Más funciones + Más Conveniente: El módulo tiene 38 pines y ofrece más funciones que un módulo de 30 pines. Es más pequeño y más conveniente de usar.
  • ✅ Este producto incluye un E-Book que proporciona información útil sobre cómo comenzar su proyecto, ayuda con una configuración rápida y ahorra tiempo en el proceso de configuración. Proporcionamos una serie de ejemplos de aplicación, guías de instalación completas y bibliotecas.

Versión con pantalla TFT en color

Por claridad, la he separado la versión con pantalla en color en su propio artículo.

¿Tienes problemas? Preguntas más frecuentes del medidor

Aunque el proyecto es muy sencillo, siempre existe la posibilidad de que te surja alguna duda o que aparezca algún tipo de problema.

En la lista que verás abajo, tienes respuestas a las preguntas y dudas más habituales.

8 comentarios en «Medidor de CO2 en tu móvil con ESP32 y sensor Sensirion SCD30 [VERSIÓN BÁSICA]»

  1. Great article! A really useful project would be to get the sensor data of the SDC-30 sent remotely to a Raspberry pi which has MQTT, Node-RED, an Influxdb and Grafana.

    Responder
  2. Lo he montado en ESP32WROOM-32, y me da el error que te adjunto:
    rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
    13:26:23.144 -> flash read err, 1000
    13:26:23.144 -> ets_main.c 371
    13:26:23.472 -> ets Jun 8 2016 00:22:57

    Responder
    • Hola Ernesto.

      Esto es antes de que CO2 Gadget se cargue y normalmente tiene que ver con error de hardware (algo mal conectado, problemas de alimentación, cable USB, etc).

      De todas formas, te recomiendo que cargues el firmware «avanzado», aquí:
      https://emariete.com/medidor-co2-gadget/

      Carga el firmware avanzado y revisa a fondo conexiones, alimentación, cables, etc. Si no lo consigues solucionar, pásate por el grupo de Telegram y seguro que lo solucionamos…

      Responder
  3. Bonjour Mariete,
    J’ai réalisé votre excellent projet, merci beaucoup pour vos indications très claires.
    Avant de mettre cette belle réalisation dans un boîtier digne de ce nom je voudrais vous simplement vous dire que dans mon cas l’affichage de la température et de l’hygrométrie ne sont pas assez proches de la réalité. Il y a un écart de 3,3 degrés et environ 5% pour l’hygrométrie.
    Ma question est la suivante. Peut-on modifier l’offset pour ces deux mesures afin d’obtenir un résultat proche de la réalité ?
    En attendant de vous lire, par avance je vous remercie beaucoup et bravo encore pour votre travail.
    P.S. je ne suis pas un spécialiste en informatique

    Responder
  4. Bonjour Mariete,
    Je vous remercie beaucoup pour votre réponse.
    Comme vous me l’avez suggéré, je suis allé un peu plus loin dans mes recherches et effectivement j’ai trouvé toutes les réponses à mes questions.
    C’est vraiment un projet extraordinaire, très utile (surtout en ce moment) pour un prix raisonnable de plus vos explications sont très détaillées et d’une très grande précision pour un novice comme moi.
    Je vais consulter votre site car il y a des applications qui m’intéressent beaucoup.
    Merci encore
    Cordialement

    Jimmy

    Responder

Deja un comentario