Files
mangavalkandClaude Opus 5.5 c8fc973320 Case: add photos of the printed build; strip GPS from photos
Show the assembled case and the inside with the body removed. Remove the
GPS location from the EXIF data of all photos, without re-encoding.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 20:04:17 +01:00

4.7 KiB
Raw Permalink Blame History

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.

Case preview Cross-section: display on the bezel, board on the base

The printed build, assembled and with the body removed (D1 R1 with a proto shield carrying the MAX3232):

Printed case, assembled Inside the case: display on the bezel, D1 R1 on the base

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 upside down, top on the bed (as exported) Sides, top and back wall. No supports needed.
stl/bezel.stl face down (as exported) Front panel with the window and the display bosses.
stl/base.stl flat (as exported) Floor with the board standoffs and the screw holes.
stl/feet.stl flat side down (as exported) 6 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

  • 14 × M3 heat-set inserts, CNC Kitchen M3 × 5.7 (about 4.6 mm OD; the holes are 4.2 mm and 6 mm deep, set by insert_d if your printer runs tighter or looser):
    • 4 in the bezel's display bosses
    • 2 in the bezel's feet
    • 2 in the body's rear corners and 2 in its side walls, behind the display
    • 4 on the base's board standoffs
  • 4 × M3×6 to bolt the display to the bezel
  • 4 × M3×6 to hold the D1 board on its standoffs
  • 6 × M3×8 to hold the base on, from below (also 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); M3×8 is still long enough. Tighten until the foot is snug; the TPU only needs light compression.

Measure before printing

The dimensions come from the 20L203DA12 datasheet. Your board is a DA5, so check these against yours and change the values at the top of 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 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.