#include #include #include #include "calendar.h" #include "draw_qrcode.h" #include "weather.h" #include "secrets.h" #define USE_DHCP 0 #define EPULSE_BOARD #if defined(WAVESHARE_BOARD) #define SCK 13 #define MOSI 14 #define CS 15 #define RST 26 #define DC 27 #define BUSY 25 #elif defined(EPULSE_BOARD) #define SCK 18 #define MISO 19 #define MOSI 23 #define CS 5 #define RST 2 #define DC 0 #define BUSY 4 #endif /* see GxEPD2_WS_ESP32_Driver.ino and esp32-waveshare-epd/src/DEV_Config.h #define EPD_SCK_PIN 13 #define EPD_MOSI_PIN 14 #define EPD_CS_PIN 15 #define EPD_RST_PIN 26 #define EPD_DC_PIN 27 #define EPD_BUSY_PIN 25 mapping of Waveshare ESP32 Driver Board BUSY -> 25, RST -> 26, DC -> 27, CS-> 15, CLK -> 13, DIN -> 14 thingpulse ePulse board: CLK = SCK = 18 DIN = MOSI = 23 CS = 5 DC = 0 RST = 2 BUSY = 4 */ GxEPD2_BW display(GxEPD2_420(CS, DC, RST, BUSY)); U8G2_FOR_ADAFRUIT_GFX u8g2Fonts; extern GxEPD2_GFX_BASE_CLASS &get_display() { return display; } void board_spi_setup() { /* board-specific setup */ SPI.end(); SPI.begin(SCK, MISO, MOSI, CS); } void display_setup() { display.init(); board_spi_setup(); u8g2Fonts.begin(display); } void draw() { display.setRotation(1); u8g2Fonts.setBackgroundColor(GxEPD_WHITE); u8g2Fonts.setForegroundColor(GxEPD_BLACK); display.firstPage(); do { display.fillScreen(GxEPD_WHITE); draw_calendar(30, 10); draw_weather(10, 180); //draw_qrcode_wlan(30, 200, wifi_ssid, wifi_psk); } while(display.nextPage()); } void wifi_connect() { #if !USE_DHCP IPAddress ip{10, 0, 0, 8}; //IPAddress dns{8, 8, 8, 8}; IPAddress gateway{10, 0, 0, 1}; IPAddress subnet{255, 255, 255, 0}; WiFi.config(ip, gateway, subnet, gateway); #endif WiFi.begin(wifi_ssid, wifi_psk); while (WiFi.status() != WL_CONNECTED) { delay(500); } } void wifi_disconnect() { WiFi.disconnect(); WiFi.mode(WIFI_OFF); } void update_time() { struct tm timeinfo; configTime(0, 0, "de.pool.ntp.org"); getLocalTime(&timeinfo, 5000); } void setup() { Serial.begin(115200); wifi_connect(); update_time(); fetch_weather(); wifi_disconnect(); display_setup(); draw(); display.powerOff(); } void loop() { delay(1000); }