@moyo_pochteniye

Почему может не работать MH-Z19 датчик на Arduino?

Всем привет!

Подключил я значит датчик СО2 к ардуинке, но почему-то на выходе выдает

!Error: Timed out waiting for response
!ERROR: Failed to verify connection(1) to sensor.
!ERROR: Initial communication errorCode recieved
!Error: Timed out waiting for response
!Error: Timed out waiting for response
!Error: Timed out waiting for response
CO2 (ppm): 0
!Error: Timed out waiting for response
CO2 (ppm): 0


Подключил на мой взгляд правильно, фото ниже

rWBvJej.jpeg

Пробовал так же без макетки, другими проводами, все то же самое.
Пробовал на абум, поменять ТХ и РХ местами, спамило следующее
CO2 (ppm): 0
Temperature (C): -17
!Warning: Clearing Byte: 66
!Warning: Clearing Byte: 77
!Warning: Clearing Byte: 10
!Warning: Clearing Byte: 225


Исходный код тестовый, пины прописал свои
#include <Arduino.h>
#include "MHZ19.h"                                        
#include <SoftwareSerial.h>                                // Remove if using HardwareSerial

#define RX_PIN 2                                          // Rx pin which the MHZ19 Tx pin is attached to
#define TX_PIN 3                                          // Tx pin which the MHZ19 Rx pin is attached to
#define BAUDRATE 9600                                      // Device to MH-Z19 Serial baudrate (should not be changed)

MHZ19 myMHZ19;                                             // Constructor for library
SoftwareSerial mySerial(RX_PIN, TX_PIN);                   // (Uno example) create device to MH-Z19 serial

unsigned long getDataTimer = 0;

void setup() {
  Serial.begin(9600);           // Start Serial Monitor for debug
  mySerial.begin(BAUDRATE);     // Start the software serial communication with MH-Z19
  myMHZ19.begin(mySerial);      // Initialize the sensor

  myMHZ19.autoCalibration(false);  // Disable auto calibration for better accuracy
  
  delay(1000);  // Allow some time for the sensor to initialize properly
}

void loop() {
  if (millis() - getDataTimer >= 2000) {
    int CO2 = myMHZ19.getCO2();  // Request CO2 (ppm)
    
    if (CO2 != -1) {  // Check if the sensor responds with a valid value
      Serial.print("CO2 (ppm): ");
      Serial.println(CO2);
    } else {
      Serial.println("Error: Sensor response timed out.");
    }

    getDataTimer = millis();  // Reset the timer
  }
}
  • Вопрос задан
  • 67 просмотров
Пригласить эксперта
Ответы на вопрос 1
@kalapanga
Попробуйте вставить в скетч задержку до инициализации сенсора, можно прямо в самом начале setup().
Причём существенную - секунд 15. Если не заработает, то видимо не в этом дело. Если поможет, то подберите достаточное значение задержки опытным путём.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы