Решил дополнить работающую метеостанцию ср2102+BME280 датчиком углекислого газа MH-Z19, но не заладилось ... Работая c разными скриптами для MH-Z19, одна из моих попыток оказалась удачной - я увидел на мониторе редактора Arduino IDE далекие от реальности показатели концентрации СО2 (около 1400) и, самое главное, реакцию датчика на мое дыхание (2100-2600). К сожалению, это радостное событие произошло только один раз. Вот типичные сообщения с модуля ср2102: ets Jan августа 2013, rst cause: 1, boot mode: (5,7) waiting for host или Wrong crc from co2 sensor! (когда цепи Rx, Tx - разорванные) В нете нашел информацию, что для чипов ESP8266 нужна своя, особая библиотека SoftwareSerial для организации UARTa под MH-Z19. Заменил ранее установленную библиотеку SoftwareSerial на указанную в ссылке, но положительного результата не добился Чувствуется, что дело в ньюансах, но с моим скудным опытом на них самостоятельно не выйти. Помогите! Где копать? Скрипт во вложении. Возможно у кого-то под рукой работающий скрипт? Поделитесь!
Во первых надо ему дать поработать минут 15 ( или просто запитать) потом смотреть за данными, он тормозной немного и долго стартует. Я тоже не сразу в это вьехал. Делал проект в прошлом году все уже не помню. Но записи остались)) Ни какой библиотеки не надо. Функция опроса Код (C++): //для MH-Z19 byte cmd[9] = {0xFF,0x01,0x86,0x00,0x00,0x00,0x00,0x00,0x79}; unsigned char response[9]; float CO2; void read_sensor_mh_z19() { //co2 MH-Z19 Serial2.write(cmd, 9); memset(response, 0, 9); Serial2.readBytes(response, 9); int i; byte crc = 0; for (i = 1; i < 8; i++) crc+=response[i]; crc = 255 - crc; crc++; if ( !(response[0] == 0xFF && response[1] == 0x86 && response[8] == crc) ) { Serial.println("CRC error: " + String(crc) + " / "+ String(response[8])); } else { unsigned int responseHigh = (unsigned int) response[2]; unsigned int responseLow = (unsigned int) response[3]; CO2 = (256*responseHigh) + responseLow; Serial.println(CO2); } } Пожалуйста.