Raspberry Pi Pico: BME280 měření teploty, tlaku, vlhkosti

09.03.2024 Raspberry Pi #raspberry #pico #bme280

Programování modulu BME280 s deskou Raspberry Pi Pico, pomocí PlatformIO, pro získání údajů o teplotě, vlhkosti a tlaku. Tento tutoriál ukazuje, jak používat snímač BME280 s deskou Raspberry Pi Pico.


Senzorový modul BME280

Senzorový modul BME280 čte barometrický tlak, teplotu a vlhkost. Protože se tlak mění s nadmořskou výškou, můžete také odhadnout nadmořskou výšku. Existuje několik verzí tohoto senzorového modulu, ale my používáme verzi zobrazenou na obrázku níže.

Tento senzor komunikuje pomocí komunikačního protokolu I2C, takže zapojení je velmi jednoduché. K připojení snímače BME280 můžete použít jakékoli piny Raspberry Pi Pico I2C. Budeme používatGPIO 4(SDA) a GPIO 5(SCL).

BME280 Raspberry Pi Pico
Přijít 3,3 V(VEN)
GND GND
SCL GPIO 5
SDA GPIO 4

Zapojení BME280 k Raspberry Pi Pico

Připojte BME280 k jakékoli kombinaci pinů Pico I2C – budeme používat GPIO 4 (SDA) a GPIO 5 (SCL), což jsou výchozí piny Raspberry Pi I2C při programování pomocí Arduino IDE.

Pro instalaci potřebných knihoven stačí vložit seznam knihoven do souboru platformio.ini.

[env:pico]
platform = raspberrypi
board = pico
framework = arduino
monitor_speed = 115200
build_type = debug
lib_deps = 
	adafruit/Adafruit Unified Sensor@^1.1.6
	adafruit/Adafruit BME280 Library@^2.2.2
    khoih-prog/AsyncWebServer_RP2040W@^1.5.0

Programový kód

#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>

/*#include <SPI.h>
#define BME_SCK 18
#define BME_MISO 19
#define BME_MOSI 23
#define BME_CS 5*/

#define SEALEVELPRESSURE_HPA (1013.25)

Adafruit_BME280 bme; // I2C (default pins for Raspberry Pi Pico: GPIO 4 (SDA), GPIO 5(SCL)
//Adafruit_BME280 bme(BME_CS); // hardware SPI
//Adafruit_BME280 bme(BME_CS, BME_MOSI, BME_MISO, BME_SCK); // software SPI

unsigned long delayTime;

void printValues() {
  Serial.print("Temperature = ");
  Serial.print(bme.readTemperature());
  Serial.println(" *C");
  
  // Convert temperature to Fahrenheit
  /*Serial.print("Temperature = ");
  Serial.print(1.8 * bme.readTemperature() + 32);
  Serial.println(" *F");*/
  
  Serial.print("Pressure = ");
  Serial.print(bme.readPressure() / 100.0F);
  Serial.println(" hPa");

  Serial.print("Approx. Altitude = ");
  Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
  Serial.println(" m");

  Serial.print("Humidity = ");
  Serial.print(bme.readHumidity());
  Serial.println(" %");

  Serial.println();
}

void setup() {
  Serial.begin(115200);
  Serial.println("BME280 with Raspberry Pi Pico");

  bool status;

  // default settings
  // (you can also pass in a Wire library object like &Wire2)
  status = bme.begin(0x76);  
  if (!status) {
    Serial.println("Could not find a valid BME280 sensor, check wiring!");
    while (1);
  }

  delayTime = 1000;

  Serial.println();
}

void loop() { 
  printValues();
  delay(delayTime);
}

Nahrání kódu do Raspberry Pi Pico

Chcete-li nahrát kód do Raspberry Pi Pico, musí být v režimu bootloaderu.

Pokud je na Raspberry Pi aktuálně spuštěn firmware MicroPython, musíte jej ručně přepnout do režimu bootloaderu. Za tímto účelem připojte Raspberry Pi Pico k počítači a současně držte tlačítko BOOTSEL.

Pro budoucí nahrávání pomocí Arduino IDE by se deska měla automaticky přepnout do režimu bootloaderu bez nutnosti mačkat tlačítko BOOTSEL.