Hoofdstuk 7 van 14

Een BME280 aansluiten en meetwaarden begrijpen

Sluit een BME280 via I²C aan op je ESP32, configureer ESPHome en controleer temperatuur, luchtvochtigheid en luchtdruk.

Een drukknop kent twee toestanden. Een klimaatsensor geeft ons getallen waarmee we iets over de omgeving kunnen zeggen. In De Werkplaats is dat nuttig: zo kunnen we zien hoe de temperatuur en luchtvochtigheid gedurende de dag veranderen.

Waarom we de BME280 gebruiken

De BME280 meet temperatuur, relatieve luchtvochtigheid en luchtdruk. Gebruik echt een BME280 en niet per ongeluk een BMP280; die laatste meet geen luchtvochtigheid. Koop bij voorkeur een sensormodule waarvan de fabrikant of leverancier de pinnen en voedingsspanning duidelijk documenteert.

We gebruiken de digitale communicatiemethode I²C. Die werkt met twee signaaldraden: SDA voor gegevens en SCL voor het kloksignaal. Daarnaast hebben we voeding en GND nodig.

De vier verbindingen

Koppel USB los voordat je de sensor aansluit. Voor het hier gebruikte ESP32-WROOM-32-ontwikkelbord sluiten we aan:

BME280-module ESP32 Functie
VCC of geschikte 3,3V-voedingspin 3V3 Voeding
GND GND Massa
SDA GPIO21 Gegevens
SCL GPIO22 Kloksignaal

Gebruik deze tabel alleen als de documentatie van jouw module bevestigt dat hij met 3,3 volt gevoed kan worden en deze pinnen inderdaad de genoemde functies hebben. Sommige modules hebben extra aansluitingen of gebruiken andere aanduidingen.

De bus en sensor configureren

Voeg de I²C-bus toe aan de bestaande configuratie:

i2c:
  sda: GPIO21
  scl: GPIO22
  scan: true

De scanner laat bij het opstarten zien welke I²C-adressen reageren. Een BME280 wordt doorgaans gevonden op 0x76 of 0x77. Het adres is nodig omdat meerdere onderdelen dezelfde SDA- en SCL-lijnen kunnen delen.

De sensorsectie voegen we hierna toe. Controleer in de actuele componentencatalogus of de BME280-component in jouw ESPHome-versie bme280_i2c heet. In de recente ESPHome-documentatie is dit de gebruikelijke platformnaam:

sensor:
  - platform: bme280_i2c
    address: 0x76
    temperature:
      name: "Werkplaats temperatuur"
      id: werkplaats_temperatuur
    pressure:
      name: "Werkplaats luchtdruk"
    humidity:
      name: "Werkplaats luchtvochtigheid"
    update_interval: 30s

Vind je in de logs 0x77 in plaats van 0x76, verander dan alleen address: naar 0x77. Laat de bedrading en andere regels gelijk, installeer opnieuw en kijk of dat het verschil oplost.

Waarom dertig seconden voldoende kan zijn

De temperatuur in De Werkplaats verandert meestal niet van seconde tot seconde. Een sensor iedere dertig seconden uitlezen geeft doorgaans al een bruikbaar beeld. Een korter interval levert meer getallen op, maar niet automatisch betere informatie.

Voorspel nu wat er gebeurt wanneer je een hand dicht bij de sensor houdt. De temperatuur kan na enige tijd stijgen. De luchtvochtigheid kan ook veranderen. Verwacht geen exacte voorbeeldwaarde: de sensor meet zijn eigen omgeving.

Een waarde is nog geen betrouwbare meting

Een gemeten temperatuur kan hoger uitvallen als de BME280 vlak naast een warme ESP32 ligt. In een gesloten behuizing meet hij mogelijk vooral de temperatuur van de elektronica. Ook direct zonlicht, luchtstroming en de plaatsing spelen mee.

Vergelijk daarom met een tweede thermometer die op ongeveer dezelfde plaats ligt. Laat beide rustig op temperatuur komen. Kijk eerst of ze dezelfde ontwikkeling laten zien, niet of ze op de tiende graad exact overeenkomen.

Als de sensor niet wordt gevonden

Kijk eerst naar de I²C-scan in de logs. Verschijnt geen adres, onderzoek de voedingsspanning, GND, SDA, SCL en de fysieke verbindingen. Verschijnt wel een adres maar geen geldige meetwaarde, controleer dan het sensortype en het ingestelde platform.

Een I²C-scanner kan aantonen dat een apparaat antwoord geeft. Hij bewijst nog niet dat de sensor correct meet. Dat verschil voorkomt verkeerde conclusies.

Wat je uit dit hoofdstuk kunt meenemen

Je kunt een digitale sensor via I²C aansluiten, begrijpt het doel van SDA, SCL en een I²C-adres en weet waarom je meetwaarden kritisch bekijkt. In het volgende hoofdstuk brengen we die gegevens naar Home Assistant, zodat ze niet alleen in de logs zichtbaar zijn.