station-air.ino

Arduino Nano Every · Archivo : station-air.ino · Lenguaje : Arduino · Uso : Station air complètes sur le bus I2C

Estación de calidad del aire en tres hilos: el BME280 por I2C da temperatura, humedad, presión y altitud estimada, que el Nano Every publica en CSV cada dos segundos. El bus Wire del 4809 va en A4/A5, como el Nano antiguo.

Hardware

Un Arduino Nano Every (ATmega4809 a 20 MHz, mismo formato que el Nano, USB micro-B, chip UART separado, pines de 5 V, compatibilidad directa con el Nano clásico). Nano Every, BME280 I2C (dirección 0x76 u 0x77 según strap), cable USB.

Cableado

BME280 VCC→3,3 V (nunca 5 V en este módulo), GND, SDA→A4, SCL→A5; el módulo lleva sus pull-up.

Funcionamiento

La prueba begin(0x76)||begin(0x77) cubre las dos direcciones posibles del sensor. readAltitude convierte la presión en altitud con la fórmula atmosférica internacional.

Ejecución

Instala el paquete Arduino megaAVR Boards en el IDE, selecciona Arduino Nano Every y carga. El Serial USB está separado del Serial1 de hardware (pines RX/TX): el código serie clásico funciona tal cual.

Variantes

Añade un BME688/BME680 para CO2 equivalente o registra el CSV en el PC por el puerto serie para una campaña larga.

station-air.ino

// BME280 (I2C 0x76) sur Nano Every : T/H/P via la bibliotheque Adafruit.
// Le bus Wire du 4809 est sur A4/A5 comme sur l'ancien Nano.
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>

Adafruit_BME280 bme;

unsigned long dernier = 0;

void setup() {
  Serial.begin(115200);
  Wire.begin();
  if (!bme.begin(0x76) && !bme.begin(0x77)) {
    Serial.println(F("BME280 absent (0x76/0x77)"));
    while (true);
  }
  Serial.println(F("T;H;P;Alt"));
}

void loop() {
  if (millis() - dernier < 2000) return;
  dernier = millis();
  float t = bme.readTemperature();
  float h = bme.readHumidity();
  float p = bme.readPressure() / 100.0;
  float a = bme.readAltitude(1013.25);
  Serial.print(t, 2);  Serial.print(';');
  Serial.print(h, 1);  Serial.print(';');
  Serial.print(p, 1);  Serial.print(';');
  Serial.println(a, 1);
}

← Volver a la ficha