diff options
| author | Sadeep Madurange <sadeep@asciimx.com> | 2026-02-20 23:01:52 +0800 |
|---|---|---|
| committer | Sadeep Madurange <sadeep@asciimx.com> | 2026-02-21 21:54:46 +0800 |
| commit | 5838f7f51e405563f6ba1ab65db4d71071459ba3 (patch) | |
| tree | 4b7955fce7e6e705a2118f1de590bb5c27853a71 /_log | |
| parent | 48b2bc137d274b386b8d12fc6e7bf303c8ce8a14 (diff) | |
| download | www-5838f7f51e405563f6ba1ab65db4d71071459ba3.tar.gz | |
Journal-style improvements to e-reader.
Diffstat (limited to '_log')
| -rw-r--r-- | _log/e-reader.md | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/_log/e-reader.md b/_log/e-reader.md index 66c262b..560492e 100644 --- a/_log/e-reader.md +++ b/_log/e-reader.md @@ -1,12 +1,14 @@ --- -title: 512KB e-reader +title: 512 KB prototype e-reader date: 2023-10-24 layout: post project: true thumbnail: thumb_sm.png --- -First project with e-paper. +Been dabbling in microcontrollers—mostly Arduino Uno/ATmega328P. Math major, no +formal electronics training. This, however, is an ESP-32 project—first +resembling something practical. <video style="max-width:100%;" controls="" poster="poster.png"> <source src="ereader.mp4" type="video/mp4"> @@ -15,12 +17,12 @@ First project with e-paper. ESP-WROOM-32, 7.5" Waveshare e-paper display, three-button interface (prev/next/sleep). -Memory: 512KB SRAM + 4MB flash. Internal flash unsuitable for storing books due -to P/E cycle limit. Used HTTP Range requests to stream them on-demand. +Memory: 512 KB SRAM + 4 MB flash. Internal flash unsuitable for storing books +due to P/E cycle limit. Used HTTP Range requests to stream them on-demand. Progress saved to RTC memory to survive deep sleep without flash wear. PDFs are rasterized and stored as sequences of bitmaps on a server. 1 byte = 8 -pixels, 1 page = 48KB (display resolution), headerless. Optimized for Range +pixels, 1 page = 48 KB (display resolution), headerless. Optimized for Range requests without server-side logic: ``` @@ -35,9 +37,9 @@ esp_http_client_set_header(http_client, "Range", buf); esp_http_client_perform(http_client); ``` -Three pages (prev/current/next) held in a buffer—maximum possible. Upon -request, embedded software cycles the buffer, updates the screen, prefetches -the next page. +Three pages (prev/current/next) stored in a circular buffer—max possible. Upon +request (via GPIO interrupts), application cycles buffer, updates screen, +prefetches next page. ``` c_page_num++; @@ -57,8 +59,7 @@ HTTP task to the other. Better, but screen updates block user input. -Moved the SPI buffers to DMA and made the transfers async. Few more cycles -saved. +Moved SPI buffers to DMA and made transfers async. Few more cycles saved. Can't think of anything else. |
