Skip to content
WF-01 · Weather Frame · Datasheet rev 0.3 · Preliminary

E-Display experience: e-paper weather display, battery powered

WF-01 Weather Frame

Current weather and a three-day forecast on a 4.26″ e-paper panel. About four months per charge at 30-minute updates, typ. (calculated).

Loading 3D model

Drag the model to turn it

FIG. 1 ·3D model, interactive · drag to turn, take it apart, switch the case finish

01 Description

The WF-01 Weather Frame is a battery-powered e-paper display that shows current weather conditions and a three-day forecast. It wakes on a fixed interval, downloads one pre-rendered image over Wi-Fi, draws it and returns to deep sleep. Between updates the panel holds its image with no power, so the frame draws current only for the few seconds of each update.

All layout and rendering happens on a host computer on the same network. The frame receives a finished 1-bit bitmap and needs no firmware change when the screen design changes.

Features

  • 4.26″ e-paper panel, 800 × 480 px, black and white, 219 ppi
  • Readable in direct light; the image stays with no power
  • ESP32-S3 controller with 2.4 GHz Wi-Fi
  • 1500 mAh LiPo battery, charged over USB-C with the case closed
  • Four months typical runtime at a 30-minute update interval
  • In-line power switch, reachable through the side wall
  • Keeps the last good image if the network or the host is unavailable
  • Printed two-part case: 114 × 71 × 32 mm, about 60 g

Applications

Desk and wall weather display. The same hardware shows any 800 × 480 1-bit image: pictures, signs, calendars and dashboards. WF-01 is the first experience of E-Display, a general e-paper platform.

02 Wiring and pin assignment

FIG. 2 ·Display driver board to controller. Red: power, blue: data, amber: control
Driver boardController pinGPIOFunction
VCC3V3.3 V supply
GNDGNDGround
DINMOSPI data
CLKSCKSPI clock
CS1010Chip select
DC99Data / command
RST66Reset
BUSY55Busy input
PWR1111Panel power, driven high

The driver board connects through a 9-pin GH1.25 cable (20 cm). The battery connects through the in-line switch cable to the controller's JST-PH socket.

03 Mechanical

FIG. 3 ·Inside layout, to scale, 114 × 71 mm
ParameterValueUnit
Outline114 × 71 × 32mm
Corner radius5mm
Wall2.2mm
Edge chamfer0.8mm
Bezel depth / face6 / 2mm
Window95 × 58mm
Shell depth26mm
Mass60 typ.g
OpeningPositionSize
USB-C charge slotRight wall13 × 7 mm
Power buttonLeft wallØ 7.6 mm
RESET, BOOTBackØ 1.8 mm pinholes
KeyholeBackWall mount

The case has two printed parts. The bezel holds the display board in a pocket, and four ribs press it flat. The shell carries the controller upside down on three standoffs and the battery on foam tape. The parts join with four snap tabs. Material: dark PETG or PLA for the bezel, clear PETG (prints frosted) for the shell. Both parts print without supports on a 180 mm printer.

04 Screen

FIG. 4 ·Screen layout. The panel shows it at 800 × 480, 1-bit
FIG. 5 ·The same screen at panel resolution, 800 × 480, 1-bit, pixel for pixel. Drawn from sample weather data

The screen follows the same datasheet layout as this document. Every value carries a label and a unit.

AreaContent
HeaderPart number, location, coordinates, sheet index
01 Air temperatureCurrent temperature (the largest element on the screen), condition icon and name, WMO weather code
02 TodayHigh, low (°C), precipitation (mm), wind (m/s and direction), humidity (%), pressure (hPa)
FIG. 1 TemperatureCurve from −6 h to +18 h. Solid line: measured. Dashed line: forecast. Vertical line: now
03 Next 3 daysDay, icon, high, low (°C), precipitation (mm)
FooterTime of the last update, data source, time of the next update, battery, panel format

The footer shows the image's age. The panel keeps its image with no power, so a frame that has stopped updating still shows when it last updated.

Weather data: Open-Meteo, no account or key. Units: °C, mm, m/s, %, hPa.

05 Operation

Each update runs the same cycle. Any failure ends the cycle early, leaves the panel unchanged and returns the frame to sleep.

