|
@@ -1,5 +1,5 @@
|
|
|
// Waveshare 2.13" e-Paper HAT (B) — ESP32 Nametag Case
|
|
// Waveshare 2.13" e-Paper HAT (B) — ESP32 Nametag Case
|
|
|
-// Display slides in from X+; FPC cable exits out the closed X- face through a hull slot
|
|
|
|
|
|
|
+// Display slides in from X+; FPC cable exits freely out the open X+ side
|
|
|
|
|
|
|
|
// --- Display Dimensions (landscape: portrait rotated 90°) ---
|
|
// --- Display Dimensions (landscape: portrait rotated 90°) ---
|
|
|
DISP_W = 59.20; // overall width (X) — portrait height
|
|
DISP_W = 59.20; // overall width (X) — portrait height
|
|
@@ -11,20 +11,21 @@ ACT_W = 48.55; // active area width (X) — portrait AA height
|
|
|
ACT_D = 23.71; // active area depth (Y) — portrait AA width
|
|
ACT_D = 23.71; // active area depth (Y) — portrait AA width
|
|
|
|
|
|
|
|
// Border offsets from display edge to active area:
|
|
// Border offsets from display edge to active area:
|
|
|
-// X-: portrait FPC border ≈ 8.70 mm (closed/backstop side — cable exits here)
|
|
|
|
|
-// X+: portrait top border ≈ 1.95 mm (open/entry side)
|
|
|
|
|
|
|
+// X-: portrait top border ≈ 1.95 mm (closed/backstop side)
|
|
|
|
|
+// X+: portrait FPC border ≈ 8.70 mm (open/entry side)
|
|
|
// Y±: symmetric ≈ 2.75 mm each side
|
|
// Y±: symmetric ≈ 2.75 mm each side
|
|
|
-ACT_X_OFFSET = 8.70;
|
|
|
|
|
|
|
+ACT_X_OFFSET = 1.95;
|
|
|
ACT_Y_OFFSET = 2.75;
|
|
ACT_Y_OFFSET = 2.75;
|
|
|
|
|
|
|
|
-// --- FPC Cable (exits X- side) ---
|
|
|
|
|
|
|
+// --- FPC Cable (exits X+ side) ---
|
|
|
FPC_W = 12.5;
|
|
FPC_W = 12.5;
|
|
|
FPC_T = 0.3;
|
|
FPC_T = 0.3;
|
|
|
FPC_LEN = 20.0; // visualization length of hanging tail
|
|
FPC_LEN = 20.0; // visualization length of hanging tail
|
|
|
|
|
|
|
|
-// --- FPC Return Pocket (cable wraps around behind screen) ---
|
|
|
|
|
-FPC_POCKET_DEPTH = 0.75; // how far below display cavity floor (z-)
|
|
|
|
|
-FPC_POCKET_LEN = 20.0; // how far in from X- face
|
|
|
|
|
|
|
+// --- FPC Return Pocket ---
|
|
|
|
|
+FPC_FLOOR_DROP = 0.75; // extra depth below display cavity floor
|
|
|
|
|
+FPC_POCKET_LEN = 20.0; // how far in from X+ face the pocket extends
|
|
|
|
|
+FPC_POCKET_PAD = 2.0; // padding on each side of FPC cable width
|
|
|
|
|
|
|
|
// --- Case Parameters ---
|
|
// --- Case Parameters ---
|
|
|
WALL = 3.0; // must exceed MAG_LIP_H (2.0) to keep pocket floor
|
|
WALL = 3.0; // must exceed MAG_LIP_H (2.0) to keep pocket floor
|
|
@@ -34,7 +35,7 @@ CHAM = 1.0;
|
|
|
CHAM_ANGLE = 60;
|
|
CHAM_ANGLE = 60;
|
|
|
CORNER_R = 2.5;
|
|
CORNER_R = 2.5;
|
|
|
CLIP_Z = 0; // preview: mm to remove from Z+ (0 = full model)
|
|
CLIP_Z = 0; // preview: mm to remove from Z+ (0 = full model)
|
|
|
-CLIP_Y = 20; // preview: mm to remove from Y+ (0 = full model)
|
|
|
|
|
|
|
+CLIP_Y = 6; // preview: mm to remove from Y+ (0 = full model)
|
|
|
SHOW_DISP = true;
|
|
SHOW_DISP = true;
|
|
|
SCREEN_EXPLODE = 0; // mm to pull display toward X+ in preview
|
|
SCREEN_EXPLODE = 0; // mm to pull display toward X+ in preview
|
|
|
|
|
|
|
@@ -57,6 +58,10 @@ _cham_xy = CHAM * tan(CHAM_ANGLE);
|
|
|
win_x = WALL + TOL + ACT_X_OFFSET;
|
|
win_x = WALL + TOL + ACT_X_OFFSET;
|
|
|
win_y = WALL + TOL + ACT_Y_OFFSET;
|
|
win_y = WALL + TOL + ACT_Y_OFFSET;
|
|
|
|
|
|
|
|
|
|
+// FPC return pocket geometry (X+ face)
|
|
|
|
|
+fpc_pkt_y = WALL + TOL + (DISP_D - FPC_W) / 2 - FPC_POCKET_PAD;
|
|
|
|
|
+fpc_pkt_yw = FPC_W + 2 * FPC_POCKET_PAD;
|
|
|
|
|
+
|
|
|
// Magnetic strip recess geometry (centered on back face)
|
|
// Magnetic strip recess geometry (centered on back face)
|
|
|
_lip_il = MAG_L + 2 * MAG_TOL;
|
|
_lip_il = MAG_L + 2 * MAG_TOL;
|
|
|
_lip_iw = MAG_W + 2 * MAG_TOL;
|
|
_lip_iw = MAG_W + 2 * MAG_TOL;
|
|
@@ -73,7 +78,7 @@ module EPD213B() {
|
|
|
translate([ACT_X_OFFSET, ACT_Y_OFFSET, DISP_T])
|
|
translate([ACT_X_OFFSET, ACT_Y_OFFSET, DISP_T])
|
|
|
cube([ACT_W, ACT_D, 0.02]);
|
|
cube([ACT_W, ACT_D, 0.02]);
|
|
|
color([1.0, 0.85, 0.1])
|
|
color([1.0, 0.85, 0.1])
|
|
|
- translate([-FPC_LEN, (DISP_D - FPC_W) / 2, (DISP_T - FPC_T) / 2])
|
|
|
|
|
|
|
+ translate([DISP_W, (DISP_D - FPC_W) / 2, (DISP_T - FPC_T) / 2])
|
|
|
cube([FPC_LEN, FPC_W, FPC_T]);
|
|
cube([FPC_LEN, FPC_W, FPC_T]);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -103,17 +108,9 @@ module epd_case() {
|
|
|
cube([ACT_W + 2*_cham_xy, ACT_D + 2*_cham_xy, 0.01]);
|
|
cube([ACT_W + 2*_cham_xy, ACT_D + 2*_cham_xy, 0.01]);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // FPC slot through X- wall — hulled path, 2 mm padding each side of cable
|
|
|
|
|
- hull() {
|
|
|
|
|
- translate([-0.01, WALL + TOL + (DISP_D - FPC_W) / 2 - 2, WALL - 0.01])
|
|
|
|
|
- cube([0.01, FPC_W + 4, DISP_T + TOL + 0.02]);
|
|
|
|
|
- translate([WALL, WALL + TOL + (DISP_D - FPC_W) / 2 - 2, WALL - 0.01])
|
|
|
|
|
- cube([0.01, FPC_W + 4, DISP_T + TOL + 0.02]);
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- // FPC return pocket — below display cavity floor, aligned with cable slot, from X- face inward
|
|
|
|
|
- translate([-0.01, WALL + TOL + (DISP_D - FPC_W) / 2 - 2, WALL - FPC_POCKET_DEPTH])
|
|
|
|
|
- cube([FPC_POCKET_LEN + 0.01, FPC_W + 4, FPC_POCKET_DEPTH + 0.02]);
|
|
|
|
|
|
|
+ // FPC return pocket — drops floor of display cavity near X+ face
|
|
|
|
|
+ translate([case_w - FPC_POCKET_LEN, fpc_pkt_y, WALL - FPC_FLOOR_DROP - 0.01])
|
|
|
|
|
+ cube([FPC_POCKET_LEN + 0.02, fpc_pkt_yw, DISP_T + TOL + FPC_FLOOR_DROP + 0.01]);
|
|
|
|
|
|
|
|
// Magnetic strip recess in back face
|
|
// Magnetic strip recess in back face
|
|
|
translate([_lip_x, _lip_y, -0.01])
|
|
translate([_lip_x, _lip_y, -0.01])
|