Optimering af systemet for stabilitet - Serie om Luftkvalitets monitoreringsstation, Afsnit 19

Formål med lektionen
I denne lektion skal eleverne fokusere på at optimere deres IoT-system for langtidsholdbar stabilitet og ydeevne. Efter at have integreret og testet systemet er det vigtigt at forfine projektet ved at håndtere potentielle problemer såsom ydeevneflaskehalse, sensornøjagtighed og netværksstabilitet. Eleverne vil finjustere forskellige aspekter af deres system, herunder sensoraflæsninger, opdateringshastigheder, strømforbrug og fejlhåndtering, så systemet kører gnidningsfrit og effektivt over længere perioder.
Ved afslutningen af denne lektion vil eleverne have et stabilt og optimeret IoT-system klar til udrulning.

Introduktion
Nu hvor I har testet jeres IoT-system og bekræftet dets grundlæggende funktionalitet, er det tid til at optimere det for bedre ydeevne og stabilitet. Optimering sikrer, at systemet kan køre i længere perioder uden at crashe eller blive ustabilt. Det omfatter styring af sensornøjagtighed, effektiv databehandling, optimering af opdateringshastigheder og sikring af, at WiFi-forbindelsen forbliver stabil over tid. I denne lektion gennemgår vi flere centrale optimeringer, der vil hjælpe jer med at forbedre pålideligheden og ydeevnen i jeres IoT-projekt.


Liste over nødvendige komponenter:

AHT10 Høj præcisions temperatur og fugtighedsmåler
TTGO T-Display ESP32 16MB med WiFi, Bluetooth og 1.1" farve LCD skærm
Dupont kabler 40 stk

 


Trin 1: Optimering af sensoraflæsninger

Jeres IoT-system indsamler temperatur- og fugtighedsdata fra AHT10-sensoren. For at sikre, at aflæsningerne er nøjagtige og ikke svinger unødigt, kan I overveje følgende strategier:

  1. Finjustering af sensorintervaller

    • Undgå overflødig forespørgsel til sensoren: Konstant forespørgsel kan forårsage dataudsving eller upræcise aflæsninger. Justér intervallet mellem forespørgsler efter jeres anvendelsesbehov. Hvis I fx overvåger rumtemperatur, er en aflæsning hvert par sekunder typisk tilstrækkeligt. I koden kan I justere delay-parameteren:

    delay(2000); // Vent 2 sekunder mellem sensoraflæsninger
  2. Filtrering af sensordata

    • Anvend glidende gennemsnit (smoothing): Sensoraflæsninger kan være udsat for små svingninger på grund af miljømæssige faktorer. For at øge stabiliteten kan I implementere et enkelt glidende gennemsnit, der reducerer støj i dataene:

    float smoothedTemperature = (previousTemperature + newT) / 2.0;
    float smoothedHumidity    = (previousHumidity + newH) / 2.0;

    Dette giver mere stabile værdier ved at gennemsnitliggøre den nuværende aflæsning med den foregående.


Trin 2: Styring af opdateringshastighed på TFT-displayet

TFT-displayet opdateres i realtid for at vise sensordata. Hurtige opdateringshastigheder kan dog forårsage flimmer, nedsætte systemets hastighed eller øge strømforbruget.

  1. Reducér unødvendige opdateringer

    • Opdater kun ved signifikant ændring: I stedet for at opdatere displayet i hvert loop, kan I kun opdatere, når sensordata ændrer sig markant. Dette reducerer systembelastningen og flimmer:

    if (abs(nearestT - previousT) > 0.1 || abs(nearestH - previousH) > 0.1) {
      tft.fillScreen(TFT_BLACK);  // Ryd skærmen
      tft.drawString(String(nearestT, 1), 10, 40, 7);
      tft.drawString("C",             100, 100, 3);
      tft.drawString(String(nearestH, 1), 10, 130, 7);
      tft.drawString("% rH",          100, 100, 3);
    }
  2. Styring af skærmens lysstyrke

    • Optimer strømforbruget: Hvis jeres system kører på batteri, kan det betale sig at sænke baggrundsbelysningen, når systemet er i dvale eller ved lav belysning. Mange displays kan styre baglyset via kode:

    analogWrite(TFT_BACKLIGHT_PIN, brightnessLevel); // Justér lysstyrke

Trin 3: Optimering af WiFi og webserver-stabilitet

WiFi-forbindelse er afgørende for at vise sensordata på en webside, men ustabile forbindelser kan få systemet til at fejle.

  1. Auto-reconnect for WiFi

    • Genforbind automatisk: Systemet bør automatisk forsøge at genoprette forbindelsen, hvis den falder ud:

    if (WiFi.status() != WL_CONNECTED) {
      WiFi.begin(ssid, password);
      Serial.println("Genopretter WiFi-forbindelse...");
      while (WiFi.status() != WL_CONNECTED) {
        delay(1000);
        Serial.println("Forsøger igen...");
      }
      Serial.println("WiFi forbundet");
    }
  2. Håndtering af klientforespørgsler

    • Undgå overbelastning: ESP32’ens webserver har begrænsede ressourcer. Begræns antallet af samtidige klienter eller implementér en simpel load-management:

    if (WiFi.softAPgetStationNum() > MAX_CLIENTS) {
      Serial.println("For mange klienter tilsluttet!");
      server.close();
    }

Trin 4: Fejlhåndtering og stabilitetsforanstaltninger

  1. Håndtering af sensorfejl

    • Blød genstart: Hvis sensoren midlertidigt fejler, bør systemet ikke crashe, men forsøge igen:

    if (!aht.begin()) {
      Serial.println("Sensorfejl. Forsøger igen...");
      delay(1000);
    } else {
      Serial.println("Sensor genoprettet!");
    }
  2. Watchdog-timer

    • Automatisk reset: Brug ESP32’s indbyggede watchdog (WDT) til automatisk genstart ved systemhæng:

    esp_task_wdt_init(5, true);   // Timeout på 5 sekunder
    esp_task_wdt_add(NULL);       // Tilføj nuværende tråd
    
    // I loop():
    esp_task_wdt_reset();         // Nulstil watchdog

Trin 5: Konklusion på optimering

Ved at anvende disse teknikker opnår I et system, der:

  • Kører effektivt med optimerede sensorintervaller og dataglætning.

  • Opdaterer displayet kun ved relevante ændringer, uden flimmer.

  • Håndterer WiFi-forbindelser robust med auto-genforbindelse.

  • Undgår overbelastning af webserveren.

  • Har indbygget fejlhåndtering og automatisk genstart ved kritiske fejl.

Afslutning
Optimering af jeres IoT-system for stabilitet er afgørende for brug i virkelige applikationer. Denne lektion har vist jer, hvordan I finjusterer sensoraflæsninger, styrer displayopdateringer, håndterer WiFi-forbindelse og implementerer robust fejlhåndtering. Med et stabilt og optimeret system er I nu klar til trygt at udrulle jeres IoT-projekt i hjemmenetværk, miljøovervågning eller mere avancerede anvendelser.

Skriv en kommentar!

Relevante produkter

TS101 digital loddekolbeTS101 digital loddekolbe i hånd
TS101 digital loddekolbe med USB C forsyning
Tilbudspris Fra 689,00 kr
2 på lager
TS80P USB-C Loddekolbe kitTS80P Loddekolbe
TS80P USB-C Loddekolbe kit
Tilbudspris Fra 749,00 kr
6 på lager
bruge Loddekolbe Renser til at rengøre loddekolbespidsenLoddekolbe Renser
Luksus Loddekolbe renser
Tilbudspris 89,00 kr
46 på lager