diff options
| -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. |
