88 lines
3.5 KiB
Markdown
88 lines
3.5 KiB
Markdown
# 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.
|