Image of eBits Academy airquality illustration

Felsökning av vanliga problem med Arduino IDE – Serien om en luftkvalitetsstation, avsnitt 11

  • March 18, 2025
  • |
  • Teofil Corad

Lektionsmål

Målet med den här lektionen är att ge dig de färdigheter du behöver för att identifiera och lösa vanliga problem som kan uppstå när du skriver kod för ESP32 och arbetar med sensorer. Vi går igenom felsökningstekniker och lösningar på fel som rör kod, hårdvaruanslutningar och användning av bibliotek.


Introduktion

När du börjar programmera och arbeta med din ESP32 och sensorer är det viktigt att vara förberedd på möjliga fel. Felsökning är en avgörande färdighet som säkerställer att koden fungerar korrekt och att hårdvaran arbetar som den ska.

I den här lektionen går vi igenom de vanligaste felen och lösningarna så att du snabbt och effektivt kan diagnostisera och lösa problem.


Vanliga problem och lösningar

1. Biblioteket hittas inte eller kompileringsfel

Symtom:

  • Felmeddelanden som anger att ett bibliotek inte kan hittas.
  • Funktioner från ett bibliotek är inte definierade.

Möjliga orsaker:

  • Det nödvändiga biblioteket är inte installerat.
  • Biblioteksversionen är inte kompatibel med din kod.

Lösningar:

  • Kontrollera biblioteksinstallationen:
    • Gå till Sketch > Include Library > Manage Libraries… i Arduino IDE och sök efter det nödvändiga biblioteket. Om det inte är installerat installerar du det via Library Manager.
  • Verifiera #include-satser:
    • Se till att namnet i #include-direktivet stämmer överens med det installerade biblioteket. Om du till exempel använder Adafruit AHT10ska koden innehålla:
    #include <Adafruit_AHTX0.h>
  • Uppdatera bibliotek:
    • Kontrollera om det finns uppdateringar i Library Manager och uppdatera både kort och bibliotek för att undvika kompatibilitetsproblem.

2. Sensorn svarar inte eller initieras inte

Symtom:

  • Felmeddelanden som "Failed to find AHT10 chip” eller "No data from sensor."
  • Sensorvärden visas inte i Serial Monitor.

Möjliga orsaker:

  • Felaktiga eller lösa kabelanslutningar.
  • Problem med strömförsörjningen.
  • Sensormodulen är inte korrekt initierad.

Lösningar:

  • Kontrollera kabelanslutningarna:

    • Se till att alla anslutningar mellan ESP32 och sensorn är korrekta.
    • För AHT10-sensorn ska anslutningarna vara:
      • VCC → 3.3V på ESP32
      • GND → GND på ESP32
      • SDA → GPIO21 (ESP32:s SDA-stift)
      • SCL → GPIO22 (ESP32:s SCL-stift)
  • Kontrollera strömförsörjningen:

    • Se till att sensorn får tillräckligt med ström. AHT10 drivs med 3.3V från ESP32.
  • Initieringskod:

    • Kontrollera att aht.begin() anropas korrekt i setup()-funktionen:
    if (!aht.begin()) {
      Serial.println("Failed to find AHT10 chip");
      while (1) { delay(10); } // Stopper programmet, hvis initialisering fejler
    }

3. Felaktiga eller oväntade sensorvärden

Symtom:

  • Sensorvärdena är inkonsekventa eller slumpmässiga.

Möjliga orsaker:

  • Felaktig sensorkalibrering.
  • Elektriskt brus eller störningar.
  • Logikfel i databehandlingen.

Lösningar:

  • Kontrollera sensorns kalibrering:

    • AHT10 är normalt förkalibrerad, men se till att koden inte oavsiktligt ändrar kalibreringsdata.
  • Säkerställ korrekt datahantering:

    • Kontrollera att getEvent() används korrekt för att läsa data:
    sensors_event_t humidity_event;
    sensors_event_t temp_event;
    aht_humidity->getEvent(&humidity_event);
    aht_temp->getEvent(&temp_event);
    
    Serial.print("Temperature: ");
    Serial.print(temp_event.temperature);
    Serial.println(" °C");
    
    Serial.print("Humidity: ");
    Serial.print(humidity_event.relative_humidity);
    Serial.println(" % rH");

4. Serial Monitor visar inga data

Symtom:

  • Ingen utmatning i Serial Monitor.
  • Utmatningen stämmer inte överens med förväntade data.

Möjliga orsaker:

  • Felaktig baudhastighets inställning.
  • Seriell utmatning är inte initierad.
  • USB-kabeln eller anslutningen är defekt.

Lösningar:

  • Kontrollera baudhastigheten:

    • Baudhastigheten i Serial Monitor måste matcha värdet i Serial.begin().
    Serial.begin(115200);  // Sørg for at Serial Monitor også er sat til 115200 baud
     
    • Kontrollera den seriella initieringen:

      • Se till att Serial.begin() anropas i setup():
      void setup() {
        Serial.begin(115200);
      }
      
  • Kontrollera kablar och anslutningar:

    • Prova en annan USB-kabel eller en annan port eftersom vissa kablar bara stöder laddning och inte dataöverföring.

Felsökningstips

Använd Serial.print() för felsökning

  • Infoga Serial.print()-satser i koden för att följa exekveringsflödet och spåra variabler.

Läs felmeddelanden noggrant

  • Arduino IDE ger ofta exakta felbeskrivningar som kan hjälpa dig att hitta problemet.

Kontrollera dokumentationen

  • Läs sensorernas datablad och bibliotekens dokumentation för att förstå korrekt användning och felsökning.

 


Lista över nödvändiga komponenter:

 


Sammanfattning

I den här lektionen har du lärt dig om de vanligaste problemen som kan uppstå vid programmering av ESP32 och användning av sensorer. Vi har gått igenom biblioteksfel, sensorinitiering, felaktiga avläsningar och problem med Serial Monitor.

Genom att använda ett systematiskt arbetssätt för felsökning kan du effektivt identifiera och lösa problem så att din kod och hårdvara fungerar optimalt.

Kom ihåg: Felsökning är en iterativ process. Bli inte frustrerad – varje fel du löser för dig närmare ett lyckat projekt! 

Om mätningarna: Stationen i den här serien mäter temperatur och relativ luftfuktighet med AHT10. Det är mätningar av inomhusklimatet, inte direkta mätningar av CO2, VOC eller partiklar. Seriens benämning ”luftkvalitetsövervakning” ska förstås med denna begränsning.

Lämna en kommentar

Observera att kommentarer måste godkännas innan de publiceras.