diff --git a/platformio.ini b/platformio.ini index 10aead4f..6bb17516 100644 --- a/platformio.ini +++ b/platformio.ini @@ -208,6 +208,18 @@ lib_deps = https://github.com/Makuna/NeoPixelBus.git # until next upstream release AsyncTCP @ 1.0.3 +[esp32s2] +build_flags = -g + -DARDUINO_ARCH_ESP32 + -DCONFIG_LITTLEFS_FOR_IDF_3_2 + -DARDUINO_ARCH_ESP32S2 + -DCONFIG_IDF_TARGET_ESP32S2 + +lib_deps = + ${env.lib_deps} + https://github.com/Makuna/NeoPixelBus.git # until next upstream release + AsyncTCP @ 1.0.3 + # ------------------------------------------------------------------------------ # WLED BUILDS # ------------------------------------------------------------------------------ @@ -283,6 +295,19 @@ build_unflags = ${common.build_unflags} build_flags = ${common.build_flags_esp32} -D WLED_RELEASE_NAME=ESP32_Ethernet -D RLYPIN=-1 -D WLED_USE_ETHERNET -D BTNPIN=-1 lib_deps = ${esp32.lib_deps} +[env:esp32s2_saola] +board = esp32dev +board_build.mcu = esp32s2 +platform = espressif32 +platform_packages = + toolchain-xtensa32s2 + framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git#2.0.0-alpha1 +framework = arduino +board_build.partitions = tools/WLED_ESP32_4MB_1MB_FS.csv +upload_speed = 460800 +build_unflags = ${common.build_unflags} +lib_deps = ${esp32s2.lib_deps} + [env:esp8285_4CH_MagicHome] board = esp8285 platform = ${common.platform_wled_default} @@ -367,15 +392,14 @@ build_flags = ${common.build_flags_esp32} -D LEDPIN=16 -D RLYPIN=19 -D BTNPIN=17 + -D IRPIN=18 -D UWLED_USE_MY_CONFIG -; -D USERMOD_DALLASTEMPERATURE -; -D USERMOD_DALLASTEMPERATURE_CELCIUS -; -D USERMOD_FOUR_LINE_DISPLAY -; -D TEMPERATURE_PIN=21 + -D USERMOD_DALLASTEMPERATURE + -D USERMOD_FOUR_LINE_DISPLAY + -D TEMPERATURE_PIN=23 lib_deps = ${esp32.lib_deps} -; OneWire@~2.3.5 -; milesburton/DallasTemperature@^3.9.0 -; U8g2@~2.27.2 + OneWire@~2.3.5 + U8g2@~2.28.11 [env:m5atom] board = esp32dev @@ -459,4 +483,3 @@ build_flags = ${common.build_flags_esp32} -D WLED_DISABLE_BROWNOUT_DET -D WLED_D -D USER_SETUP_LOADED monitor_filters = esp32_exception_decoder lib_deps = ${esp32.lib_deps} TFT_eSPI - diff --git a/wled00/bus_wrapper.h b/wled00/bus_wrapper.h index b1b2ae97..1b99d985 100644 --- a/wled00/bus_wrapper.h +++ b/wled00/bus_wrapper.h @@ -99,33 +99,44 @@ //RGB #define B_32_RN_NEO_3 NeoPixelBrightnessBus #define B_32_I0_NEO_3 NeoPixelBrightnessBus +#ifndef CONFIG_IDF_TARGET_ESP32S2 #define B_32_I1_NEO_3 NeoPixelBrightnessBus +#endif //RGBW #define B_32_RN_NEO_4 NeoPixelBrightnessBus #define B_32_I0_NEO_4 NeoPixelBrightnessBus +#ifndef CONFIG_IDF_TARGET_ESP32S2 #define B_32_I1_NEO_4 NeoPixelBrightnessBus +#endif //400Kbps #define B_32_RN_400_3 NeoPixelBrightnessBus #define B_32_I0_400_3 NeoPixelBrightnessBus +#ifndef CONFIG_IDF_TARGET_ESP32S2 #define B_32_I1_400_3 NeoPixelBrightnessBus +#endif //TM1814 (RGBW) #define B_32_RN_TM1_4 NeoPixelBrightnessBus #define B_32_I0_TM1_4 NeoPixelBrightnessBus +#ifndef CONFIG_IDF_TARGET_ESP32S2 #define B_32_I1_TM1_4 NeoPixelBrightnessBus +#endif //Bit Bang theoratically possible, but very undesirable and not needed (no pin restrictions on RMT and I2S) #endif //APA102 #define B_HS_DOT_3 NeoPixelBrightnessBus //hardware SPI -#define B_SS_DOT_3 NeoPixelBrightnessBus //soft SPI +#define B_SS_DOT_3 NeoPixelBrightnessBus //soft SPI //LPD8806 #define B_HS_LPD_3 NeoPixelBrightnessBus #define B_SS_LPD_3 NeoPixelBrightnessBus //WS2801 -#define B_HS_WS1_3 NeoPixelBrightnessBus +//#define B_HS_WS1_3 NeoPixelBrightnessBus +//#define B_HS_WS1_3 NeoPixelBrightnessBus +//#define B_HS_WS1_3 NeoPixelBrightnessBus // 10MHz +#define B_HS_WS1_3 NeoPixelBrightnessBus //slower, more compatible #define B_SS_WS1_3 NeoPixelBrightnessBus //P9813 @@ -171,16 +182,24 @@ class PolyBus { #ifdef ARDUINO_ARCH_ESP32 case I_32_RN_NEO_3: (static_cast(busPtr))->Begin(); break; case I_32_I0_NEO_3: (static_cast(busPtr))->Begin(); break; + #ifndef CONFIG_IDF_TARGET_ESP32S2 case I_32_I1_NEO_3: (static_cast(busPtr))->Begin(); break; + #endif case I_32_RN_NEO_4: (static_cast(busPtr))->Begin(); break; case I_32_I0_NEO_4: (static_cast(busPtr))->Begin(); break; + #ifndef CONFIG_IDF_TARGET_ESP32S2 case I_32_I1_NEO_4: (static_cast(busPtr))->Begin(); break; + #endif case I_32_RN_400_3: (static_cast(busPtr))->Begin(); break; case I_32_I0_400_3: (static_cast(busPtr))->Begin(); break; + #ifndef CONFIG_IDF_TARGET_ESP32S2 case I_32_I1_400_3: (static_cast(busPtr))->Begin(); break; + #endif case I_32_RN_TM1_4: beginTM1814(busPtr); break; case I_32_I0_TM1_4: beginTM1814(busPtr); break; + #ifndef CONFIG_IDF_TARGET_ESP32S2 case I_32_I1_TM1_4: beginTM1814(busPtr); break; + #endif // ESP32 can (and should, to avoid inadvertantly driving the chip select signal) specify the pins used for SPI, but only in begin() case I_HS_DOT_3: (static_cast(busPtr))->Begin(pins[1], -1, pins[0], -1); break; case I_HS_LPD_3: (static_cast(busPtr))->Begin(pins[1], -1, pins[0], -1); break; @@ -218,16 +237,24 @@ class PolyBus { #ifdef ARDUINO_ARCH_ESP32 case I_32_RN_NEO_3: busPtr = new B_32_RN_NEO_3(len, pins[0], (NeoBusChannel)channel); break; case I_32_I0_NEO_3: busPtr = new B_32_I0_NEO_3(len, pins[0]); break; + #ifndef CONFIG_IDF_TARGET_ESP32S2 case I_32_I1_NEO_3: busPtr = new B_32_I1_NEO_3(len, pins[0]); break; + #endif case I_32_RN_NEO_4: busPtr = new B_32_RN_NEO_4(len, pins[0], (NeoBusChannel)channel); break; case I_32_I0_NEO_4: busPtr = new B_32_I0_NEO_4(len, pins[0]); break; + #ifndef CONFIG_IDF_TARGET_ESP32S2 case I_32_I1_NEO_4: busPtr = new B_32_I1_NEO_4(len, pins[0]); break; + #endif case I_32_RN_400_3: busPtr = new B_32_RN_400_3(len, pins[0], (NeoBusChannel)channel); break; case I_32_I0_400_3: busPtr = new B_32_I0_400_3(len, pins[0]); break; + #ifndef CONFIG_IDF_TARGET_ESP32S2 case I_32_I1_400_3: busPtr = new B_32_I1_400_3(len, pins[0]); break; + #endif case I_32_RN_TM1_4: busPtr = new B_32_RN_TM1_4(len, pins[0], (NeoBusChannel)channel); break; case I_32_I0_TM1_4: busPtr = new B_32_I0_TM1_4(len, pins[0]); break; + #ifndef CONFIG_IDF_TARGET_ESP32S2 case I_32_I1_TM1_4: busPtr = new B_32_I1_TM1_4(len, pins[0]); break; + #endif #endif // for 2-wire: pins[1] is clk, pins[0] is dat. begin expects (len, clk, dat) case I_HS_DOT_3: busPtr = new B_HS_DOT_3(len, pins[1], pins[0]); break; @@ -266,16 +293,24 @@ class PolyBus { #ifdef ARDUINO_ARCH_ESP32 case I_32_RN_NEO_3: (static_cast(busPtr))->Show(); break; case I_32_I0_NEO_3: (static_cast(busPtr))->Show(); break; + #ifndef CONFIG_IDF_TARGET_ESP32S2 case I_32_I1_NEO_3: (static_cast(busPtr))->Show(); break; + #endif case I_32_RN_NEO_4: (static_cast(busPtr))->Show(); break; case I_32_I0_NEO_4: (static_cast(busPtr))->Show(); break; + #ifndef CONFIG_IDF_TARGET_ESP32S2 case I_32_I1_NEO_4: (static_cast(busPtr))->Show(); break; + #endif case I_32_RN_400_3: (static_cast(busPtr))->Show(); break; case I_32_I0_400_3: (static_cast(busPtr))->Show(); break; + #ifndef CONFIG_IDF_TARGET_ESP32S2 case I_32_I1_400_3: (static_cast(busPtr))->Show(); break; + #endif case I_32_RN_TM1_4: (static_cast(busPtr))->Show(); break; case I_32_I0_TM1_4: (static_cast(busPtr))->Show(); break; + #ifndef CONFIG_IDF_TARGET_ESP32S2 case I_32_I1_TM1_4: (static_cast(busPtr))->Show(); break; + #endif #endif case I_HS_DOT_3: (static_cast(busPtr))->Show(); break; case I_SS_DOT_3: (static_cast(busPtr))->Show(); break; @@ -311,16 +346,24 @@ class PolyBus { #ifdef ARDUINO_ARCH_ESP32 case I_32_RN_NEO_3: return (static_cast(busPtr))->CanShow(); break; case I_32_I0_NEO_3: return (static_cast(busPtr))->CanShow(); break; + #ifndef CONFIG_IDF_TARGET_ESP32S2 case I_32_I1_NEO_3: return (static_cast(busPtr))->CanShow(); break; + #endif case I_32_RN_NEO_4: return (static_cast(busPtr))->CanShow(); break; case I_32_I0_NEO_4: return (static_cast(busPtr))->CanShow(); break; + #ifndef CONFIG_IDF_TARGET_ESP32S2 case I_32_I1_NEO_4: return (static_cast(busPtr))->CanShow(); break; + #endif case I_32_RN_400_3: return (static_cast(busPtr))->CanShow(); break; case I_32_I0_400_3: return (static_cast(busPtr))->CanShow(); break; + #ifndef CONFIG_IDF_TARGET_ESP32S2 case I_32_I1_400_3: return (static_cast(busPtr))->CanShow(); break; + #endif case I_32_RN_TM1_4: return (static_cast(busPtr))->CanShow(); break; case I_32_I0_TM1_4: return (static_cast(busPtr))->CanShow(); break; + #ifndef CONFIG_IDF_TARGET_ESP32S2 case I_32_I1_TM1_4: return (static_cast(busPtr))->CanShow(); break; + #endif #endif case I_HS_DOT_3: return (static_cast(busPtr))->CanShow(); break; case I_SS_DOT_3: return (static_cast(busPtr))->CanShow(); break; @@ -380,16 +423,24 @@ class PolyBus { #ifdef ARDUINO_ARCH_ESP32 case I_32_RN_NEO_3: (static_cast(busPtr))->SetPixelColor(pix, RgbColor(col.R,col.G,col.B)); break; case I_32_I0_NEO_3: (static_cast(busPtr))->SetPixelColor(pix, RgbColor(col.R,col.G,col.B)); break; + #ifndef CONFIG_IDF_TARGET_ESP32S2 case I_32_I1_NEO_3: (static_cast(busPtr))->SetPixelColor(pix, RgbColor(col.R,col.G,col.B)); break; + #endif case I_32_RN_NEO_4: (static_cast(busPtr))->SetPixelColor(pix, col); break; case I_32_I0_NEO_4: (static_cast(busPtr))->SetPixelColor(pix, col); break; + #ifndef CONFIG_IDF_TARGET_ESP32S2 case I_32_I1_NEO_4: (static_cast(busPtr))->SetPixelColor(pix, col); break; + #endif case I_32_RN_400_3: (static_cast(busPtr))->SetPixelColor(pix, RgbColor(col.R,col.G,col.B)); break; case I_32_I0_400_3: (static_cast(busPtr))->SetPixelColor(pix, RgbColor(col.R,col.G,col.B)); break; + #ifndef CONFIG_IDF_TARGET_ESP32S2 case I_32_I1_400_3: (static_cast(busPtr))->SetPixelColor(pix, RgbColor(col.R,col.G,col.B)); break; + #endif case I_32_RN_TM1_4: (static_cast(busPtr))->SetPixelColor(pix, col); break; case I_32_I0_TM1_4: (static_cast(busPtr))->SetPixelColor(pix, col); break; + #ifndef CONFIG_IDF_TARGET_ESP32S2 case I_32_I1_TM1_4: (static_cast(busPtr))->SetPixelColor(pix, col); break; + #endif #endif case I_HS_DOT_3: (static_cast(busPtr))->SetPixelColor(pix, RgbColor(col.R,col.G,col.B)); break; case I_SS_DOT_3: (static_cast(busPtr))->SetPixelColor(pix, RgbColor(col.R,col.G,col.B)); break; @@ -425,16 +476,24 @@ class PolyBus { #ifdef ARDUINO_ARCH_ESP32 case I_32_RN_NEO_3: (static_cast(busPtr))->SetBrightness(b); break; case I_32_I0_NEO_3: (static_cast(busPtr))->SetBrightness(b); break; + #ifndef CONFIG_IDF_TARGET_ESP32S2 case I_32_I1_NEO_3: (static_cast(busPtr))->SetBrightness(b); break; + #endif case I_32_RN_NEO_4: (static_cast(busPtr))->SetBrightness(b); break; case I_32_I0_NEO_4: (static_cast(busPtr))->SetBrightness(b); break; + #ifndef CONFIG_IDF_TARGET_ESP32S2 case I_32_I1_NEO_4: (static_cast(busPtr))->SetBrightness(b); break; + #endif case I_32_RN_400_3: (static_cast(busPtr))->SetBrightness(b); break; case I_32_I0_400_3: (static_cast(busPtr))->SetBrightness(b); break; + #ifndef CONFIG_IDF_TARGET_ESP32S2 case I_32_I1_400_3: (static_cast(busPtr))->SetBrightness(b); break; + #endif case I_32_RN_TM1_4: (static_cast(busPtr))->SetBrightness(b); break; case I_32_I0_TM1_4: (static_cast(busPtr))->SetBrightness(b); break; + #ifndef CONFIG_IDF_TARGET_ESP32S2 case I_32_I1_TM1_4: (static_cast(busPtr))->SetBrightness(b); break; + #endif #endif case I_HS_DOT_3: (static_cast(busPtr))->SetBrightness(b); break; case I_SS_DOT_3: (static_cast(busPtr))->SetBrightness(b); break; @@ -471,16 +530,24 @@ class PolyBus { #ifdef ARDUINO_ARCH_ESP32 case I_32_RN_NEO_3: col = (static_cast(busPtr))->GetPixelColor(pix); break; case I_32_I0_NEO_3: col = (static_cast(busPtr))->GetPixelColor(pix); break; + #ifndef CONFIG_IDF_TARGET_ESP32S2 case I_32_I1_NEO_3: col = (static_cast(busPtr))->GetPixelColor(pix); break; + #endif case I_32_RN_NEO_4: col = (static_cast(busPtr))->GetPixelColor(pix); break; case I_32_I0_NEO_4: col = (static_cast(busPtr))->GetPixelColor(pix); break; + #ifndef CONFIG_IDF_TARGET_ESP32S2 case I_32_I1_NEO_4: col = (static_cast(busPtr))->GetPixelColor(pix); break; + #endif case I_32_RN_400_3: col = (static_cast(busPtr))->GetPixelColor(pix); break; case I_32_I0_400_3: col = (static_cast(busPtr))->GetPixelColor(pix); break; + #ifndef CONFIG_IDF_TARGET_ESP32S2 case I_32_I1_400_3: col = (static_cast(busPtr))->GetPixelColor(pix); break; + #endif case I_32_RN_TM1_4: col = (static_cast(busPtr))->GetPixelColor(pix); break; case I_32_I0_TM1_4: col = (static_cast(busPtr))->GetPixelColor(pix); break; + #ifndef CONFIG_IDF_TARGET_ESP32S2 case I_32_I1_TM1_4: col = (static_cast(busPtr))->GetPixelColor(pix); break; + #endif #endif case I_HS_DOT_3: col = (static_cast(busPtr))->GetPixelColor(pix); break; case I_SS_DOT_3: col = (static_cast(busPtr))->GetPixelColor(pix); break; @@ -534,16 +601,24 @@ class PolyBus { #ifdef ARDUINO_ARCH_ESP32 case I_32_RN_NEO_3: delete (static_cast(busPtr)); break; case I_32_I0_NEO_3: delete (static_cast(busPtr)); break; + #ifndef CONFIG_IDF_TARGET_ESP32S2 case I_32_I1_NEO_3: delete (static_cast(busPtr)); break; + #endif case I_32_RN_NEO_4: delete (static_cast(busPtr)); break; case I_32_I0_NEO_4: delete (static_cast(busPtr)); break; + #ifndef CONFIG_IDF_TARGET_ESP32S2 case I_32_I1_NEO_4: delete (static_cast(busPtr)); break; + #endif case I_32_RN_400_3: delete (static_cast(busPtr)); break; case I_32_I0_400_3: delete (static_cast(busPtr)); break; + #ifndef CONFIG_IDF_TARGET_ESP32S2 case I_32_I1_400_3: delete (static_cast(busPtr)); break; + #endif case I_32_RN_TM1_4: delete (static_cast(busPtr)); break; case I_32_I0_TM1_4: delete (static_cast(busPtr)); break; + #ifndef CONFIG_IDF_TARGET_ESP32S2 case I_32_I1_TM1_4: delete (static_cast(busPtr)); break; + #endif #endif case I_HS_DOT_3: delete (static_cast(busPtr)); break; case I_SS_DOT_3: delete (static_cast(busPtr)); break; @@ -593,7 +668,11 @@ class PolyBus { } #else //ESP32 uint8_t offset = 0; //0 = RMT (num 0-7) 8 = I2S0 9 = I2S1 + #ifndef CONFIG_IDF_TARGET_ESP32S2 if (num > 9) return I_NONE; + #else + if (num > 8) return I_NONE; + #endif if (num > 7) offset = num -7; switch (busType) { case TYPE_WS2812_RGB: