Medidor CO2 Easy con ESP8266 (NodeMCU) y sensor Senseair S8

Modificado por última vez hace 1 año

Vamos a ver cómo montar el medidor CO2 Easy con un sensor Senseair S8 LP.

Este va a ser un artículo muy corto, solo con las diferencias importantes con respecto al montaje con el sensor MH-Z19B o MH-Z19C. Vamos a ir «al grano«.

Si no has visto el artículo «Un medidor de CO2 casero con Wifi contra el coronavirus«, deberías verlo ahora ya que este montaje se basa en él. Casi todo es igual y aquí solo trataremos las diferencias.

¿Por qué utilizar el sensor Senseair S8?

Creo que la pregunta correcta sería, ¿por qué montar el medidor CO2 Easy con otro sensor?

Hay varios motivos importantes que se me ocurren para utilizar este sensor, en lugar del MH-Z19B o MH-Z19C.

  • El sensor NDIR Senseair S8 es un sensor de mejor calidad, de una empresa sueca
  • Proporciona medidas más precisas
  • Tiene mayor duración
  • Por el momento no hay falsificaciones
  • Da menos problemas con la alimentación

Parecidos en el montaje

La construcción del medidor con este sensor es prácticamente idéntica. El sensor es muy parecido, tiene casi la misma forma física y las conexiones son iguales.

Para toda la parte de montaje, puedes seguir el tutorial «Un medidor de CO2 casero con Wifi contra el coronavirus«. Las conexiones son exactamente iguales.

Diagrama de conexión NodeMCU a Senseair S8

Como en otros casos, te recomiendo que si tu placa NodeMCU dispone que un pin VU (no todas lo tienen), conectes el positivo del Senseair S8 LP (VCC) a ese pin, en lugar de Vin.

Diferencias

Las diferencias en el montaje del medidor se centran en el firmware, ya que la comunicación con este sensor es diferente, aunque la configuración, en general, es básicamente igual que con los sensores MH-Z19B o MH-Z19C.

Configurar ESP Easy para el Senseair S8

La mayor diferencia consiste en que tenemos que elegir el dispositivo correcto en el menú «Devices» (dispositivos).

A continuación, nos aparecerá la página web de ESPEasy en la que haremos la configuración del sensor.

Simplemente tenemos que introducir la información como se muestra a continuación.

¿Dónde comprar el sensor Senseair S8?

Te dejo aquí el enlace donde lo he comprado yo: Senseair S8 LP. Me llegó muy rápido (una semana):

Cuesta unos 24 Euros aquí: Senseair S8 LP

Es una tienda con muchas valoraciones positivas y el envío es por AliExpress Standard Shipping, por lo que deberías tenerlo en casa en unas dos semanas.

Ten cuidado porque existen otras versiones del sensor Senseair S8 que no son válidas para el fin de queremos (los hay parecidos, por ejemplo, para el sector del automóvil).

Calibración del sensor de CO2 Senseair S8 LP

El Senseair S8 LP tiene un sistema de calibración automática (ABC, Automatic Baseline Correction) muy bueno por lo que, en condiciones normales, no tendrás que hacer calibración manual y te podrás desentender de ella.

El algoritmo ABC vigila permanentemente la lectura de CO2 mínima durante un periodo preconfigurado y corrigen lentamente cualquier deriva en el largo plazo comparado con la concentración de 400 ppm (o 0.004%vol) de CO2 esperada al aire libre.

El máximo ajuste permitido por el algoritmo ABC del Senseair S8 es de 30-50 ppm por cada periodo de ABC.

El periodo de ABC configurado de fábrica es de 8 días.

Debido a un bug en el propio sensor Senseair S8, evitar problemas y desajustar un sensor, ESPEasy no permite iniciar la calibración del sensor por software (más abajo te explico como calibrarlo mediante una regla de ESPEasy).

Si quieres calibrar manualmente el sensor deberás hacer lo siguiente:

Tienes que conectar el pin bCAL_in a GND durante un mínimo de 4 segundos y un máximo de 8 segundos e iniciarás una calibración manual.

