summaryrefslogtreecommitdiffstats
path: root/_log/e-reader.md
diff options
context:
space:
mode:
Diffstat (limited to '_log/e-reader.md')
-rw-r--r--_log/e-reader.md21
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.