MH-Z19 adquirido en AliExpress
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();
}
}