StepActionLimit
1Wake from deep sleep on the RTC timer30 min interval
2Connect to the configured Wi-Fi network20 s timeout
3Request the image over HTTP15 s read timeout
4Check the image is exactly 48 000 bytesreject otherwise
5Power the panel and draw a full refresh2.4–2.8 s measured
6Switch Wi-Fi off and enter deep sleep100 µA typ.

The host renders a new image on its own schedule. The frame always shows the most recent image the host served.

06 Specifications

Display

ParameterValueUnit
PanelGDEQ0426T82
Diagonal4.26in
Resolution800 × 480px
Colour depth1bit
Pixel density8.62 (219)px/mm (ppi)
Active area92.8 × 55.68mm
Panel outline105.33 × 62.37 × 0.93mm
Full refresh2.4–2.8 (panel datasheet: 1.5)s
Partial refresh0.42s
Image retention, unpoweredindefinite

Controller

ParameterValueUnit
ModuleAdafruit Feather ESP32-S3
ProcessorESP32-S3, dual-core Xtensa LX7
Clock240MHz
SRAM512KB
Flash8MB
PSRAMnone
Wireless802.11 b/g/n, 2.4 GHz
BluetoothLE 5
Frame buffer48KB, in SRAM
Fuel gaugeMAX17048
ExpansionSTEMMA QT (I²C)

Power

ParameterMinTypMaxUnit
Battery, LiPo nominal3.7V
Battery capacity1500mAh
Usable capacity1200mAh
Sleep current100µA
Charge per update0.15mAh
Charge input, USB-C5V

Battery protection: built-in PCM. Connector: JST-PH 2-pin.

07 Battery life

0481216
V1 · 4.1 MO
5 min15 min30 min1 h6 h1 day

Y: runtime, months · X: update intervalEstimate

Show the numbers
Update everyDaysMonths
5 min260.9
15 min712.3
30 min1254.1
1 h2006.6
6 h40013.2
1 day47115.5
FIG. 6 ·Battery life vs update interval, typical

Runtime = usable capacity ÷ (sleep charge per day + charge per update × updates per day). Values are typical for the figures in section 06 at room temperature. The on-board fuel gauge reports the real state of charge.

08 Image format

PropertyValue
Size800 × 480 px, exactly 48 000 bytes
OrderRow-major, 100 bytes per row, top row first
Bit orderMost significant bit = leftmost pixel
Polarity1 = black, 0 = white
TransportHTTP GET from the host

Photographs are dithered (Floyd–Steinberg) before they are sent. Text and lines are drawn pure black and white.

09 Assembly

The frame is six layers, stacked from back to front: shell, power switch, battery, controller with its cable, display driver board with the panel, and bezel. Select Exploded in FIG. 1 to see them apart, or Inside to see the shell with the display removed.

StepAction
1Solder the controller's headers, long pins pointing down. The strips sit in a breadboard while the 28 joints are soldered, so they stay straight.
2Test on the bench on USB power only. The ribbon is latched on the back of the driver board, the GH1.25 end of the cable plugs into the driver board and the nine wire ends push onto the controller pins. With the firmware flashed and the host serving the image, the weather appears.
3Add the battery and switch. The battery plugs into the switch cable and the switch cable into the controller, the red wire to + on the controller. With the button pressed and USB unplugged, the screen updates every 30 minutes.
4Print the bezel and back shell in PETG or PLA, 0.2 mm layers. Before anything else, the display board must drop into the bezel pocket.
5Fit the display. The bezel lies face down on a cloth and the driver board drops in, panel first. The panel is already glued to the board; it is held by the board edges, never by the glass.
6Fit the back shell. The controller screws upside down onto its three standoffs, USB-C against the slot. The switch's button pushes out through the left-wall hole. The battery sticks to the back wall with foam tape, and the spare cables coil over it under a cable tie.
7Close it up. The shell presses into the bezel until the four tabs click. The four ribs hold the display flat against the window.
FIG. 7 ·Inside the back shell, display lifted out. Render of the 3D model

10 Revision history

RevDateChange
0.32026-10-04Full refresh measured on the bench; runtime and mass marked typ.
0.22026-10-03E-Display naming, panel-resolution figure, assembly steps and inside view, controller clock, SRAM and Bluetooth, figure text corrected
0.12026-09-29First release