-
-
Notifications
You must be signed in to change notification settings - Fork 26
color wave12i48BR 1304x984 B|R
- Size: 1304 * 984, 12.48 inches Colors: B/W/RED
- Manufacturer: Waveshare (Added electronics/ESP32 support) / Good Display (GDEW1248Z95)
- Controller: IL0326
- Status: Implemented and tested. Merged in master, coming in new CalEPD release>=0.9.8
- Partial update: Color epapers from Goodisplay do not support partial update
- Requires: An ESP32 board with PSRAM like ESP-WROVER B: Check details
- Out of stock: Please be aware that currently Waveshare has this epaper model marked as not available due materials shortage. This epapers are manufactured by GOOD DISPLAY, Waveshare just designed a PCB and case, so you can use an ESP32 to drive them.
Note: Any links to Good-Display.com have been removed from this repository
// Waveshare/Goodisplay 12.48" Color version
#include "wave12i48BR.h" // Only to use with Edp4Spi IO
Epd4Spi io;
Wave12I48RB display(io);
void app_main()
{
display.setCursor(10,40);
display.setTextColor(EPD_BLACK);
display.println("This is BLACK");
display.setTextColor(EPD_RED);
display.println("This is RED");
display.update();
}
As I don't own one of this Red/Black epapers this is being developed and tested in Issue 22 with the help of Xeijin
First try looked like this, after realizing I was updating only the red buffer:
After some days of teamwork with Xeijin we added the pixel buffers in the ESP32 PSRAM and finally after many corrections
Commands guide PDF is here for the GDEW1248Z95 3 color epaper (Page 9: Command table)
There it specifies the commands to initialize data transfer:
0x10 is DTM1, White/Black Data
0x13 is DTM2, White/Red Data
The goal now is to save the two array buffers (Red/Black) in PSRAM. The buffer calculation formula, same as for all other epapers, is the following:
WAVE12I48_WIDTH * WAVE12I48_HEIGHT / 8
1304*984/8 = 160392 bytes
uint8_t _buffer_black[WAVE12I48_BUFFER_SIZE];
uint8_t _buffer_red[WAVE12I48_BUFFER_SIZE];
This will simply not work. To test it, we add the array in the header declaration, and build:
cale-epd.elf section `.dram0.bss' will not fit in region `dram0_0_seg'
DRAM segment data does not fit.
That's right. It's impossible to fit 320 Kb in ESP32 DRAM. We should declare both of this pixel buffers in the PSRAM directly. Update after assigning both buffers directly in PSRAM on the class. Also updated the method drawPixel so it supports red and the update so it sends the buffer.
uint8_t* _buffer_black = (uint8_t*)heap_caps_malloc(WAVE12I48_BUFFER_SIZE, MALLOC_CAP_SPIRAM);
uint8_t* _buffer_red = (uint8_t*)heap_caps_malloc(WAVE12I48_BUFFER_SIZE, MALLOC_CAP_SPIRAM);
I wanted to thank Espressif/arduino-esp32 Gitter channel for the guidance on how to initialize this array buffers directly in PSRAM. This is the way to go to handle bigger screens than 800*480 and it just opens a world of possibilities otherwise you are always limited to the DRAM capacity of the ESP32. Like this, having at least 2 Megabytes of RAM available, much bigger screens could be handled.
Revision v.1.3 | Firmware for ESP-IDF >= v. 4.3 Documentation written by Fasani Corp.
We are also launching a new company called Marespa.es that will help EU citizens find an affordable apartment in Spain. With the price of Rent going through the roof in 2024, this might be the moment to make an investment, if you plan to work from the spanish coast. With this project we are also supporting our open source projects.