#include <Arduino.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <WiFi.h>
#include <ESPAsyncWebServer.h>
const char* ssid="Wokwi-GUEST";
const char* password="";
const double VCC = 3.3; // ESP32-DevKitV1 DoIt on board 3.3v vcc
const double R2 = 10000; // 10k ohm series resistor
const double adc_resolution = 4095; // 12-bit adc
const double A = 0.001129148; // thermistor equation parameters
const double B = 0.000234125;
const double C = 0.0000000876741;
AsyncWebServer server(80); //Server Port
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
void setup() {
Serial.begin(115200); /* Define baud rate for serial communication */
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
delay(2000);
display.clearDisplay();
display.setTextColor(WHITE);
//Connect to WiFi
WiFi.begin(ssid,password);
while (WiFi.status() !=WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to Wifi...");
Serial.println(ssid);
}
Serial.print ("connected to WiFi");
//Print IP Address
Serial.print("ESP32 Web Server's IP:");
Serial.println(WiFi.localIP());
//Define route to serve HTML page
server.on("/", HTTP_GET, [](AsyncWebServerRequest* request) {
Serial.println("ESP32 Web Server:New Request Received:");
Serial.println("GET /");
request->send (200, "text/html", "<html><body><h1>Hello, ESP32!</h1></body></html>");
});
//Start Server
server.begin();
}
double getTemperature(){
double Vout, Rth, temperature, temperature1, adc_value;
adc_value = analogRead(36);
Vout = (adc_value * VCC) / adc_resolution;
Rth = (VCC * R2 / Vout) - R2;
/* Steinhart-Hart Thermistor Equation:
* Temperature in Kelvin = 1 / (A + B[ln(R)] + C[ln(R)]^3)
* where A = 0.001129148, B = 0.000234125 and C = 8.76741*10^-8 */
temperature = (1 / (A + (B * log(Rth)) + (C * pow((log(Rth)),3)))); // Temperature in kelvin
temperature = (temperature-273.15); // Temperature in degree celsius
return temperature;
}
void loop() {
Serial.print("Temperature = ");
Serial.print(getTemperature());
Serial.println(" degree celsius");
display.clearDisplay(); // clear OLED display
// display temperature
display.setTextSize(2);
display.setCursor(0,0);
display.print("Temp:");
display.setTextSize(2);
//display.setCursor(0,10);
display.print(getTemperature(),1);
//display.print(" ");
display.setTextSize(2);
//display.cp437(true);
//display.write(167);
display.setTextSize(2);
display.print("C");
// display ADC Value
display.setTextSize(2);
display.setCursor(0, 35);
display.print("ADC:");
display.setTextSize(2);
//display.setCursor(0, 45);
//display.print(adc_value,0);
//display.print(" bits");
display.display();
delay(1500);}