Caja impresa en 3D para el medidor de CO2

Última modificación el 17 enero, 2021

Han sido muchos los lectores del blog que han pedido una caja impresa en 3D para el medidor de CO2.

¡Vale, reto aceptado!

He diseñado una caja a medida para imprimir en 3D, sencilla y de fácil impresión, sin necesidad de soportes ni puentes.

Características

Las principales de características y beneficios de la caja, son las siguientes:

  • Fácil de imprimir (sin soportes ni puentes).
  • Diseño con dinámica térmica para conducir el calor lejos del sensor de CO2
  • Sistema de instalación de NodeMCU sin soldaduras (opcional)
  • Preparada para instalar un display OLED de 0,96″
  • Preparada para la instalación de LEDS para avisos por colores
  • Preparada para instalación de zumbador
  • Diseño de carátula frontal a medida de vinilo

Impresión

La caja es muy fácil de imprimir, aunque, al tener cierta superficie, puede dar problemas de warping (levantamiento de las esquinas) dependiendo de la impresora y sus ajustes cuando se imprime con ABS.

Yo he impreso el prototipo con PETG, aunque se podría hacer perfectamente con PLA.

En cierto modo el PLA sería mejor porque es más estable y las medidas son más exactas. Esto es especialmente importante para los pines del NodeMCU (yo he tenido que repasar los agujeros con una pequeña broca).

La caja no soporta ninguna tensión y es robusta estructuralmente, por lo que podemos imprimirla con un infill del 10% sin ningún problema ni riesgo de que quede demasiado endeble.

El tiempo de impresión, en mi caso, ha sido de aproximadamente dos horas. Dependiendo de la impresora, velocidad y calidad deseada, el tiempo de impresión puede variar bastante.

Archivo de impresión

He dejado el fichero STL para su impresión en Thingiverse. Podéis acceder a él aquí.

Falta la tapa trasera que, de momento, no he diseñado. Esta es una primera versión y probablemente haga otra versión con algunas mejoras que quiero introducir, por lo que aprovecharé para diseñar la tapa trasera ya para la nueva versión.

Si no llegara a hacer la nueva versión, diseñaría la tapa trasera para esta.

Conexiones

El video cubre los detalles básicos necesarios para la conexión de la pantalla OLED. Para más información, recomiendo ver el artículo Conectar una pantalla OLED SSD1306 a ESPEasy.

Diagrama con las conexiones del NodeMCU a la pantalla SSD1306.

Diagrama con las conexiones del NodeMCU a los LEDs WS2812 (Neopixel)

Si explico, con más detalle, la conexión de los LEDs WS2812 (también llamados Neopixel) y su configuración en ESPEasy, ya que todavía no tengo listo el artículo hablando del uso de los LEDs WS2812 (Neopixel) con ESP Easy en profundidad (lo tengo ya muy avanzado, estoy editando el video y grabando algunas tomas que faltan).

En el ejemplo he utilizado tres LED WS2812 pero, una de las grandes ventajas de este tipo de LED, es que puedes utilizar los que quieras. Ten en cuenta el consumo, cada LED puede consumir hasta 60 mA.

Diagrama con las conexiones del NodeMCU al módulo MH-Z19 o Senseair S8LP

Ambos módulos, MH-Z19 o Senseair S8LP, son compatibles en cuanto a conexiones, por lo que conexión será idéntica.

Configuración ESPEasy

Una vez tenemos hechas las conexiones, tenemos que configurar el ESPEasy para que reconozca los dispositivos e incluir unas sencillas reglas para que se comporten de la forma que queramos.

Básicamente, tendremos que hacer lo siguiente:

  1. Añadir el sensor MH-Z19B a ESPEasy
  2. Añadir el display SSD1316 a ESPEasy
  3. Añadir los LEDS WS2812 a ESPEasy
  4. Activar el motor de reglas de ESPEasy
  5. Añadir una regla para que cuando se encienda lo haga con los LEDS apagados
  6. Añadir una regla para que cambie el color de los LEDS dependiendo del nivel de CO2

