#include <GxEPD2_BW.h>
#include <Adafruit_GFX.h>
#include <Fonts/FreeMonoBold12pt7b.h>
#include <Fonts/FreeSerif9pt7b.h>
#include <DHT.h>
// Define DHT22 sensor parameters
#define DHTPIN 15 // Pin connected to DHT22 data pin
#define DHTTYPE DHT22 // DHT22 sensor type
DHT dht(DHTPIN, DHTTYPE);
// Set up the e-paper display
GxEPD2_BW<GxEPD2_290, GxEPD2_290::HEIGHT> display(GxEPD2_290(/*CS=*/ 5, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4));
void setup() {
Serial.begin(115200);
Serial.println("\n\nbooting");
// Initialize the DHT22 sensor
dht.begin();
// Initialize the e-paper display
display.init();
display.setRotation(1);
display.setFont(&FreeMonoBold12pt7b);
display.setTextColor(GxEPD_BLACK);
}
void loop() {
Serial.println("updating...");
// Read temperature and humidity from DHT22
float humidity = dht.readHumidity();
float temperature = dht.readTemperature(); // Celsius
// Check if any reads failed
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Failed to read from DHT sensor!");
display.fillScreen(GxEPD_WHITE);
display.setCursor(10, display.height() / 2);
display.println("Sensor Error");
display.display();
delay(20000UL);
return;
}
// Clear the display
display.fillScreen(GxEPD_WHITE);
// Display temperature
display.setFont(&FreeMonoBold12pt7b);
display.setCursor(10, display.height() / 2 - 20);
display.print("Temp: ");
display.print(temperature, 1);
display.println(" C");
// Display humidity
display.setCursor(10, display.height() / 2 + 20);
display.print("Hum: ");
display.print(humidity, 1);
display.println(" %");
// Update the display
display.display();
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.print(" C, Humidity: ");
Serial.print(humidity);
Serial.println(" %");
// Wait for 20 seconds before updating again
delay(20000UL);
}