Closed ulenspegel closed 5 years ago
Добрый день, Какую прошивку вы используете? Последнюю из этого репозитория? Напишите, пожалуйста, код вашей функции readCO2
Честно говоря, я затрудняюсь сказать какая прошивка, давно все это было. Скорее всего последнюю из репозитория.
А вот код:
void readCO2() {
// CO2
bool header_found {false};
SENSOR_SERIAL.write(cmd, 9);
memset(response, 0, 7);
// Looking for packet start
while(SENSOR_SERIAL.available() && (!header_found)) {
if(SENSOR_SERIAL.read() == 0xff ) {
if(SENSOR_SERIAL.read() == 0x86 ) header_found = true;
}
}
if (header_found) {
SENSOR_SERIAL.readBytes(response, 7);
byte crc = 0x86;
for (char i = 0; i < 6; i++) {
crc+=response[i];
}
crc = 0xff - crc;
crc++;
if ( !(response[6] == crc) ) {
DEBUG_SERIAL.println("CO2: CRC error: " + String(crc) + " / "+ String(response[6]));
} else {
unsigned int responseHigh = (unsigned int) response[0];
unsigned int responseLow = (unsigned int) response[1];
unsigned int ppm = (256*responseHigh) + responseLow;
co2 = ppm;
DEBUG_SERIAL.println("CO2:" + String(co2));
}
} else {
DEBUG_SERIAL.println("CO2: Header not found");
}
}
Выглядит нормально. Точно все в порядке с проводами? С каким-нибудь другим кодом, например через usb-uart с компьютера? (Вот один из проектов https://github.com/fedulovivan/mhz19b)
Я пока закрою этот вопрос, если все-таки проблема именно с прошивкой, переоткройте, пожалуйста.
Добрый день! Собрал прибор с датчиком MH-1Z9B на плате Node-MCU V3. Пару часов все работает в норме, данные приходят, лишь иногда проскакивает 'CO2: Header not found', что, как я понимаю, совершенно нормально. Однако через пару часов датчик зависает, данные не приходят, все время выдается 'CO2: Header not found'. При этом сам датчик продолжает работать, загорается красным как положено. Остальные датчики работают хорошо. Выключение-включение ни к чему не приводит, перезагрузка скетча, обнуление EEPROM тоже не помогают, прибор после этого продолжает выдавать -1