Cos'è il bus I2C
I2C è un bus seriale a due fili (SDA e SCL) che permette di collegare decine di sensori e periferiche allo stesso microcontrollore. Su ESP32 i pin di default sono GPIO21 (SDA) e GPIO22 (SCL), ma sono riassegnabili via software.
Cablaggio del BME280
Il sensore Bosch BME280 misura temperatura, umidità relativa e pressione barometrica. Collegamenti tipici:
- VCC → 3.3V dell'ESP32
- GND → GND
- SDA → GPIO21
- SCL → GPIO22
Sull'I2C servono due resistenze di pull-up da 4.7 kΩ tra SDA/SCL e 3.3V (molti breakout BME280 le hanno già a bordo).
Sketch Arduino
Installa la libreria Adafruit BME280 dal Library Manager. Codice minimo:
#include <Wire.h>
#include <Adafruit_BME280.h>
Adafruit_BME280 bme;
void setup() {
Serial.begin(115200);
if (!bme.begin(0x76)) {
Serial.println("BME280 non trovato!");
while (1) delay(100);
}
}
void loop() {
Serial.printf("T=%.2f °C | RH=%.1f%% | P=%.1f hPa\n",
bme.readTemperature(),
bme.readHumidity(),
bme.readPressure() / 100.0);
delay(2000);
}
Trovare l'indirizzo I2C
Se il sensore non risponde a 0x76 prova 0x77. In alternativa carica lo sketch I2C Scanner per elencare tutti gli indirizzi attivi sul bus.
Estendere il progetto
Sullo stesso bus I2C puoi aggiungere un display OLED SSD1306 (indirizzo 0x3C) per mostrare le letture senza ricorrere al monitor seriale, oppure un RTC DS3231 per i timestamp.