From c401bab0e3ae5f95b97b485562612bd47ee5cd6c Mon Sep 17 00:00:00 2001 From: Francis Duvivier Date: Sat, 17 Aug 2024 14:36:43 +0200 Subject: [PATCH 1/4] Add setup for the esp32s2 based Lilygo T8 --- esp32_marauder/SDInterface.cpp | 18 +++-- esp32_marauder/configs.h | 107 ++++++++++++++++++------------ esp32_marauder/esp32_marauder.ino | 3 +- 3 files changed, 79 insertions(+), 49 deletions(-) diff --git a/esp32_marauder/SDInterface.cpp b/esp32_marauder/SDInterface.cpp index c5a769eb0..5d8e10011 100644 --- a/esp32_marauder/SDInterface.cpp +++ b/esp32_marauder/SDInterface.cpp @@ -21,6 +21,10 @@ bool SDInterface::initSD() { pinMode(SD_CS, OUTPUT); delay(10); + #ifdef LILYGO_T8_ESP32S2 + pinMode(14, INPUT_PULLUP); + #endif + #if defined(MARAUDER_M5STICKC) /* Set up SPI SD Card using external pin header StickCPlus Header - SPI SD Card Reader @@ -55,7 +59,7 @@ bool SDInterface::initSD() { // Serial.println(F("SD: UNKNOWN Card Mounted")); this->cardSizeMB = SD.cardSize() / (1024 * 1024); - + //Serial.printf("SD Card Size: %lluMB\n", this->cardSizeMB); if (this->supported) { @@ -69,7 +73,7 @@ bool SDInterface::initSD() { sz[i] = '0' + (this->cardSizeMB % 10); display_string.concat((String)sz[i]); } - + this->card_sz = sz; } @@ -83,7 +87,7 @@ bool SDInterface::initSD() { this->sd_files = new LinkedList(); this->sd_files->add("Back"); - + return true; } @@ -164,7 +168,7 @@ void SDInterface::runUpdate() { display_obj.tft.setCursor(0, TFT_HEIGHT / 3); display_obj.tft.setTextSize(1); display_obj.tft.setTextColor(TFT_WHITE); - + display_obj.tft.println(F(text15)); #endif File updateBin = SD.open("/update.bin"); @@ -204,13 +208,13 @@ void SDInterface::runUpdate() { } updateBin.close(); - + // whe finished remove the binary from sd card to indicate end of the process #ifdef HAS_SCREEN display_obj.tft.println(F(text_table2[3])); #endif Serial.println(F("rebooting...")); - //SD.remove("/update.bin"); + //SD.remove("/update.bin"); delay(1000); ESP.restart(); } @@ -227,7 +231,7 @@ void SDInterface::runUpdate() { } void SDInterface::performUpdate(Stream &updateSource, size_t updateSize) { - if (Update.begin(updateSize)) { + if (Update.begin(updateSize)) { #ifdef HAS_SCREEN display_obj.tft.println(text_table2[5] + String(updateSize)); display_obj.tft.println(F(text_table2[6])); diff --git a/esp32_marauder/configs.h b/esp32_marauder/configs.h index 0949eedd5..6737b09ac 100644 --- a/esp32_marauder/configs.h +++ b/esp32_marauder/configs.h @@ -19,6 +19,7 @@ //#define MARAUDER_DEV_BOARD_PRO //#define XIAO_ESP32_S3 //#define MARAUDER_REV_FEATHER + //#define LILYGO_T8_ESP32S2 //// END BOARD TARGETS #define MARAUDER_VERSION "v1.0.0" @@ -40,6 +41,8 @@ #define HARDWARE_NAME "Marauder Kit" #elif defined(MARAUDER_FLIPPER) #define HARDWARE_NAME "Flipper Zero Dev Board" + #elif defined(LILYGO_T8_ESP32S2) + #define HARDWARE_NAME "TTGO T8 v1.1 with SD" #elif defined(ESP32_LDDB) #define HARDWARE_NAME "ESP32 LDDB" #elif defined(MARAUDER_DEV_BOARD_PRO) @@ -165,6 +168,20 @@ //#define HAS_TEMP_SENSOR #endif + #ifdef LILYGO_T8_ESP32S2 + //#define FLIPPER_ZERO_HAT + //#define HAS_BATTERY + //#define HAS_BT + //#define HAS_BUTTONS + //#define HAS_NEOPIXEL_LED + //#define HAS_PWR_MGMT + //#define HAS_SCREEN + // #define HAS_GPS + #define HAS_SD + #define USE_SD + //#define HAS_TEMP_SENSOR + #endif + #ifdef ESP32_LDDB //#define FLIPPER_ZERO_HAT //#define HAS_BATTERY @@ -316,7 +333,7 @@ #define U_PULL true #define R_PULL true #define D_PULL true - #endif + #endif #endif //// END BUTTON DEFINITIONS @@ -370,24 +387,24 @@ #define BUTTON_ARRAY_LEN 100 #define STATUS_BAR_WIDTH (TFT_HEIGHT/16) #define LVGL_TICK_PERIOD 6 - + #define FRAME_X 100 #define FRAME_Y 64 #define FRAME_W 120 #define FRAME_H 50 - + // Red zone size #define REDBUTTON_X FRAME_X #define REDBUTTON_Y FRAME_Y #define REDBUTTON_W (FRAME_W/2) #define REDBUTTON_H FRAME_H - + // Green zone size #define GREENBUTTON_X (REDBUTTON_X + REDBUTTON_W) #define GREENBUTTON_Y FRAME_Y #define GREENBUTTON_W (FRAME_W/2) #define GREENBUTTON_H FRAME_H - + #define STATUSBAR_COLOR 0x4A49 #endif @@ -406,7 +423,7 @@ #endif #define TFT_SHIELD - + #define SCREEN_WIDTH TFT_WIDTH #define SCREEN_HEIGHT TFT_HEIGHT #define HEIGHT_1 TFT_WIDTH @@ -426,33 +443,33 @@ #define BUTTON_ARRAY_LEN 12 #define STATUS_BAR_WIDTH 16 #define LVGL_TICK_PERIOD 6 - + #define FRAME_X 100 #define FRAME_Y 64 #define FRAME_W 120 #define FRAME_H 50 - + // Red zone size #define REDBUTTON_X FRAME_X #define REDBUTTON_Y FRAME_Y #define REDBUTTON_W (FRAME_W/2) #define REDBUTTON_H FRAME_H - + // Green zone size #define GREENBUTTON_X (REDBUTTON_X + REDBUTTON_W) #define GREENBUTTON_Y FRAME_Y #define GREENBUTTON_W (FRAME_W/2) #define GREENBUTTON_H FRAME_H - + #define STATUSBAR_COLOR 0x4A49 - + #define KIT_LED_BUILTIN 13 #endif #if defined(MARAUDER_V6) || defined(MARAUDER_V6_1) #define SCREEN_CHAR_WIDTH 40 #define HAS_ILI9341 - + #define BANNER_TEXT_SIZE 2 #ifndef TFT_WIDTH @@ -464,7 +481,7 @@ #endif #define TFT_DIY - + #define SCREEN_WIDTH TFT_WIDTH #define SCREEN_HEIGHT TFT_HEIGHT #define HEIGHT_1 TFT_WIDTH @@ -489,28 +506,28 @@ #define FRAME_Y 64 #define FRAME_W 120 #define FRAME_H 50 - + // Red zone size #define REDBUTTON_X FRAME_X #define REDBUTTON_Y FRAME_Y #define REDBUTTON_W (FRAME_W/2) #define REDBUTTON_H FRAME_H - + // Green zone size #define GREENBUTTON_X (REDBUTTON_X + REDBUTTON_W) #define GREENBUTTON_Y FRAME_Y #define GREENBUTTON_W (FRAME_W/2) #define GREENBUTTON_H FRAME_H - + #define STATUSBAR_COLOR 0x4A49 - + #define KIT_LED_BUILTIN 13 - #endif + #endif #ifdef MARAUDER_KIT #define SCREEN_CHAR_WIDTH 40 #define HAS_ILI9341 - + #define BANNER_TEXT_SIZE 2 #ifndef TFT_WIDTH @@ -523,7 +540,7 @@ #define TFT_DIY #define KIT - + #define SCREEN_WIDTH TFT_WIDTH #define SCREEN_HEIGHT TFT_HEIGHT #define HEIGHT_1 TFT_WIDTH @@ -560,12 +577,12 @@ #define GREENBUTTON_Y FRAME_Y #define GREENBUTTON_W (FRAME_W/2) #define GREENBUTTON_H FRAME_H - + #define STATUSBAR_COLOR 0x4A49 - + #define KIT_LED_BUILTIN 13 #endif - + #ifdef MARAUDER_MINI #define SCREEN_CHAR_WIDTH 40 #define TFT_MISO 19 @@ -629,7 +646,7 @@ #define GREENBUTTON_Y FRAME_Y #define GREENBUTTON_W (FRAME_W/2) #define GREENBUTTON_H FRAME_H - + #define STATUSBAR_COLOR 0x4A49 #endif @@ -696,7 +713,7 @@ #define GREENBUTTON_Y FRAME_Y #define GREENBUTTON_W (FRAME_W/2) #define GREENBUTTON_H FRAME_H - + #define STATUSBAR_COLOR 0x4A49 #endif @@ -706,9 +723,9 @@ //// MENU DEFINITIONS #ifdef MARAUDER_V4 #define BANNER_TIME 100 - + #define COMMAND_PREFIX "!" - + // Keypad start position, key sizes and spacing #define KEY_X 120 // Centre of key #define KEY_Y 50 @@ -725,9 +742,9 @@ #if defined(MARAUDER_V6) || defined(MARAUDER_V6_1) #define BANNER_TIME 100 - + #define COMMAND_PREFIX "!" - + // Keypad start position, key sizes and spacing #define KEY_X 120 // Centre of key #define KEY_Y 50 @@ -744,9 +761,9 @@ #ifdef MARAUDER_KIT #define BANNER_TIME 100 - + #define COMMAND_PREFIX "!" - + // Keypad start position, key sizes and spacing #define KEY_X 120 // Centre of key #define KEY_Y 50 @@ -760,12 +777,12 @@ #define BUTTON_PADDING 22 //#define BUTTON_ARRAY_LEN 5 #endif - + #ifdef MARAUDER_MINI #define BANNER_TIME 50 - + #define COMMAND_PREFIX "!" - + // Keypad start position, key sizes and spacing #define KEY_X (TFT_WIDTH/2) // Centre of key #define KEY_Y (TFT_HEIGHT/4.5) @@ -781,9 +798,9 @@ #ifdef MARAUDER_REV_FEATHER #define BANNER_TIME 50 - + #define COMMAND_PREFIX "!" - + // Keypad start position, key sizes and spacing #define KEY_X (TFT_WIDTH/2) // Centre of key #define KEY_Y (TFT_HEIGHT/4.5) @@ -799,9 +816,9 @@ #ifdef MARAUDER_M5STICKC #define BANNER_TIME 50 - + #define COMMAND_PREFIX "!" - + // Keypad start position, key sizes and spacing #define KEY_X (TFT_WIDTH/2) // Centre of key #define KEY_Y (TFT_HEIGHT/5) @@ -851,6 +868,10 @@ #define SD_CS 10 #endif + #ifdef LILYGO_T8_ESP32S2 + #define SD_CS 10 + #endif + #ifdef ESP32_LDDB #define SD_CS 4 #endif @@ -916,12 +937,14 @@ #define MEM_LOWER_LIM 20000 #elif defined(XIAO_ESP32_S3) #define MEM_LOWER_LIM 20000 + #elif defined(LILYGO_T8_ESP32S2) + #define MEM_LOWER_LIM 20000 #endif //// END MEMORY LOWER LIMIT STUFF - //// NEOPIXEL STUFF + //// NEOPIXEL STUFF #ifdef HAS_NEOPIXEL_LED - + #if defined(ESP32_LDDB) #define PIN 17 #elif defined(MARAUDER_DEV_BOARD_PRO) @@ -931,7 +954,7 @@ #else #define PIN 25 #endif - + #endif //// END NEOPIXEL STUFF @@ -958,6 +981,8 @@ #define MAX_HTML_SIZE 20000 #elif defined(XIAO_ESP32_S3) #define MAX_HTML_SIZE 20000 + #elif defined(LILYGO_T8_ESP32S2) + #define MAX_HTML_SIZE 20000 #else #define MAX_HTML_SIZE 20000 #endif diff --git a/esp32_marauder/esp32_marauder.ino b/esp32_marauder/esp32_marauder.ino index ac6ae818a..1c7c655f6 100644 --- a/esp32_marauder/esp32_marauder.ino +++ b/esp32_marauder/esp32_marauder.ino @@ -151,6 +151,8 @@ void backlightOff() { void setup() { + Serial.begin(115200); + Serial.print("Setup started"); #ifdef MARAUDER_M5STICKC axp192_obj.begin(); #endif @@ -180,7 +182,6 @@ void setup() delay(10); #endif - Serial.begin(115200); Serial.println("ESP-IDF version is: " + String(esp_get_idf_version())); From 5a973eeb1a2a17af56396dc9918be87381f9fa1b Mon Sep 17 00:00:00 2001 From: Francis Duvivier Date: Sat, 17 Aug 2024 17:23:06 +0200 Subject: [PATCH 2/4] Fix serial to flipper on LILYGO_T8_ESP32S2 (cherry picked from commit cd68b2a730f5e88681e403bf09fd675dd02413a0) --- esp32_marauder/esp32_marauder.ino | 47 +++++++++++++++++-------------- 1 file changed, 26 insertions(+), 21 deletions(-) diff --git a/esp32_marauder/esp32_marauder.ino b/esp32_marauder/esp32_marauder.ino index 1c7c655f6..48048c5c5 100644 --- a/esp32_marauder/esp32_marauder.ino +++ b/esp32_marauder/esp32_marauder.ino @@ -59,7 +59,7 @@ https://www.online-utility.org/image/convert/to/XBM #ifdef HAS_BUTTONS #include "Switches.h" - + #if (U_BTN >= 0) Switches u_btn = Switches(U_BTN, 1000, U_PULL); #endif @@ -129,7 +129,7 @@ void backlightOn() { #ifdef MARAUDER_MINI digitalWrite(TFT_BL, LOW); #endif - + #ifndef MARAUDER_MINI digitalWrite(TFT_BL, HIGH); #endif @@ -141,7 +141,7 @@ void backlightOff() { #ifdef MARAUDER_MINI digitalWrite(TFT_BL, HIGH); #endif - + #ifndef MARAUDER_MINI digitalWrite(TFT_BL, LOW); #endif @@ -151,32 +151,37 @@ void backlightOff() { void setup() { - Serial.begin(115200); + #ifdef LILYGO_T8_ESP32S2 + Serial.begin(115200, SERIAL_8N1, 18, 17); + #else + Serial.begin(115200); + #endif + Serial.print("Setup started"); #ifdef MARAUDER_M5STICKC axp192_obj.begin(); #endif - + #ifdef HAS_SCREEN pinMode(TFT_BL, OUTPUT); #endif - + backlightOff(); #if BATTERY_ANALOG_ON == 1 pinMode(BATTERY_PIN, OUTPUT); pinMode(CHARGING_PIN, INPUT); #endif - + // Preset SPI CS pins to avoid bus conflicts #ifdef HAS_SCREEN digitalWrite(TFT_CS, HIGH); #endif - + #ifdef HAS_SD pinMode(SD_CS, OUTPUT); delay(10); - + digitalWrite(SD_CS, HIGH); delay(10); @@ -227,15 +232,15 @@ void setup() #endif display_obj.clearScreen(); - + display_obj.tft.setTextColor(TFT_CYAN, TFT_BLACK); - + display_obj.tft.println(text_table0[0]); - + delay(2000); - + display_obj.tft.println("Marauder " + display_obj.version_number + "\n"); - + display_obj.tft.println(text_table0[1]); #endif @@ -269,7 +274,7 @@ void setup() #ifdef HAS_BATTERY battery_obj.RunSetup(); #endif - + #ifdef HAS_SCREEN display_obj.tft.println(F(text_table0[5])); #endif @@ -311,16 +316,16 @@ void setup() #ifdef HAS_SCREEN display_obj.tft.println(F(text_table0[8])); - + display_obj.tft.setTextColor(TFT_WHITE, TFT_BLACK); - + delay(2000); #endif #ifdef HAS_SCREEN menu_function_obj.RunSetup(); #endif - + Serial.println(F("CLI Ready")); cli_obj.RunSetup(); } @@ -357,7 +362,7 @@ void loop() #else bool do_draw = false; #endif*/ - + //if ((!do_draw) && (wifi_scan_obj.currentScanMode != ESP_UPDATE)) //{ cli_obj.main(currentTime); @@ -370,7 +375,7 @@ void loop() #ifdef HAS_GPS gps_obj.main(); #endif - + // Detect SD card #if defined(HAS_SD) sd_obj.main(); @@ -422,7 +427,7 @@ void loop() #else led_obj.main(currentTime); #endif - + //cli_obj.main(currentTime); delay(1); }*/ From fcdfbf62e2dac8e1f72bf75c9f46fe80d6ac355a Mon Sep 17 00:00:00 2001 From: Francis Duvivier Date: Sat, 17 Aug 2024 15:38:40 +0200 Subject: [PATCH 3/4] Fix case of no led --- esp32_marauder/LedInterface.cpp | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/esp32_marauder/LedInterface.cpp b/esp32_marauder/LedInterface.cpp index be97b664f..a67f9493c 100644 --- a/esp32_marauder/LedInterface.cpp +++ b/esp32_marauder/LedInterface.cpp @@ -1,5 +1,21 @@ #include "LedInterface.h" +#ifndef HAS_NEOPIXEL_LED + +LedInterface::LedInterface(){} +void LedInterface::RunSetup(){} +void LedInterface::main(uint32_t currentTime){} +void LedInterface::setMode(uint8_t new_mode){} +uint8_t LedInterface::getMode(){} +void LedInterface::setColor(int r, int g, int b){} +void LedInterface::sniffLed(){} +void LedInterface::attackLed(){} +void LedInterface::ledOff(){} +void LedInterface::rainbow(){} +uint32_t LedInterface::Wheel(byte WheelPos){} + +#else + LedInterface::LedInterface() { } @@ -51,7 +67,7 @@ uint8_t LedInterface::getMode() { void LedInterface::setColor(int r, int g, int b) { strip.setPixelColor(0, strip.Color(r, g, b)); - strip.show(); + strip.show(); } void LedInterface::sniffLed() { @@ -88,4 +104,5 @@ uint32_t LedInterface::Wheel(byte WheelPos) { } WheelPos -= 170; return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0); -} \ No newline at end of file +} +#endif From 78bc9931d6908f6a1eaf022055c8424e00c6528f Mon Sep 17 00:00:00 2001 From: Francis Duvivier Date: Sun, 25 Aug 2024 20:46:10 +0200 Subject: [PATCH 4/4] Set SPI Pins for Lilygo T8 --- esp32_marauder/SDInterface.cpp | 12 ++++++++---- esp32_marauder/SDInterface.h | 2 +- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/esp32_marauder/SDInterface.cpp b/esp32_marauder/SDInterface.cpp index 5d8e10011..e0ac37293 100644 --- a/esp32_marauder/SDInterface.cpp +++ b/esp32_marauder/SDInterface.cpp @@ -21,11 +21,12 @@ bool SDInterface::initSD() { pinMode(SD_CS, OUTPUT); delay(10); - #ifdef LILYGO_T8_ESP32S2 - pinMode(14, INPUT_PULLUP); - #endif - #if defined(MARAUDER_M5STICKC) + #if defined(LILYGO_T8_ESP32S2) + // setup custom spi pins for Lilygo T8 + pinMode(14, INPUT_PULLUP); + enum { SPI_SCK = 12, SPI_MISO = 13, SPI_MOSI = 11 }; + #elif defined(MARAUDER_M5STICKC) /* Set up SPI SD Card using external pin header StickCPlus Header - SPI SD Card Reader 3v3 - 3v3 @@ -36,6 +37,9 @@ bool SDInterface::initSD() { - CS (jumper to SD Card GND Pin) */ enum { SPI_SCK = 0, SPI_MISO = 36, SPI_MOSI = 26 }; + #endif + + #if defined(MARAUDER_M5STICKC) || defined(LILYGO_T8_ESP32S2) this->spiExt = new SPIClass(); this->spiExt->begin(SPI_SCK, SPI_MISO, SPI_MOSI, SD_CS); if (!SD.begin(SD_CS, *(this->spiExt))) { diff --git a/esp32_marauder/SDInterface.h b/esp32_marauder/SDInterface.h index eda62bafc..754cbe985 100644 --- a/esp32_marauder/SDInterface.h +++ b/esp32_marauder/SDInterface.h @@ -26,7 +26,7 @@ extern Settings settings_obj; class SDInterface { private: -#if defined(MARAUDER_M5STICKC) +#if defined(MARAUDER_M5STICKC) || defined(LILYGO_T8_ESP32S2) SPIClass *spiExt; #endif bool checkDetectPin();