@ -0,0 +1,97 @@ | 
				
			|||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Module for the box without lids just to structure the code a bit better. | 
				
			||||
 | 
					// | 
				
			||||
 | 
					// Author: 		Maximilian Stiefel | 
				
			||||
 | 
					// Last modification: 	20.07.2017 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Includes | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Dimesnions | 
				
			||||
 | 
					include <dimensions.scad> | 
				
			||||
 | 
					use <dimensions.scad> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Module to make a nice round box | 
				
			||||
 | 
					include <roundy.scad> | 
				
			||||
 | 
					use <roundy.scad> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Module for screw holes | 
				
			||||
 | 
					include <screw_holes.scad> | 
				
			||||
 | 
					use <screw_holes.scad> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Module for orings | 
				
			||||
 | 
					include <oring.scad> | 
				
			||||
 | 
					use <oring.scad> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					module box() | 
				
			||||
 | 
					{ | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Vars | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Action | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					difference() | 
				
			||||
 | 
					{ | 
				
			||||
 | 
					        // Main body | 
				
			||||
 | 
					        roundy(housing_outside_width, housing_outside_depth, housing_outside_height); | 
				
			||||
 | 
					        union() | 
				
			||||
 | 
					        { | 
				
			||||
 | 
							// Cut out basic inner shape | 
				
			||||
 | 
							cube([housing_inside_width, housing_inside_depth, housing_inside_height], center = true); | 
				
			||||
 | 
					                // Cut out all six sides | 
				
			||||
 | 
					                // Left and right | 
				
			||||
 | 
					                cube([housing_inside_width + 3*housing_thickness, lid_l_r_width, lid_l_r_height], center = true); | 
				
			||||
 | 
					                // Front and back | 
				
			||||
 | 
					                cube([lid_f_b_width, housing_inside_depth + 3*housing_thickness, lid_f_b_height], center = true);               	 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
							// Cut deepenings for lids | 
				
			||||
 | 
					                // Left and right | 
				
			||||
 | 
					                for(x = [-1, 1]) | 
				
			||||
 | 
					                translate([x*housing_outside_width/2 - x*lids_depth/2 + x*0.1, 0, 0]) | 
				
			||||
 | 
					                rotate([0, 90, 0]) | 
				
			||||
 | 
					                roundy(lid_l_r_x, lid_l_r_y, lids_depth + 0.2, center = true); | 
				
			||||
 | 
					                // Front and back | 
				
			||||
 | 
					                for(y = [-1, 1]) | 
				
			||||
 | 
					                translate([0, y*housing_outside_depth/2 - y*lids_depth/2 + y*0.1, 0]) | 
				
			||||
 | 
					                rotate([90, 0, 0]) | 
				
			||||
 | 
					                cube([lid_f_b_x, lid_f_b_y, lids_depth + 0.2], center = true); | 
				
			||||
 | 
					                 | 
				
			||||
 | 
							// Screw holes | 
				
			||||
 | 
					                // Left and right | 
				
			||||
 | 
					                for(x = [-1, 1]) | 
				
			||||
 | 
					                translate([x*housing_outside_width/2 - x*drill_depth_m3, 0, 0]) | 
				
			||||
 | 
					                rotate([90, 0, 90]) | 
				
			||||
 | 
					                screw_holes(lid_l_r_holes_x, lid_l_r_holes_y, drill_thread_dia_m3, 2*lids_depth); | 
				
			||||
 | 
					                // Front and back | 
				
			||||
 | 
					                for(y = [-1, 1]) | 
				
			||||
 | 
					                translate([0, y*housing_outside_depth/2 - y*drill_depth_m3, 0]) | 
				
			||||
 | 
					                rotate([90, 0, 0]) | 
				
			||||
 | 
					                screw_holes(lid_f_b_holes_x, lid_f_b_holes_y, drill_thread_dia_m3, 2*lids_depth); | 
				
			||||
 | 
					               	 | 
				
			||||
 | 
							// O-rings	 | 
				
			||||
 | 
							// Left and right | 
				
			||||
 | 
					                for(x = [-1, 1]) | 
				
			||||
 | 
					                translate([x*housing_outside_width/2 - x*lids_depth - x*oring_channel_depth/2, 0, 0]) | 
				
			||||
 | 
					                rotate([90, 0, 90]) | 
				
			||||
 | 
					                oring(oring_l_r_x, oring_l_r_y, oring_channel_width, oring_channel_depth); | 
				
			||||
 | 
							// Front and back | 
				
			||||
 | 
							for(y = [-1, 1]) | 
				
			||||
 | 
					                translate([0, y*housing_outside_depth/2 - y*lids_depth - y*oring_channel_depth/2, 0]) | 
				
			||||
 | 
							rotate([90, 0, 0]) | 
				
			||||
 | 
							oring(oring_f_b_x, oring_f_b_y, oring_channel_width, oring_channel_depth); | 
				
			||||
 | 
							 | 
				
			||||
 | 
							// Cut holes for battery holder | 
				
			||||
 | 
							translate([battery_holder_pos_x, battery_holder_pos_y, 0.01 - (housing_inside_height + drill_depth_m3)/2]) | 
				
			||||
 | 
							cylinder(r = drill_thread_dia_m3/2, h = drill_depth_m3, center = true); | 
				
			||||
 | 
							translate([battery_holder_pos_x - battery_holder_hole_dis_x, battery_holder_pos_y + battery_holder_hole_dis_y, 0.01 - (housing_inside_height + drill_depth_m3)/2]) | 
				
			||||
 | 
							cylinder(r = drill_thread_dia_m3/2, h = drill_depth_m3, center = true); | 
				
			||||
 | 
							} | 
				
			||||
 | 
					} | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,58 @@ | 
				
			|||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Female part of the box. | 
				
			||||
 | 
					// | 
				
			||||
 | 
					// Author:              Maximilian Stiefel | 
				
			||||
 | 
					// Last modification:   31.07.2017 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Includes | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Dimesnions | 
				
			||||
 | 
					include <dimensions.scad> | 
				
			||||
 | 
					use <dimensions.scad> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Module for raw box without any lids | 
				
			||||
 | 
					include <box.scad> | 
				
			||||
 | 
					use <box.scad> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Module for screw holes | 
				
			||||
 | 
					include <screw_holes.scad> | 
				
			||||
 | 
					use <screw_holes.scad> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					//////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Vars | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Set minimum angle of a fragment | 
				
			||||
 | 
					$fa = 0.5; | 
				
			||||
 | 
					// Set minimum size of a fragment | 
				
			||||
 | 
					$fs = 0.5; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					//////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Action | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					color(myColor1) | 
				
			||||
 | 
					{ | 
				
			||||
 | 
					translate([0, 0, housing_outside_height/2]) | 
				
			||||
 | 
					//rotate([180, 0, 0]) | 
				
			||||
 | 
					{ | 
				
			||||
 | 
					difference() | 
				
			||||
 | 
					{ | 
				
			||||
 | 
						// Draw hole box | 
				
			||||
 | 
						box(); | 
				
			||||
 | 
						union() | 
				
			||||
 | 
						{ | 
				
			||||
 | 
						// Cut off half of it | 
				
			||||
 | 
						translate([0, 0, housing_outside_height/4]) | 
				
			||||
 | 
						cube([housing_outside_width + 1, housing_outside_depth + 1, housing_outside_height/2 + 0.01], center = true); | 
				
			||||
 | 
						 | 
				
			||||
 | 
						// Draw cylinders for mortise joint | 
				
			||||
 | 
						translate([0, 0, -(mortise_joint_height + allowance2)/2]) | 
				
			||||
 | 
						screw_holes(housing_inside_width + housing_thickness/2, housing_inside_depth + housing_thickness/2, mortise_joint_dia + allowance1, mortise_joint_height + allowance2); | 
				
			||||
 | 
						} | 
				
			||||
 | 
					} | 
				
			||||
 | 
					} | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,64 @@ | 
				
			|||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Male part of the box. | 
				
			||||
 | 
					// | 
				
			||||
 | 
					// Author:              Maximilian Stiefel | 
				
			||||
 | 
					// Last modification:   31.07.2017 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Includes | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Dimesnions | 
				
			||||
 | 
					include <dimensions.scad> | 
				
			||||
 | 
					use <dimensions.scad> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Module for raw box without any lids | 
				
			||||
 | 
					include <box.scad> | 
				
			||||
 | 
					use <box.scad> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Module for screw holes | 
				
			||||
 | 
					include <screw_holes.scad> | 
				
			||||
 | 
					use <screw_holes.scad> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					//////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Vars | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Set minimum angle of a fragment | 
				
			||||
 | 
					$fa = 0.5; | 
				
			||||
 | 
					// Set minimum size of a fragment | 
				
			||||
 | 
					$fs = 0.5; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					//////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Action | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					color(myColor1) | 
				
			||||
 | 
					{ | 
				
			||||
 | 
						translate([0, 0, housing_outside_height/2]) | 
				
			||||
 | 
						rotate([180, 0, 0]) | 
				
			||||
 | 
						union() | 
				
			||||
 | 
						{ | 
				
			||||
 | 
							rotate([180, 0, 0]) | 
				
			||||
 | 
							{ | 
				
			||||
 | 
							// Draw cylinders for mortise joint | 
				
			||||
 | 
							translate([0, 0, (mortise_joint_height - mortise_joint_cone_height)/2 - 0.01]) | 
				
			||||
 | 
							screw_holes(housing_inside_width + housing_thickness/2, housing_inside_depth + housing_thickness/2, mortise_joint_dia, mortise_joint_height - mortise_joint_cone_height); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
							// Draw cones | 
				
			||||
 | 
							for(x=[-0.5,+0.5]) | 
				
			||||
 | 
							for(y=[-0.5,+0.5]) | 
				
			||||
 | 
							translate([x*(housing_inside_width + housing_thickness/2), y*(housing_inside_depth + housing_thickness/2), mortise_joint_height - mortise_joint_cone_height/2 - 0.01]) | 
				
			||||
 | 
							cylinder(r1 = (mortise_joint_dia)/2, r2 = 1, mortise_joint_cone_height, center = true); | 
				
			||||
 | 
						} | 
				
			||||
 | 
						difference() | 
				
			||||
 | 
						{ | 
				
			||||
 | 
							// Draw hole box | 
				
			||||
 | 
							box(); | 
				
			||||
 | 
							// Cut off half of it | 
				
			||||
 | 
							translate([0, 0, -housing_outside_height/4]) | 
				
			||||
 | 
							cube([housing_outside_width + 1, housing_outside_depth + 1, housing_outside_height/2 + 0.01], center = true); | 
				
			||||
 | 
						} | 
				
			||||
 | 
						} | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,132 @@ | 
				
			|||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// File for all dimensions, so they can be changed globally. | 
				
			||||
 | 
					// | 
				
			||||
 | 
					// Author:              Maximilian Stiefel | 
				
			||||
 | 
					// Last modification:   07.07.2017 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Allowance | 
				
			||||
 | 
					allowance15 = 15; | 
				
			||||
 | 
					allowance10 = 10; | 
				
			||||
 | 
					allowance5 = 5; | 
				
			||||
 | 
					allowance2 = 2; | 
				
			||||
 | 
					allowance1 = 1; | 
				
			||||
 | 
					allowance05 = 0.5; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Dimensions battery holder | 
				
			||||
 | 
					battery_holder_width = 53.5; | 
				
			||||
 | 
					battery_holder_depth = 50.5;  | 
				
			||||
 | 
					battery_holder_height = 13; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Dimensions motherboard | 
				
			||||
 | 
					motherboard_width = 80; | 
				
			||||
 | 
					motherboard_depth = 1.6; | 
				
			||||
 | 
					motherboard_height = 50; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Dimensions plugin boards | 
				
			||||
 | 
					pluginboard_width = 80; | 
				
			||||
 | 
					pluginboard_depth = 1.6; | 
				
			||||
 | 
					pluginboard_height = 50; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Dimensions magnet | 
				
			||||
 | 
					extra_space_magnet = 10; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Dimensions housing inside (cubic) | 
				
			||||
 | 
					housing_inside_width = motherboard_width + allowance15; | 
				
			||||
 | 
					housing_inside_depth = pluginboard_height + extra_space_magnet + allowance5; | 
				
			||||
 | 
					housing_inside_height = motherboard_height + battery_holder_height + allowance10; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					echo(housing_inside_width=housing_inside_width); | 
				
			||||
 | 
					echo(housing_inside_depth=housing_inside_depth); | 
				
			||||
 | 
					echo(housing_inside_height=housing_inside_height); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Dimensions housing  | 
				
			||||
 | 
					housing_thickness = 12; // Make it thick to avoid light comming through the walls | 
				
			||||
 | 
					housing_outside_width = housing_inside_width + 2*housing_thickness; | 
				
			||||
 | 
					housing_outside_depth = housing_inside_depth + 2*housing_thickness; | 
				
			||||
 | 
					housing_outside_height = housing_inside_height + 2*housing_thickness; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					echo(housing_outside_width=housing_outside_width); | 
				
			||||
 | 
					echo(housing_outside_depth=housing_outside_depth); | 
				
			||||
 | 
					echo(housing_outside_height=housing_outside_height); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Colors | 
				
			||||
 | 
					myColor1 = "DodgerBlue"; | 
				
			||||
 | 
					myColor2 = "Maroon"; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Lids dimensions | 
				
			||||
 | 
					lids_depth = housing_thickness/3; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					echo(lids_depth=lids_depth); | 
				
			||||
 | 
					  | 
				
			||||
 | 
					lid_l_r_height = (3/4)*housing_inside_height; | 
				
			||||
 | 
					lid_l_r_width = (3/4)*housing_inside_depth; | 
				
			||||
 | 
					lid_l_r_overlap = (1.7)*housing_thickness;  | 
				
			||||
 | 
					lid_l_r_x = lid_l_r_height + lid_l_r_overlap; | 
				
			||||
 | 
					lid_l_r_y = lid_l_r_width + lid_l_r_overlap;  | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					lid_f_b_width = housing_inside_width - 10; | 
				
			||||
 | 
					lid_f_b_height = housing_inside_height - 5; | 
				
			||||
 | 
					lid_f_b_overlap = (1.7)*housing_thickness; | 
				
			||||
 | 
					lid_f_b_x = lid_f_b_width + lid_f_b_overlap; | 
				
			||||
 | 
					lid_f_b_y = lid_f_b_height + lid_f_b_overlap;  | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					lid_t_b_width = housing_inside_width; | 
				
			||||
 | 
					lid_t_b_height = housing_inside_depth; | 
				
			||||
 | 
					lid_t_b_overlap = (1.7)*housing_thickness; | 
				
			||||
 | 
					lid_t_b_x = lid_t_b_width + lid_t_b_overlap; | 
				
			||||
 | 
					lid_t_b_y = lid_t_b_height + lid_t_b_overlap;  | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Screw holes | 
				
			||||
 | 
					drill_dia_m3 = 3.2; | 
				
			||||
 | 
					drill_thread_dia_m3 = 2.5; | 
				
			||||
 | 
					drill_depth_m3 = 7; | 
				
			||||
 | 
					drill_sinking_dia1_m3 = 5.5; | 
				
			||||
 | 
					drill_sinking_dia2_m3 = 3; | 
				
			||||
 | 
					drill_sinking_height_m3 = 2;  | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					echo(drill_depth_m3=drill_depth_m3); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					lid_l_r_holes_x = lid_l_r_width + (6/10)*lid_l_r_overlap; | 
				
			||||
 | 
					lid_l_r_holes_y = lid_l_r_height + (6/10)*lid_l_r_overlap; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					lid_f_b_holes_x = lid_f_b_width + (6/10)*lid_f_b_overlap; | 
				
			||||
 | 
					lid_f_b_holes_y = lid_f_b_height + (6/10)*lid_f_b_overlap; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					lid_t_b_holes_x = lid_t_b_width + (6/10)*lid_t_b_overlap; | 
				
			||||
 | 
					lid_t_b_holes_y = lid_t_b_height + (6/10)*lid_t_b_overlap; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					motherboard_mounting_x = motherboard_width - 2*5; | 
				
			||||
 | 
					motherboard_mounting_y = motherboard_height - 2*5; | 
				
			||||
 | 
					motherboard_mounting_d = 6; | 
				
			||||
 | 
					motherboard_mounting_h = 6; | 
				
			||||
 | 
					motherboard_mounting_drill_depth = 14; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					electronics_offset = 8; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// O-rings | 
				
			||||
 | 
					oring_channel_depth = 1.2; | 
				
			||||
 | 
					oring_channel_width = 2; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					oring_l_r_x = lid_l_r_width + 2*oring_channel_width + 6; | 
				
			||||
 | 
					oring_l_r_y = lid_l_r_height + 2*oring_channel_width + 6; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					oring_f_b_x = lid_f_b_width + 2*oring_channel_width + 6; | 
				
			||||
 | 
					oring_f_b_y = lid_f_b_height + 2*oring_channel_width + 6; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					oring_t_b_x = lid_t_b_width + 2*oring_channel_width + 6; | 
				
			||||
 | 
					oring_t_b_y = lid_t_b_height + 2*oring_channel_width + 6; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Mortise joint | 
				
			||||
 | 
					mortise_joint_height = 15; | 
				
			||||
 | 
					mortise_joint_dia = 7; | 
				
			||||
 | 
					mortise_joint_cone_height = 5; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Dimensions battery holder | 
				
			||||
 | 
					battery_holder_width = 53.5; | 
				
			||||
 | 
					battery_holder_depth = 50.5;  | 
				
			||||
 | 
					battery_holder_height = 13; | 
				
			||||
 | 
					battery_holder_hole_dis_x = 12.5; | 
				
			||||
 | 
					battery_holder_hole_dis_y = 36.5; | 
				
			||||
 | 
					battery_holder_pos_x = battery_holder_hole_dis_x/2; | 
				
			||||
 | 
					battery_holder_pos_y = -battery_holder_hole_dis_y/2; | 
				
			||||
@ -0,0 +1,79 @@ | 
				
			|||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Module for the front and back lid. | 
				
			||||
 | 
					// | 
				
			||||
 | 
					// Author: 		Maximilian Stiefel | 
				
			||||
 | 
					// Last modification: 	28.07.2017 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Includes | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Dimesnions | 
				
			||||
 | 
					include <dimensions.scad> | 
				
			||||
 | 
					use <dimensions.scad> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Module to make a nice round box | 
				
			||||
 | 
					include <roundy.scad> | 
				
			||||
 | 
					use <roundy.scad> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Module for screw holes | 
				
			||||
 | 
					include <screw_holes.scad> | 
				
			||||
 | 
					use <screw_holes.scad> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Module for screw holes | 
				
			||||
 | 
					include <screw_sinkings.scad> | 
				
			||||
 | 
					use <screw_sinkings.scad> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					module lid_f_b(logo, mounting) | 
				
			||||
 | 
					{ | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Vars | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Action | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					translate([0, 0, -lids_depth/2]) | 
				
			||||
 | 
					rotate([180, 0, 0]) | 
				
			||||
 | 
					difference() | 
				
			||||
 | 
					{ | 
				
			||||
 | 
						// Main body for the lid | 
				
			||||
 | 
						union() | 
				
			||||
 | 
						{ | 
				
			||||
 | 
							// Actual lid | 
				
			||||
 | 
							cube([lid_f_b_x - allowance05, lid_f_b_y - allowance05, lids_depth], center = true); | 
				
			||||
 | 
							translate([0, 0, housing_thickness/2 - 0.01]) | 
				
			||||
 | 
							cube([lid_f_b_width - allowance05, lid_f_b_height - allowance05, housing_thickness - lids_depth], center = true); | 
				
			||||
 | 
							// Mounting cylinders | 
				
			||||
 | 
							translate([0, -electronics_offset, (housing_thickness - lids_depth/2 + motherboard_mounting_h/2 - 0.01)]) | 
				
			||||
 | 
							screw_holes(motherboard_mounting_x, motherboard_mounting_y, motherboard_mounting_d, mounting*motherboard_mounting_h); | 
				
			||||
 | 
						} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						union() | 
				
			||||
 | 
						{ | 
				
			||||
 | 
							// Cut out cylindric holes for screws to mount the lid on the housing | 
				
			||||
 | 
							screw_holes(lid_f_b_holes_x, lid_f_b_holes_y, drill_dia_m3, 2*lids_depth); | 
				
			||||
 | 
							// Cut out sinking holes | 
				
			||||
 | 
							translate([0, 0, -lids_depth/2 + drill_sinking_height_m3/2 + 0.5]) | 
				
			||||
 | 
							screw_sinkings(lid_f_b_holes_x, lid_f_b_holes_y, drill_sinking_dia1_m3, drill_sinking_dia2_m3, drill_sinking_height_m3); | 
				
			||||
 | 
							// Cut out drill holes in mounting cylinders | 
				
			||||
 | 
							translate([0, -electronics_offset, (housing_thickness - lids_depth/2 + motherboard_mounting_h/2 - 0.01)]) | 
				
			||||
 | 
					                screw_holes(motherboard_mounting_x, motherboard_mounting_y, drill_thread_dia_m3, mounting*(motherboard_mounting_drill_depth) );  | 
				
			||||
 | 
							// Logo  | 
				
			||||
 | 
							// Can be turned off by setting logo to 0 | 
				
			||||
 | 
							translate([-30, 20, -lids_depth/2 - 0.01 + 3]) | 
				
			||||
 | 
							rotate([180, 0, 0]) | 
				
			||||
 | 
							linear_extrude(height = logo*3) | 
				
			||||
 | 
							scale(1.5) | 
				
			||||
 | 
							import("logo_taylored.dxf"); | 
				
			||||
 | 
							// Text | 
				
			||||
 | 
							translate([-40, 35, -lids_depth/2 - 0.01 + 3]) | 
				
			||||
 | 
							rotate([180, 0, 0]) | 
				
			||||
 | 
							linear_extrude(height = logo*3) | 
				
			||||
 | 
							text("UppSense", size = 12, font = "Liberation Sans:style=Bold"); | 
				
			||||
 | 
						} | 
				
			||||
 | 
					} | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,62 @@ | 
				
			|||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Module for the left and right lid. | 
				
			||||
 | 
					// | 
				
			||||
 | 
					// Author: 		Maximilian Stiefel | 
				
			||||
 | 
					// Last modification: 	28.07.2017 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Includes | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Dimesnions | 
				
			||||
 | 
					include <dimensions.scad> | 
				
			||||
 | 
					use <dimensions.scad> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Module to make a nice round box | 
				
			||||
 | 
					include <roundy.scad> | 
				
			||||
 | 
					use <roundy.scad> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Module for screw holes | 
				
			||||
 | 
					include <screw_holes.scad> | 
				
			||||
 | 
					use <screw_holes.scad> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Module for screw holes | 
				
			||||
 | 
					include <screw_sinkings.scad> | 
				
			||||
 | 
					use <screw_sinkings.scad> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					module lid_l_r() | 
				
			||||
 | 
					{ | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Vars | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Action | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					rotate([0, 90, 0]) | 
				
			||||
 | 
					translate([0, 0, -lids_depth/2]) | 
				
			||||
 | 
					rotate([180, 0, 0]) | 
				
			||||
 | 
					difference() | 
				
			||||
 | 
					{ | 
				
			||||
 | 
						// Main body for the lid | 
				
			||||
 | 
						union() | 
				
			||||
 | 
						{ | 
				
			||||
 | 
							roundy(lid_l_r_x - allowance05, lid_l_r_y - allowance05, lids_depth); | 
				
			||||
 | 
							translate([0, 0, housing_thickness/2 -0.01]) | 
				
			||||
 | 
							cube([lid_l_r_height - allowance05, lid_l_r_width - allowance05, housing_thickness - lids_depth], center = true); | 
				
			||||
 | 
							echo(housing_thickness=housing_thickness); | 
				
			||||
 | 
							echo(lids_depth=lids_depth); | 
				
			||||
 | 
						} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						union() | 
				
			||||
 | 
						{ | 
				
			||||
 | 
							// Cut out cylindric holes | 
				
			||||
 | 
							screw_holes(lid_l_r_holes_y, lid_l_r_holes_x, drill_dia_m3, 2*lids_depth); | 
				
			||||
 | 
							translate([0, 0, -lids_depth/2 + drill_sinking_height_m3/2 + 0.5]) | 
				
			||||
 | 
							screw_sinkings(lid_l_r_holes_y, lid_l_r_holes_x, drill_sinking_dia1_m3, drill_sinking_dia2_m3, drill_sinking_height_m3); | 
				
			||||
 | 
						} | 
				
			||||
 | 
					} | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,59 @@ | 
				
			|||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Module for the top and bottom lid. | 
				
			||||
 | 
					// | 
				
			||||
 | 
					// Author: 		Maximilian Stiefel | 
				
			||||
 | 
					// Last modification: 	28.07.2017 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Includes | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Dimesnions | 
				
			||||
 | 
					include <dimensions.scad> | 
				
			||||
 | 
					use <dimensions.scad> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Module to make a nice round box | 
				
			||||
 | 
					include <roundy.scad> | 
				
			||||
 | 
					use <roundy.scad> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Module for screw holes | 
				
			||||
 | 
					include <screw_holes.scad> | 
				
			||||
 | 
					use <screw_holes.scad> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Module for screw holes | 
				
			||||
 | 
					include <screw_sinkings.scad> | 
				
			||||
 | 
					use <screw_sinkings.scad> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					module lid_t_b() | 
				
			||||
 | 
					{ | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Vars | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Action | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					translate([0, 0, -lids_depth/2]) | 
				
			||||
 | 
					rotate([180, 0, 0]) | 
				
			||||
 | 
					difference() | 
				
			||||
 | 
					{ | 
				
			||||
 | 
						// Main body for the lid | 
				
			||||
 | 
						union() | 
				
			||||
 | 
						{ | 
				
			||||
 | 
							roundy(lid_t_b_x - allowance05, lid_t_b_y - allowance05, lids_depth); | 
				
			||||
 | 
							translate([0, 0, housing_thickness/2 - 0.01]) | 
				
			||||
 | 
							cube([lid_t_b_width - allowance05, lid_t_b_height - allowance05, housing_thickness - lids_depth], center = true); | 
				
			||||
 | 
						} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						union() | 
				
			||||
 | 
						{ | 
				
			||||
 | 
							// Cut out cylindric holes | 
				
			||||
 | 
							screw_holes(lid_t_b_holes_x, lid_t_b_holes_y, drill_dia_m3, 2*lids_depth); | 
				
			||||
 | 
							translate([0, 0, -lids_depth/2 + drill_sinking_height_m3/2 + 0.5]) | 
				
			||||
 | 
							screw_sinkings(lid_t_b_holes_x, lid_t_b_holes_y, drill_sinking_dia1_m3, drill_sinking_dia2_m3, drill_sinking_height_m3); | 
				
			||||
 | 
						} | 
				
			||||
 | 
					} | 
				
			||||
 | 
					} | 
				
			||||
| 
		 After Width: | Height: | Size: 211 KiB  | 
| 
		 After Width: | Height: | Size: 116 KiB  | 
@ -0,0 +1,78 @@ | 
				
			|||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Main file to assemble everything. | 
				
			||||
 | 
					// | 
				
			||||
 | 
					// Author:              Maximilian Stiefel | 
				
			||||
 | 
					// Last modification:   20.07.2017 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Includes | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Dimesnions | 
				
			||||
 | 
					include <dimensions.scad> | 
				
			||||
 | 
					use <dimensions.scad> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Module for raw box without any lids | 
				
			||||
 | 
					include <box.scad> | 
				
			||||
 | 
					use <box.scad> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Module for raw box without any lids | 
				
			||||
 | 
					include <lid_l_r.scad> | 
				
			||||
 | 
					use <lid_l_r.scad> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Module for raw box without any lids | 
				
			||||
 | 
					include <lid_f_b.scad> | 
				
			||||
 | 
					use <lid_f_b.scad> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Module for raw box without any lids | 
				
			||||
 | 
					include <lid_t_b.scad> | 
				
			||||
 | 
					use <lid_t_b.scad> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					//////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Vars | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// 0 = put lids, 1 = remove lids | 
				
			||||
 | 
					close = 0; | 
				
			||||
 | 
					// Set minimum angle of a fragment | 
				
			||||
 | 
					$fa = 0.5; | 
				
			||||
 | 
					// Set minimum size of a fragment | 
				
			||||
 | 
					$fs = 0.5; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					//////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Action | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					//difference() | 
				
			||||
 | 
					//{ | 
				
			||||
 | 
					union() | 
				
			||||
 | 
					{ | 
				
			||||
 | 
					color(myColor1) | 
				
			||||
 | 
					{ | 
				
			||||
 | 
					// Lid right | 
				
			||||
 | 
					translate([housing_outside_width/2 + close*20, 0, 0]) | 
				
			||||
 | 
					rotate([0, 0, 0]) | 
				
			||||
 | 
					lid_l_r(); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Lid left | 
				
			||||
 | 
					translate([-housing_outside_width/2 - close*20, 0, 0]) | 
				
			||||
 | 
					rotate([0, 180, 0]) | 
				
			||||
 | 
					lid_l_r(); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Lid front | 
				
			||||
 | 
					translate([0, -housing_outside_depth/2 - close*20, 0]) | 
				
			||||
 | 
					rotate([90, 0, 0]) | 
				
			||||
 | 
					lid_f_b(1,0); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Lid back | 
				
			||||
 | 
					translate([0, +housing_outside_depth/2 + close*20, 0]) | 
				
			||||
 | 
					rotate([-90, 180, 0]) | 
				
			||||
 | 
					!rotate([180, 0, 0]) | 
				
			||||
 | 
					lid_f_b(1,1); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					color(myColor1, 0.8) | 
				
			||||
 | 
					box(); | 
				
			||||
 | 
					} | 
				
			||||
 | 
					} | 
				
			||||
 | 
					//translate([-200, 0, 0]) | 
				
			||||
 | 
					//cube([400,400,400], center=true); | 
				
			||||
 | 
					//} | 
				
			||||
@ -0,0 +1,41 @@ | 
				
			|||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Module for a open box with rounded edges. | 
				
			||||
 | 
					// | 
				
			||||
 | 
					// Author: 		Maximilian Stiefel | 
				
			||||
 | 
					// Last modification: 	26.04.2017 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					module open_box(width, length, height, thickness) | 
				
			||||
 | 
					{ | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						///////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
						// Vars | 
				
			||||
 | 
						///////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
						edge_rounding = 8; | 
				
			||||
 | 
						compensation = 2*abs(edge_rounding-thickness); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						///////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
						// Action | 
				
			||||
 | 
						///////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
						translate([0, 0, 0]) difference(){		 | 
				
			||||
 | 
							// Hull 4 cylinders which are compensated against the thickness | 
				
			||||
 | 
							// so the actual desired thickness/2 and edge rounding is always achieved. | 
				
			||||
 | 
							hull(){ | 
				
			||||
 | 
								// x=0, y=0 | 
				
			||||
 | 
								translate([edge_rounding, edge_rounding, 0]) | 
				
			||||
 | 
									cylinder(r = edge_rounding, h = height + thickness); | 
				
			||||
 | 
								// x=width, y=0 | 
				
			||||
 | 
								translate([width + edge_rounding - compensation, edge_rounding, 0]) | 
				
			||||
 | 
									cylinder(r = edge_rounding, h = height + thickness); | 
				
			||||
 | 
								// x=0, y=length | 
				
			||||
 | 
								translate([edge_rounding, length + edge_rounding - compensation,0]) | 
				
			||||
 | 
									cylinder(r = edge_rounding, h = height + thickness); | 
				
			||||
 | 
								//x=width, y=length | 
				
			||||
 | 
								translate([width + edge_rounding - compensation, length + edge_rounding - compensation,0]) | 
				
			||||
 | 
									cylinder(r = edge_rounding, h = height + thickness); | 
				
			||||
 | 
							} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
							translate([thickness, thickness, thickness]) | 
				
			||||
 | 
								cube([width, length, height + 1]); | 
				
			||||
 | 
						} | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,31 @@ | 
				
			|||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Module for oring deepnings. | 
				
			||||
 | 
					// | 
				
			||||
 | 
					// Author: 		Maximilian Stiefel | 
				
			||||
 | 
					// Last modification: 	28.07.2017 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Includes | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Module to make a nice round box | 
				
			||||
 | 
					include <roundy.scad> | 
				
			||||
 | 
					use <roundy.scad> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					module oring(xdim, ydim, channel_width, channel_depth) | 
				
			||||
 | 
					{ | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Vars | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Action | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					difference() | 
				
			||||
 | 
					{ | 
				
			||||
 | 
						roundy(xdim, ydim, channel_depth + 0.1); | 
				
			||||
 | 
						roundy(xdim - 2*channel_width, ydim - 2*channel_width, channel_depth + 0.15); | 
				
			||||
 | 
					} | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,30 @@ | 
				
			|||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Module for a open box with rounded edges. | 
				
			||||
 | 
					// | 
				
			||||
 | 
					// Author: 		Maximilian Stiefel | 
				
			||||
 | 
					// Last modification: 	26.04.2017 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					module roundy(width, depth, height, center) | 
				
			||||
 | 
					{ | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Vars | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					edge_rounding = 5; | 
				
			||||
 | 
					transx = -width/2; | 
				
			||||
 | 
					transy = -depth/2; | 
				
			||||
 | 
					transz = -height/2; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Action | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Hull 4 cylinders | 
				
			||||
 | 
					// The thickness of the cylinders (edge_rounding) is compensated	 | 
				
			||||
 | 
					//translate([transx, transy, transz]) | 
				
			||||
 | 
					hull(){ | 
				
			||||
 | 
						for(x=[-1, +1]) | 
				
			||||
 | 
						for(y=[-1, +1]) | 
				
			||||
 | 
							translate([x*width/2 + -x*edge_rounding, y*depth/2 + -y*edge_rounding, 0]) | 
				
			||||
 | 
							cylinder(r = edge_rounding, h = height, center =true); | 
				
			||||
 | 
					} | 
				
			||||
 | 
					} | 
				
			||||
| 
		 After Width: | Height: | Size: 43 KiB  | 
| 
		 After Width: | Height: | Size: 22 KiB  | 
| 
		 After Width: | Height: | Size: 34 KiB  | 
| 
		 After Width: | Height: | Size: 14 KiB  | 
| 
		 After Width: | Height: | Size: 18 KiB  | 
| 
		 After Width: | Height: | Size: 43 KiB  | 
@ -0,0 +1,24 @@ | 
				
			|||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Module for four holes along a rectangle for screw threads. | 
				
			||||
 | 
					// | 
				
			||||
 | 
					// Author: 		Maximilian Stiefel | 
				
			||||
 | 
					// Last modification: 	09.07.2017 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					module screw_holes(xdim, ydim, dia, depth) | 
				
			||||
 | 
					{ | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Vars | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Action | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					union(){ | 
				
			||||
 | 
						for(x=[-1, +1]) | 
				
			||||
 | 
						for(y=[-1, +1]) | 
				
			||||
 | 
							translate([x*xdim/2, y*ydim/2, 0]) | 
				
			||||
 | 
							cylinder(r = dia/2, h = depth, center =true); | 
				
			||||
 | 
					} | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,30 @@ | 
				
			|||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Module for four sinking holes, that cone-shaped screw heads can sink in. | 
				
			||||
 | 
					// | 
				
			||||
 | 
					// Author: 		Maximilian Stiefel | 
				
			||||
 | 
					// Last modification: 	09.07.2017 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					module screw_sinkings(xdim, ydim, dia1, dia2, depth) | 
				
			||||
 | 
					{ | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Vars | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Action | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					union(){ | 
				
			||||
 | 
						for(x=[-1, +1]) | 
				
			||||
 | 
						for(y=[-1, +1]) | 
				
			||||
 | 
							translate([x*xdim/2, y*ydim/2, 0]) | 
				
			||||
 | 
							union() | 
				
			||||
 | 
							{ | 
				
			||||
 | 
								translate([0, 0, -depth + 0.1]) | 
				
			||||
 | 
								cylinder(r = dia1/2, h = depth, center = true); | 
				
			||||
 | 
								cylinder(r1 = dia1/2, r2 = dia2/2, h = depth, center = true); | 
				
			||||
 | 
							} | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,58 @@ | 
				
			|||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// File for all dimensions, so they can be changed globally. | 
				
			||||
 | 
					// | 
				
			||||
 | 
					// Author:              Maximilian Stiefel | 
				
			||||
 | 
					// Last modification:   29.07.2017 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					allowance03 = 0.3; | 
				
			||||
 | 
					allowance05 = 0.5; | 
				
			||||
 | 
					allowance1 = 1; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Glass dimensions | 
				
			||||
 | 
					glass_slide_height = 1; | 
				
			||||
 | 
					glass_slide_depth = 26 + allowance05; | 
				
			||||
 | 
					glass_slide_width = 76; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Holder dimensions | 
				
			||||
 | 
					window_size = 20; | 
				
			||||
 | 
					holder_height = 3 + glass_slide_height + allowance05; | 
				
			||||
 | 
					holder_depth = glass_slide_depth + allowance05 + 4; | 
				
			||||
 | 
					holder_width = 80; // Width of the PCB | 
				
			||||
 | 
					echo(holder_height=holder_height); | 
				
			||||
 | 
					holder_bottom_side_thickness = 2; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// LED illuminator dimensions | 
				
			||||
 | 
					led_illuminator_thickness = 2;  | 
				
			||||
 | 
					led_illuminator_dia = 12.5 - led_illuminator_thickness; | 
				
			||||
 | 
					led_illuminator_height = 15; | 
				
			||||
 | 
					led_illuminator_leg1_pos_y = -6.25; | 
				
			||||
 | 
					led_illuminator_leg2_pos_y = 4; | 
				
			||||
 | 
					led_illuminator_leg2_pos_x = -4.75; | 
				
			||||
 | 
					led_illuminator_leg_dia = 2.2 - allowance05;  | 
				
			||||
 | 
					led_illuminator_leg_height = 4; | 
				
			||||
 | 
					led_pos_x = 18; | 
				
			||||
 | 
					led_pos_y = 13; | 
				
			||||
 | 
					led_illuminator_slot = 4; | 
				
			||||
 | 
					led_illuminator_angle = 35; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Screw dimensions | 
				
			||||
 | 
					drill_dia_m3 = 3.2; | 
				
			||||
 | 
					drill_depth = 7; | 
				
			||||
 | 
					drill_sinking_dia1_m3 = 5.5; | 
				
			||||
 | 
					drill_sinking_dia2_m3 = 3; | 
				
			||||
 | 
					drill_sinking_height_m3 = 2; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Leg dimensions | 
				
			||||
 | 
					leg_width = 4; | 
				
			||||
 | 
					leg_depth = 11; | 
				
			||||
 | 
					leg_height = led_illuminator_height; | 
				
			||||
 | 
					leg_inner_dia = 2.5; | 
				
			||||
 | 
					leg_pos_y = 13; | 
				
			||||
 | 
					leg_pos_x = 2.5; | 
				
			||||
 | 
					leg_distance = 6.5; | 
				
			||||
 | 
					leg_diff1 = leg_depth - leg_distance; | 
				
			||||
 | 
					//leg_drill_depth = 7; | 
				
			||||
 | 
					leg_drill_depth = leg_height + 1; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					myColor1 = "Grey"; | 
				
			||||
@ -0,0 +1,51 @@ | 
				
			|||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Glass slide holder to be mounted on the PCB.  | 
				
			||||
 | 
					// | 
				
			||||
 | 
					// Author:              Maximilian Stiefel | 
				
			||||
 | 
					// Last modification:   29.06.2017 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Includes | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Dimesnions | 
				
			||||
 | 
					include <dimensions.scad> | 
				
			||||
 | 
					use <dimensions.scad> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Dimesnions | 
				
			||||
 | 
					include <screw_sinkings.scad> | 
				
			||||
 | 
					use <screw_sinkings.scad> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Vars | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Action | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					module glass_holder() | 
				
			||||
 | 
					{ | 
				
			||||
 | 
						//translate([0, 0, holder_height/2 + leg_height -0.01]) | 
				
			||||
 | 
						difference() | 
				
			||||
 | 
						{ | 
				
			||||
 | 
							// Main body | 
				
			||||
 | 
							cube([holder_width, holder_depth, holder_height], center = true); | 
				
			||||
 | 
							union() | 
				
			||||
 | 
							{ | 
				
			||||
 | 
								// Cut glass slide out and make an entrance | 
				
			||||
 | 
								translate([-2.5, 0, holder_bottom_side_thickness]) | 
				
			||||
 | 
								cube([glass_slide_width + allowance05 + 5, glass_slide_depth + allowance05, holder_height], center = true); | 
				
			||||
 | 
								// Cut out a cylinder for the LED | 
				
			||||
 | 
								translate([glass_slide_width/2 - led_pos_x, 0, 0]) | 
				
			||||
 | 
								cylinder(r = led_illuminator_dia/2, h = 20, center = true); | 
				
			||||
 | 
								// Cut out a "window" where the receiver photodiode is sitting | 
				
			||||
 | 
								translate([glass_slide_width/2 - led_pos_x, glass_slide_depth/2, 2]) | 
				
			||||
 | 
								cube([window_size, 10, 10], center = true);	 | 
				
			||||
 | 
								// Cut out holes for screws | 
				
			||||
 | 
								translate([0, 0, -holder_bottom_side_thickness + 0.5]) | 
				
			||||
 | 
								rotate([180, 0, 0]) | 
				
			||||
 | 
								screw_sinkings(glass_slide_width - 2*leg_pos_x, 0, drill_sinking_dia1_m3, drill_sinking_dia2_m3, drill_sinking_height_m3); | 
				
			||||
 | 
							} | 
				
			||||
 | 
						} | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,47 @@ | 
				
			|||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Illuminator for LED to keep the UV light away from the photodiode.  | 
				
			||||
 | 
					// | 
				
			||||
 | 
					// Author:              Maximilian Stiefel | 
				
			||||
 | 
					// Last modification:   29.06.2017 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Includes | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Dimesnions | 
				
			||||
 | 
					include <dimensions.scad> | 
				
			||||
 | 
					use <dimensions.scad> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Vars | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Action | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					module illuminator() | 
				
			||||
 | 
					{ | 
				
			||||
 | 
						difference() | 
				
			||||
 | 
						{ | 
				
			||||
 | 
							union() | 
				
			||||
 | 
							{ | 
				
			||||
 | 
								cylinder(r = led_illuminator_dia/2 + led_illuminator_thickness, h = led_illuminator_height + allowance03, center = true); | 
				
			||||
 | 
								// The two legs	 | 
				
			||||
 | 
								translate([0, led_illuminator_leg1_pos_y, - (led_illuminator_height + led_illuminator_leg_height)/2 - 0.01 ]) | 
				
			||||
 | 
								cylinder(r = (led_illuminator_leg_dia)/2, h = led_illuminator_leg_height, center = true); | 
				
			||||
 | 
								translate([led_illuminator_leg2_pos_x, led_illuminator_leg2_pos_y, - (led_illuminator_height + led_illuminator_leg_height)/2 - 0.01 ]) | 
				
			||||
 | 
								cylinder(r = (led_illuminator_leg_dia)/2, h = led_illuminator_leg_height, center = true); | 
				
			||||
 | 
							} | 
				
			||||
 | 
							union() | 
				
			||||
 | 
							{ | 
				
			||||
 | 
								// Cut out inner cylinder | 
				
			||||
 | 
								cylinder(r = led_illuminator_dia/2, led_illuminator_height + +allowance03 + 0.01, center = true);	 | 
				
			||||
 | 
								// Cut out slot | 
				
			||||
 | 
								rotate([0, 0, led_illuminator_angle + 180]) | 
				
			||||
 | 
								translate([led_illuminator_dia/2, 0, -led_illuminator_height/2 - 0.01]) | 
				
			||||
 | 
								cube([led_illuminator_dia/2, led_illuminator_slot, led_illuminator_height], center = true); | 
				
			||||
 | 
							} | 
				
			||||
 | 
						} | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
@ -0,0 +1,43 @@ | 
				
			|||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Legs for the glass slide holder.  | 
				
			||||
 | 
					// | 
				
			||||
 | 
					// Author:              Maximilian Stiefel | 
				
			||||
 | 
					// Last modification:   29.06.2017 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Includes | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Dimesnions | 
				
			||||
 | 
					include <dimensions.scad> | 
				
			||||
 | 
					use <dimensions.scad> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Vars | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Action | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					module legs() | 
				
			||||
 | 
					{ | 
				
			||||
 | 
						difference() | 
				
			||||
 | 
						{ | 
				
			||||
 | 
						union() | 
				
			||||
 | 
						{ | 
				
			||||
 | 
							// Leg | 
				
			||||
 | 
							translate([0, - leg_depth/2 + leg_diff1/2, leg_height/2]) | 
				
			||||
 | 
							cube([leg_width, leg_depth, leg_height], center = true); | 
				
			||||
 | 
						} | 
				
			||||
 | 
						union() | 
				
			||||
 | 
						{ | 
				
			||||
 | 
							// Drill holes | 
				
			||||
 | 
							for(y = [0, 1]) | 
				
			||||
 | 
							translate([0, -y*leg_distance, -0.01]) | 
				
			||||
 | 
							cylinder(r = leg_inner_dia/2, h = leg_drill_depth); | 
				
			||||
 | 
							 | 
				
			||||
 | 
						} | 
				
			||||
 | 
					} | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
@ -0,0 +1,56 @@ | 
				
			|||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Main file to bring everything together.  | 
				
			||||
 | 
					// | 
				
			||||
 | 
					// Author:              Maximilian Stiefel | 
				
			||||
 | 
					// Last modification:   29.06.2017 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Includes | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Dimesnions | 
				
			||||
 | 
					include <dimensions.scad> | 
				
			||||
 | 
					use <dimensions.scad> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Module for the glass holder | 
				
			||||
 | 
					include <glass_holder.scad> | 
				
			||||
 | 
					use <glass_holder.scad> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Module for the legs  | 
				
			||||
 | 
					include <legs.scad> | 
				
			||||
 | 
					use <legs.scad> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// Module for the legs  | 
				
			||||
 | 
					include <led_illuminator.scad> | 
				
			||||
 | 
					use <led_illuminator.scad> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Vars | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					$fa = 0.5; // minimum facet angle is now 0.5 | 
				
			||||
 | 
					$fs = 0.5; // minimum facet size is now 0.5 mm | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Action | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					color(myColor1) | 
				
			||||
 | 
					{ | 
				
			||||
 | 
						// Glass holder | 
				
			||||
 | 
						translate([0, 0, holder_height/2 + leg_height -0.01]) | 
				
			||||
 | 
						!translate([0, 0, holder_height/2])	 | 
				
			||||
 | 
						glass_holder(); | 
				
			||||
 | 
						 | 
				
			||||
 | 
						// Legs | 
				
			||||
 | 
						translate([glass_slide_width/2 - leg_pos_x, 0, 0]) | 
				
			||||
 | 
						legs(); | 
				
			||||
 | 
						 | 
				
			||||
 | 
						translate([-glass_slide_width/2 + leg_pos_x, 0, 0]) | 
				
			||||
 | 
						rotate([0, 0, 180]) | 
				
			||||
 | 
						legs(); | 
				
			||||
 | 
						 | 
				
			||||
 | 
						translate([glass_slide_width/2 - led_pos_x, 0, led_illuminator_height/2 + 0.01])	 | 
				
			||||
 | 
						//translate([0, 0, (led_illuminator_height + allowance03)/2]) | 
				
			||||
 | 
						//rotate([0, 180 ,0]) | 
				
			||||
 | 
						illuminator(); | 
				
			||||
 | 
					} | 
				
			||||
| 
		 After Width: | Height: | Size: 30 KiB  | 
| 
		 After Width: | Height: | Size: 12 KiB  | 
@ -0,0 +1,24 @@ | 
				
			|||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Module for four holes along a rectangle for screw threads. | 
				
			||||
 | 
					// | 
				
			||||
 | 
					// Author: 		Maximilian Stiefel | 
				
			||||
 | 
					// Last modification: 	09.07.2017 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					module screw_holes(xdim, ydim, dia, depth) | 
				
			||||
 | 
					{ | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Vars | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Action | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					union(){ | 
				
			||||
 | 
						for(x=[-1, +1]) | 
				
			||||
 | 
						for(y=[-1, +1]) | 
				
			||||
 | 
							translate([x*xdim/2, y*ydim/2, 0]) | 
				
			||||
 | 
							cylinder(r = dia/2, h = depth, center =true); | 
				
			||||
 | 
					} | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,30 @@ | 
				
			|||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Module for four sinking holes, that cone-shaped screw heads can sink in. | 
				
			||||
 | 
					// | 
				
			||||
 | 
					// Author: 		Maximilian Stiefel | 
				
			||||
 | 
					// Last modification: 	09.07.2017 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					module screw_sinkings(xdim, ydim, dia1, dia2, depth) | 
				
			||||
 | 
					{ | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Vars | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Action | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					union(){ | 
				
			||||
 | 
						for(x=[-1, +1]) | 
				
			||||
 | 
						for(y=[-1, +1]) | 
				
			||||
 | 
							translate([x*xdim/2, y*ydim/2, 0]) | 
				
			||||
 | 
							union() | 
				
			||||
 | 
							{ | 
				
			||||
 | 
								translate([0, 0, -depth + 0.1]) | 
				
			||||
 | 
								cylinder(r = dia1/2, h = depth, center = true); | 
				
			||||
 | 
								cylinder(r1 = dia1/2, r2 = dia2/2, h = depth, center = true); | 
				
			||||
 | 
							} | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,10 @@ | 
				
			|||||
 | 
					   Section|                   Description| Start (hex)|   End (hex)|Used space | 
				
			||||
 | 
					------------------------------------------------------------------------------ | 
				
			||||
 | 
					      data|        Initialized Data (RAM)|    3FFE8000|    3FFE8389|     905 | 
				
			||||
 | 
					    rodata|           ReadOnly Data (RAM)|    3FFE8390|    3FFE8D6C|    2524 | 
				
			||||
 | 
					       bss|      Uninitialized Data (RAM)|    3FFE8D70|    3FFEF160|   25584 | 
				
			||||
 | 
					      text|            Cached Code (IRAM)|    40100000|    401063A8|   25512 | 
				
			||||
 | 
					irom0_text|           Uncached Code (SPI)|    4020A000|    4023964C|  194124 | 
				
			||||
 | 
					Total Used RAM : 29013 | 
				
			||||
 | 
					Free RAM : 52907 | 
				
			||||
 | 
					Free IRam : 7274 | 
				
			||||
@ -0,0 +1,10 @@ | 
				
			|||||
 | 
					   Section|                   Description| Start (hex)|   End (hex)|Used space | 
				
			||||
 | 
					------------------------------------------------------------------------------ | 
				
			||||
 | 
					      data|        Initialized Data (RAM)|    3FFE8000|    3FFE8389|     905 | 
				
			||||
 | 
					    rodata|           ReadOnly Data (RAM)|    3FFE8390|    3FFE8D50|    2496 | 
				
			||||
 | 
					       bss|      Uninitialized Data (RAM)|    3FFE8D50|    3FFEF108|   25528 | 
				
			||||
 | 
					      text|            Cached Code (IRAM)|    40100000|    401063A8|   25512 | 
				
			||||
 | 
					irom0_text|           Uncached Code (SPI)|    4020A000|    40239584|  193924 | 
				
			||||
 | 
					Total Used RAM : 28929 | 
				
			||||
 | 
					Free RAM : 52991 | 
				
			||||
 | 
					Free IRam : 7274 | 
				
			||||