Aquest codi en C++ per a ESP8266 configura un sistema de monitoratge del clima amb un sensor BME680, una pantalla OLED, i una pàgina web interactiva amb gràfics, mostrant dades com temperatura, humitat, pressió i hora.

const char* ssid = "EL_TEU_SSID";
const char* password = "CLAU";

📦 Libreries importades

#include <ESP8266WiFi.h>      // Per connectar-se al WiFi
#include <Wire.h>             // Comunicació I2C
#include <Adafruit_Sensor.h>  // Interfície comuna de sensors
#include <Adafruit_BME680.h>  // Llibreria específica del sensor BME680
#include <Adafruit_SSD1306.h> // Per controlar la pantalla OLED
#include <WiFiUdp.h>          // Per connexions UDP
#include <NTPClient.h>        // Per obtenir l'hora des d'Internet

🖥️ Configuració de l’OLED

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_SDA 14  // pin D6
#define OLED_SCL 12  // pin D5
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

Es configura la mida i els pins de connexió I2C de la pantalla OLED.

🌡️ Configuració del Sensor

Adafruit_BME680 bme;

Es crea l’objecte per llegir temperatura, humitat, pressió i gas del BME680.

🌐 Servidor Web i NTP

WiFiServer server(80); // Port web
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "pool.ntp.org", 2 * 3600, 60000); // Hora via NTP

S’estableix:

  • Un servidor web en el port 80 per accedir des del navegador.
  • Un client NTP per sincronitzar l’hora (amb zona horària GMT+2).

🖼️ Funció per mostrar les dades a l’OLED

void mostrarDatosEnOLED(...)
Mostra:
  • Hora actual
  • Temperatura
  • Humitat
  • Pressió
  • IP local

A la pantalla OLED, refrescada cada segon.

🎯 Resum del funcionament

  1. L’ESP8266 es connecta a WiFi.
  2. Llegeix dades del BME680.
  3. Les mostra a la pantalla OLED.
  4. Les envia a una pàgina web que pots veure des de qualsevol dispositiu connectat a la mateixa xarxa (a través de la IP mostrada a l’OLED).
  5. La web mostra les dades i gràfics en temps real.

Hardware

Web