Awesome
ESP32-Chimera-Core Library
This library is a substitute of the original M5Stack library, with added support for the following devices:
- M5Stack Classic
- M5Stack Fire
- M5Stack Core2
- M5Stack CoreS3
- M5StickC
- LilyGo T-Deck
- Odroid-Go
- ESP32-S3-Box
- D-Duino-32-XS
- LoLin D32-Pro
- ESP32-Wrover-Kit (v4.1, v4.2, v4.3)
- Lilygo TTGO-TS
- Lilygo TTGO-Twatch
- Lilygo TTGO-LoRa32 v2
It also implements a set of extra features:
- Zero-config automatic device selection based on the Arduino Boards menu selection
- Screenshots (BMP, JPG, PNG, GIF)
- I2C Scanner
GFX implementation is a courtesy of @lovyan03 who (in the first days of this library) did a marvelous work of integrating his LovyanGFX library into his own ESP32-Chimera-Core fork. Since then, LovyanGFX has become an external dependency of this library and even given birth to M5Unified which has the same spirit as Chimera-Core but focuses on M5 products only.
LovyanGFX is an optimized display driver maintained by @lovyan03, it brings an average 30% speed improvement compared to other drivers along with more flexibility towards adding custom boards.
This library will forever be beta quality, but the tradeoff is really worth it!
See LovyanGFX Readme for an overview of those minor changes along with the new features such as shapes, arcs, polygon drawing and filling, and much more ...
Usage
Choose between managed install:
- Get
ESP32-Chimera-Core
from the Arduino Library Manager - Let the Arduino Library Manager download the
LovyanGFX
library dependency
or manual install:
- Download the latest LovyanGFX display driver and unzip it in the
~/Arduino/libraries
folder. - Download the latest ESP32-Chimera-Core release and unzip it in the
~/Arduino/libraries
folder. - You're done!
Developers
Replace this:
#include <M5Stack.h>
by this:
#include <ESP32-Chimera-Core.h>
You can use #if defined(_CHIMERA_CORE_)
macros to isolate ESP32-Chimera-Core specific statements.
#if defined(_CHIMERA_CORE_)
M5.ScreenShot->init( &M5.Lcd, M5STACK_SD );
M5.ScreenShot->begin();
M5.ScreenShot->snap();
#endif
Automatic board selection is based on the boards.txt definition, so changing the board from the Arduino Tools menu is enough to trigger the detection. Sketch compilation can eventually be tuned-up to a specific device by using macros.
#if defined(_CHIMERA_CORE_)
#if defined( ARDUINO_M5Stack_Core_ESP32 )
#warning M5STACK CLASSIC DETECTED !!
#elif defined( ARDUINO_M5STACK_FIRE )
#warning M5STACK FIRE DETECTED !!
#elif defined( ARDUINO_ODROID_ESP32 )
#warning ODROID DETECTED !!
#elif defined( ARDUINO_TTGO_T1 )
#warning Lilygo TTGO-TS DETECTED !!
#elif defined ( ARDUINO_ESP32_WROVER_KIT )
#warning ESP32 WROVER Kit DETECTED !!
#else
#warning NOTHING DETECTED !!
#endif
#else
#warning M5Stack legacy core detected
#endif
Credits & Thanks
- Special thanks to らびやん (Lovyan03) for providing strong inspiring support, unconditional kindness and unlimited patience
- Kudos to M5Stack for being the creators of the original M5Stack and its legacy library without which this project would not exist.
- 紅樹 タカオ (Takao Akaki)
- Nochi
- こばさん
- Illustration By Jacopo Ligozzi
- M5Widgets By @Kongduino