Untitled

 avatar
unknown
plain_text
10 months ago
3.7 kB
17
Indexable
#include <DHT11.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_Sensor.h>
#include <U8g2lib.h>
#include <Adafruit_BMP280.h>

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define SDA_PIN 22
#define SCL_PIN 23
#define BMP280_ADDRESS 0x76
#define uS_TO_S_FACTOR 1000000ULL
#define TIME_TO_SLEEP 60

RTC_DATA_ATTR int bootCount = 0;
DHT11 dht11(2); //D2
U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE, /* clock=*/ 23, /* data=*/ 22);
Adafruit_BMP280 bmp;

void print_wakeup_reason() {
    esp_sleep_wakeup_cause_t wakeup_reason;

    wakeup_reason = esp_sleep_get_wakeup_cause();

    switch (wakeup_reason) {
        case ESP_SLEEP_WAKEUP_EXT0:     Serial.println("Wakeup caused by external signal using RTC_IO"); break;
        case ESP_SLEEP_WAKEUP_EXT1:     Serial.println("Wakeup caused by external signal using RTC_CNTL"); break;
        case ESP_SLEEP_WAKEUP_TIMER:    Serial.println("Wakeup caused by timer"); break;
        case ESP_SLEEP_WAKEUP_TOUCHPAD: Serial.println("Wakeup caused by touchpad"); break;
        case ESP_SLEEP_WAKEUP_ULP:      Serial.println("Wakeup caused by ULP program"); break;
        default:                        Serial.printf("Wakeup was not caused by deep sleep: %d\n", wakeup_reason); break; 
    }
}

void setup() {
    // Initialize serial communication to allow debugging and data readout.
    // Using a baud rate of 9600 bps.
    
    Serial.begin(115200);
    print_wakeup_reason();
    ++bootCount;
    Serial.println("Boot number: " + String(bootCount));

    delay(2000);

    esp_log_level_set("i2c.master", ESP_LOG_NONE);
    Wire.begin(SDA_PIN, SCL_PIN); //D4 i D5
    u8g2.begin();
    bmp.begin(BMP280_ADDRESS);

    int temperature = 0;
    int humidity = 0;

    // Attempt to read the temperature and humidity values from the DHT11 sensor.
    int result = dht11.readTemperatureHumidity(temperature, humidity);

    // Check the results of the readings.
    // If the reading is successful, print the temperature and humidity values.
    // If there are errors, print the appropriate error messages.
    if (result == 0) {
        Serial.print("Temperature: ");
        Serial.print(temperature);
        Serial.print(" °C\tHumidity: ");
        Serial.print(humidity);
        Serial.println(" %");
    } else {
        // Print error message based on the error code.
        Serial.println(DHT11::getErrorString(result));
    }

    int pressure = bmp.readPressure();

    Serial.println("Cisnienie: ");
    Serial.print(pressure / 1000);
    Serial.println(" hPa");

    //przy moim oledzie okazuje sie ze inta w stringa trzeba zamieniac
    char buffer[10];
    char buffer2[10];
    char buffer3[10];
    sprintf(buffer, "%d C", temperature);
    sprintf(buffer2, "%d %%", humidity);
    sprintf(buffer3, "%d hPa", pressure / 100);

    //temperatura
    u8g2.clearBuffer();
    u8g2.setFont(u8g2_font_ncenB08_tr);
    u8g2.drawStr(0,10,"Temp: ");
    u8g2.drawStr(50, 10, buffer);

    // wilgotnosc
    u8g2.setFont(u8g2_font_ncenB08_tr);
    u8g2.drawStr(0,30,"Hum: ");
    u8g2.drawStr(50,30, buffer2);
    
    // cisnienie
    u8g2.setFont(u8g2_font_ncenB08_tr);
    u8g2.drawStr(0,50,"Press: ");
    u8g2.drawStr(50,50, buffer3);
    u8g2.sendBuffer();
    delay(100000);


    esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);
    Serial.println("Setup ESP32 to sleep for every " + String(TIME_TO_SLEEP) + " Seconds");
    Serial.println("Going to sleep now");
    esp_deep_sleep_start();
    Serial.print("This will never be printed");

    }

void loop() {

}
Editor is loading...
Leave a Comment