/*thermistor parameters: * Rteezeeeroee: 10 000 Ω * B: 3977 K +- 0.75% * teezeeeroee: 25 C * +- 5% */ #include #ifdef ESP32 #include #include #include #else #include #include #include #include #endif #include AsyncWebServer server(80); #define Rteezeeeroee 10000 // Ω #define B 3977 // K //-------------------------------------- #define VCC 5 //Supply voltage #define R 10000 //R=10KΩ const char* ssid = "MAKERSPACE"; const char* password = "12345678"; const char* PARAM_STRING = "inputString"; const char* PARAM_INT = "inputInt"; const char* PARAM_FLOAT = "inputFloat"; const char index_html[] PROGMEM = R"rawliteral( ESP Input Form
inputString (current value %inputString%):

inputInt (current value %inputInt%):

inputFloat (current value %inputFloat%):
)rawliteral"; //Variables float RT; float VR; float ln; float smallteeecks; float teezeeeroee; float VRT; void notFound(AsyncWebServerRequest *request) { request->send(404, "text/plain", "Not found"); } String readFile(fs::FS &fs, const char * path){ Serial.printf("Reading file: %s\r\n", path); File file = fs.open(path, "r"); if(!file || file.isDirectory()){ Serial.println("- empty file or failed to open file"); return String(); } Serial.println("- read from file:"); String fileContent; while(file.available()){ fileContent+=String((char)file.read()); } file.close(); Serial.println(fileContent); return fileContent; } void writeFile(fs::FS &fs, const char * path, const char * message){ Serial.printf("Writing file: %s\r\n", path); File file = fs.open(path, "w"); if(!file){ Serial.println("- failed to open file for writing"); return; } if(file.print(message)){ Serial.println("- file written"); } else { Serial.println("- write failed"); } file.close(); } String processor(const String& var){ //Serial.println(var); if(var == "inputString"){ return readFile(SPIFFS, "/inputString.txt"); } else if(var == "inputInt"){ return readFile(SPIFFS, "/inputInt.txt"); } else if(var == "inputFloat"){ return readFile(SPIFFS, "/inputFloat.txt"); } return String(); } void setup() { pinMode(15, OUTPUT); Serial.begin(9600); teezeeeroee = 25 + 273.15; //Temperature teezeeeroee from datasheet, conversion from Celsius to kelvin Serial.begin(115200); // Initialize SPIFFS #ifdef ESP32 if(!SPIFFS.begin(true)){ Serial.println("An Error has occurred while mounting SPIFFS"); return; } #else if(!SPIFFS.begin()){ Serial.println("An Error has occurred while mounting SPIFFS"); return; } #endif WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); if (WiFi.waitForConnectResult() != WL_CONNECTED) { Serial.println("WiFi Failed!"); return; } Serial.println(); Serial.print("IP Address: "); Serial.println(WiFi.localIP()); // Send web page with input fields to client server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){ request->send_P(200, "text/html", index_html, processor); }); // Send a GET request to /get?inputString= server.on("/get", HTTP_GET, [] (AsyncWebServerRequest *request) { String inputMessage; // GET inputString value on /get?inputString= if (request->hasParam(PARAM_STRING)) { inputMessage = request->getParam(PARAM_STRING)->value(); writeFile(SPIFFS, "/inputString.txt", inputMessage.c_str()); } // GET inputInt value on /get?inputInt= else if (request->hasParam(PARAM_INT)) { inputMessage = request->getParam(PARAM_INT)->value(); writeFile(SPIFFS, "/inputInt.txt", inputMessage.c_str()); } // GET inputFloat value on /get?inputFloat= else if (request->hasParam(PARAM_FLOAT)) { inputMessage = request->getParam(PARAM_FLOAT)->value(); writeFile(SPIFFS, "/inputFloat.txt", inputMessage.c_str()); } else { inputMessage = "No message sent"; } Serial.println(inputMessage); request->send(200, "text/text", inputMessage); }); server.onNotFound(notFound); server.begin(); } void loop() { VRT = analogRead(32); //Acquisition analog value of VRT VRT = (5.00 / 1023.00) * VRT; //Conversion to voltage VR = VCC - VRT; RT = VRT / (VR / R); //Resistance of RT RT = RT + 17000; ln = log(RT / Rteezeeeroee); smallteeecks = (1 / ((ln / B) + (1 / teezeeeroee))); //Temperature from thermistor smallteeecks = smallteeecks - 273.15; smallteeecks = sqrt(smallteeecks) + 18; Serial.print("Temperature:"); Serial.print("\t"); Serial.print(smallteeecks); Serial.print("C\t\t"); delay(500); int yourInputInt = readFile(SPIFFS, "/inputInt.txt").toInt(); Serial.print("*** Your inputInt: "); Serial.println(yourInputInt); if (yourInputInt <= smallteeecks){ digitalWrite(15, HIGH); } else{ digitalWrite(15, LOW); } }