Skip to main content

E-Paper Display Layout Overview

Half and Half display mode

Display Hardware Specifications​

  • Display Model: 7.5 inch E-Paper Display GDEY075T7
  • Physical Resolution: 800x480 pixels
  • Color Support: Black & White (2-color), No Gray levels

Layout Orientations​

Landscape Mode (800x480)​

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ β”‚ β”‚
β”‚ WEATHER SECTION β”‚ DEPARTURE SECTION β”‚
β”‚ (400x480) β”‚ (399x480) β”‚
β”‚ β”‚ β”‚
β”‚ β€’ City/Town Name: 22px β”‚ β€’ Station Name: 17px β”‚
β”‚ β€’ Space 20px β”‚ β€’ Space 10px β”‚
β”‚ β€’ Day weather Info: 80px β”‚ β€’ Departure Column Headers: 12px β”‚
β”‚ - first column β”‚ β€’ Space 4px β”‚
β”‚ - Day Weather Icon: 48px β”‚ β€’ Line 1px β”‚
β”‚ - Current Temp : 30 px β”‚ Left 421px for depature Entries β”‚
β”‚ - second column β”‚ - Depature Entries 42 px 5 times β”‚
β”‚ - today low/high temp: 27px β”‚ - Separation Line 1px β”‚
β”‚ - UV Index info: 20 px β”‚ - Depature Entries 42 px 5 times β”‚
β”‚ - Pollen Info : 20px β”‚ Single Daparture Entry β”‚
β”‚ - third column β”‚ - Space 3px β”‚
β”‚ - Sunrise : 40 px β”‚ - Main Line: 17px β”‚
β”‚ - Sunset : 40px β”‚ - Space 3px β”‚
β”‚ β€’ Space 12px β”‚ - Disruption Space: 16px β”‚
β”‚ β€’ NΓ€chste Stunden 15px β”‚ - Space 3px β”‚
β”‚ β€’ Space 25px β”‚ β€’ Footer Separation Line 1px β”‚
β”‚ β€’ Weather Graphic : 304px β”‚ β€’ Footer: 15px β”‚
β”‚ β€’ Space 12px β”‚ β”‚
β”‚ β€’ Footer: 15px β”‚ β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Update Performance​

  • Full Screen: Complete redraw (~2-3 seconds)
  • Partial Updates: Not possible with deep sleep (see below)

Weather Data in RTC Memory​

Why Weather Is Cached in RTC​

Wake Cycle 1: Fetch Weather + Fetch Transport β†’ Display β†’ Sleep
Wake Cycle 2: RTC Weather (cached) + Fetch Transport β†’ Display β†’ Sleep
Wake Cycle 3: RTC Weather (cached) + Fetch Transport β†’ Display β†’ Sleep
Wake Cycle 4: Fetch Weather (interval expired) + Fetch Transport β†’ Display β†’ Sleep

Weather data (WeatherInfo) is stored in RTC memory because:

  • Weather updates are infrequent (every 1-3 hours), while transport updates are frequent (every 5-10 minutes)
  • Avoids redundant API calls β€” on most wake cycles, only transport data is fetched
  • Saves power β€” one fewer HTTPS request per wake cycle reduces WiFi-on time by ~1-2 seconds
  • Required for display β€” the half-and-half mode needs both weather and transport data every cycle

Partial Display Update β€” Not Feasible with Deep Sleep​

Partial display update would allow refreshing only the transport section while keeping the weather section untouched:

Full refresh: [Weather β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ | Transport β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ] ← full flash, 2-3s
Partial refresh: [Weather (unchanged) | Transport β–ˆβ–ˆβ–ˆβ–ˆ] ← no flash on left, <1s

Why it doesn't work:

The e-paper controller (GDEY075T7) supports setPartialWindow() and GxEPD2 provides the API. U8g2_for_Adafruit_GFX also works correctly within partial windows (renders via drawPixel() which GxEPD2 clips to the window). The x=400 half-width boundary is 8-pixel aligned as required.

However, partial updates require the controller to retain the previous image in its RAM to calculate pixel transitions. After ESP32 deep sleep, the controller's RAM content becomes unreliable (even with display.hibernate()), causing:

  • Ghosting on the unchanged half (weather)
  • Progressively unreadable content after multiple partial cycles
  • Full-screen flash fallback on some updates

Since the device deep-sleeps between every update cycle (~5 min), there is no "second update within the same wake cycle" where partial refresh could work. The 48 KB framebuffer (800Γ—480 / 8) also exceeds the ESP32's 8 KB RTC RAM, so it cannot be persisted across sleep.

Conclusion: Full-screen refresh is the only reliable approach for a deep-sleep device. This is a hardware limitation, not a software one.