Skip to content

Releases: martinberlin/cale-idf

1.2 Adds some new models and optimizes existing ones

22 May 14:04
Compare
Choose a tag to compare
  • 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.
10.2" mono

Thanks to Freddie from GOODISPLAY my partners and the developers that trust this component for their Firmware.

Last stable ESP-IDF v. 4.4

27 Oct 07:51
7a25692
Compare
Choose a tag to compare

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

10 Jan 17:26
Compare
Choose a tag to compare

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.

Homer_Twitter

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

28 Aug 10:09
Compare
Choose a tag to compare

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

Dragon in 800*480 monochrome
Dragon in 800*480 monochrome

JPG dithered using CALE.es
JPG dithered using CALE.es

16 grayscales parallel EPD47 from Lilygo
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

20 Apr 11:11
Compare
Choose a tag to compare

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"
Lilygo-EPD047

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.

Proof of concept video in Twitter

Update EPDiy version for parallel epapers and to support ESP-IDF v 4.4

27 Mar 18:30
Compare
Choose a tag to compare

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.

dragon

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

11 Mar 10:41
Compare
Choose a tag to compare
  • Size: 880 * 528 Colors: B/W (no grayscale support)
  • Status: Implemented and tested Mode details in the 7.5 HD Wiki page

gdew075HD

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

24 Feb 17:41
Compare
Choose a tag to compare

Complementary release with fixes after feedback from Waveshare
waveshare 7 color

Controller PDF is linked from Wiki pages. I like more the color intensity of the 4.01 smaller epaper.

New 7 color model 600x448 and first parallel epaper: Lilygo T5S

01 Feb 19:12
Compare
Choose a tag to compare

Wiki new pages:

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

09 Jan 18:54
Compare
Choose a tag to compare

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