Luchtkwaliteit sensor aan ESP32

Indien je uitsluitend wilt weten of de luchtkwaliteit onder een ‘gezond’ niveau komt, dan kun je de goedkope MQ-135 sensor gebruiken.

Deze heeft naast de analoge uitgang, ook een digital uitgang die ‘hoog’ wordt indien een bepaalde grens wordt overschreden. Die grens kun je instellen met de potmeter op het printplaatje, standaard staat die ingesteld op 400 ppm.

De analoge uitgang (AO) en de digital uitgang (DO) kunnen op een ESP32 aangesloten worden en de spanning wordt aangesloten op 5V en GND. De gas-sensor in de MQ-135 dient opgewarmd te worden voordat deze accurate gegevens geleverd worden, 24 uur is de eerste keer het beste om de sensor stabiel te krijgen, daarna volstaat 60-120 seconden.

Indien gas wordt gedetecteerd zoals rook, benzine, CO2, alcohol, ammoniak en/of stikstofoxide, zal een klein LEDje op het printplaatje oplichten en zal de digitale uitgang (DO) dus hoog worden.

Ik gebruik de analoge uitgang als controle maar in feite is die niet nodig. Als de DO ‘hoog’ wordt weet je dat er te veel ‘foute’ gassen aanwezig zijn en moet je gaan ventileren.

Op de ESP-32 module die ik hiervoor gebruikt heb, wordt de analoge uitgang (AO) aangesloten op GPIO34 en de digitale uitgang (DO) op GPIO13. De GND en de VCC gaat op een 5 Volt aansluiting die vanuit een USB poort komt. Afhankelijk van het type ESP32 vind je wel of geen 5 Volt pin op de ESP32 en zul je iets vanuit de USB poort moeten halen..

Zie hier het aansluitschema van de ESP32 die ik momenteel in gebruik heb:

In de ESPHome Device Builder kan de configuratie voor de ESP32 geconfigureerd worden. Toevoegen van een (nieuwe) ESP32 is vrij simpel en de sensoren voor de MQ-135 zien er als volgt uit

Analoge sensor:

sensor:
  - platform: adc
    id: mq135_voltage
    pin: GPIO34
    attenuation: 11db
    update_interval: 30s
    samples: 10
    name: "MQ135 Voltage"

Hiermee wordt de analoge spanning uitgelezen via een Analoge-Digital-Converter (adc) en daar kan dan met een template een berekening voor de ppm gemaakt worden. Deze template wordt dan als volgt:

  - platform: template
    name: "MQ135 PPM"
    lambda: |-
      float v = id(mq135_voltage).state;
      float ppm = pow((5 - v) / v, -2.8) * 116.6;
      return ppm;

Digitale sensor:

binary_sensor:
  - platform: gpio
    name: Gas Detectie
    pin: GPIO13
    id: binary_sensor_gpio_1
    filers:
      - invert:

Na het schrijven van de configuratie in de ESP32 via Install (of Update) zijn zowel de sensoren bekend binnen Home Assistant.