zaterdag 24 oktober 2020

Weerstation met BME280 en Oled i2c

 /*

 * Arduino with SSD1306 OLED display (128x64 Pixel) and BME280 sensor.

 * BME280 is barometric pressure, temperature and humidity sensor.

 */


#include <Wire.h>              // include Arduino wire library (required for I2C devices)

#include <Adafruit_GFX.h>      // include Adafruit graphics library

#include <Adafruit_SSD1306.h>  // include Adafruit SSD1306 OLED display driver

#include <Adafruit_BME280.h>   // include Adafruit BME280 sensor library

 

#define OLED_RESET  4    // define display reset pin


#define SCREEN_WIDTH 128 // OLED display width, in pixels

#define SCREEN_HEIGHT 64 // OLED display height, in pixels


#define SEALEVELPRESSURE_HPA (1013.25)


// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

 

// define device I2C address: 0x76 or 0x77 (0x77 is library default address)

#define BME280_I2C_ADDRESS  0x76

 

Adafruit_BME280  bme280;  // initialize Adafruit BME280 library

 

void setup(void)

{

  delay(1000);  // wait a second

 

  // initialize the SSD1306 OLED display with I2C address = 0x3D

  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);

 

  // clear the display buffer.

  display.clearDisplay();

 

  display.setTextSize(1);   // text size = 1

  display.setTextColor(WHITE, BLACK);  // set text color to white and black background


  display.setTextSize(1);

   display.invertDisplay(true);

  display.setTextColor(WHITE);

  display.setCursor(20, 4);

  display.println("Arduino Projects");

  display.drawRoundRect(0, 0, 128, 16, 4, WHITE); //drawRect(x, y, width, height, color) 

    display.setCursor(20, 20);

  display.setTextSize(2);

      display.setCursor(20, 20);

    display.println("By");

      display.setTextSize(3);

          display.setCursor(10, 40);

      display.println("Spike");

     

  


  

 

  // initialize the BME280 sensor

  if( bme280.begin(BME280_I2C_ADDRESS) == 0 )

  {  // connection error or device address wrong!

    display.setCursor(34, 23);

    display.print("Connection");

    display.setCursor(49, 33);

    display.print("Error");

    display.display();        // update the display

    while(1);                 // stay here

  }

 


  display.display();        // update the display

 delay(2000);

  display.invertDisplay(false);

}

 

char _buffer[12];

 

void loop()

{    

  display.clearDisplay();

  display.setTextColor(WHITE, BLACK); 

   display.setTextSize(1); 

  

  // read temperature, humidity and pressure from the BME280 sensor

  float temp = bme280.readTemperature();    // get temperature in degree Celsius

  float humi = bme280.readHumidity();       // get humidity in rH%

  float pres = bme280.readPressure();       // get pressure in Pa

  float alt = bme280.readAltitude((SEALEVELPRESSURE_HPA)); 


  display.setCursor(30, 3);

  // Display static text

  display.println("Weer Station");

//  display.drawRect(10, 10, 50, 30, WHITE);  //drawRect(x, y, width, height, color) 

display.drawRoundRect(0, 0, 120, 16, 4, WHITE);





 

  // print all data on the display

  display.setCursor(0, 20);

  display.print("TEMP:");


  display.setCursor(50, 20);

  display.print(temp);

  // print degree symbols ( ° )

  display.drawRect(85, 20, 3, 3, WHITE);

    

   display.setCursor(0, 30);

  display.print("HUMI:");

  display.setCursor(50, 30);

  display.print(humi);

display.print(" %");



   display.setCursor(0, 40);

  display.print("Luchtd:");

  display.setCursor(50, 40);

  display.print((pres/100));

  display.print(" hPa");


   display.setCursor(0, 50);

  display.print("Alt");

  display.setCursor(50, 50);

  display.print((alt));

  display.print(" m");

 

  // update the display

  display.display();

 

  delay(3000);  // wait a second








//Temp weergave

 display.clearDisplay();

   display.setCursor(20, 4);

  // Display static text

  display.println("Temperatuur");

display.drawRoundRect(0, 0, 120, 16, 4, WHITE); 

 display.setTextSize(2);   // text size = 1

  display.setCursor(0, 20);

  display.print("TEMP:");

  display.setCursor(20, 45);

  display.print(temp);

  display.drawRect(90, 45, 5, 5, WHITE);//graden symbool

  display.display();


  delay(3000);  // wait a second


//Humi weergave

 display.clearDisplay();

   display.setCursor(20, 4);

display.setTextSize(1);

  display.println("Rel Vochtigheid");

display.drawRoundRect(0, 0, 120, 16, 4, WHITE); 

 display.setTextSize(2);   // text size = 1

  display.setCursor(0, 20);

  display.print("Rel Vocht:");

  display.setCursor(20, 45);

  display.print(humi);

    display.print(" %");

  display.display();


  delay(3000);  // wait a second


//Luchtdruk weergave

 display.clearDisplay();

   display.setCursor(20, 4);

display.setTextSize(1);

  display.println("Luchtdruk");

display.drawRoundRect(0, 0, 120, 16, 4, WHITE); 

 display.setTextSize(2);   

  display.setCursor(0, 20);

  display.print("Luchtdruk:");

  display.setCursor(0, 45);

  display.print(pres/100);

    display.print("hPa");

  display.display();


  delay(3000);  // wait a second




// Big screen temp

//  display.setTextColor(BLACK,WHITE);

//display.fillRoundRect(0, 0, 128, 96, 2, WHITE);


 display.invertDisplay(true);

 

  display.clearDisplay(); 

  display.display();

  display.setCursor(30, 4);

  display.setTextSize(1);

  display.println("Temperatuur");

  display.setTextSize(3); 

  display.setCursor(10, 30);

  display.println(temp);

    // print degree symbols ( ° )

  display.drawRect(105, 30, 5, 5, WHITE);

  display.display();

  delay (2000);

  

// Big screen vocht

 display.clearDisplay();

 display.setCursor(30, 4);

 display.setTextSize(1);

 display.println("Vochtigheid %");

 display.setTextSize(3); 

 display.setCursor(10, 30);

 display.println(humi);

 display.display();

 delay(2000);

 

// Big screen luchtdruk

 display.clearDisplay();

 display.setCursor(20, 4);

 display.setTextSize(1);

 display.println("Luchtdruk in hPa");

 display.setTextSize(3); 

 display.setCursor(0, 30);

 display.println(pres/100);

 display.display();

 delay(2000);


 display.invertDisplay(false);

 

}

 

// end of code.

Geen opmerkingen:

Een reactie posten

pzem module op Wemos D1 ESP easy

pzem module voorzien van R 1K tussen rx en 5v RX van pzem op D8 TX van pzem op D7 Wemos Config esp easy RX: GPIO-13 (D7) TX: GPIO-15 (D8) ht...