MH-Z19 adquirido en AliExpress

Screenshot 2020 12 10 at 22.21.52 d98b4

https://es.aliexpress.com/item/4000212024923.html

Código Arduino

#include <LiquidCrystal_I2C.h>
#include <MHZ19.h>
#include <SoftwareSerial.h>

// Pin RX Arduino conectado al pin TX del MHZ19
#define RX_PIN 7
// Pin TX Arduino conectado al pin RX del MHZ19
#define TX_PIN 6

// Objeto para sensor MHZ19
MHZ19 myMHZ19;
// Serial requerido por el MHZ19
SoftwareSerial mySerial(RX_PIN, TX_PIN);

// Pantalla LCD de 16x2
LiquidCrystal_I2C lcd(0x27,16,2);  

// Contador para temporizar las mediciones
unsigned long timer = 0;

void setup() {
  Serial.begin(9600);
  lcd.init();
  lcd.backlight();
  mySerial.begin(9600);
  myMHZ19.begin(mySerial);
  // Turn auto calibration ON (OFF autoCalibration(false))
  myMHZ19.autoCalibration();
}

void loop() {
  // Tomar mediciones cada 2 segundos
  if (millis() - timer >= 2000) {
    
    // Obtener la medición de CO2 actual como ppm
    int nivelCO2 = myMHZ19.getCO2();

    // Mostrar el nivel de CO2 en el monitor serie
    Serial.print("CO2 (ppm): ");                      
    Serial.println(nivelCO2);  

    // Mostrar el nivel de CO2 en la pantalla LCD
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("CO2 (ppm): ");                          
    lcd.setCursor(11, 0);
    lcd.print(nivelCO2);

    // Obtener la temperatura actual en grados Celsius
    int8_t temperatura = myMHZ19.getTemperature();

    // Mostrar la temperatura en el monitor serie
    Serial.print("Temperatura (C): ");                  
    Serial.println(temperatura);  

    // Mostrar la temperatura en la pantalla LCD
    lcd.setCursor(0, 1);
    lcd.print("Temp. (C): ");                          
    lcd.setCursor(11, 1);
    lcd.print(temperatura);

    // Almacenar una referencia al momento actual para controlar tiempo transcurrido
    timer = millis();
  }
}

Esquema de montaje

MHZ19 LCD bb f16fb

Ejemplo de montaje

2020 12 10 22.18.00 f4d94