ESP32-S3 Support (Adafruit MatrixPortal S3)
I'm trying to load this on a Adafruit MatrixPortal S3 but when using the webserial method it tells me the S3 model isn't supported. What would be required to make it supported?
ESP32-S2 isnt supported either.
Would love to see ESP32-S3
Hi @fitzy89 ! Can you try to compile and upload targeting the ESP32-S3? It should be able to execute but the firmware was not compiled for them.
@Andrew93752, for ESP32-S2 is a little bit more difficult because the S2 has less resources, especially RAM memory that can be a challenge. In general terms, S2 is an upgraded version of ESP8266. But I would like to see what happens if you try to compile and upload as well.
Esp32-S3 works without problems with the esphome implementation. I added a example.yaml for esphome, which uses HD-WF2 (Esp32-S3 with 8mb Ram and no PSRam) as hardware. See https://github.com/aschoelzhorn/clockwise-esphome/tree/main/examples You just need to update the pin mapping to the default pins for Esp32-S3 used by the underlying hub75 library
For the S3, what if you just added the board type to the platform.ini file and uploaded? I don't have a S3 to test with.
[env:esp32-s3-devkitc-1]
platform = espressif32
board = esp32-s3-devkitc-1
framework = arduino
monitor_speed = 115200
upload_speed = 921600
lib_deps =
https://github.com/mrfaptastic/ESP32-HUB75-MatrixPanel-I2S-DMA.git
adafruit/Adafruit GFX Library@^1.10.1
adafruit/Adafruit BusIO@^1.5.0
SPI
Wire
ropg/ezTime@^0.8.3
https://github.com/jnthas/Improv-WiFi-Library
https://github.com/tzapu/WiFiManager
bblanchon/ArduinoJson@^6.21.2
bitbank2/PNGdec@^1.0.1
build_src_filter = +<*> -<.git/> -<.svn/> -<example/> -<examples/> -<test/> -<tests/> -<clockfaces/>
build_flags =
-D CW_FW_VERSION="\"1.4.2\""
-D CW_FW_NAME="\"${sysenv.FW_NAME}\""
This option would require compiling with vscode and not webserial. If you are new to vscode and platform.io what better time to learn :).
I tested with a Matrix Portal S3 and got the following error:
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/esp32-s3-devkitc-1.html
PLATFORM: Espressif 32 (6.12.0) > Espressif ESP32-S3-DevKitC-1-N8 (8 MB QD, No PSRAM)
HARDWARE: ESP32S3 240MHz, 320KB RAM, 8MB Flash
DEBUG: Current (esp-builtin) On-board (esp-builtin) External (cmsis-dap, esp-bridge, esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
PACKAGES:
- framework-arduinoespressif32 @ 3.20017.241212+sha.dcc1105b
- tool-esptoolpy @ 2.40900.250804 (4.9.0)
- tool-mkfatfs @ 2.0.1
- tool-mklittlefs @ 1.203.210628 (2.3)
- tool-mkspiffs @ 2.230.0 (2.30)
- toolchain-riscv32-esp @ 8.4.0+2021r2-patch5
- toolchain-xtensa-esp32s3 @ 8.4.0+2021r2-patch5
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 44 compatible libraries
Scanning dependencies...
Dependency Graph
|-- ESP32 HUB75 LED MATRIX PANEL DMA Display @ 3.0.13+sha.30c984a
|-- Adafruit GFX Library @ 1.12.4
|-- Adafruit BusIO @ 1.17.4
|-- SPI @ 2.0.0
|-- Wire @ 2.0.0
|-- ezTime @ 0.8.3
|-- Improv WiFi Library @ 0.0.3+sha.2ac77de
|-- WiFiManager @ 2.0.17+sha.32655b7
|-- ArduinoJson @ 6.21.5
|-- PNGdec @ 1.1.6
|-- cw-commons
|-- timeinwords
Building in release mode
Compiling .pio/build/esp32-s3-devkitc-1/lib69e/ezTime/ezTime.cpp.o
Compiling .pio/build/esp32-s3-devkitc-1/src/main.cpp.o
Building .pio/build/esp32-s3-devkitc-1/bootloader.bin
Generating partitions .pio/build/esp32-s3-devkitc-1/partitions.bin
Compiling .pio/build/esp32-s3-devkitc-1/liba82/Wire/Wire.cpp.o
esptool.py v4.9.0
Creating esp32s3 image...
Merged 1 ELF section
Successfully created esp32s3 image.
Compiling .pio/build/esp32-s3-devkitc-1/libd3f/SPI/SPI.cpp.o
Compiling .pio/build/esp32-s3-devkitc-1/lib624/Adafruit BusIO/Adafruit_BusIO_Register.cpp.o
Compiling .pio/build/esp32-s3-devkitc-1/lib624/Adafruit BusIO/Adafruit_GenericDevice.cpp.o
Compiling .pio/build/esp32-s3-devkitc-1/lib624/Adafruit BusIO/Adafruit_I2CDevice.cpp.o
Compiling .pio/build/esp32-s3-devkitc-1/lib624/Adafruit BusIO/Adafruit_SPIDevice.cpp.o
Compiling .pio/build/esp32-s3-devkitc-1/libcaf/Adafruit GFX Library/Adafruit_GFX.cpp.o
Compiling .pio/build/esp32-s3-devkitc-1/libcaf/Adafruit GFX Library/Adafruit_GrayOLED.cpp.o
Compiling .pio/build/esp32-s3-devkitc-1/libcaf/Adafruit GFX Library/Adafruit_SPITFT.cpp.o
Compiling .pio/build/esp32-s3-devkitc-1/libcaf/Adafruit GFX Library/glcdfont.c.o
In file included from lib/timeinwords/Clockface.h:5,
from src/main.cpp:6:
lib/timeinwords/gfx/Super_Mario_Bros__24pt7b.h:6:12: fatal error: M5Stack.h: No such file or directory
*****************************************************************
* Looking for M5Stack.h dependency? Check our library registry!
*
* CLI > platformio lib search "header:M5Stack.h"
* Web > https://registry.platformio.org/search?q=header:M5Stack.h
*
*****************************************************************
#include <M5Stack.h>
^~~~~~~~~~~
compilation terminated.
*** [.pio/build/esp32-s3-devkitc-1/src/main.cpp.o] Error 1
================================================================================================================================================================================================================ [FAILED] Took 10.63 seconds ================================================================================================================================================================================================================
Environment Status Duration
------------------ -------- ------------
esp32-s3-devkitc-1 FAILED 00:00:10.635
==================================================================
I added m5stack/M5Stack@^0.4.6 to lib_deps and tried again. I got more errors:
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/esp32-s3-devkitc-1.html
PLATFORM: Espressif 32 (6.12.0) > Espressif ESP32-S3-DevKitC-1-N8 (8 MB QD, No PSRAM)
HARDWARE: ESP32S3 240MHz, 320KB RAM, 8MB Flash
DEBUG: Current (esp-builtin) On-board (esp-builtin) External (cmsis-dap, esp-bridge, esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
PACKAGES:
- framework-arduinoespressif32 @ 3.20017.241212+sha.dcc1105b
- tool-esptoolpy @ 2.40900.250804 (4.9.0)
- tool-mkfatfs @ 2.0.1
- tool-mklittlefs @ 1.203.210628 (2.3)
- tool-mkspiffs @ 2.230.0 (2.30)
- toolchain-riscv32-esp @ 8.4.0+2021r2-patch5
- toolchain-xtensa-esp32s3 @ 8.4.0+2021r2-patch5
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 44 compatible libraries
Scanning dependencies...
Dependency Graph
|-- ESP32 HUB75 LED MATRIX PANEL DMA Display @ 3.0.14+sha.30c984a
|-- Adafruit GFX Library @ 1.12.4
|-- Adafruit BusIO @ 1.17.4
|-- SPI @ 2.0.0
|-- Wire @ 2.0.0
|-- ezTime @ 0.8.3
|-- Improv WiFi Library @ 0.0.3+sha.2ac77de
|-- WiFiManager @ 2.0.17+sha.32655b7
|-- ArduinoJson @ 6.21.5
|-- PNGdec @ 1.1.6
|-- M5Stack @ 0.4.6
|-- cw-commons
Building in release mode
Compiling .pio/build/esp32-s3-devkitc-1/libc88/ezTime/ezTime.cpp.o
Compiling .pio/build/esp32-s3-devkitc-1/src/main.cpp.o
Building .pio/build/esp32-s3-devkitc-1/bootloader.bin
Generating partitions .pio/build/esp32-s3-devkitc-1/partitions.bin
Compiling .pio/build/esp32-s3-devkitc-1/liba82/Wire/Wire.cpp.o
esptool.py v4.9.0
Creating esp32s3 image...
Merged 1 ELF section
Successfully created esp32s3 image.
Compiling .pio/build/esp32-s3-devkitc-1/libd3f/SPI/SPI.cpp.o
Compiling .pio/build/esp32-s3-devkitc-1/lib964/Adafruit BusIO/Adafruit_BusIO_Register.cpp.o
Compiling .pio/build/esp32-s3-devkitc-1/lib964/Adafruit BusIO/Adafruit_GenericDevice.cpp.o
Compiling .pio/build/esp32-s3-devkitc-1/lib964/Adafruit BusIO/Adafruit_I2CDevice.cpp.o
Compiling .pio/build/esp32-s3-devkitc-1/lib964/Adafruit BusIO/Adafruit_SPIDevice.cpp.o
Compiling .pio/build/esp32-s3-devkitc-1/lib0a8/Adafruit GFX Library/Adafruit_GFX.cpp.o
Compiling .pio/build/esp32-s3-devkitc-1/lib0a8/Adafruit GFX Library/Adafruit_GrayOLED.cpp.o
Compiling .pio/build/esp32-s3-devkitc-1/lib0a8/Adafruit GFX Library/Adafruit_SPITFT.cpp.o
Compiling .pio/build/esp32-s3-devkitc-1/lib0a8/Adafruit GFX Library/glcdfont.c.o
Compiling .pio/build/esp32-s3-devkitc-1/lib54a/ESP32 HUB75 LED MATRIX PANEL DMA Display/ESP32-HUB75-MatrixPanel-I2S-DMA.cpp.o
Archiving .pio/build/esp32-s3-devkitc-1/liba82/libWire.a
Indexing .pio/build/esp32-s3-devkitc-1/liba82/libWire.a
Archiving .pio/build/esp32-s3-devkitc-1/libd3f/libSPI.a
Compiling .pio/build/esp32-s3-devkitc-1/lib54a/ESP32 HUB75 LED MATRIX PANEL DMA Display/ESP32-HUB75-MatrixPanel-leddrivers.cpp.o
Indexing .pio/build/esp32-s3-devkitc-1/libd3f/libSPI.a
Compiling .pio/build/esp32-s3-devkitc-1/lib54a/ESP32 HUB75 LED MATRIX PANEL DMA Display/platforms/esp32/esp32_i2s_parallel_dma.cpp.o
Compiling .pio/build/esp32-s3-devkitc-1/lib54a/ESP32 HUB75 LED MATRIX PANEL DMA Display/platforms/esp32s3/gdma_lcd_parallel16.cpp.o
In file included from .pio/libdeps/esp32-s3-devkitc-1/M5Stack/src/M5Display.h:8,
from .pio/libdeps/esp32-s3-devkitc-1/M5Stack/src/M5Stack.h:111,
from lib/cw-commons/gfx/Super_Mario_Bros__24pt7b.h:6,
from lib/cw-commons/Clockface.h:5,
from src/main.cpp:5:
.pio/libdeps/esp32-s3-devkitc-1/M5Stack/src/utility/In_eSPI.h:633:20: error: 'VSPI' was not declared in this scope
uint8_t port = VSPI;
^~~~
.pio/libdeps/esp32-s3-devkitc-1/M5Stack/src/utility/In_eSPI.h:633:20: note: suggested alternative: 'SPI'
uint8_t port = VSPI;
^~~~
SPI
In file included from .pio/libdeps/esp32-s3-devkitc-1/M5Stack/src/M5Stack.h:111,
from lib/cw-commons/gfx/Super_Mario_Bros__24pt7b.h:6,
from lib/cw-commons/Clockface.h:5,
from src/main.cpp:5:
lib/cw-commons/StatusController.h: In member function 'void StatusController::printCenter(const char*, int)':
.pio/libdeps/esp32-s3-devkitc-1/M5Stack/src/M5Display.h:66:17: error: 'class Adafruit_GFX' has no member named 'setFreeFont'; did you mean 'setFont'?
#define setFont setFreeFont
^~~~~~~~~~~
lib/cw-commons/StatusController.h:168:26: note: in expansion of macro 'setFont'
Locator::getDisplay()->setFont(&Picopixel);
^~~~~~~
Compiling .pio/build/esp32-s3-devkitc-1/lib798/EEPROM/EEPROM.cpp.o
Compiling .pio/build/esp32-s3-devkitc-1/lib91e/Preferences/Preferences.cpp.o
*** [.pio/build/esp32-s3-devkitc-1/src/main.cpp.o] Error 1
.pio/libdeps/esp32-s3-devkitc-1/ESP32 HUB75 LED MATRIX PANEL DMA Display/src/platforms/esp32s3/gdma_lcd_parallel16.cpp:21:19: note: #pragma message: Compiling for ESP32-S3
#pragma message "Compiling for ESP32-S3"
^~~~~~~~~~~~~~~~~~~~~~~~
================================================================================================================================================================================================================ [FAILED] Took 11.42 seconds ================================================================================================================================================================================================================
Environment Status Duration
------------------ -------- ------------
esp32-s3-devkitc-1 FAILED 00:00:11.416
==================================================
Looks like its this statement in lib/cw-commons/gfx/Super_Mario_Bros__24pt7b.h that selects M5Stack.h
#ifdef ARDUINO_ESP32_DEV
#include <gfxfont.h>
#else
#include <M5Stack.h>
#endif
I'll edit the above to see if the build for ESP32-S3 will work with gfxfont.h.
Builds without error if I remove the statement and just import gfxfont.h. However, I need to update the pins for the Matrix Portal S3. The onboard NeoPixel lights up, but I get nothing on the panel.
I got it to build and the display is happy now.
Here are the pins for those interested:
mxconfig.gpio.r1 = 42; //25
mxconfig.gpio.r2 = 38; //14
mxconfig.gpio.g1 = 41; //26
mxconfig.gpio.g2 = 39; //12
mxconfig.gpio.b1 = 40; //27
mxconfig.gpio.b2 = 37; //13
mxconfig.gpio.a = 45; //23
mxconfig.gpio.b = 36; //19
mxconfig.gpio.c = 48; //5
mxconfig.gpio.d = 35; //17
mxconfig.gpio.e = 21; //32
mxconfig.gpio.clk = 2; //16
mxconfig.gpio.lat = 47; //4
mxconfig.gpio.oe = 14; //15
mxconfig.clkphase = false;
Wifi fails.
Works. The only issue I had was with the font on the Mario clockface.
#ifdef ARDUINO_ESP32_DEV
#include <gfxfont.h>
#else
#include <M5Stack.h>
#endif
When I commented M5Stack.h, it worked.