Medidor de CO2 Display TFT Color con TTGO T-Display Sensirion SCD30 – El CO2 Gadget

Un medidor de CO2 de alta calidad con pantalla en color y conexión con tu móvil mediante bluetooth que puedes llevarlo a todas partes gracias a su batería recargable (opcional) y saber, discretamente y en todo momento, la calidad del aire que respiras.

Aquí te traigo el medidor CO2 GADGET.

CO2 Gadget y App Sensirion MyAmbience

Este tutorial está acompañado de un video, que podrás encontrar más abajo, con todo explicado paso a paso y con detalle para la construcción del CO2 Gadget.

En este tutorial vas a ver, de una forma muy fácil, como:

  1. Preparar el Hardware: Aprender cómo conectar de sensor SCD30 a la Placa TTGO T-Display
  2. Grabar el firmware en la Placa TTGO T-Display
  3. Visualizar los niveles de CO2 en la pantalla TFT en color, tu ordenador y en móvil o tablet con la App Sensirion MyAmbience
  4. Extras: Algunos trucos, consejos e informaciones adicionales

Más abajo encontrarás algo que estoy seguro de que te encantará: Mi propia versión ampliada y mejorada del firmware del CO2 Gadget con nuevas características interesantes:

  • Más modos de funcionamiento: Bluetooth, WIFI, y puede que ESP-Now
  • Más sensores soportados, tanto de CO2 como de temperatura, humedad y presión
  • Optimizaciones de consumo para uso con batería
  • Soporte para más pantallas
  • Envío de datos por MQTT
  • Configuración mediante página web
  • Actualizaciones a través de su página web

Este tutorial es una versión mejorada, con pantalla en color y batería recargable, de otro proyecto publicado previamente: Medidor de CO2 en tu móvil con ESP32 y sensor Sensirion SCD30. Si aún no lo has visto, te sugiero que lo veas ahora, ya que contiene información básica:

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

Material necesario

Para completar este tutorial, y construir tu CO2 Gadget, vas a necesitar:

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 del CO2 Gadget es muy sencilla.

Te doy dos opciones para su montaje: una versión en la que sensor y placa están unidos mediante unos cablecillos y una versión super compacta en que sensor y placa están unidos como un solo bloque compacto.

Versión cableada

Para la primera versión, conecta, con cuidado, la Placa TTGO T-Display al Sensor Sensirion SCD30 como te explico a continuación. Presta atención a cada cable para que vaya del pin correcto del sensor al pin correcto de la placa.

Tienes que conectar mediante unos cablecillos:

  • El pin VIN del SCD30 al pin marcado 3V de la placa TTGO
  • El pin GND del SCD30 al pin marcado G de la placa TTGO
  • El pin SCL del SCD30 al pin marcado 22 de la placa TTGO
  • El pin SDA del SCD30 al pin marcado 21 de la placa TTGO
Imagen con propósitos ilustrativos tomada del tutorial de Sensirion en Github

Versión sándwich

El objetivo de este montaje es conseguir un medidor lo más compacto posible.

La versión sándwich del medidor va unida mediante unos pines o cables rígidos. De esta forma la Placa TTGO T-Display y el Sensor Sensirion SCD30 forman un único bloque.

Si estás montando esta versión, asegúrate de grabar el firmware específico para el modelo «sándwich», ya que sus pines son diferentes y esta versión del firmware está preparada para este cambio. Tienes más información sobre esto un poco más abajo.

Grabar la placa LILYGO® TTGO T-Display

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

Grabar el firmware en la placa LILYGO® TTGO T-Display es super fácil. No tienes que descargar ni instalar nada en tu PC.

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

Versión sándwich (SDA al pin IO22 y SCL al pin IO21)

¡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.

Ten en cuenta, si vas a grabar tu propio firmware, que en la versión compacta del medidor (en la que el sensor SCD30 y la placa TTGO T-Display van montadas juntas, como un sándwich, unidas mediante una tira de pines), los pines SDA y SCL están invertidos respecto a cómo vienen definidos en Arduino por defecto.

Normalmente en el ESP32 el SDA del bus I2C debe conectarse al pin IO21 y el SCL al pin IO22. En el sándwich, está al revés: SDA al pin IO22 y SCL al IO21.

Para que funcione tendrás que hacer dos modificaciones:

1. Tienes que añadir, justo al principio del sketch, las siguientes dos líneas:

2. Tienes que modificar la inicialización del bus I2C, que normalmente es Wire.begin() por Wire.begin(I2C_SDA, I2C_SCL), como aquí:

Recuerda, si utilizas cables y conectas SDA al pin IO21 y SCL a IO22 no tienes que hacer estas modificaciones.

Uso del medidor CO2 Gadget

