Advertisement
monron19

esp

May 23rd, 2025
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.21 KB | None | 0 0
  1. #include <WiFi.h>
  2. #include <TinyGPS++.h>
  3. #include <WebServer.h>
  4.  
  5. #define RXD2 16
  6. #define TXD2 17
  7. #define GPS_BAUD 9600
  8.  
  9. TinyGPSPlus gps;
  10. HardwareSerial gpsSerial(2);
  11.  
  12. const char* ssid = "ESP32-Server";
  13. const char* password = "12345678";
  14.  
  15. WebServer server(80);
  16.  
  17. String latestData = "No data received yet";
  18. unsigned long lastCheckTime = 0;
  19. const unsigned long checkInterval = 1000;
  20. bool dataReceived = false;
  21.  
  22. float totalTemp = 0, totalHumidity = 0, totalDust = 0, totalMQ135 = 0, totalMQ2 = 0;
  23. int sampleCount = 0;
  24.  
  25. float latestTemp, latestHumidity, latestDust, latestMQ135, latestMQ2;
  26. String lat = "14.8", lon = "121.7";
  27.  
  28. void handleRoot() {
  29.   String html = R"rawliteral(
  30.    <!DOCTYPE html>
  31.    <html>
  32.    <head>
  33.      <meta charset="UTF-8">
  34.      <meta http-equiv='refresh' content='2'>
  35.      <title>ESP32 Telemetry</title>
  36.      <style>
  37.        body {
  38.          font-family: Arial, sans-serif;
  39.          background-color: #f0f8ff;
  40.          text-align: center;
  41.          padding: 50px;
  42.        }
  43.        table {
  44.          margin: auto;
  45.          border-collapse: collapse;
  46.          width: 80%;
  47.          background-color: #ffffff;
  48.          box-shadow: 0 0 10px rgba(0,0,0,0.1);
  49.        }
  50.        th, td {
  51.          padding: 12px 15px;
  52.          border-bottom: 1px solid #ddd;
  53.        }
  54.        th {
  55.          background-color: #007acc;
  56.          color: white;
  57.        }
  58.        tr:hover {
  59.          background-color: #f1f1f1;
  60.        }
  61.      </style>
  62.    </head>
  63.    <body>
  64.      <h2>ESP32 Telemetry Data</h2>
  65.      <table>
  66.        <tr><th>Parameter</th><th>Latest</th><th>Average</th></tr>
  67.  )rawliteral";
  68.  
  69.   if (sampleCount > 0) {
  70.     html += "<tr><td>Temperature</td><td>" + String(latestTemp, 1) + " °C</td><td>" + String(totalTemp / sampleCount, 1) + " °C</td></tr>";
  71.     html += "<tr><td>Humidity</td><td>" + String(latestHumidity, 1) + " %</td><td>" + String(totalHumidity / sampleCount, 1) + " %</td></tr>";
  72.     html += "<tr><td>Dust</td><td>" + String(latestDust, 2) + " µg/m³</td><td>" + String(totalDust / sampleCount, 2) + " µg/m³</td></tr>";
  73.     html += "<tr><td>MQ135</td><td>" + String(latestMQ135, 2) + " ppm</td><td>" + String(totalMQ135 / sampleCount, 2) + " ppm</td></tr>";
  74.     html += "<tr><td>MQ2</td><td>" + String(latestMQ2, 2) + " ppm</td><td>" + String(totalMQ2 / sampleCount, 2) + " ppm</td></tr>";
  75.     html += "<tr><td>Latitude</td><td colspan='2'>" + lat + " °</td></tr>";
  76.     html += "<tr><td>Longitude</td><td colspan='2'>" + lon + " °</td></tr>";
  77.   } else {
  78.     html += "<tr><td colspan='3'>" + latestData + "</td></tr>";
  79.   }
  80.  
  81.   html += "</table></body></html>";
  82.   server.send(200, "text/html", html);
  83. }
  84.  
  85. void setup() {
  86.   Serial.begin(9600);
  87.   Serial.setTimeout(100);
  88.  
  89.   WiFi.softAP(ssid, password);
  90.   IPAddress IP = WiFi.softAPIP();
  91.   Serial.print("Access Point IP address: ");
  92.   Serial.println(IP);
  93.  
  94.   gpsSerial.begin(GPS_BAUD, SERIAL_8N1, RXD2, TXD2);
  95.   server.on("/", handleRoot);
  96.   server.begin();
  97.   Serial.println("Web server started");
  98.  
  99.   lastCheckTime = millis();
  100. }
  101.  
  102. void loop() {
  103.   server.handleClient();
  104.  
  105.   if (Serial.available()) {
  106.     String input = Serial.readStringUntil('\n');
  107.     Serial.println("Received: " + input);
  108.     latestData = input + ", Lat: 14.8, Long: 121.7";
  109.  
  110.     int t1 = input.indexOf("Temp:");
  111.     int h1 = input.indexOf("Humidity:");
  112.     int d1 = input.indexOf("Dust:");
  113.     int m1 = input.indexOf("MQ135:");
  114.     int m2 = input.indexOf("MQ2:");
  115.  
  116.     if (t1 != -1 && h1 != -1 && d1 != -1 && m1 != -1 && m2 != -1) {
  117.       latestTemp = input.substring(t1 + 5, h1).toFloat();
  118.       latestHumidity = input.substring(h1 + 9, d1).toFloat();
  119.       latestDust = input.substring(d1 + 5, m1).toFloat();
  120.       latestMQ135 = input.substring(m1 + 6, m2).toFloat();
  121.       latestMQ2 = input.substring(m2 + 4).toFloat();
  122.  
  123.       totalTemp += latestTemp;
  124.       totalHumidity += latestHumidity;
  125.       totalDust += latestDust;
  126.       totalMQ135 += latestMQ135;
  127.       totalMQ2 += latestMQ2;
  128.       sampleCount++;
  129.     }
  130.  
  131.     dataReceived = true;
  132.     lastCheckTime = millis();
  133.   }
  134.  
  135.   if (!dataReceived && millis() - lastCheckTime >= checkInterval) {
  136.     latestData = "No data received";
  137.     lastCheckTime = millis();
  138.   }
  139. }
  140.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement