Untitled
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