El uso de este medidor es exactamente igual que el descrito en el tutorial original. Este tutorial es una versión mejorada, con pantalla en color y batería recargable, de otro proyecto publicado previamente (Medidor de CO2 en tu móvil con ESP32 y sensor Sensirion SCD30), con la diferencia de que en este podrás ver la concentración de CO2 en la pantalla en color.

La concentración de CO2 se muestra en diferentes colores dependiendo de su concentración:

  • Verde hasta 1000 ppm
  • Naranja de 1000 a 1600 ppm
  • Rojo a partir de 1600 ppm

Estos valores, para mi gusto, son más o menos correctos (un poco «generosos») en tiempos normales, pero ahora, en tiempos de pandemia, deberían ser más bajos.

En la versión avanzada del medidor puedes cambiar estos rangos para adaptarlos a tus necesidades y preferencias.

Calibración del sensor Sensirion SCD30

El Sensor Sensirion SCD30 utilizado en este tutorial debe ser calibrado, como todos los sensores.

Puedes esperar siete días, sacándolo un rato al aire fresco cada día, para que el sensor se auto-calibre o puedes hacer una calibración manual (recomendado) si no quieres esperar ese tiempo.

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 por defecto. 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.

Nota: La TTGO T-Display no tiene LED, aunque no lo necesitas para hacer la calibración. Además, en el firmware avanzado que estoy preparando, la calibración se hace mediante su menú en pantalla por lo que no necesitas ningún LED.

Para instalarlo, pulsa el botón “Install”, seleccionar el puerto donde tienes conectada tu placa y pulsa “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 (todos los sensores NDIR en mayor o menor medida) por lo que es importante que al sacarlo al exterior para calibrarlo no le dé 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

Te dejo aquí algunos consejos y enlaces a sitios de internet donde comprar los materiales.

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) y evitarás posibles fraudes o falsificaciones.

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.

Te recomiendo que lo compres aquí: Sensor Sensirion SCD30

Tienes también la opción de comprar el sensor en Amazon. Es más caro, pero lo tendrás en casa rápidamente.

Comprar la placa LILYGO® TTGO T-Display

Placa TTGO T-Display

Esta es la tienda oficial del LILYGO®, el fabricante de la placa, por lo que tienes garantía de seriedad y de que la placa es original.

Te recomiendo comprarla aquí: Placa TTGO T-Display

Verás que hay varias versiones. Te recomiendo que compres la que pone «4MB CH340K Chip».

Tienes también la opción de comprar la placa en Amazon. Es algo más cara, pero la tendrás en tu casa rápidamente.

ICQUANZX T-Display ESP32 WiFi y Placa de Desarrollo del módulo Bluetooth para Arduino LCD de 1.14 Pulgadas
  • Chipset: ESPRESSIF-ESP32 (Wi-Fi y Bluetooth) Microprocesador LX6 de 32 bits Xtensa de 240MHz de un solo núcleo / doble núcleo
  • FLASH: QSPI flash 4MB / PSRAM 8MB
  • Pantalla: IPS ST7789V 1.14 pulgadas, USB: Tipo-C
  • Corriente de trabajo: aproximadamente 67MA, corriente de reposo: aproximadamente 350uA
  • Interfaz modular: UART 、 SPI 、 SDIO 、 I2C 、 LED PWM 、 TV PWM 、 I2S 、 IRGPIO 、 ADC sensor sensor táctil del capacitor pre preamplificador DACLNA

Video-tutorial paso a paso

En el siguiente video tienes instrucciones paso a paso para la construcción de este medidor de CO2 para que te resulte muy fácil montarlo.

Actualización desde el video

Si quieres conseguir un montaje aún más limpio, poder colocar el cable de alimentación del sensor de esta manera:

Fíjate que tendrás que quitar el plástico del último pin de la tira para poder soldar el positivo por la parte interior (te recomiendo hacerlo antes de soldar el sándwich, te resultará mucho más sencillo).

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

Caja impresa en 3D

Con la idea de que el CO2 Gadget sea un medidor pequeño y compacto, que puedas llevar a cualquier sitio, lo ideal es utilizar una caja impresa en 3D.

Aquí tienes una colección de cajas, específicamente pensadas para CO2 gadget, para que des a tu proyecto un resultado casi profesional:

Cajas de Polipropileno Celular (PP)

Si no tienes acceso a una impresora 3D, puedes hacer una caja de polipropileno celular (PP) muy fácilmente.

Aquí tienes el tutorial paso a paso completo:

Uso con batería

Lo primero que tienes que tener en cuenta, para tener las expectativas correctas, es que este no es un medidor de bajo consumo, aunque puedes alimentarlo con baterías para llevarlo contigo donde quieras fácilmente.

La placa TTGO T-Display cuenta con cargador de baterías incorporado y cargará la batería conectada a unos 300mA (por defecto, aunque se puede cambiar sustituyendo una resistencia) cuando esté conectada por USB.

