Comovis Mini (all-in-one CO2 BOX)

by Nayel Khouatra in Circuits > Arduino

908 Views, 7 Favorites, 0 Comments

Comovis Mini (all-in-one CO2 BOX)

My project-1.png
My project-1.png
untitled2.jpg
untitled1.jpg
untitled3.jpg

"Keep your home safe and healthy with the compact version of Comovis!. The Comovis Mini is all in one Temperature, Humidty and CO2 sensor, you can check this paramters via Home Assistant. Let Comovis give you peace of mind when it comes to the air you breathe at home!"

Story:

As someone who struggles to find a reliable product that can monitor the air quality in my home for less than 20 euros it was clear that I had to find a way to create one. I know how imperative it is to maintain a healthy living environment. That's why I created COMOVIS, an all-in-one temperature, humidity and CO2 sensor.

This small box sensor was the ideal choice for me. It measures temperature, humidity, and CO2 levels, providing me with accurate and reliable data about the quality of the air in my home. However, we had to use two sensors, which increased the cost of the product from 20 euros to 30 euros. Also, it was a bit bulky.

That's why today I am presenting another version called COMOVIS MINI. This device can easily monitor and, which can help prevent mold growth, improve air quality, and promote overall health and wellness.

The COMOVIS MINI is even easier to use than its old version. It has the same compact and stylish design as its predecessor, but in a mini version. With this version you can hang it on a wall. This will enable you to quickly check the readings via the LEDs strips present on the device or on a phone with the companion app Home Assistant. Instead of two sensors, it uses just one, which is more economical, more stable, easier to update and more eco-friendly.

Downloads

Supplies

Screenshot 2023-02-17 at 14-16-31 BTF-LIGHTING WS2812B 1m 60leds flexible individuellement adressable bande couleur rêve non-étanche DC5V PCB noir Amazon.fr Luminaires et Éclairage.png
Capture d’écran 2023-02-17 141731.png
4090-01.jpg
esp8266-esp-12f-d1-mini-module-de-carte-de-developpement-wifi.jpg

Here's the furniture list with all the components that we need:

  1. Smart LED Strip Lighting: You can use WS2812 LED strips to add smart lighting to your furniture. You can control the colors and brightness of these LED strips using a D1 mini, a small and inexpensive Wi-Fi enabled microcontroller.
  1. Air Quality Monitor: To monitor the air quality around your furniture, you can use the SCD40 sensor. It can measure the CO2, temperature and humidity in your room. You can also connect it to the D1 mini to send real-time data to your phone or laptop.
  1. USB Type-C Connection: If you want to connect your D1 mini to your laptop or power source, you can use a USB Type-C Breakout board. This board allows you to connect to downstream devices and provides a stable power supply to your D1 mini.

Schematics

Capture d’écran 2023-02-17 134231.png

In this Part, I will explain how the different components of this product are linked together. By understanding the connections between each component, you will be able to better understand how the product works as a whole. Let's begin!

  • SCD40 Sensor : The SCD40 Sensor is the main component of this product, responsible for measuring temperature, humidity, and CO2 levels. The board includes a temperature and humidity sensor, as well as a CO2 sensor. These sensors measure the respective values and send the data to the microcontroller. to connect this part you need to find the SDA (D2) and SCL (D1) pins in the D1 Mini .


  • Microcontroller: The microcontroller is responsible for receiving data from the sensor board and processing it. It is the brain of the system, using the data to determine the correct output for the LEDs. The microcontroller sends this output to the LED driver.


  • LED Strips: There are three LED strips on the product, each corresponding to a different measurement. The first strip represents humidity, the second represents temperature, and the third represents CO2 levels. The LED strips are connected to the LED driver and receive their input from it. In order to connect the three LEDs strips solder together all the paower cables of the three LEDs strips and make sure that one of the three led strips has the two power cables. and then connect the data cable of the LEDs in this order : first strips on D5, second strips on D4 and the last on D3 and don't forget to connect the power cable on the USB C breakout board on the GND and VBUS !


  • Power Supply: The power supply provides the necessary power for the product to operate. It is connected to the sensor board, microcontroller, LED driver, and LED strips, ensuring that each component has the power it needs to function. Now you need to take all the power cable that you have such as the sensor power cable, LED strips and the D1 Mini and connect it on the Vbus and GND of the break out board