Antes de iniciar la calibración manual, el sensor debe estar a unos 400 ppm durante algunos minutos (te sugiero un mínimo de 15 minutos) para que el sensor se estabilice. Esto es: tendrás que dejar el sensor funcionando en el exterior durante, al menos, 15 minutos antes de comenzar la calibración.

El procedimiento es muy fácil:

  • Dejas el sensor funcionando en exterior, al menos, 15 minutos
  • Unes el pin bCAL_in a GND durante más de 4 segundos y menos de 8 segundos
  • Mantienes el sensor en el exterior durante unos 5 minutos para que complete su calibración y se estabilice
  • Ya está. El sensor asumirá la concentración que haya en ese momento como 400 ppm

Es importante que no dejes el pin bCAL_in unido a GND durante más de 8 segundos, ya que si se superan los 13 segundos el sensor inicia un modo de calibración diferente, que no es el que te interesa (es un modo de calibración con una concentración de 0 ppm de CO2, para lo que tendrías que sumergir el sensor en nitrógeno, por ejemplo).

En mi experiencia, si el sensor recibe aire del exterior de vez en cuando, la calibración manual es completamente innecesaria.

Sin embargo, si el sensor está colocado en un sitio que rara vez se ventila bien con aire del exterior, te recomiendo calibrarlo manualmente en exterior de vez en cuando.

Calibración del sensor de CO2 Senseair S8 con una regla de ESPEasy

Tener que hacer un puente entre el pin bCal_in y GND manualmente cada vez que quieres calibrarlo puede ser poco conveniente, por lo que a continuación te explico cómo hacer la calibración mediante una regla de ESPEasy de forma cómoda y sin tener que acceder directamente al medidor.

Lo que vamos a hacer es decirle a ESPEasy que controle él el pin bCal_in y que se encargue él de poner el PIN a GND durante 5 segundos cuando queramos calibrar mediante una orden.

Para hacer esto tendremos que hacer dos cosas:

  • Conectar el pin bCal_in del Senseair S8 a un pin del ESP8266
  • Incluir una regla que conecta bCal_in a GND durante 5 segundos

El primer paso será conectar bCal_in a un pin de ESP8266 mediante un cablecillo. Yo he utilizado el pin D5 (GPIO14).

En la pestaña «Rules» (reglas) de ESPEasy tendremos que incluir lo siguiente:

On CalibrateS8 do
  GPIO,14,0
  TimerSet,1,5
EndOn

On rules#timer=1 do
  GPIO,14,2
endon

On System#Boot do
  GPIO,14,2 // Sets GPIO14 (calibration PIN) to high impedance
EndOn

El primer bloque «On CalibrateS8» hasta «EndOn«, pone el pin GPIO14 (D5) a nivel lógico bajo (lo une a GND) y establece el temporizador número 1 para que se ejecute cinco segundos después.

El segundo bloque «On rules#timer=1 do» hasta «EndOn«, se ejecuta cuando el temporizador número 1 llega a cero (a los cinco segundos) y pone el pin GPIO14 (D5) a nivel lógico de alta impedancia (como si quedara «suelto» otra vez, desconectándolo de GND).

El tercer bloque «On System#Boot do» hasta «EndOn«, se ejecuta automáticamente cada vez que ESPEasy se inicia (cuando lo encendemos o reiniciamos) y se encarga de que el pin GPIO14 (D5) quede a nivel lógico de alta impedancia (como si quedara «suelto») cada vez que el medidor arranca.

Imagen de las reglas utilizando el temporizador número 2 en vez del 1 (puedes utilizar el que quieras, que no estés usando para otra cosa)

Ya está. Ahora lo único que tenemos que hacer cuando queramos calibrar nuestro Senseair S8 es introducir la siguiente línea en nuestro navegador (sustituyendo 192.168.1.77 por la IP de tu medidor de CO2):

 http://192.168.1.77/control?cmd=event,CalibrateS8  

Verás que el navegador carga una página en la que pone «OK» y el sensor será calibrado.