El uso principal de este medidor es conectado a un alimentador o cargador y la batería es un extra para utilizarlo de forma autónoma durante unas horas de vez en cuando. Por supuesto, nada te impide poner una batería tan grande como quieras y conseguir autonomías mucho más largas.

En la siguiente fotografía puedes ver uno de los prototipos de caja impresa en 3D con una batería de 800mAh (o 1000mAh, la verdad es que es una batería vieja y no sé exactamente de cuánto es).

Si quieres mejorar la autonomía, te sugiero que cargues la versión ampliada y mejorada del firmware, en la que he incluido varias optimizaciones de consumo para mejorar la autonomía.

En la siguiente imagen puedes ver el perfil de consumo del medidor durante 10 segundos:

Perfil de consumo del medidor sin optimizaciones

Como ves, el medidor consume aproximadamente 97mA, que podemos redondear a 100mA.

Esto significa que teóricamente tendríamos una autonomía de aproximadamente 10 horas de funcionamiento continuo con una batería de 1000mAh, 20 horas con una batería de 2000mAh y unas 35 horas si le instalamos una batería de tipo 18650 de 3500mAh. En la práctica está autonomía será menor porque el hardware no está especialmente optimizado y no será capaz de exprimir toda la energía de la batería.

Debes tener en cuenta que, como en cualquier aparato alimentado por batería, debes utilizar una batería que cuente con las pertinentes protecciones. Como mínimo la batería debería tener protección contra cortocircuitos, sobrecarga, sobredescarga, y sobrecorriente.

Muchas baterías incluyen estas protecciones, pero si la tuya no las tuviera, tendrás que poner una placa de protección como esta:

Protección batería

👉 Placa protección batería en AliExpress

Versión avanzada del firmware CO2 Gadget

Ya está disponible la versión mejorada y ampliada del firmware. No dejes de visitar el siguiente post, en el que te lo presento y te explico todo sobre él:

¿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 esta lista tienes respuestas a las preguntas y dudas más habituales.

Comparte este artículo

Muchas gracias por colaborar con lo más difícil: COMPARTIRLO Y DARLO A CONOCER. De nada sirve lo mucho que yo pueda trabajar en estos tutoriales si la gente no los llega a conocer. ¡MUCHAS GRACIAS A TODOS LOS QUE COMPARTÍS!

Justo debajo tienes unos botones que te facilitarán compartirlo en Facebook, Twitter, WhatsApp y Telegram.

❤

