Add 3D-printable desk case for the VFD and a WEMOS D1 R1
Parametric OpenSCAD design: 15 degree bezel holding the display on M3 heat-set inserts, slides into the body; base carries the board with the DC jack and USB reachable through the back. Includes STLs, previews and collision checks. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
95686a3608
commit
0cf5df9b6e
9 files changed
+388
No files matched your search
@@ -0,0 +1,88 @@
|
||||
# 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. |
|
||||
|
||||
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
|
||||
|
||||
## 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.
|
||||
|
||||
## 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`.
|
||||
|
||||
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
|
||||
```
|
||||
|
||||
`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_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.
|
||||
Reference in new issue
Block a user