15 comentarios en «Medidor CO2 Easy con ESP8266 (NodeMCU) y sensor Senseair S8»

  1. Hola nuevamente.
    Ayer me llegó el Sensair s8, hoy la pantalla y mañana ESPero que me llegue el ESP, así que iniciaré el trabajo de montaje el fin de semana. Eso sí, acabo de llevar un poco de susto al leer en las especificaciones del S8 https://rmtplusstoragesenseair.blob.core.windows.net/docs/publicerat/PSP126.pdf que advierte que NUNCA TOCAR CON LOS MANOS DESNUDAS EL SENSOR (habría que utilizar guantes ESD, creo que uno de látex sirve) y yo ayer ya lo estuve manoseando pa echarle un vistazo…. Como me parece que no indicas nada al respecto en este y otros tutoriales, ¿sabes si realmente por el hecho de haberlo tocado unos minutos se puede haber fastidiado?. Con mi atrevimiento y tu permiso…en cuando me ponga a la tarea, si tengo algún tropiezo que no pueda solventar, pasaré por aquí a consultar.
    Saludos.

    Responder
    • Hola Llorinte.

      El datasheet del que pones el enlace no corresponde a este sensor sino a otro modelo y está enlazado a una web que no es la oficial. Con tu permiso he editado tu mensaje para poner el correcto y que no confunda a ningún usuario.

      El correcto, oficial del fabricante, es el que está enlazado en este blog (que es este: https://rmtplusstoragesenseair.blob.core.windows.net/docs/publicerat/PSP126.pdf).

      Dicho esto: Este tipo de componentes suele, en general, ser sensible a las descargas electrostáticas por lo que hay que manipularlos con cierto cuidado. Otra cosa es que se estropeen fácilmente por eso, y no es tan fácil. No conozco un solo caso de los usuarios de este blog que haya montado el medidor (y créeme que son muchos) que se le haya estropeado el sensor por haberlo tocado con las manos.

      La posibilidad, siendo estrictos, está ahí, pero es bastante pequeña. Yo mismamente tengo aquí desde hace años varios sensores de este tipo de diferentes fabricantes y no solo los toco con las manos, sino que los tengo amontonados por la mesa con cosas por encima…

      No obstante, pondré un aviso en el tutorial por si acaso.

      Responder
      • Perfecto. Gracias por la corrección, lo había sacado de un youtube ruso sin reparar en que el enlace era de otro modelo distinto al que tu pones, y sólo me quedé con esa advertencia que también había visto en otra serie de vídeos sobre calibración del S8 que lo manipulaba con guantes y que si es el igual al de tu tutorial (https://www.youtube.com/watch?v=n059hQpybsE) ,
        Saludos.

        Responder
  2. Hola Mariete. Gracias por este tutorial. Ya tengo el sensor y hoy me llega la placa. Tengo una duda, ¿cómo sujetar correctamente el sensor? He comprado la caja de plástico que recomiendas, con la placa supongo que no habrá problemas para atornillarla pero el sensor no sé como colocarlo para fijarlo bien. Gracias!
    Un saludo.

    Responder
    • Hola Juan Luis.

      Yo te recomiendo que pegues el sensor a la caja de alguna manera. Yo lo hago con pegamento caliente pero también puedes utilizar cinta adhesiva de doble cara.

      Un saludo.

      Responder
      • Me parece buena idea. Justo hace un rato me acaban de llegar el resto de piezas. La caja tiene muy buena pinta, tocará hacer bricolage con ella también.
        Gracias! Un saludo.

        Responder
  3. Hola.
    Nada…me está desesperando un poco esto…después de la guerra que me dio el soldar los cables al Senseair, la instalación del firmware me fue imposible. me da un error que no veo que lo tengas reportado por nadie en el tutorial principal. Es con el segundo Nodemcu Lolin V3 que pruebo y me da el mismo error al flashearlo. Sí me carga el firmware del medidor de partículas del proyecto https://sensor.community/fr/sensors/airrohr/ que ya tengo funcionando perfectamente.
    Me da el siguiente error y un log del que no entiendo nada (probé con los 2 puertos COM3 y COM4 que puedo seleccionar. En otro PC no me deja cargar los drivers CH341…no sé por que razón, esta noche probaré con otro PC, a ver….):
    Flash didn’t complete due to error [3], please read log file:
    20210209194252.txt
    (or try pressing reset on the unit)
    Start flashing on COM3 (approx 105 seconds).
    _______________________________________________________________
    El log a que hace referencia dice:

    ######2021-02-09######
    #######0.04.007#######
    ######FLASH INFO######
    BIN file: ESP_Easy_mega_20201130_normal_ESP8266_4M1M.bin
    COM port: (COM3) USB-SERIAL CH340 (Port_#0001.Hub_#0001)
    Baud rate: 115200
    ######POST FLASH######
    No post flash information entered…
    ######FLASH LOG######
    [esptool.exe -vv -cd nodemcu -cb 115200 -cp COM3 -ca 0x00000 -cf «C:\Users\meteo2\Downloads\espyeasy Medidor CO2\bin\ESP_Easy_mega_20201130_normal_ESP8266_4M1M.bin»]
    [09/02/2021 19:42:53] esptool v0.4.12 – (c) 2014 Ch. Klippel
    [09/02/2021 19:42:53] setting board to nodemcu
    [09/02/2021 19:42:53] setting baudrate from 115200 to 115200
    [09/02/2021 19:42:53] setting port from to COM3
    [09/02/2021 19:42:53] setting address from 0x00000000 to 0x00000000
    [09/02/2021 19:42:53] espcomm_upload_file
    [09/02/2021 19:42:53] espcomm_upload_mem
    [09/02/2021 19:42:53] error: Failed to open COM3
    [09/02/2021 19:42:53] error: espcomm_open failed
    [09/02/2021 19:42:53] error: espcomm_upload_mem failed
    [2021-02-09 19:42:53] STOPPED due to 3 errors! (try reset on the unit, then start a new flash attempt)

    (Reseteé unas cuantas veces con el botón de la izda del nodemcu….pero nada, me da error y un nuevo log)
    Perdón por la extensión del mensaje…una vez lo leas puedes borrar todo lo que veas innecesario.
    Gracias y Saludos.

    Responder
    • Hola Llorinte.

      Vaya, siento que tengas problemas y lamento tu frustración. 😞

      Lo que te dice el log es solo que no puede abrir el puerto COM3.

      Revisa estos puntos:

      1. ¿No tendrás algún otro programa que esté utilizando el COM3?
      2. Asegúrate de que el NodeMCU esté realmente conectado a COM3
      3. Intenta ejecutar el programa de grabación como administrador (botón derecho en el icono y «Ejecutar como administrador»)
      4. Otra opción es que cargues el fichero de firmware con el mismo programa de grabación que estás utilizando con el otro proyecto y no te da problemas.
      5. Desinstala los drivers e instálalos de nuevo.
      6. Asegúrate de no tener conectado el sensor de CO2 (y aún mejor, ningún otro sensor) cuando vayas a flashear.

      De todas formas, te sugiero que te pases por el grupo de Telegram: https://t.me/emariete_chat seguro que entre todos encontramos una solución.

      Un saludo.

      Responder
  4. Hello,

    I know nothing about electronics.

    I just received the Senseair S8 sensor and am waiting for the NodeMCU CP2102 kit that includes a SSD1306 OLED.

    The diagrams above don’t show how to build a CO2 detector with those two parts, and how to power them.

    Should I use those:
    OLED VDD → NMCU VIN
    Senseair G+ → NMCU VU
    ?

    Thank you.

    Responder
  5. Hi Mariete,
    thanks for your «bring it on the point» tutorial. Everything works well with a little exception. It is not possible to calibrate the sensor, when I connect the bcal pin to the GND pin. May be I made something wrong. My question is, should I connect both pins during running or should I disconnect the GND pin first before the bcal pin get in touch with the GND pin? And whats about restart the sensor?
    Thanks a lot
    Dirk

    Responder
    • Hi Dirk.

      Please, review the procedure for calibration.

      You should have no problem calibrating the Senseair S8 if you follow the procedure described in «Senseair S8 LP CO2 Sensor Calibration» to the letter (pay attention to details, such as pin connection times and stabilisation).

      You must connect the bCAL and GND pins while the sensor is running (this causes the Senseair S8’s internal processor to run a calibration program, so it must be powered on).

      You do not need to reset the Senseair S8 to calibrate it.

      Best regards.

      Responder

Deja un comentario