20 comentarios en «Medidor de CO2 Display TFT Color con TTGO T-Display Sensirion SCD30 – El CO2 Gadget»

  1. Buenas.
    Soy primerizo y he hecho este montaje. Con el firmware del sandwich la pantalla se quedaba mostrando el logo de Sensirion. En la app se muestra siempre -45 grados Celsuis, 0 HR y 0 ppm en C02.
    He probado con la versión avanzada. Ahora sale el logo de emariete y después la pantalla ya muestra 0ppm en verde. La app también muestra lo mismo de antes.
    No sé si hay algo que pueda haber hecho mal… Ah, me costó dar con los drivers adecuados, creo que los que funcionaron bien fueron los del enlace de la página china.
    Gracias y enhorabuena por tu trabajo.
    P.

    Responder
    • Hola P.

      Es muy probable que se deba a un error en el cableado. Sería conveniente ver fotos detalladas del montaje, donde se aprecien bien las conexiones, para asegurarnos. También es muy importante cargar la versión adecuada del firmware (versión normal o sandwich), dependiendo del montaje que hayas hecho.

      De lo contrario lo mejor será conectar el medidor al ordenador por el puerto USB y con un monitor serie ver los mensajes que va sacando el medidor por el puerto USB, que son muchos e indican paso a paso lo que va sucediendo.

      Te recomiendo que te pases por el grupo de chat de Telegram dónde será mucho más fácil verlo: https://t.me/emariete_chat

      ¡Seguro que damos con el problema enseguida!

      Un saludo.

      Responder
        • Tan solo me paso de nuevo decir que está todo funcionando perfectamente y para agradecer la ayuda prestada y tu trabajo para hacer que cualquier manazas como yo pueda llegar a montar y hacer funcionar esto.
          Un saludo.
          P.

          Responder
          • Estupendo! Me alegro un montón de que te haya funcionado perfectamente! 😀

            Visita el grupo de Telegram de vez en cuando para no perderte las actualizaciones de firmware de CO2 Gadget. ¡Pronto habrá novedades interesantes!

  2. Hi, I like this idea, I did read your other articles. Great work. It is possible to use MH-Z19B or Senseair S8 LP sensor, with this TTGO as they are cheaper?

    Responder
  3. Great work! Thank you very much for your effort.
    I have a question about the battery. You said in the article that we must use battery with build in protection (overcharging etc.).
    But the ttgo t-display esp32 has a build in battery circuit. Doesn’t that take care of the charging? So would it be possible to use a simple cell like the panasonic ncr18650b?
    And alternatively, would it be possible to connect 3 x AA NiMh to the board?

    Responder
  4. Hi Patrick.

    The built-in circuit in the TTGO T-Display board is just a charger, that’s why you need additional protections.

    I don’t have any experience with the Panasonic NCR18650B battery, best that you check in the datasheet with the exact reference if it has built-in protection or not.

    The charger on board is only good for Li-Ion and Li-po batteries. It can’t charge NiMh batteries.

    Best regards! 😀

    Responder
    • Hi Mariete,
      Thank you for your answer.
      After some research I found that the the charging circuit in the TTGO protects against overcharging but NOT against over-discharging, which can also ruin the battery. The NCR18650B does not have protection.
      I also found this readit- thread where someone tried NIMH, with success, but it was only experimental, but it might work: https://www.reddit.com/r/esp32/comments/hcku6p/ttgo_tdisplay_with_nimh/
      For this project I will order a LiPo-pack (with protection), but when I have time I will also try some NiMh AA’s, because they are cheap and readily available.
      Kind Regards

      Responder
  5. Great work, thank you for sharing the results of your time and efforts !
    I’ll take a look to your code, trying to understand how you deal with clockstretching on esp32…
    And a question, the sensirion App do not fetch the data, and I do not see any part of your code that could possibly be related to this aspect. Do I miss something or this ability was left alone ?

    Responder
    • Hi Mathieu.

      The code in this tutorial is not mine. It’s from Sensirion. I only wrote the tutorial.
      When I tested it, few months ago, fetching the data from the meter to the phone via BLE was working fine. If the problem is with the Sensirion’s code you should open an issue at their GitHub repository (link in the post).

      My code is at the post «CO2 Gadget: Advanced CO2 Meter«. If the problem is with my code and you think it’s a bug you should, please, open the issue at CO2 Gadget’s GitHub repository.

      Responder
  6. Buenos dias. Primero decir que soy un completo inutil en esto de la electronica. Os llevo leyendo un tiempo y me da pena no enterderlo tan facil como vosotros. Intente hacer el medidor de co2 y ahi se quedo en el intento. Se queda en bucle dando un fallo 0x10 y 0x13. He cambiado las soldaduras de sandwich a cable y nada. No se si tiene solucion o dejarlo por imposible. Os podria mandar los sensores y os los quedais si me los he cargado o si tiene solucion me decis. Los envios los pagari con mucho gusto. Un saludo y gracias por vuestro tiempo.

    Responder
    • Hola Arkaitz.

      El error que te da probablemente no tenga nada que ver con que se haya estropeado nada, sino que será alguna otra cosa (puede que cualquier tontería).
      Lo mejor es que lo veamos a través del grupo de Telegram https://t.me/emariete_chat porque habrá que hacer un poco de investigación y alguna prueba para encontrar el problema…
      Seguro que lo dejamos solucionado enseguida.

      Un saludo.

      Responder
      • Buenos dias. Como soy novato en todo lo relacionado con la electronica las soldaduras tambien dejan mucho que desear. Gracias por el tiempo y en breve os pongo la chapuza y vemos si se puede solucionar. Muchas gracias

        Responder
  7. Hello,
    Thank you for the information and your blog.
    The reference of the TTGO I have is 19-6-28 V1.1 XY-CP / 16MB CH9102F Chip
    [ https://fr.aliexpress.com/item/33050667207.html ]

    The pins are different from the TTGO in the tutorial
    G – 36
    21 – 37
    22 – 38
    17 – 39
    2 – 32
    15 – 33
    13 – 25
    12 – 26
    G – 27
    G – G
    3V – 5V
    (connect for USB)
    How can I connect it to the SCD 30 captor to make the system work in wired version ?
    Is your firmware compatible ?
    Thank you for your answer.

    Responder
  8. As I am not sure you have received my message I am sending it again…
    Thank you in advance for your help.

    Hello,
    Thank you for the information and your blog.
    The reference of the TTGO I have is 19-6-28 V1.1 XY-CP / 16MB CH9102F Chip
    [ https://fr.aliexpress.com/item/33050667207.html ]

    The pins are different from the TTGO in the tutorial
    G – 36
    21 – 37
    22 – 38
    17 – 39
    2 – 32
    15 – 33
    13 – 25
    12 – 26
    G – 27
    G – G
    3V – 5V
    (connect for USB)
    How can I connect it to the SCD 30 captor to make the system work in wired version ?
    Is your firmware compatible ?
    Thank you for your answer.

    Responder

Deja un comentario