У меня есть прошивка esp32, которая использует 4 датчика (DHT11, PIR, утечка воды, MQ2). Все датчики работают нормально и дают точный вывод, но когда я пытаюсь включить соединение Wi-Fi и клиент Wi-Fi, датчики воды и mq2 дают неверные и случайные данные. Кто-нибудь сталкивался с этой проблемой раньше?
Вот пример выхода без Wi-Fi:
- температура: 18
- влажность: 58
- уровень воды: 97
- движение: 1
- дым: 6
- Сжиженный газ: 12
- CO: 8
и с командами Wi-Fi это выглядит так:
- температура: 18
- влажность: 58
- уровень воды: 4065
- движение: 1
- дым: 26145582395.16
- LPG: 26145582395.16
- CO: 26145582395.16
и здесь используется код:
#include <DHTesp.h>
#include <WiFi.h>
#include <MQ2.h>
#ifndef ESP32
#pragma message(THIS EXAMPLE IS FOR ESP32 ONLY!)
#error Select ESP32 board.
#endif
const char* ssid = "Mynetwork";
const char* password = "********";
const uint16_t port = 8090;
const char * host = "***********";
const int dhtPin = 18;
const int waterPin = 26;
const int mq2Pin = 2;
const int pirPin = 25;
int factor=0;
DHTesp dht;
MQ2 mq2(mq2Pin);
void setup() {
pinMode(pirPin,INPUT);
pinMode(waterPin,INPUT);
pinMode(mq2Pin,INPUT);
pinMode(pirPin,INPUT);
Serial.begin(115200);
mq2.begin();
dht.setup(dhtPin, DHTesp::DHT11);
factor = analogRead(waterPin);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(2000);
Serial.println("...");
}
}
void loop() {
WiFiClient client;
if (!client.connect(host, port)) {
Serial.println("Connection to host failed");
delay(500);
return;
}
Serial.print("WiFi connected with IP: ");
Serial.println(WiFi.localIP());
float *values= mq2.read(true);
Serial.print("Temperature:\t");
Serial.println(getTemp());
client.println(getTemp());
Serial.print("Humidity:\t");
Serial.println(getHum());
client.println(getHum());
Serial.print("movement:\t");
Serial.println(getPir());
client.println(getPir());
Serial.print("Water state:\t");
Serial.println(getWater());
client.println(getWater());
Serial.print("LPG:\t");
Serial.println(getLPG());
client.println(getLPG());
Serial.print("Smoke:\t");
Serial.println(getSmoke());
client.println(getSmoke());
Serial.print("CO:\t");
Serial.println(getCO());
client.println(getCO());
delay(3000);
}
float getTemp(){
return dht.getTemperature();
}
float getHum(){
return dht.getHumidity();
}
int getWater(){
int sensorValue = analogRead(waterPin)-factor;
int per= (sensorValue*100/4094);
return map(per,0,33,0,100);
}
float getSmoke(){
return mq2.smoke;
}
float getLPG(){
return mq2.lpg;
}
float getCO(){
return mq2.co;
}
int getPir(){
return (digitalRead(pirPin));
}