#define MQ9_PIN 12
#define BZ 27
#define LIMITE 50
#define NUMERO_TELEFONE "+5511999999999"
#define MENSAGEM_ALERTA "ATENÇÃO: Monóxido de carbono detectado! Risco de incêndio!"
const float MQ9_RL = 10.0;
void setup() {
Serial.begin(115200);
pinMode(BZ, OUTPUT);
}
void loop() {
delay(10);
int mq9Value = analogRead(MQ9_PIN);
float mq9PPM = mq9Calibration(mq9Value);
Serial.print("PPM CO: ");
Serial.println(mq9PPM);
delay(100);
if(mq9PPM > LIMITE){
Serial.println(MENSAGEM_ALERTA);
tone(BZ, 1000, 100);
delay(100);
noTone(BZ);
tone(BZ, 750, 100);
delay(100);
noTone(BZ);
}
}
// Calcula PPM do sensor MQ9
float mq9Calibration(int rawValue) {
float vrl = (float)rawValue * (3.3 / 4095.0);
float rs = (5.0 - vrl) / vrl * MQ9_RL;
float ppm = 91.8 * pow(10, 1.85 - (rs / 10)); // Calibration curve for MQ9
return ppm;
}