diff --git a/platformio.ini b/platformio.ini index 52b8dce..fa701a8 100644 --- a/platformio.ini +++ b/platformio.ini @@ -438,4 +438,16 @@ build_flags = lib_deps = ${common.lib_deps} adafruit/Adafruit GFX Library @ 1.11.9 - adafruit/Adafruit SSD1306 @ 2.5.10 \ No newline at end of file + adafruit/Adafruit SSD1306 @ 2.5.10 + +[env:heltec_wireless_paper] +board = esp32-s3-devkitc-1 +board_build.mcu = esp32s3 +build_flags = + -Werror -Wall + -DHELTEC_WP + -DHAS_SX1262 + -DHAS_EPAPER + -DELEGANTOTA_USE_ASYNC_WEBSERVER=1 +lib_deps = + ${common.lib_deps} \ No newline at end of file diff --git a/src/battery_utils.cpp b/src/battery_utils.cpp index 834a5ec..8c0ef92 100644 --- a/src/battery_utils.cpp +++ b/src/battery_utils.cpp @@ -99,7 +99,7 @@ namespace BATTERY_Utils { int sample; int sampleSum = 0; #ifdef ADC_CTRL - #if defined(HELTEC_WIRELESS_TRACKER) + #if defined(HELTEC_WIRELESS_TRACKER) || defined(HELTEC_WP) digitalWrite(ADC_CTRL, HIGH); #endif #if defined(HELTEC_V3) || defined(HELTEC_V2) || defined(HELTEC_WSL_V3) @@ -130,7 +130,7 @@ namespace BATTERY_Utils { } #ifdef ADC_CTRL - #if defined(HELTEC_WIRELESS_TRACKER) + #if defined(HELTEC_WIRELESS_TRACKER) || defined(HELTEC_WP) digitalWrite(ADC_CTRL, LOW); #endif #if defined(HELTEC_V3) || defined(HELTEC_V2) || defined(HELTEC_WSL_V3) diff --git a/src/boards_pinout.h b/src/boards_pinout.h index 54101fd..b565abb 100644 --- a/src/boards_pinout.h +++ b/src/boards_pinout.h @@ -18,7 +18,7 @@ #define RADIO_BUSY_PIN 26 // GPIO26 - SX1278 IRQ ---->DIO0 #endif -#if defined(HELTEC_V3) || defined(HELTEC_WSL_V3) || defined(HELTEC_WSL_V3_DISPLAY) || defined(HELTEC_WIRELESS_TRACKER) || defined(HELTEC_WS) +#if defined(HELTEC_V3) || defined(HELTEC_WSL_V3) || defined(HELTEC_WSL_V3_DISPLAY) || defined(HELTEC_WIRELESS_TRACKER) || defined(HELTEC_WS) || defined(HELTEC_WP) #define RADIO_SCLK_PIN 9 // SX1262 SCK #define RADIO_MISO_PIN 11 // SX1262 MISO #define RADIO_MOSI_PIN 10 // SX1262 MOSI @@ -84,7 +84,7 @@ #define RADIO_TXEN 13 #endif -#ifdef HELTEC_HTCT62 +#if defined(HELTEC_HTCT62) #define RADIO_SCLK_PIN 10 // SX1262 SCK #define RADIO_MISO_PIN 6 // SX1262 MISO #define RADIO_MOSI_PIN 7 // SX1262 MOSI @@ -204,6 +204,21 @@ #define BOARD_I2C_SCL 6 #endif +#ifdef HELTEC_WP + #define INTERNAL_LED_PIN 18 + #define BATTERY_PIN 20 + #define ADC_CTRL 19 + #define VEXT_CTRL 45 + #define BOARD_I2C_SDA 37 + #define BOARD_I2C_SCL 36 + #define EPAPER_BUSY 7 + #define EPAPER_RST 6 + #define EPAPER_DC 5 + #define EPAPER_CS 4 + #define EPAPER_SCL 3 + #define EPAPER_SDA 2 +#endif + #ifdef ESP32_C3_DIY_LoRa // just testing! #define OLED_SDA 8 #define OLED_SCL 9 diff --git a/src/display.cpp b/src/display.cpp index ce4270b..ca09176 100644 --- a/src/display.cpp +++ b/src/display.cpp @@ -16,15 +16,19 @@ #define lineSpacing 12 #endif #else - #include - #include - #if defined(HELTEC_V3) - #define OLED_DISPLAY_HAS_RST_PIN - #endif - #ifdef HELTEC_WSL_V3_DISPLAY - Adafruit_SSD1306 display(128, 64, &Wire1, OLED_RST); + #if HAS_EPAPER + // #else - Adafruit_SSD1306 display(128, 64, &Wire, OLED_RST); + #include + #include + #if defined(HELTEC_V3) + #define OLED_DISPLAY_HAS_RST_PIN + #endif + #ifdef HELTEC_WSL_V3_DISPLAY + Adafruit_SSD1306 display(128, 64, &Wire1, OLED_RST); + #else + Adafruit_SSD1306 display(128, 64, &Wire, OLED_RST); + #endif #endif #endif #endif @@ -52,32 +56,36 @@ void displaySetup() { } tft.setTextFont(0); tft.fillScreen(TFT_BLACK); - #else - #ifdef OLED_DISPLAY_HAS_RST_PIN - pinMode(OLED_RST, OUTPUT); - digitalWrite(OLED_RST, LOW); - delay(20); - digitalWrite(OLED_RST, HIGH); - #endif + #else + #if HAS_EPAPER + // + #else + #ifdef OLED_DISPLAY_HAS_RST_PIN + pinMode(OLED_RST, OUTPUT); + digitalWrite(OLED_RST, LOW); + delay(20); + digitalWrite(OLED_RST, HIGH); + #endif - #ifndef HELTEC_WSL_V3_DISPLAY - Wire.begin(OLED_SDA, OLED_SCL); - #endif + #ifndef HELTEC_WSL_V3_DISPLAY + Wire.begin(OLED_SDA, OLED_SCL); + #endif - if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) { - Serial.println(F("SSD1306 allocation failed")); - for(;;); // Don't proceed, loop forever - } - if (Config.display.turn180) { - display.setRotation(2); - } - display.clearDisplay(); - display.setTextColor(WHITE); - display.setTextSize(1); - display.setCursor(0, 0); - display.ssd1306_command(SSD1306_SETCONTRAST); - display.ssd1306_command(1); - display.display(); + if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) { + Serial.println(F("SSD1306 allocation failed")); + for(;;); // Don't proceed, loop forever + } + if (Config.display.turn180) { + display.setRotation(2); + } + display.clearDisplay(); + display.setTextColor(WHITE); + display.setTextSize(1); + display.setCursor(0, 0); + display.ssd1306_command(SSD1306_SETCONTRAST); + display.ssd1306_command(1); + display.display(); + #endif #endif delay(1000); #endif @@ -89,13 +97,21 @@ void displayToggle(bool toggle) { #ifdef HAS_TFT digitalWrite(TFT_BL, HIGH); #else - display.ssd1306_command(SSD1306_DISPLAYON); + #if HAS_EPAPER + // ... to be continued + #else + display.ssd1306_command(SSD1306_DISPLAYON); + #endif #endif } else { #ifdef HAS_TFT digitalWrite(TFT_BL, LOW); #else - display.ssd1306_command(SSD1306_DISPLAYOFF); + #if HAS_EPAPER + // ... to be continued + #else + display.ssd1306_command(SSD1306_DISPLAYOFF); + #endif #endif } #endif @@ -145,18 +161,22 @@ void displayShow(const String& header, const String& line1, const String& line2, tft.print(*lines[i]); } #else - display.clearDisplay(); - display.setTextColor(WHITE); - display.setTextSize(1); - display.setCursor(0, 0); - display.println(header); - for (int i = 0; i < 3; i++) { - display.setCursor(0, 8 + (8 * i)); - display.println(*lines[i]); - } - display.ssd1306_command(SSD1306_SETCONTRAST); - display.ssd1306_command(1); - display.display(); + #ifdef HAS_EPAPER + // ... to be continued + #else + display.clearDisplay(); + display.setTextColor(WHITE); + display.setTextSize(1); + display.setCursor(0, 0); + display.println(header); + for (int i = 0; i < 3; i++) { + display.setCursor(0, 8 + (8 * i)); + display.println(*lines[i]); + } + display.ssd1306_command(SSD1306_SETCONTRAST); + display.ssd1306_command(1); + display.display(); + #endif #endif delay(wait); #endif @@ -179,20 +199,23 @@ void displayShow(const String& header, const String& line1, const String& line2, tft.print(*lines[i]); } #else - display.clearDisplay(); - display.setTextColor(WHITE); - display.setTextSize(2); - display.setCursor(0, 0); - display.println(header); - display.setTextSize(1); - for (int i = 0; i < 6; i++) { - display.setCursor(0, 16 + (8 * i)); - display.println(*lines[i]); - } - display.ssd1306_command(SSD1306_SETCONTRAST); - display.ssd1306_command(1); - display.display(); + #ifdef HAS_EPAPER + // ... to be continued + #else + display.clearDisplay(); + display.setTextColor(WHITE); + display.setTextSize(2); + display.setCursor(0, 0); + display.println(header); + display.setTextSize(1); + for (int i = 0; i < 6; i++) { + display.setCursor(0, 16 + (8 * i)); + display.println(*lines[i]); + } + display.ssd1306_command(SSD1306_SETCONTRAST); + display.ssd1306_command(1); + display.display(); + #endif #endif delay(wait); - #endif -} \ No newline at end of file + #endif \ No newline at end of file diff --git a/src/power_utils.cpp b/src/power_utils.cpp index 79f2b81..f4e70a9 100644 --- a/src/power_utils.cpp +++ b/src/power_utils.cpp @@ -154,13 +154,16 @@ namespace POWER_Utils { #ifndef HELTEC_WSL_V3 digitalWrite(VEXT_CTRL, HIGH); #endif + #ifdef HELTEC_WP + digitalWrite(VEXT_CTRL, LOW); + #endif #endif #ifdef ADC_CTRL pinMode(ADC_CTRL, OUTPUT); #endif - #ifdef HELTEC_WIRELESS_TRACKER + #if defined(HELTEC_WIRELESS_TRACKER) || defined(HELTEC_WP) Wire.begin(BOARD_I2C_SDA, BOARD_I2C_SCL); #endif