From 9d87552f99b70ea9d8a8037b67e9be240f5957ce Mon Sep 17 00:00:00 2001
From: xengineering <me@xengineering.eu>
Date: Wed, 3 Jan 2024 11:18:28 +0100
Subject: mech: Switch to custom front panel

The front panel needs holes for the HDMI, micro USB and cinch connectors
of the Raspberry Pi Zero W.
---
 mech/assembly.scad    |  6 ++++--
 mech/panel_front.scad | 31 +++++++++++++++++++++++++++++++
 mech/production.scad  |  4 +++-
 3 files changed, 38 insertions(+), 3 deletions(-)
 create mode 100644 mech/panel_front.scad

diff --git a/mech/assembly.scad b/mech/assembly.scad
index 87865eb..756e539 100644
--- a/mech/assembly.scad
+++ b/mech/assembly.scad
@@ -1,5 +1,7 @@
 include <parameters.scad>
 
+use <panel_front.scad>
+
 use <pcb_case/pcb.scad>
 use <pcb_case/shell.scad>
 use <pcb_case/panel.scad>
@@ -8,9 +10,9 @@ module assembly() {
 	pcb(pcb_dim, drillings, margins, t);
 
 	pcb_case_shell_bottom(pcb_dim, drillings, margins, t);
-//	pcb_case_shell_top(pcb_dim, margins, t);
+	pcb_case_shell_top(pcb_dim, margins, t);
 	pcb_case_panel_back(pcb_dim, margins, t);
-//	pcb_case_panel_front(pcb_dim, margins, t);
+	panel_front(pcb_dim, margins, t);
 }
 
 assembly();
diff --git a/mech/panel_front.scad b/mech/panel_front.scad
new file mode 100644
index 0000000..31f4ff7
--- /dev/null
+++ b/mech/panel_front.scad
@@ -0,0 +1,31 @@
+use <pcb_case/conversion.scad>
+use <pcb_case/panel.scad>
+
+tol = 2;
+cinch_d = 8.8;
+
+module panel_front(pcb_dim, margins, t) {
+	dim = dim_pcb_to_case(pcb_dim, margins, t);
+	x_off = dim[0]-2*t;
+
+	difference() {
+		pcb_case_panel_front(pcb_dim, margins, t);
+		translate([x_off, 17-tol/2, 7.7-tol/2]) mini_hdmi_hole(t);
+		translate([x_off, 47.7-tol/2, 8-tol/2]) micro_usb_hole(t);
+		translate([x_off, 60.1-tol/2, 8-tol/2]) micro_usb_hole(t);
+		translate([x_off, 42.6+cinch_d/2, 26.5+cinch_d/2]) cinch_hole(t);
+		translate([x_off, 58.5+cinch_d/2, 26.5+cinch_d/2]) cinch_hole(t);
+	}
+}
+
+module mini_hdmi_hole(t) {
+	cube([t, 14+tol, 8.9+tol]);
+}
+
+module micro_usb_hole(t) {
+	cube([t, 10.5+tol, 6.6+tol]);
+}
+
+module cinch_hole(t) {
+	rotate([0, 90, 0]) cylinder(d=cinch_d+tol, h=t, $fn=30);
+}
diff --git a/mech/production.scad b/mech/production.scad
index 448a439..1485a39 100644
--- a/mech/production.scad
+++ b/mech/production.scad
@@ -1,5 +1,7 @@
 include <parameters.scad>
 
+use <panel_front.scad>
+
 use <pcb_case/conversion.scad>
 use <pcb_case/shell.scad>
 use <pcb_case/panel.scad>
@@ -23,7 +25,7 @@ module production() {
 	translate([dim[0], dim[1]+spacing, 0])
 		rotate([0, -90, 0])
 			translate([2*t-dim[0], -t, -t])
-				pcb_case_panel_front(pcb_dim, margins, t);
+				panel_front(pcb_dim, margins, t);
 }
 
 production();
-- 
cgit v1.2.3-70-g09d2