Add photos and datasheet; correct wiring and protocol docs

The 20L203 input is RS-232 (reference build uses a MAX3232), it runs on
5-24 V, and it boots in non-scrolling overwrite mode.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
mangavalkandClaude Opus 5.5 committed 2026-10-31 17:44:07 +01:00
1 parent bd9389e04a
commit 3fcd15ad86
7 files changed
+113 -52

No files matched your search

+11 -4
View File
@@ -1,7 +1,7 @@
# CLAUDE.md
ESPHome external component for a Samsung 2×20 serial VFD (5 V TTL, 9600 8N1,
write-only). It is consumed from git by an ESPHome server through
ESPHome external component for a Samsung 20L203 2×20 serial VFD (RS-232
input, 9600 8N1, write-only). It is consumed from git by an ESPHome server through
`external_components: source: github://...`, so the layout must stay
`components/samsung_vfd/` at the repo root.
@@ -13,6 +13,8 @@ write-only). It is consumed from git by an ESPHome server through
and the templated action classes.
- `components/samsung_vfd/samsung_vfd.cpp`: the shadow buffer, word wrap,
UTF-8 → single-byte sanitising and `flush_()`.
- `docs/20L203DA12-datasheet.pdf`: the command set (section 5.4), jumpers,
wiring and the character tables. Check it before adding protocol features.
- `examples/samsung-vfd.yaml`: the full reference device config. It pulls the
component from GitHub; for local work, switch to the commented
`type: local, path: ../components` source.
@@ -27,8 +29,13 @@ write-only). It is consumed from git by an ESPHome server through
`last_payload_` so the next flush retransmits.
- Text sent to the display is one byte per character; always pass it through
`sanitize_()`.
- Keep the protocol constants in `samsung_vfd.h`. Only `ESC @`, `0C` and `0B`
are known to work.
- Keep the protocol constants in `samsung_vfd.h`. The display boots in
overwrite mode: the cursor wraps from the end of line 1 to line 2 and from
the end of line 2 back home, and nothing scrolls. A full-screen redraw is
therefore `0B` plus `rows × cols` characters.
- The RXD input is RS-232. The reference build uses a MAX3232 (no inversion
in config); a directly wired ESP32 pin needs `inverted: true` on the UART TX
pin.
## Checking changes