Programation

Note: I won't do another tutorial on the setup of EspHome and Home Assistant, since I already did one on the previous version the step are exactly the same.


The programation of the comovis Mini is write on the .YAML of the devices :


esphome:
  name: "led-strips"


esp8266:
  board: d1_mini
  framework:
    version: 2.7.4


# Enable logging
logger:


# Enable Home Assistant API
api:


ota:

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password


  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Replace !"
    password: "Replace !"
i2c:
  sda: GPIO4
  scl: GPIO5
  scan: true
  id: bus_a


sensor:
  - platform: scd4x
    i2c_id: bus_a
    co2:
      id: CO2
      name: "CO2"
      on_value_range:
      - below: 1400
        then:
          - light.addressable_set:
              id: Strip_CO2
              range_from: 0
              range_to: 11
              red: 0%
              green: 0%
              blue: 0%
          - delay : 100ms
          - light.addressable_set:
              id: Strip_CO2
              range_from: 0
              range_to: 1
              red: 0%
              green: 50%
              blue: 0%
      - above: 1400
        below: 1600
        then:
          - light.addressable_set:
              id: Strip_CO2
              range_from: 0
              range_to: 11
              red: 0%
              green: 0%
              blue: 0%
          - delay : 100ms
          - light.addressable_set:
              id: Strip_CO2
              range_from: 0
              range_to: 3
              red: 25%
              green: 50%
              blue: 0%
      - above: 1600
        below: 1800
        then:
          - light.addressable_set:
              id: Strip_CO2
              range_from: 0
              range_to: 11
              red: 0%
              green: 0%
              blue: 0%
          - delay : 100ms
          - light.addressable_set:
              id: Strip_CO2
              range_from: 0
              range_to: 4
              red: 50%
              green: 50%
              blue: 0%
      - above: 1800
        below: 1900
        then:
          - light.addressable_set:
              id: Strip_CO2
              range_from: 0
              range_to: 11
              red: 0%
              green: 0%
              blue: 0%
          - delay : 100ms
          - light.addressable_set:
              id: Strip_CO2
              range_from: 0
              range_to: 8
              red: 50%
              green: 25%
              blue: 0%
      - above: 1900
        below: 2100
        then:
          - light.addressable_set:
              id: Strip_CO2
              range_from: 0
              range_to: 11
              red: 0%
              green: 0%
              blue: 0%
          - delay : 100ms
          - light.addressable_set:
              id: Strip_CO2
              range_from: 0
              range_to: 9
              red: 50%
              green: 0%
              blue: 0%
      - above: 2100
        then:
          - light.addressable_set:
              id: Strip_CO2
              range_from: 0
              range_to: 11
              red: 0%
              green: 0%
              blue: 0%
          - delay : 100ms
          - light.addressable_set:
              id: Strip_CO2
              range_from: 0
              range_to: 11
              red: 50%
              green: 0%
              blue: 0%
     
    temperature:
      name: "Temperature"
      id: Temp
      on_value_range:
      - below: 10
        then:
          - light.addressable_set:
              id: Strip_Temp
              range_from: 0
              range_to: 11
              red: 0%
              green: 0%
              blue: 0%
          - delay : 100ms
          - light.addressable_set:
              id: Strip_Temp
              range_from: 0
              range_to: 1
              red: 0%
              green: 0%
              blue: 50%
      - above: 10
        below: 17
        then:
          - light.addressable_set:
              id: Strip_Temp
              range_from: 0
              range_to: 11
              red: 0%
              green: 0%
              blue: 0%
          - delay : 100ms
          - light.addressable_set:
              id: Strip_Temp
              range_from: 0
              range_to: 3
              red: 0%
              green: 50%
              blue: 50%
      - above: 17
        below: 22
        then:
          - light.addressable_set:
              id: Strip_Temp
              range_from: 0
              range_to: 11
              red: 0%
              green: 0%
              blue: 0%
          - delay : 100ms
          - light.addressable_set:
              id: Strip_Temp
              range_from: 0
              range_to: 4
              red: 0%
              green: 50%
              blue: 0%
      - above: 22
        below: 27
        then:
          - light.addressable_set:
              id: Strip_Temp
              range_from: 0
              range_to: 11
              red: 0%
              green: 0%
              blue: 0%
          - delay : 100ms
          - light.addressable_set:
              id: Strip_Temp
              range_from: 0
              range_to: 6
              red: 50%
              green: 50%
              blue: 0%
      - above: 27
        then:
          - light.addressable_set:
              id: Strip_Temp
              range_from: 0
              range_to: 11
              red: 0%
              green: 0%
              blue: 0%
          - delay : 100ms
          - light.addressable_set:
              id: Strip_Temp
              range_from: 0
              range_to: 11
              red: 50%
              green: 0%
              blue: 0%
     


    humidity:
      name: "Humidity"
      id: Hum
     
      on_value_range:
      - below: 35
        then:
          - light.addressable_set:
              id: Strip_Hum
              range_from: 0
              range_to: 11
              red: 0%
              green: 0%
              blue: 0%
          - delay : 100ms
          - light.addressable_set:
              id: Strip_Hum
              range_from: 0
              range_to: 1
              red: 50%
              green: 0%
              blue: 0%
      - above: 35
        below: 45
        then:
          - light.addressable_set:
              id: Strip_Hum
              range_from: 0
              range_to: 11
              red: 0%
              green: 0%
              blue: 0%
          - delay : 100ms
          - light.addressable_set:
              id: Strip_Hum
              range_from: 0
              range_to: 2
              red: 50%
              green: 50%
              blue: 0%
      - above: 45
        below: 65
        then:
          - light.addressable_set:
              id: Strip_Hum
              range_from: 0
              range_to: 4
              red: 0%
              green: 50%
              blue: 0%
      - above: 65
        below: 75
        then:
          - light.addressable_set:
              id: Strip_Hum
              range_from: 0
              range_to: 11
              red: 0%
              green: 0%
              blue: 0%
          - delay : 100ms
          - light.addressable_set:
              id: Strip_Hum
              range_from: 0
              range_to: 7
              red: 50%
              green: 50%
              blue: 0%
      - above: 75
        then:
          - light.addressable_set:
              id: Strip_Hum
              range_from: 0
              range_to: 11
              red: 0%
              green: 0%
              blue: 0%
          - delay : 100ms
          - light.addressable_set:
              id: Strip_Hum
              range_from: 0
              range_to: 7
              red: 50%
              green: 0%
              blue: 0%
    update_interval: 1s


