С помощью Arduino IDE заливаю в модуль CP2102 Node MCU скетч (под спойлером) для датчика углекислого газа MH-Z19.
Подключаю датчик, перезапускаю, но на мониторе Arduino IDE - тишина, если не считать нечитаемой абракадабры при включении. В окнах датчика мигают инфракрасные нагреватели с периодом около 5 сек.
Помогите прояснить ситуацию: Некондиционный датчик? Ошибки в скрипте? Что-то не то делаю? Другая версия?
#include <SoftwareSerial.h>;
//SoftwareSerial mySerial(2, 3); // RX, TX
//SoftwareSerial mySerial(13, 15, false, 256); // GPIO15 (TX) and GPIO13 (RX)
SoftwareSerial mySerial(13, 15); // GPIO15 (TX) and GPIO13 (RX)
byte request[9] = {0xFF,0x01,0x86,0x00,0x00,0x00,0x00,0x00,0x79};
unsigned char response[9];
void setup() {
Serial.begin(9600);
mySerial.begin(9600);
}
void loop()
{
mySerial.write(request, 9);
memset(response, 0, 9);
mySerial.readBytes(response, 9);
int i;
byte crc = 0;
for (i = 1; i < 8; i++) crc+=response;
crc = 255 - crc;
crc++;
if ( !(response[0] == 0xFF && response[1] == 0x86 && response[8] == crc) ) {
Serial.println("CRC error");
} else {
unsigned int HLconcentration = (unsigned int) response[2];
unsigned int LLconcentration = (unsigned int) response[3];
unsigned int co2 = (256*HLconcentration) + LLconcentration;
Serial.println(co2);
for (i = 0; i < 9; i++) {
Serial.print("0x");
Serial.print(response,HEX);
Serial.print(" ");
}
Serial.println(" ");
}
delay(5000);
}
//SoftwareSerial mySerial(2, 3); // RX, TX
//SoftwareSerial mySerial(13, 15, false, 256); // GPIO15 (TX) and GPIO13 (RX)
SoftwareSerial mySerial(13, 15); // GPIO15 (TX) and GPIO13 (RX)
byte request[9] = {0xFF,0x01,0x86,0x00,0x00,0x00,0x00,0x00,0x79};
unsigned char response[9];
void setup() {
Serial.begin(9600);
mySerial.begin(9600);
}
void loop()
{
mySerial.write(request, 9);
memset(response, 0, 9);
mySerial.readBytes(response, 9);
int i;
byte crc = 0;
for (i = 1; i < 8; i++) crc+=response;
crc = 255 - crc;
crc++;
if ( !(response[0] == 0xFF && response[1] == 0x86 && response[8] == crc) ) {
Serial.println("CRC error");
} else {
unsigned int HLconcentration = (unsigned int) response[2];
unsigned int LLconcentration = (unsigned int) response[3];
unsigned int co2 = (256*HLconcentration) + LLconcentration;
Serial.println(co2);
for (i = 0; i < 9; i++) {
Serial.print("0x");
Serial.print(response,HEX);
Serial.print(" ");
}
Serial.println(" ");
}
delay(5000);
}
Помогите прояснить ситуацию: Некондиционный датчик? Ошибки в скрипте? Что-то не то делаю? Другая версия?
Вложения
-
104.2 KB Просмотры: 48
Последнее редактирование: