In dit lab sluiten we de BME280 aan op de Arduino en bekijken we de metingen op het scherm.

We hebben een handige manier gevonden om de sensor op de Arduino aan te sluiten. We willen deze aansluiting realiseren van BME280 naar de Arduino:
• VIN -> D6
• GND -> D5
• SCL -> D3
• SDA -> D2

Welke sensor wordt gebruikt? Hoe communiceert deze het verder naar de Arduino, hoe vertaalt de Arduino dit weer naar zinvolle informatie?
Dit is een deel van de lessenseries en workshops voor het bouwen van de GPS tracker. Maar dit lab kan je ook los daarvan gebruiken. Je gebruikt dan de code die hieronder staat.

Open de seriële monitor via hulpmiddelen > seriële monitor, en kijk of je de temperatuur, druk en luchtvochtigheid ziet.

 

// test for BME280

#include <Wire.h> //I2C Arduino Library
#include "Seeed_BME280.h"

//////////////////////////////////////////////////////////
//// GY-BMEP BME280
////////////////////////////////////////////

BME280 bme280;

void readBME(){
  //get and print temperatures
  Serial.print(F("BME280 Temp: "));
  float bme280_temperature = bme280.getTemperature();
  Serial.print(bme280_temperature);
  Serial.println(" deg C"); //The unit for Celsius because original arduino don't support speical symbols

  //get and print atmospheric pressure data
  Serial.print(F("BME280 Pressure: "));
  float bme280_pressure = bme280.getPressure();
  Serial.print(bme280_pressure);
  Serial.println(" Pa");

  // //get and print altitude data
  // Serial.print(F("BME280 Altitude: "));
  Serial.print(F("BME280 Humidity: "));
  float bme280_humidity = bme280.getHumidity();
  Serial.print(bme280_humidity);
  Serial.println("%");

  Serial.println();
}

void BME280_init() { // see SEEDSTUDIO example
  Serial.print(F("BME280 init. "));
  // SCL to SCL = 3
  // SDA to SDA = 2

  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  digitalWrite(6, HIGH);
  digitalWrite(5, LOW);
  delay(1000); // need to boot the BME280

  if(!bme280.init()){
    Serial.println("BME280 device error or not found");
  } else {
    Serial.println("BME280 device found");
  }
}

void setup() {
  Serial.begin(115200);
  delay(2000);

  Serial.println(F("\nStarting BME280 test."));
  BME280_init();
}

void loop() {
  Serial.print(F("BME280 testing. "));
  readBME();
  delay(1000);
}

BME280 sensor voor temperatuur, luchtvochtigheid en druk via I2C

De BME280 is een sensor bordje waarop een hele mooie sensor zit voor druk, temperatuur en lucht vochtigheid. Deze informatie wordt verstuurd via I2C. Deze manier van communicatie is nét weer even anders, en gebeurt met specifieke pinnen op de Lora32u4. Gelukkig zijn er ook hier weer libraries die ons helpen.

In ons aansluitschema zie je waar deze gemonteerd wordt om met onze software te werken.

Nadat je de sensor hebt aangesloten gebruik je het testprogramma C:\arduino_port\GitHub\Junior-IOT-in-a-box-Project\arduino_test_BME280\arduino_test_BME280.ino om te controleren of het werkt.