BMP388 temperatuur- en luchtdruksensor aansluiten op een ESP32 met I²C
Over de SHT41
De BMP388 barometric pressure sensor is een uiterst nauwkeurige luchtdruksensor die perfect geschikt is voor toepassingen zoals weerstations, hoogtebepaling en slimme automatiseringen binnen Home Assistant.
Deze sensor communiceert via I²C-communicatie en is daardoor eenvoudig aan te sluiten op een
ESP32
In mijn weerstation-serie is dit een van de belangrijkste sensoren. Waarom?
Omdat luchtdruk één van de beste indicatoren is om weersveranderingen te voorspellen. Door trends te analyseren (stijgend, dalend of stabiel), kun je verrassend nauwkeurig inschatten wat het weer gaat doen.
Daarnaast is de BMP388 niet alleen nauwkeurig, maar ook compact, energiezuinig en eenvoudig aan te sluiten op een ESP32 of ESP8266.
Wat maakt de BMP388 zo interessant?
De BMP388 is de opvolger van populaire sensoren zoals de BMP280 en BME280 (zonder luchtvochtigheid). Deze sensor is ontworpen met een sterke focus op nauwkeurigheid en stabiliteit. De BMP388 is nauwkeuriger dan
bijvoorbeeld de BME680, waar de BME680 een nauwkeurigheid voor de luchtdruk heeft van ±1 hPa, heeft de DMP388 een
nauwkeurigheid van ±0.5 hPa.
Als je de luchtdruk op op een bepaalde hoogte of zeeniveau weet, dan kan je de BMP388 ook gebruiken voor het bepalen van de hoogte boven zeeniveau. Hierbij is nauwkeurigheid zeer gewenst omdat ±0.5 hPa al neerkomt op ±4 meter.
Gebruik je de sensor zelf om deze de druk op de grond te laten bepalen, dan wordt een hoogtemeting nauwkeuriger omdat de nauwkeurigheid gelijk blijft.
👉 Dit maakt het een zeer krachtige sensor voor drukmetingen.
⚙️ Specificaties
🧪 Algemene informatie
🏷️ Naam: BMP388
🌡️ Type: Digitale temperatuur- en luchtdruksensor
🌡️ Meetbereik & nauwkeurigheid
Temperatuur-bereik: –40 °C tot +85 °C
Temperatuur-nauwkeurigheid: ±0.5 °C
Luchtdruk-bereik: 300–1250 hPa
Luchtdruk-nauwkeurigheid: ±0.5 hPa
Resolutie: 0.001 hPa
🔋 Voeding & verbruik
Voedingsspanning: 1.65 V tot 3.6 V
Geschikt voor ESP32: ja, op 3.3 V
Stroomverbruik: zeer laag
🔗 Communicatie
Protocol: I²C
Standaard I2C-adres: 0x76 / 0x77
Aantal datalijnen: 2 (SDA en SCL)
Alternatief: SCK, MOSI, MISO, CS
🧰 Typische toepassingen
📊 Weerstation / luchtdruk
⛅ Weerstation / weersvoorspelling
✈️ Modelvliegtuig of drone / hoogtemeter
Aansluitschema ESP32 – BMP388 (I2C)
| BMP388 | ESP32 |
|---|---|
| VCC | 3.3V |
| GND | GND |
| SCL | GPIO 22 |
| SDA | GPIO 21 |
Tip: gebruik een I2C-scanner om zeker te weten op welk adres jouw board reageert
(meestal 0x76). Als je meerdere I²C sensoren aansluit is dat meteen handig voor troubleshooting.
Arduino-code voorbeeld
Installeer via Library Manager: Adafruit_BMP3XX.h en Adafruit Unified Sensor.
#include <Wire.h.h>
#include <Adafruit_Sensor.h.h>
#include <Adafruit_BMP3XX.h.h>
Adafruit_BMP3XX bmp;
// Zet hier de actuele luchtdruk voor een hoogtemeting.
#define SEALEVELPRESSURE_HPA (1027.42)
void setup() {
Serial.begin(115200);
delay(1000);
// ESP32 standaard I2C pinnen: SDA = 21, SCL = 22
Wire.begin(21, 22);
Serial.println("BMP388 test gestart");
// Probeer eerst adres 0x77
if (!bmp.begin_I2C(0x77)) {
// Probeer daarna 0x76
if (!bmp.begin_I2C(0x76)) {
Serial.println("BMP388 niet gevonden. Controleer bedrading en I2C-adres.");
while (1) {
delay(10);
}
}
}
// Instellingen voor meten
bmp.setTemperatureOversampling(BMP3_OVERSAMPLING_8X);
bmp.setPressureOversampling(BMP3_OVERSAMPLING_4X);
bmp.setIIRFilterCoeff(BMP3_IIR_FILTER_COEFF_3);
bmp.setOutputDataRate(BMP3_ODR_1_HZ);
Serial.println("BMP388 gevonden en gereed");
}
void loop() {
if (!bmp.performReading()) {
Serial.println("Fout bij uitlezen van BMP388");
delay(2000);
return;
}
Serial.print("Temperatuur = ");
Serial.print(bmp.temperature);
Serial.println(" °C");
Serial.print("Druk = ");
Serial.print(bmp.pressure / 100.0); // Pa -> hPa
Serial.println(" hPa");
Serial.print("Geschatte hoogte = ");
Serial.print(bmp.readAltitude(SEALEVELPRESSURE_HPA));
Serial.println(" m");
Serial.println();
delay(2000);
}
Opmerkingen
- Adres: meestal
0x76. Zie je niets bijscan: true? Check bekabeling (SDA/SCL omgewisseld komt vaak voor). - Bus-voordeel: combineer de BMP388 makkelijk met bijvoorbeeld een SHT41/BME280/VEML7700 op dezelfde I²C lijnen.
- bmp.setTemperatureOversampling(BMP3_OVERSAMPLING_8X); meet de temperatuur 8 keer en neem daar het gemiddelde van.
- bmp.setPressureOversampling(BMP3_OVERSAMPLING_4X); meet de luchtdruk 4 keer en neem daar het gemiddelde van.
- bmp.setIIRFilterCoeff(BMP3_IIR_FILTER_COEFF_3); demp kleine schommelingen.
- bmp.setOutputDataRate(BMP3_ODR_1_HZ); 1 metingen per seconden, hoe minder metingen hoe energie-zuiniger (kan ook bijv. 50 zijn).
Waarom kiezen voor de BMP388?
De BMP388 barometric pressure sensor is dé keuze als je nauwkeurige luchtdrukmetingen wilt voor je eigen weerstation of Home Assistant project.
In tegenstelling tot all-in-one sensoren ligt de focus hier volledig op precisie. En dat merk je direct in je data.
✔ Zeer nauwkeurige luchtdrukmeting – ideaal voor trendanalyse
✔ Stabiele metingen – geen “springende” grafieken
✔ Perfect voor weersvoorspelling – zie veranderingen vroeg aankomen
✔ Compact en energiezuinig – ideaal voor ESP32 projecten
☕ Steun deze website met een kop koffie
Op matteman.nl deel ik al mijn projecten, schema’s, uitleg en code gratis — zonder advertenties of sponsordeals. Alles wat je hier vindt, is met zorg gemaakt om hobbyisten, makers en automatiseringsliefhebbers op weg te helpen.Heb je iets gehad aan de informatie op deze site? Dan kun je mij helpen door een eenmalige bijdrage te doen via Buy Me a Coffee. Daarmee steun je niet alleen mijn werk, maar ook de kosten voor hosting, onderdelen en het onderhouden van de 3D-printer (die het altijd begeeft op het verkeerde moment 😉).
Elke bijdrage — groot of klein — wordt enorm gewaardeerd. Dankjewel! 🙌