Añadir el sensor MH-Z19B a ESPEasy

Este artículo, que estás leyendo, es sobre la caja impresa en 3D. Se supone que ya tienes un Medidor de CO2 casero funcionando. Si no fuera así, te recomiendo ver el artículo del medidor de CO2 casero y su video. En él encontrarás todos los detalles necesarios y mucha información útil.

Añadir el display SSD1316 a ESPEasy

La conexión de esta pantalla es muy sencilla y está explicada con detalle en el video.

No voy a repetir aquí si programación, ya que en el artículo Conectar una pantalla OLED SSD1306 a ESPEasy tienes instrucciones muy detalladas sobre cómo conectar la pantalla y cómo configurarla con un video muy detallado.

Añadir los LEDS WS2812 a ESPEasy

Estoy preparando un artículo, con video detallado, explicando con mucho detalle como conectar los leds WS2812 a ESPEasy y cómo utilizarlos.

No obstante, su conexión básica y su uso está explicada suficientemente explicado en el video que puedes encontrar más abajo.

¿Quieres añadir un zumbador?

La caja está preparada para la instalación de un zumbador, En el artículo Utilizar un zumbador (buzzer) con ESPEasy tienes todo lo necesario para su conexión y uso.

Activar el motor de reglas de ESPEasy

Lo primero que debemos hacer, es activar el motor de reglas de ESPEasy, ya que, por defecto, cuando lo instalamos, estará desactivado.

Para ello, vamos a la pestaña “Tools” (Herramientas) y pulsamos el botón “Advanced” (Avanzado):

Se abrirá la ventana con las opciones de configuración avanzadas de ESPEasy.

Allí debemos activar las opciones “Rules” (Reglas) y “Old Engine” (Viejo Motor):

Añadir una regla para que cuando se encienda lo haga con los LEDS apagados

Ahora tenemos que escribir nuestras reglas, en la pestaña “Rules” (Reglas). Esta pestaña no aparecerá hasta que no habilitemos el motor de reglas, como hemos visto en el punto anterior:

En el editor de reglas que aparece en ESPEasy, escribiremos las siguientes reglas (recomiendo copiar y pegar, para evitar errores y dejar los comentarios – líneas que empiezan por // – que ESPEasy ignorará).

Deberás sustituir Senseair#PPM por el nombre de dispositivo y valor que hayas elegido (en la pestaña “Devices” – Dispositivos). En esta captura de pantalla el nombre del dispositivo es CO2, por lo que en vez de Senseair#PPM escribiríamos CO2#PPM:

On System#Boot do
  NeoPixelAll,0,0,0 // LEDS APAGADOS
EndOn

La línea NeoPixelAll,0,0,0 ordena a ESPEasy que apague todos los LEDS.

Realmente lo que le dice esta línea es que ponga el Rojo a 0, el Verde a 0 y el Azul a 0.

Al estar la línea NeoPixelAll,0,0,0 entre “un bloque“, formado por la línea On System#Boot do y EndOn, le indicamos a ESPEasy que lo ejecute al arrancar el NodeMCU (cualquier cosa que metamos dentro de ese bloque se ejecutará cada vez que el NodeMCU se encienda).

Añadir una regla para que cambie el color de los LEDS dependiendo del nivel de CO2

Añadimos este otro bloque:

On SenseairCO2#PPM do
  if [SenseairCO2#PPM]>2000
    NeoPixelAll,32,0,0 // LEDS ROJO
  Elseif [SenseairCO2#PPM] > 1500
    NeoPixelAll,16,9,0 // LEDS NARANJA
  Else
    NeoPixelAll,0,32,0 // LEDS VERDE
  Endif
endon

Este bloque ordena a ESPEasy que cada vez que reciba un nuevo valor desde el sensor SenseairCO2 (On SenseairCO2#PPM do), compruebe lo siguiente:

si el valor de SenseairCO2#PPM es superior a 2000 y, de ser así, encienda todos los LEDs de la tira con los siguientes valores: Rojo a 32, el Verde a 0 y el Azul a 0.

si no se cumple lo anterior (que el valor de SenseairCO2#PPM sea superior a 2000), comprobará si el valor es superior a 1500 y, si se cumple, encienda todos los LEDs de la tira con los siguientes valores: Rojo a 16, el Verde a 9 y el Azul a 0 (un amarillo/naranja).

si no se cumple lo anterior (que el valor de SenseairCO2#PPM sea superior a 1500), y sin hacer más comprobaciones, encenderá todos los LEDs de la tira con los siguientes valores: Rojo a 0, el Verde a 32 y el Azul a 0.

la línea endon termina el bloque de comprobaciones que empezó con On SenseairCO2#PPM do.

El resultado final, debería ser similar a este:

Añadir una regla para hacer un semáforo de LEDs

Con los LEDs WS2812 es posible crear un efecto de semáforo, en el que, con una tira de tres LED, colocados de manera vertical, podremos encender el primer LED de la tira en verde, el segundo en naranja y el tercero en rojo, dependiendo del nivel de CO2.

El comando a enviar para encender un led determinado de la tira es:

NeoPixel, NumeroLed, CantidadDeRojo, CantidadDeVerde, CantidadDeAzul

Siendo NumeroLed la posición que ocupa el LED que queremos controlar en la tira, y la cantidad de rojo, verde y azul un número entre 0 (apagado) y 255 (encendido al 100% de intensidad).

Para encender el primer LED en rojo (al 50% de intensidad, por ejemplo, ya que el 100% es muy fuerte para mi gusto) utilizaríamos el comando:

NeoPixel,1,128,0,0

Para encender el segundo LED en ámbar (al 50% de intensidad), lo podríamos hacer sumando un 25% de rojo más un 12% de verde. Para conseguir esto utilizaríamos el comando:

NeoPixel,2,64,32,0

Para encender el tercer LED en verde (al 50% de intensidad), utilizaríamos el comando:

NeoPixel,3,0,64,0

La regla que deberíamos incluir sería esta:

On SenseairCO2#PPM do
  if [SenseairCO2#PPM]>900
    NeoPixelAll,0,0,0 // APAGAMOS LOS LED
    NeoPixel,1,128,0,0 // ENCENDEMOS EL PRIMER LED EN ROJO
  Elseif [SenseairCO2#PPM] > 800
    NeoPixelAll,0,0,0 // APAGAMOS LOS LED
    NeoPixel,2,64,32,0 // ENCENDEMOS EL SEGUNDO LED EN NARANJA
  Else
    NeoPixelAll,0,0,0 // APAGAMOS LOS LED
    NeoPixel,3,0,64,0 // ENCENDEMOS EL TERCER LED EN VERDE
  Endif
endon

He escogido los niveles de CO2 para que el semáforo se ponga rojo cuando se superen las 900 ppm (según la normativa RITE IDA 2 para aulas de enseñanza, adecuado para aulas de colegios). Siéntete libre de sustituir los valores de 900 y 700 por los que más te convengan.

Dependiendo de a qué distancia se vaya a ver y de la luminosidad de la sala, puedes ajustar la intensidad de los LEDs (uno de estos LEDS encendido al máximo, valor de 255, se ve mucho).

Como verás antes de encender cada led primero apagamos la tira completa, utilizando el comando NeoPixelAll,0,0,0 porque, si no lo hiciéramos así, en los cambios de color (por ejemplo, al pasar de verde a naranja), se quedarían encendidos los dos LEDS.

Este tipo de LEDS es perfecto para hacer semáforos y otros indicadores. Mejor que las tiras porque se pueden utilizar unidos o separar de forma individual.

Mucho mejor que las tiras LED, que dan mucha menos flexibilidad.

Pincha en la imagen o aquí para ver dónde los compro yo.

Video tutorial paso a paso

Aunque el montaje es muy sencillo, y está en gran parte cubierto en el video del montaje del Medidor de CO2 casero, he creado un video con todos los detalles del montaje del medidor en caja, con instrucciones específicas de conexión y configuración de la pantalla OLED y de los LEDs.

En él podrás encontrar explicaciones, detalles y consejos de todo tipo.

Carátula frontal

Junto con el archivo STL de la caja, en Thingiverse, te dejo también la carátula frontal en formato vectorial SVG.

Yo he cortado el frontal en vinilo adhesivo con un plotter de corte, pero puedes imprimirlo con una impresora normal, cortarlo a mano y pegarlo o hacerlo con láser en otro tipo de material.

Te lo dejo también la carátula frontal el formato de Silhouette Studio, que es el plotter de corte que yo uso.

Próximas mejoras

En la próxima versión de la caja, que tengo intención de hacer, pienso introducir las siguientes mejoras:

  • Ampliar el hueco de los LEDs a 10mm para poder instalar tiras de LED estándar de forma plana.
  • Previsión de agujeros para la instalación de LEDs redondos de 5mm para quien lo prefiera (por ejemplo, para poner LEDs RGB normales).
  • Cambiar la posición del buzzer para dejar el frontal limpio y permitir la instalación de los módulos buzzer más habituales.

Si quieres sugerir alguna mejora adicional, puede dejarlo en comentarios.

La idea no es crear varias versiones para diferentes piezas (por ejemplo, una para NodeMCU y otra para Wemos D1 Mini, quien quiera poner un Wemos D1 Mini lo puede dejar cableado al aire) sino realizar mejoras que amplíen las funcionalidades o mejoren la usabilidad.

Si te ha gustado esta página, compártela.

13 comentarios en «Caja impresa en 3D para el medidor de CO2»

  1. A ver si lo ves y tengo suerte y me respondes.

    No puedo imprimir en 3d. Por ahí hablas de que usas unas cajas que compras de 10 en 10.

    ¿Cuáles son?

    Muchas gracias!

    Responder
    • Te respondí está misma pregunta en los comentarios del artículo “Un medidor de CO2 casero con Wifi contra el coronavirus”. He puesto el enlace al tipo de caja que yo uso en ese mismo artículo.

      Responder
  2. Buenas tardes

    He seguido tu manual de principio a fin y no puedo estar mas contento y satisfecho con el resultado, dicho esto, en lugar de ponerle tiras de led quiero ponerle un semáforo, ya que el medidor que estoy haciendo va para el cole del nano, y creo que a su profesora le resultara mas fácil y cómodo de distinguir si no lo tiene cerca de ella, pero no se como tendría que configurarlo en el espeasy, me explico no se si como device el Neo pixel me valdría o debería poner otro ,ni si las reglas que has creado serian validas para el mismo ni tampoco tengo idea de como serian las conexiones únicamente tengo claro el GND los otros 3 cables no tengo idea donde conectarlos. Gracias por los tutoriales, vídeos y el trabajo que haces, nos facilita mucho la tarea quienes no tenemos idea y podemos disponer del medidor, gracias nuevamente.

    Un saludo

    Un saludo

    Responder
    • Hola.

      Estoy preparando una entrada y un video explicando el manejo de los leds WS2812 a fondo, pero tardará uno días en estar listo. Si quieres puedes esperar.

      De todas formas, el funcionamiento es muy sencillo.

      No sé si has visto el video completo. En él está explicado. Lo que hay explicado en el video ya es un semáforo. La tira se enciende en verde, amarillo/naranja o rojo dependiendo del nivel de CO2.

      Si no es un semáforo de este tipo el que quieres, explícame un poco tu idea, a ver si te puedo hacer unas instrucciones breves mientras que termino el video.

      Estoy un poco perdido… no son GND más cuatro cables, son tres cables en total y en el video se ve muy bien (minuto 23:25). El esquema que aparece en el video (y arriba, en el artículo) es este:

      Conexión WS2812 a NodeMCU

      ¿A qué te refieres con que si deberías poner el Neopixel u otro? ¿Cuál?
      Y ¿”si las reglas serían válidas para el mismo”? ¿Para cuál?

      Según te voy respondiendo me doy cuenta de que estoy muy confundido, a lo mejor estoy espeso y no he entendido la pregunta. Dime lo que quieres e intento ayudarte.

      Responder
      • Hola

        Cuando uno no sabe, es muy difícil hacerse entender, he visto tus vídeos de cabo a rabo y muchas veces, por semaforo me refiero a esto, literal https://www.tiendatec.es/3366-large_default/modulo-semaforo-led-tres-colores-para-arduino.jpg

        Gracias

        Responder
      • Quiero ampliar mi respuesta porque tal y como la voy leyendo me da la impresión de que parezco enfadado y/o cortante y no es así, al contrario muy agradecido por tu trabajo desinteresado y el tiempo que nos dedicas así como la información que nos brindas, eso si me gustaría dejártelo claro.

        Responder
        • ¡No, hombre, no! ¡No te preocupes! 😁 jajaja

          Ahora sé a lo que te refieres con el semáforo…

          Poderse poner, se puede, pero no es tan sencillo. Hay que poner componentes externos que lo complican.

          El NodeMCU puede suministrar máximo 12mA en cada pin. He buscado información en internet y este semáforo necesita: Rojo 13mA; Amarillo 13mA; Verde 25mA

          A lo mejor el rojo y el amarillo se verían, pero el verde no llegaría a encenderse.

          Para elevar la corriente habría que poner tres transistores y ya estamos complicando mucho el circuito…

          Te doy una idea alternativa: Imprimir una carátula con el semáforo impreso para la caja y hacer coincidir los agujeros con los leds de la tira WS2812.

          Otra opción sería hacer un semáforo impreso en 3D con la tira de WS2812 dentro.

          Responder
  3. Hola

    amplio o aclaro mi comentario anterior , en el que tal y como lo voy leyendo me da la impresión de que parezco enfadado o cortante, y es todo lo contrario te estoy muy agradecido por el tiempo que nos dedicas y la oportunidad que nos brindas, quería dejarte eso claro, tengo claro que en una conversación cara a cara no hubiera hecho falta pero cuando uno escribe a veces …

    Responder
    • Lo dicho, no te preocupes en absoluto. 😀

      No me has parecido serio ni cortante. Mi respuesta inicial, quizá sí que parecía sería o cortante, pero estaba tan frustrado por no poderte dar una respuesta mejor que me salió de esa manera. Seguro que, como tú dices, cara a cara esto no hubiera pasado… la escritura es muy fría a veces…

      Un saludo y gracias.

      Responder
      • Buenos días

        Con tu explicación me queda claro que queda totalmente descarto el semáforo y la alternativa de imprimir uno para las tiras led me parece una muy buena solución.

        Veré en que termina esto y te informaré de lo que haga.

        Lo dicho gracias por todo y me alegra que nos hallamos entendido.

        Un saludo

        Responder
        • Hola.

          He añadido al artículo instrucciones para hacer el semáforo en “Añadir una regla para hacer un semáforo de LEDs“.

          He intentado hacer fotos, pero hacer fotos a los LEDS es extremadamente difícil y salen fatal.

          Un saludo.

          Responder
          • Buenas tardes

            No puedo mas que darte las gracias y felicitarte por el trabajazo y la generosidad, una maquina del “cacharreo” y un 10 como persona.

            Un saludo
            n00s1mp0rt4

Deja un comentario