light:
  - platform: fastled_clockless
    chipset: WS2812b
    id: Strip_CO2
    pin: GPIO13
    num_leds: 10
    rgb_order: GRB
    name: "Strip_CO2"
  - platform: fastled_clockless
    chipset: WS2812b
    id: Strip_Temp
    pin: GPIO14
    num_leds: 10
    rgb_order: GRB
    name: "Strip_Temp"
  - platform: fastled_clockless
    chipset: WS2812b
    id: Strip_Hum
    pin: GPIO12
    num_leds: 10
    rgb_order: GRB
    name: "Strip_Hum"

   


3D Modeling on Fusion360

Full comovis mini.png
Comovis mini interior.png
comovis without socket.png
comovis with socket.png
Comovis front interior without front diffuser.png

Conclusion and Results

IMG_2770.jpg
Capture d’écran 2023-02-17 163755.png

In conclusion, the new version of this product represents a significant improvement over the previous version. The accuracy of the results has greatly increased, providing a more reliable measurement of temperature, humidity, and CO2 levels. The inclusion of the three LED strips on the product also allows for a quick and easy visual representation of these important metrics.

The comparison between the two photos of home assistant clearly shows the effectiveness of the new version of the product. The improved accuracy and visualization of the data will undoubtedly be valuable for those in various industries, including agriculture, construction, and home automation.

Overall, the new version of this product has demonstrated its effectiveness and usefulness. With its improved capabilities and features, it is sure to be a valuable tool for anyone in need of accurate temperature, humidity, and CO2 measurements.

I hope this tutorial has been helpful in understanding how the different components of this product are linked together. If you have any questions or comments, feel free to ask!