Add READMEs, docs, and LICENSE for publishing
Build and push server image / build-and-push (push) Successful in 32s
Build and push server image / build-and-push (push) Successful in 32s
- LICENSE: MIT, with attribution notes for the vendored qrcode/epaper_fonts/ dns_server code and the epd7in3e driver's transcription of Waveshare's register sequence. - Top-level README.md: project overview, hardware list, quick-start pointing at firmware/ and server/, repo layout, license, Claude Code attribution. - firmware/README.md: full rewrite (was still the stock ESP-IDF captive portal example's README) -- build/flash instructions, Kconfig reference table, first-boot walkthrough, and how to reset to provisioning mode via NVS erase (the only way in right now; a proper reconfigure trigger is a future addition). - docs/hardware.md: wiring table + parts list + strapping-pin/SPI-speed notes. - docs/architecture.md: sequence diagram and walkthrough of the full provision -> connect -> fetch -> display -> sleep cycle, plus the reasoning behind doing image processing server-side and reusing Immich's face detection instead of bundling a detector. - server/README.md: fixed stale endpoint docs (missing GET /frame/config, POST /api/config still describing removed immich_url/api_key fields).
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
# Hardware
|
||||
|
||||
## Parts
|
||||
|
||||
- An ESP32-C6 dev board (e.g. ESP32-C6-DevKitC-1). Needs 8MB flash --
|
||||
see [`firmware/sdkconfig.defaults`](../firmware/sdkconfig.defaults) and
|
||||
[`firmware/partitions.csv`](../firmware/partitions.csv) if yours differs.
|
||||
- [Waveshare 7.3" E Ink Spectra 6 (E6) panel](https://www.waveshare.com/7.3inch-e-paper-hat-e.htm) --
|
||||
800x480, 6-color, SPI.
|
||||
- A USB cable for flashing/power.
|
||||
|
||||
## Wiring
|
||||
|
||||
The panel connects over SPI plus three control lines (data/command, reset,
|
||||
busy). Defaults below match the reference build and are set in
|
||||
[`firmware/components/epd7in3e/Kconfig`](../firmware/components/epd7in3e/Kconfig) --
|
||||
override via `idf.py menuconfig` under **E-Paper Display (epd7in3e)
|
||||
Configuration** if your wiring differs.
|
||||
|
||||
| Panel pin | ESP32-C6 GPIO | Kconfig option |
|
||||
| --------- | ------------- | ----------------- |
|
||||
| CLK | 20 | `EPD_PIN_CLK` |
|
||||
| DIN | 19 | `EPD_PIN_MOSI` |
|
||||
| CS | 18 | `EPD_PIN_CS` |
|
||||
| DC | 9 | `EPD_PIN_DC` |
|
||||
| RST | 10 | `EPD_PIN_RST` |
|
||||
| BUSY | 11 | `EPD_PIN_BUSY` |
|
||||
| VCC | 3.3V | -- |
|
||||
| GND | GND | -- |
|
||||
|
||||
A couple of things worth knowing if you pick different pins:
|
||||
|
||||
- **Avoid the ESP32-C6's strapping pins** (GPIO 4, 5, 8, 9, 15) and the
|
||||
USB-JTAG pins (12, 13) where possible -- strapping pins are sampled at
|
||||
reset to select boot mode. The reference wiring above already uses
|
||||
GPIO9 for DC, which *is* a strapping pin; it's only sampled during
|
||||
power-on/reset, so it's safe once the app is running, but if
|
||||
flashing/boot ever misbehaves on your board, check whether the panel is
|
||||
pulling that line low during reset.
|
||||
- The panel's SPI interface is rated well above the firmware's default
|
||||
4MHz clock (`EPD_SPI_CLOCK_HZ`), but breadboard/dupont-wire connections
|
||||
are often unreliable much past a few MHz. Raise it once your physical
|
||||
wiring is confirmed solid.
|
||||
|
||||
## Power
|
||||
|
||||
The device spends nearly all its time in deep sleep, waking briefly once
|
||||
an hour (configurable, see the server's web UI) to fetch and display a
|
||||
photo. A full-color refresh on this panel takes 15-30+ seconds and draws
|
||||
more current than deep sleep by a wide margin -- expect battery life (if
|
||||
not running from USB power) to be dominated by refresh frequency, not
|
||||
sleep current.
|
||||
Reference in New Issue
Block a user