теперь можно менять пины UART через веб

This commit is contained in:
2022-08-31 21:33:12 +03:00
parent a2d5a6f5e1
commit 71b94318eb
2 changed files with 22 additions and 20 deletions

View File

@@ -11,19 +11,16 @@
extern IoTGpio IoTgpio; extern IoTGpio IoTgpio;
int rxPinCO2 = 14; // D5 // зеленый провод сенсора к D2 / 4 int rxPinCO2 ; // зеленый провод сенсора к прописаному по умолчанию D7 (GPIO13)
int txPinCO2 = 16; // D0 // синий провод сенсора к D1/5 int txPinCO2 ; // синий провод сенсора к прописаному по умолчанию D6 (GPIO12)
SoftwareSerial swSerialCO2(rxPinCO2, txPinCO2); // RX, TX// ESP8266 D7 / D6 Blue/Green SoftwareSerial* swSerialCO2 = nullptr;
int MHZ19_request(int request); int MHZ19_request(int request);
void MHZ19uart_init(); void MHZ19uart_init();
bool MHZ19uart_flag = true; bool MHZ19uart_flag = true;
// int MHZ19C_PREHEATING_TIME = 2 * 60 * 1000;// покажет реальные данные после прогрева, через 2 мин.
int MHZ19C_PREHEATING_TIME = 2 * 30 * 1000; // покажет реальные данные после прогрева, через 2 мин. int MHZ19C_PREHEATING_TIME = 2 * 30 * 1000; // покажет реальные данные после прогрева, через 2 мин.
// int prevTemperature = 0;
int temperature = 0; int temperature = 0;
bool temperatureUpdated = false; bool temperatureUpdated = false;
int prevRange = 5000; int prevRange = 5000;
@@ -48,7 +45,9 @@ class Mhz19uart : public IoTItem {
txPinCO2 = jsonReadInt(parameters, "txPin"); txPinCO2 = jsonReadInt(parameters, "txPin");
range = jsonReadInt(parameters, "range"); range = jsonReadInt(parameters, "range");
ABC = jsonReadInt(parameters, "ABC"); ABC = jsonReadInt(parameters, "ABC");
if (!swSerialCO2) swSerialCO2 = new SoftwareSerial(rxPinCO2, txPinCO2);
} }
//======================================================================================================= //=======================================================================================================
// doByInterval() // doByInterval()
@@ -69,11 +68,12 @@ class Mhz19uart : public IoTItem {
//если сенсор предполагает использование общего объекта библиотеки для нескольких экземпляров сенсора, то в данной функции необходимо предусмотреть //если сенсор предполагает использование общего объекта библиотеки для нескольких экземпляров сенсора, то в данной функции необходимо предусмотреть
//создание и контроль соответствующих глобальных переменных //создание и контроль соответствующих глобальных переменных
//замер по ШИМ создает задержку. вызываем его нечасто, по умолчанию раз в 5 минут
class Mhz19pwm : public IoTItem { class Mhz19pwm : public IoTItem {
private: private:
//======================================================================================================= //=======================================================================================================
// Секция переменных. // Секция переменных.
int pwmPin; ///// желтый провод сенсора к D8 (14-D5 ok) int pwmPin; // желтый провод сенсора к прописаному по умолчанию D8 (GPIO15)
public: public:
//======================================================================================================= //=======================================================================================================
@@ -146,6 +146,7 @@ class Mhz19temp : public IoTItem {
txPinCO2 = jsonReadInt(parameters, "txPin"); txPinCO2 = jsonReadInt(parameters, "txPin");
range = jsonReadInt(parameters, "range"); range = jsonReadInt(parameters, "range");
ABC = jsonReadInt(parameters, "ABC"); ABC = jsonReadInt(parameters, "ABC");
if (!swSerialCO2) swSerialCO2 = new SoftwareSerial(rxPinCO2, txPinCO2);
} }
//======================================================================================================= //=======================================================================================================
@@ -179,6 +180,7 @@ class Mhz19range : public IoTItem {
txPinCO2 = jsonReadInt(parameters, "txPin"); txPinCO2 = jsonReadInt(parameters, "txPin");
range = jsonReadInt(parameters, "range"); range = jsonReadInt(parameters, "range");
ABC = jsonReadInt(parameters, "ABC"); ABC = jsonReadInt(parameters, "ABC");
if (!swSerialCO2) swSerialCO2 = new SoftwareSerial(rxPinCO2, txPinCO2);
} }
void doByInterval() { void doByInterval() {
@@ -216,6 +218,7 @@ class Mhz19ABC : public IoTItem {
txPinCO2 = jsonReadInt(parameters, "txPin"); txPinCO2 = jsonReadInt(parameters, "txPin");
range = jsonReadInt(parameters, "range"); range = jsonReadInt(parameters, "range");
ABC = jsonReadInt(parameters, "ABC"); ABC = jsonReadInt(parameters, "ABC");
if (!swSerialCO2) swSerialCO2 = new SoftwareSerial(rxPinCO2, txPinCO2);
} }
void doByInterval() { void doByInterval() {
@@ -261,7 +264,7 @@ void *getAPI_Mhz19(String subtype, String param) {
void MHZ19uart_init() { void MHZ19uart_init() {
if (MHZ19uart_flag) { if (MHZ19uart_flag) {
int reply; int reply;
swSerialCO2.begin(9600); swSerialCO2->begin(9600);
delay(50); delay(50);
@@ -427,7 +430,7 @@ int MHZ19_request(int request) {
break; break;
} }
swSerialCO2.write(request_cmd, 9); swSerialCO2->write(request_cmd, 9);
Serial.print("Request : "); Serial.print("Request : ");
for (int i = 0; i < 9; i++) { for (int i = 0; i < 9; i++) {
@@ -441,7 +444,7 @@ int MHZ19_request(int request) {
unsigned char response[9]; unsigned char response[9];
Serial.print("Response :"); Serial.print("Response :");
swSerialCO2.readBytes(response, 9); swSerialCO2->readBytes(response, 9);
for (int i = 0; i < 9; i++) { for (int i = 0; i < 9; i++) {
Serial.print(" "); Serial.print(" ");
@@ -536,7 +539,6 @@ int MHZ19_request(int request) {
// byte c = {0xFF, 0x01, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79}; // byte c = {0xFF, 0x01, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79};
// if nothing else matches, do the default // if nothing else matches, do the default
// default is optional // default is optional
break; break;
} }
} }

View File

@@ -13,8 +13,8 @@
"multiply": 1, "multiply": 1,
"round": 1, "round": 1,
"pin": 0, "pin": 0,
"rxPin": 14, "rxPin": 13,
"txPin": 16, "txPin": 12,
"int": 15, "int": 15,
"range": 5000, "range": 5000,
"ABC": 1 "ABC": 1
@@ -30,7 +30,7 @@
"plus": 0, "plus": 0,
"multiply": 1, "multiply": 1,
"round": 1, "round": 1,
"pin": 16, "pin": 15,
"int": 300 "int": 300
}, },
{ {
@@ -44,8 +44,8 @@
"plus": 0, "plus": 0,
"multiply": 1, "multiply": 1,
"round": 1, "round": 1,
"rxPin": 14, "rxPin": 13,
"txPin": 16, "txPin": 12,
"ABC": 1, "ABC": 1,
"int": 30 "int": 30
}, },
@@ -60,8 +60,8 @@
"plus": 0, "plus": 0,
"multiply": 1, "multiply": 1,
"round": 1, "round": 1,
"rxPin": 14, "rxPin": 13,
"txPin": 16, "txPin": 12,
"range": 5000, "range": 5000,
"ABC": 1, "ABC": 1,
"int": 30 "int": 30
@@ -74,8 +74,8 @@
"widget": "anydataDef", "widget": "anydataDef",
"page": "Сенсоры", "page": "Сенсоры",
"descr": "ABC", "descr": "ABC",
"rxPin": 14, "rxPin": 13,
"txPin": 16, "txPin": 12,
"range": 5000, "range": 5000,
"ABC": 1, "ABC": 1,
"int": 30 "int": 30