Files
esphome-samsung-vfd/case/README.md
T
mangavalkandClaude Opus 5.5 9853841a21 Case: add TPU feet held by the base screws
Each foot has a spigot that locates in the base's screw counterbore and a
pocket for the screw head; base screws become M3x10. Base unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 13:06:07 +01:00

98 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Desk case
A 3D-printable desk case for the Samsung 20L203 VFD and a WEMOS D1 R1
(UNO-sized ESP8266 board). The display is tilted back 15° and bolted to the
front with M3 screws. The DC jack and the USB port are reachable through the
back wall.
<p>
<img src="preview.png" alt="Case preview" width="49%">
<img src="section.png" alt="Cross-section: display on the bezel, board on the base" width="49%">
</p>
Outer size: about 208 × 112 × 86 mm (W × D × H). The parts need a print bed of
at least 210 × 115 mm.
## Parts
| File | Print orientation | Notes |
|------|-------------------|-------|
| [stl/body.stl](stl/body.stl) | upside down, top on the bed (as exported) | Sides, top and back wall. No supports needed. |
| [stl/bezel.stl](stl/bezel.stl) | face down (as exported) | Front panel with the window and the display bosses. |
| [stl/base.stl](stl/base.stl) | flat (as exported) | Floor with the board standoffs and the screw holes. |
| [stl/feet.stl](stl/feet.stl) | flat side down (as exported) | 4 feet, print in **TPU**. Each clamps under one of the base screws, with a spigot that locates in the screw's counterbore. |
PETG is a good choice: the display warms the inside by a few degrees. PLA
works if the case stays out of the sun.
## Hardware
- 10 × M3 heat-set inserts (about 4.6 mm OD, 5.7 mm long; the holes are 4.0 mm
and 6 mm deep):
- 4 in the bezel's display bosses
- 2 in the bezel's feet
- 2 in the body's rear corners
- 4 on the base's board standoffs
- 4 × M3×8 to bolt the display to the bezel
- 4 × M3×6 to hold the D1 board on its standoffs
- 4 × M3×8 to hold the base on, from below; **M3×10** with the TPU feet
## Assembly
1. Melt the inserts in.
2. Bolt the display to the bezel from behind, glass facing the window.
3. Screw the D1 board onto the base, with the DC jack and USB edge at the back.
4. Slide the bezel, with the display on it, into the body from below. Its edges
run in the grooves in the side walls until it stops against the top.
5. Connect the display cable. The MAX3232 sits inline in the cable; tie it to
the anchor on the base.
6. Put the body on the base and screw it together from below. The base holds
the bezel in place. With the feet, put a foot on each screw first (the
spigot faces the base) and use M3×10. Tighten until the foot is snug; the
TPU only needs light compression.
## Measure before printing
The dimensions come from the 20L203**DA12** datasheet. Your board is a DA5, so
check these against yours and change the values at the top of
[vfd-case.scad](vfd-case.scad) if needed:
- `disp_hole_inset`, `disp_w`, `disp_h`: the display's mounting holes, 182 ×
56 mm apart.
- `glass_x0`, `glass_y0`, `glass_w`, `glass_h`, `glass_depth`: the glass
position and the distance from its front face to the PCB.
- `usb_pos`: where the micro-USB port is along the D1's back edge (38 mm from
the jack side is a guess based on the UNO layout). Also check `jack_pos`.
- `disp_rotated`: the glass is off-centre on the display's PCB, so the bezel
depends on which way up the display is mounted. `true` (the default) is the
orientation the display reads correctly in: turned 180° from the
datasheet's front view, with the jumper header on the left seen from the
front.
If only the display is off, it's enough to reprint the bezel.
## Changing the design
Open [vfd-case.scad](vfd-case.scad) in OpenSCAD. Every dimension is a variable
at the top, including the tilt, wall thickness and clearances. Export a part
with:
```
openscad -D 'part="body"' --export-format binstl -o stl/body.stl vfd-case.scad
openscad -D 'part="bezel"' --export-format binstl -o stl/bezel.stl vfd-case.scad
openscad -D 'part="base"' --export-format binstl -o stl/base.stl vfd-case.scad
openscad -D 'part="feet"' --export-format binstl -o stl/feet.stl vfd-case.scad
```
`part="assembly"` shows everything with dummy display and board models, and
`part="section"` shows a cut-away. The `check_*` parts are collision checks;
each one must render as an empty object:
- `check_body_bezel`, `check_body_display`, `check_bezel_display`
- `check_body_base`, `check_bezel_base`, `check_display_base`, `check_feet_base`
- `check_board`
- `check_insertion`: sweeps the bezel and display along their slide-in path
through the body.
Faces that only touch can show up as a zero-volume result, which is fine.