// https://wiki.keyestudio.com/KS0566_Keyestudio_ENS160_Air_Quality_Sensor_(TVOC,_eCO2,_AQI)#Example_Code // https://github.com/DFRobot/DFRobot_ENS160 //https://www.manualdomaker.com/article/sensor-de-pressao-atmosferica-ms5611/ #include #include #define I2C_COMMUNICATION //use I2C for communication. DFRobot_ENS160_I2C ENS160(&Wire, /*iicAddr*/ 0x53); #include #define D7 13 #define D4 2 #define D3 0 #define DHTTYPE DHT11 // DHT 11 #define DHTPIN 13 // leitura #define LIGAENS 0 // leitura DHT dht(DHTPIN, DHTTYPE, 50); #include #include #include #include const char *ssid = "IFSC"; const char *password = "campuschapeco"; const int http_port = 8080; unsigned long tempoinicial=millis(); WiFiClient client; float temp[10]; float umi[10]; float valorMedio=0; float temperatura=0; float umidade=0; void setup(void){ Serial.begin(115200); WiFi.mode(WIFI_OFF); delay(1000); WiFi.mode(WIFI_STA); WiFi.begin(ssid, password);Serial.println("."); Serial.print("Conectando..."); while (WiFi.status() != WL_CONNECTED) { delay(500);Serial.print("."); } Serial.println (""); Serial.print ("Conectado a ");Serial.println (ssid); Serial.print (" endereço IP: ");Serial.println (WiFi.localIP ()); Serial.print("MAC: "); Serial.println(WiFi.macAddress()); Serial.println (); Serial.println ("I2C scanner. Procurando ..."); byte count = 0; Wire.begin(); dht.begin(); delay(500); for (byte i = 8; i < 120; i++) { Wire.beginTransmission (i); if (Wire.endTransmission () == 0) { Serial.print ("Endereco I2C encontrado: "); Serial.print (i, DEC); Serial.print (" (0x"); Serial.print (i, HEX); Serial.println (")"); count++; delay (10); } } Serial.print ("Encontrado "); Serial.print (count, DEC); Serial.println (" dispositivo(s)."); delay(1000); Serial.println("CNT\tDUR\tRES\tTEMP\tPRES"); while( NO_ERR != ENS160.begin()){ Serial.println("Communication with device failed, please check connection"); delay(3000); } ENS160.setPWRMode(ENS160_STANDARD_MODE); ENS160.setTempAndHum(/*temperature=*/25.0, /*humidity=*/50.0); } void LeituraDHT(){ float aux; temperatura=0; umidade=0; for (int i = 0; i < 10; i++) { // 11 amostras temp[i] = dht.readTemperature( ); umi[i] = dht.readHumidity( ); Serial.println(dht.readTemperature( )); delay(125); } for (int i = 0; i < 9; i++) { // Ordena em ordem crescente for (int j = i + 1; j < 10; j++) { if (temp[i] > temp[j]) {aux = temp[i];temp[i] = temp[j];temp[j] = aux;} if (umi[i] > umi[j]) {aux= umi[i];umi[i] = umi[j];umi[j] = aux;} } } valorMedio=0; for (int i = 2; i < 8; i++) {valorMedio += temp[i];} temperatura=valorMedio/6; valorMedio=0; for (int i = 2; i < 8; i++) {valorMedio += umi[i];} umidade=valorMedio/6; } void loop(){ LeituraDHT(); Serial.print("Temp "); Serial.println(temperatura); Serial.print("Umidade "); Serial.println(umidade); delay(1000); uint8_t Status = ENS160.getENS160Status(); Serial.print("Sensor Operating Status: "); Serial.println(Status); uint8_t AQI = ENS160.getAQI(); Serial.print("Air quality index : "); Serial.println(AQI); uint16_t TVOC = ENS160.getTVOC(); Serial.print("Concentration of total volatile organic compounds : "); Serial.print(TVOC); Serial.println(" ppb"); uint16_t ECO2 = ENS160.getECO2(); Serial.print("Carbon dioxide equivalent concentration : "); Serial.print(ECO2); Serial.println(" ppm"); //HTTPClient http; HTTPClient http; String Mac=WiFi.macAddress(); float pressao=0; String postData = "MMac="+String(Mac)+ "&SStemperatura="+String(temperatura)+ "&SSumidade="+String(umidade)+ "&SStvoc="+String(TVOC)+ "&SSeCO2="+String(ECO2)+ "&SSaqi="+String(AQI); http.begin(client,"http://ptqa.migueldebarba.com.br/esp8266/piloto_insert.php"); http.addHeader("Content-Type", "application/x-www-form-urlencoded"); int httpCode = http.POST(postData); String payload = http.getString(); Serial.println(httpCode);Serial.println(payload);http.end(); delay(60000*random(13,18)); // Aguarda de 13 a 18 minutos unsigned long tempoatual=millis(); unsigned long diftempo=tempoatual-tempoinicial; Serial.println("T.Inicial"+String(tempoinicial)); Serial.println("T.Atual"+String(tempoatual)); delay(5000); // Restart a cada TRES horas de millis() if (diftempo>10800000){ ESP.restart(); Serial.println("T.Inicial"+String(tempoinicial)); Serial.println("T.Atual"+String(tempoatual)); delay(5000); } Serial.println(); delay(10000); }