Releases: martinberlin/cale-idf
1.2 Adds some new models and optimizes existing ones
- Classes reorganized. Color classes are now in color/ (Kind of namespace) GoodDisplay new epapers in goodisplay/
- Color classes now have the IS_COLOR_EPD defined. This let's you code something that is both compatible with monochhrome and color, just excluding or including the color part if you select a color model (Check cale.cpp)
depg1020bn / Compatible with 10.2" from Good-Display added.
Thanks to Freddie from GOODISPLAY my partners and the developers that trust this component for their Firmware.
Last stable ESP-IDF v. 4.4
After this release we will be using IDF v 5.0
Please switch to this tag to use stable 4.x version.
EPDiy upgraded to latest version + video experimentation
Please note that parallel driver epdiy is not anymore a requirement and after last update epdiy V6 is not part of this repository, only linked as a git submodule. So in case you want to use our experimental implementation in C++, please pull the git submodules:
git submodule update --init --recursive
In this version we packed up a few new experiments related to animation and video that you can find in the main/www-image directory.
This is not exactly video, since even with EPDiy parallel driver the framerate is too slow to call it video, but it might work for small epapers that refresh fast where you want to show simple animations.
JPG render demo and updated classes
This release comes with a JPG decompress and render demo tracked in issue #46 and located here:
https://github.com/martinberlin/cale-idf/tree/master/main/www-jpg-render
JPG dithered using CALE.es
16 grayscales parallel EPD47 from Lilygo
Be aware that the example needs external RAM since has a source buffer and a decompression buffer.
This is called PSRAM or SPI Ram in the ESP32 and a know model that has this is the WROVER-B.
In this update it's also a new class and the first one where we address the 4 Gray mode of Goodisplay epapers: gdew075T7Grays
It works but the Waveframe (LUTs / wakeup initialization) is not the right one and refresh happens just too fast. Please make a pull request if you are able to make it better.
We need help in the following areas:
- Performance optimization. For example: Make the JPG render example use less RAM (No src buffer, decompress on HTTP on data event)
- Add more parallel epaper classes (I don't have all to test)
Please be aware that in this release the Parallel classes are commented out in CalEPD component:
set(srcs
# Parallel epapers supported by Epdiy driver (Uncomment epdParallel & REQUIRES "epd_driver")
# Uncomment for parallel epapers:
"epdParallel.cpp"
"models/parallel/ED047TC1.cpp"
#"models/parallel/ED047TC1touch.cpp"
#"models/parallel/ED060SC4.cpp"
# Rest of other SPI classes
)
idf_component_register(SRCS ${srcs}
REQUIRES "Adafruit-GFX"
REQUIRES "FT6X36-IDF"
# Uncomment for parallel epapers:
REQUIRES "epd_driver"
INCLUDE_DIRS "include"
)
High fives and hats off to EPDiy parallel component repository that days ago released their hardware revision v6. Highly recommended build if you want to drive parallel kindle-like epapers with 16 gray-levels.
Corrections for IDF version >= 4.3 and Tap detection in L58 touch IC from Lilygo parallel epaper EPD047
In this release we corrected some issues discovered after upgrading Espressif IDF framework to 4.4 (Latest master)
Small issues with the I2C touch, while testing other things where corrected and polished, so now is safe to say that touch works better and has real "Tap detection"
By Tap detection I mean having events (3 press, 0 release) and measuring the difference in time between them. If it's less than 150 millis, then it's a Tap, of course this number can be freely updated in the class. Didn't made it a class property since I though is not so relevant, but we can do it in next release if someone needs to fine-tune it.
Update EPDiy version for parallel epapers and to support ESP-IDF v 4.4
This update took quite long to come out since it required a major bump of the EPDiy component.
Now supporting also epapers for the 6 inches range like ED060SC4 and ED060SCA (All range of 6" displays should work)
Please notice that our intent is to implement EPDiy in a simple way so the settings for this release are the following:
epd_init(EPD_OPTIONS_DEFAULT);
framebuffer = epd_init_hl(EPD_BUILTIN_WAVEFORM);
If you want to change that please do it in the cpp class itself. If there is interest in doing this different we can also pass it as a parameter on the init method.
There are major changes on the API and the high level HL implementation. Now we don't declare the framebuffer directly like before but is returning from this function epd_init_hl that we added in epd_driver.
I had an issue compiling this since even though that the highlevel.c was added into the build I could not access to the functions from my C++ classes. So I build bridge functions on the epd_driver.c:
uint8_t* epd_init_hl(const EpdWaveform* waveform) {
hl = epd_hl_init(waveform);
return epd_hl_get_framebuffer(&hl);
}
void epd_update_screen(uint8_t *framebuffer, enum EpdDrawMode mode) {
printf("epd_update_screen called\n\n");
epd_hl_update_screen(&hl, mode, 25);
}
void epd_update_area(enum EpdDrawMode mode, EpdRect area) {
enum EpdDrawError err = epd_hl_update_area(&hl, mode, 25, area);
assert(err == EPD_DRAW_SUCCESS);
}
It's very nice how it works and I'm proud to work with this awesome library and make a C++ bridge to it. This makes using it a real pleasure since the complexity is abstracted and you also have rotation as an advantage already included on the mix.
Examples
To download a bitmap from the web and render it on the epaper please try uncommenting the source file cale-grayscale.cpp on the /main/CMakeLists.txt file
This example is now updated to support 24 bits full color bitmaps and only the gray level is sent to the display.drawPixel(x, y, color) method.
The way that this is calculated once the 3 R, G, B color bytes are available is this:
color = 0.33 * in_red + 0.34 * in_green + 0.33 * in_blue;
display.drawPixel(drawX, drawY, color);
So feel free to play around with the R, G, B percentages to get different grays. It's possible also to use (in_red & in_green & in_blue) but this will make noise on certain photos and I think the percentage grays works much smoother if you want to render Black & White photos.
They loook really nice in this 16 grayscale displays.
All credits for EPDiy are for his original author Valentin Roland (@vroland)
Thanks go to my father Carlos Fasani for all the testing, wisdom and color conversion formulas.
New 7.5 HD (880*528) and 1.54 V2 added. Both from Waveshare
- Size: 880 * 528 Colors: B/W (no grayscale support)
- Status: Implemented and tested Mode details in the 7.5 HD Wiki page
This epaper has no grayscale support and we still didn't see an example for partial refresh. It updates quite fast and the HD resolution is nice to print fonts using Adafruit GFX and our component.
Both Waveshare 7 color models working: 4.01 and 5.65 inches
New 7 color model 600x448 and first parallel epaper: Lilygo T5S
Wiki new pages:
- 600*448 7 Color Waveshare No specs or controller PDF sadly
- Research about parallel epapers driven by EPDiy First epaper implemented is ED047TC1 with a resolution of 960x540
First parallel epaper is implemented doing a C++ wrapper over EPDiy own functions.
Class:
https://github.com/martinberlin/cale-idf/tree/master/components/CalEPD/models/parallel
For this epaper do not forget to run: idf.py menuconfig
Component config -> E-Paper Driver
And there set the display type: LILYGO 4.7 inch, Board: LILYGO T5-4.7
Also enable the PSRAM in ESP32 since this board has it: Same section Component config->ESP32-specific:
Support for external, SPI connected RAM
New epaper models and refactored touch component
This version contains an updated Touch component and also some new Epaper models (Check WiKi)
@xeijin helped to get working the awesome Goodisplay/Waveshare 12.48 " Red/Black model that needs an ESP32 with PSRAM (WROVER-B)
There is also a 7.5 old model that was a collaboration from @adrien3d
Size: 640 * 384 Colors: B/W/RED
https://github.com/martinberlin/cale-idf/wiki/Model-color-gdew075z09.h
For the touch details please check the following wiki page:
https://github.com/martinberlin/cale-idf/wiki/Touch-research-for-IC--FT6X36