{
  "stls": [
    {
      "stl": "6ledcam_mount_top.stl",
      "input": "6ledcam_mount_top.stl",
      "parameters": {
        "camera": "6ledcam",
        "optics": "6ledcam_lens",
        "riser": "no riser"
      }
    },
    {
      "stl": "actuator_assembly_tools.stl",
      "input": "actuator_assembly_tools.scad",
      "parameters": {}
    },
    {
      "stl": "actuator_drilling_jig.stl",
      "input": "actuator_drilling_jig.scad",
      "parameters": {
        "include_actuator_drilling_jig": true
      }
    },
    {
      "stl": "actuator_tension_band.stl",
      "input": "actuator_tension_band.scad",
      "parameters": {
        "include_actuator_tension_band": true
      }
    },
    {
      "stl": "back_foot.stl",
      "input": "back_foot.scad",
      "parameters": {
        "base": "feet",
        "optics": [
          "6ledcam_lens",
          "c270_lens",
          "dashcam_lens",
          "m12_lens",
          "pilens"
        ]
      }
    },
    {
      "stl": "back_foot_tall.stl",
      "input": "back_foot.scad",
      "parameters": {
        "base": "feet",
        "optics": [
          "rms_f40d16",
          "rms_f50d13",
          "rms_infinity_f50d13"
        ]
      }
    },
    {
      "stl": "camera_platform_6ledcam_LS65.stl",
      "input": "camera_platform.scad",
      "parameters": {
        "big_stage": true,
        "sample_z": 65,
        "camera": "6ledcam",
        "riser": "no riser",
        "optics": "6ledcam_lens"
      }
    },
    {
      "stl": "camera_platform_dashcam_LS65.stl",
      "input": "camera_platform.scad",
      "parameters": {
        "big_stage": true,
        "sample_z": 65,
        "camera": "dashcam",
        "riser": "no riser",
        "optics": "dashcam_lens"
      }
    },
    {
      "stl": "camera_platform_picamera_2_LS65.stl",
      "input": "camera_platform.scad",
      "parameters": {
        "big_stage": true,
        "sample_z": 65,
        "camera": "picamera_2",
        "riser": "no riser",
        "optics": "pilens"
      }
    },
    {
      "stl": "condenser.stl",
      "input": "condenser.scad",
      "parameters": {}
    },
    {
      "stl": "dashcam_and_6ledcam_mount_bottom.stl",
      "input": "dashcam_and_6ledcam_mount_bottom.stl",
      "parameters": {
        "camera": "dashcam",
        "optics": "dashcam_lens",
        "riser": "no riser"
      }
    },
    {
      "stl": "dashcam_and_6ledcam_mount_bottom.stl",
      "input": "dashcam_and_6ledcam_mount_bottom.stl",
      "parameters": {
        "camera": "6ledcam",
        "optics": "6ledcam_lens",
        "riser": "no riser"
      }
    },
    {
      "stl": "dashcam_mount_top.stl",
      "input": "dashcam_mount_top.stl",
      "parameters": {
        "camera": "dashcam",
        "optics": "dashcam_lens",
        "riser": "no riser"
      }
    },
    {
      "stl": "feet.stl",
      "input": "feet.scad",
      "parameters": {
        "base": "bucket",
        "optics": [
          "6ledcam_lens",
          "c270_lens",
          "dashcam_lens",
          "m12_lens",
          "pilens",
          "rms_f40d16",
          "rms_f50d13",
          "rms_infinity_f50d13"
        ]
      }
    },
    {
      "stl": "feet.stl",
      "input": "feet.scad",
      "parameters": {
        "base": "feet",
        "optics": [
          "6ledcam_lens",
          "c270_lens",
          "dashcam_lens",
          "m12_lens",
          "pilens"
        ]
      }
    },
    {
      "stl": "feet_tall.stl",
      "input": "feet.scad",
      "parameters": {
        "base": "feet",
        "optics": [
          "rms_f40d16",
          "rms_f50d13",
          "rms_infinity_f50d13"
        ]
      }
    },
    {
      "stl": "fl_cube.stl",
      "input": "fl_cube.scad",
      "parameters": {
        "reflection_illumination": true
      }
    },
    {
      "stl": "gears.stl",
      "input": "gears.scad",
      "parameters": {
        "motorised": true
      }
    },
    {
      "stl": "gears.stl",
      "input": "gears.scad",
      "parameters": {
        "motorised": false,
        "use_motor_gears_for_hand_actuation": true
      }
    },
    {
      "stl": "illumination_dovetail.stl",
      "input": "illumination_dovetail.scad",
      "parameters": {}
    },
    {
      "stl": "just_leg_test.stl",
      "input": "just_leg_test.scad",
      "parameters": {}
    },
    {
      "stl": "lens_spacer_picamera_2_pilens_LS65.stl",
      "input": "lens_spacer.scad",
      "parameters": {
        "big_stage": true,
        "sample_z": 65,
        "optics": "pilens",
        "camera": "picamera_2",
        "reflection_illumination": false,
        "use_pilens_optics_module": false,
        "riser": "no riser"
      }
    },
    {
      "stl": "lens_tool.stl",
      "input": "lens_tool.scad",
      "parameters": {}
    },
    {
      "stl": "main_body_LS65-M-BS.stl",
      "input": "main_body.scad",
      "parameters": {
        "big_stage": true,
        "sample_z": 65,
        "motor_lugs": true,
        "enable_smart_brim": false,
        "reflection_illumination": true
      }
    },
    {
      "stl": "main_body_LS65-M-BS_brim.stl",
      "input": "main_body.scad",
      "parameters": {
        "big_stage": true,
        "sample_z": 65,
        "motor_lugs": true,
        "enable_smart_brim": true,
        "reflection_illumination": true
      }
    },
    {
      "stl": "main_body_LS65-M.stl",
      "input": "main_body.scad",
      "parameters": {
        "big_stage": true,
        "sample_z": 65,
        "motor_lugs": true,
        "enable_smart_brim": false,
        "reflection_illumination": false
      }
    },
    {
      "stl": "main_body_LS65-M_brim.stl",
      "input": "main_body.scad",
      "parameters": {
        "big_stage": true,
        "sample_z": 65,
        "motor_lugs": true,
        "enable_smart_brim": true,
        "reflection_illumination": false
      }
    },
    {
      "stl": "microscope_stand_30-BS.stl",
      "input": "microscope_stand.scad",
      "parameters": {
        "pi_in_base": true,
        "base": "bucket",
        "reflection_illumination": true,
        "optics": "c270_lens",
        "microscope_stand:box_h": 30
      }
    },
    {
      "stl": "microscope_stand_30-BS.stl",
      "input": "microscope_stand.scad",
      "parameters": {
        "pi_in_base": true,
        "base": "bucket",
        "reflection_illumination": true,
        "optics": "rms_f40d16",
        "microscope_stand:box_h": 30
      }
    },
    {
      "stl": "microscope_stand_30-BS.stl",
      "input": "microscope_stand.scad",
      "parameters": {
        "pi_in_base": true,
        "base": "bucket",
        "reflection_illumination": true,
        "optics": "rms_f50d13",
        "microscope_stand:box_h": 30
      }
    },
    {
      "stl": "microscope_stand_30-BS.stl",
      "input": "microscope_stand.scad",
      "parameters": {
        "pi_in_base": true,
        "base": "bucket",
        "reflection_illumination": true,
        "optics": "pilens",
        "microscope_stand:box_h": 30
      }
    },
    {
      "stl": "microscope_stand_30-BS.stl",
      "input": "microscope_stand.scad",
      "parameters": {
        "pi_in_base": true,
        "base": "bucket",
        "reflection_illumination": true,
        "optics": "dashcam_lens",
        "microscope_stand:box_h": 30
      }
    },
    {
      "stl": "microscope_stand_30-BS.stl",
      "input": "microscope_stand.scad",
      "parameters": {
        "pi_in_base": true,
        "base": "bucket",
        "reflection_illumination": true,
        "optics": "6ledcam_lens",
        "microscope_stand:box_h": 30
      }
    },
    {
      "stl": "microscope_stand_30-BS.stl",
      "input": "microscope_stand.scad",
      "parameters": {
        "pi_in_base": true,
        "base": "bucket",
        "reflection_illumination": true,
        "optics": "m12_lens",
        "microscope_stand:box_h": 30
      }
    },
    {
      "stl": "microscope_stand_30.stl",
      "input": "microscope_stand.scad",
      "parameters": {
        "pi_in_base": true,
        "base": "bucket",
        "reflection_illumination": false,
        "optics": "c270_lens",
        "microscope_stand:box_h": 30
      }
    },
    {
      "stl": "microscope_stand_30.stl",
      "input": "microscope_stand.scad",
      "parameters": {
        "pi_in_base": true,
        "base": "bucket",
        "reflection_illumination": false,
        "optics": "rms_f40d16",
        "microscope_stand:box_h": 30
      }
    },
    {
      "stl": "microscope_stand_30.stl",
      "input": "microscope_stand.scad",
      "parameters": {
        "pi_in_base": true,
        "base": "bucket",
        "reflection_illumination": false,
        "optics": "rms_f50d13",
        "microscope_stand:box_h": 30
      }
    },
    {
      "stl": "microscope_stand_30.stl",
      "input": "microscope_stand.scad",
      "parameters": {
        "pi_in_base": true,
        "base": "bucket",
        "reflection_illumination": false,
        "optics": "pilens",
        "microscope_stand:box_h": 30
      }
    },
    {
      "stl": "microscope_stand_30.stl",
      "input": "microscope_stand.scad",
      "parameters": {
        "pi_in_base": true,
        "base": "bucket",
        "reflection_illumination": false,
        "optics": "dashcam_lens",
        "microscope_stand:box_h": 30
      }
    },
    {
      "stl": "microscope_stand_30.stl",
      "input": "microscope_stand.scad",
      "parameters": {
        "pi_in_base": true,
        "base": "bucket",
        "reflection_illumination": false,
        "optics": "6ledcam_lens",
        "microscope_stand:box_h": 30
      }
    },
    {
      "stl": "microscope_stand_30.stl",
      "input": "microscope_stand.scad",
      "parameters": {
        "pi_in_base": true,
        "base": "bucket",
        "reflection_illumination": false,
        "optics": "m12_lens",
        "microscope_stand:box_h": 30
      }
    },
    {
      "stl": "microscope_stand_45-BS.stl",
      "input": "microscope_stand.scad",
      "parameters": {
        "pi_in_base": true,
        "base": "bucket",
        "reflection_illumination": true,
        "optics": "rms_infinity_f50d13",
        "microscope_stand:box_h": 45
      }
    },
    {
      "stl": "microscope_stand_45.stl",
      "input": "microscope_stand.scad",
      "parameters": {
        "pi_in_base": true,
        "base": "bucket",
        "reflection_illumination": false,
        "optics": "rms_infinity_f50d13",
        "microscope_stand:box_h": 45
      }
    },
    {
      "stl": "microscope_stand_no_pi.stl",
      "input": "microscope_stand_no_pi.scad",
      "parameters": {
        "pi_in_base": false,
        "base": "bucket"
      }
    },
    {
      "stl": "motor_driver_case.stl",
      "input": "motor_driver_case.scad",
      "parameters": {
        "motorised": true,
        "base": "bucket"
      }
    },
    {
      "stl": "optics_logitech_c270_c270_lens.stl",
      "input": "optics.scad",
      "parameters": {
        "sample_z": 65,
        "optics": "c270_lens",
        "camera": "logitech_c270",
        "reflection_illumination": false,
        "riser": "no riser",
        "microscope_stand:box_h": 30
      }
    },
    {
      "stl": "optics_logitech_c270_rms_f40d16.stl",
      "input": "optics.scad",
      "parameters": {
        "sample_z": 65,
        "optics": "rms_f40d16",
        "camera": "logitech_c270",
        "reflection_illumination": false,
        "microscope_stand:box_h": 30
      }
    },
    {
      "stl": "optics_logitech_c270_rms_f40d16_beamsplitter.stl",
      "input": "optics.scad",
      "parameters": {
        "sample_z": 65,
        "optics": "rms_f40d16",
        "camera": "logitech_c270",
        "reflection_illumination": true,
        "microscope_stand:box_h": 30
      }
    },
    {
      "stl": "optics_logitech_c270_rms_f50d13.stl",
      "input": "optics.scad",
      "parameters": {
        "sample_z": 65,
        "optics": "rms_f50d13",
        "camera": "logitech_c270",
        "reflection_illumination": false,
        "microscope_stand:box_h": 30
      }
    },
    {
      "stl": "optics_logitech_c270_rms_f50d13_beamsplitter.stl",
      "input": "optics.scad",
      "parameters": {
        "sample_z": 65,
        "optics": "rms_f50d13",
        "camera": "logitech_c270",
        "reflection_illumination": true,
        "microscope_stand:box_h": 30
      }
    },
    {
      "stl": "optics_logitech_c270_rms_infinity_f50d13.stl",
      "input": "optics.scad",
      "parameters": {
        "sample_z": 65,
        "optics": "rms_infinity_f50d13",
        "camera": "logitech_c270",
        "reflection_illumination": false,
        "microscope_stand:box_h": 45
      }
    },
    {
      "stl": "optics_logitech_c270_rms_infinity_f50d13_beamsplitter.stl",
      "input": "optics.scad",
      "parameters": {
        "sample_z": 65,
        "optics": "rms_infinity_f50d13",
        "camera": "logitech_c270",
        "reflection_illumination": true,
        "microscope_stand:box_h": 45
      }
    },
    {
      "stl": "optics_m12_m12_lens.stl",
      "input": "optics.scad",
      "parameters": {
        "sample_z": 65,
        "optics": "m12_lens",
        "camera": "m12",
        "reflection_illumination": false,
        "riser": "no riser",
        "microscope_stand:box_h": 30
      }
    },
    {
      "stl": "optics_m12_rms_f40d16.stl",
      "input": "optics.scad",
      "parameters": {
        "sample_z": 65,
        "optics": "rms_f40d16",
        "camera": "m12",
        "reflection_illumination": false,
        "microscope_stand:box_h": 30
      }
    },
    {
      "stl": "optics_m12_rms_f40d16_beamsplitter.stl",
      "input": "optics.scad",
      "parameters": {
        "sample_z": 65,
        "optics": "rms_f40d16",
        "camera": "m12",
        "reflection_illumination": true,
        "microscope_stand:box_h": 30
      }
    },
    {
      "stl": "optics_m12_rms_f50d13.stl",
      "input": "optics.scad",
      "parameters": {
        "sample_z": 65,
        "optics": "rms_f50d13",
        "camera": "m12",
        "reflection_illumination": false,
        "microscope_stand:box_h": 30
      }
    },
    {
      "stl": "optics_m12_rms_f50d13_beamsplitter.stl",
      "input": "optics.scad",
      "parameters": {
        "sample_z": 65,
        "optics": "rms_f50d13",
        "camera": "m12",
        "reflection_illumination": true,
        "microscope_stand:box_h": 30
      }
    },
    {
      "stl": "optics_m12_rms_infinity_f50d13.stl",
      "input": "optics.scad",
      "parameters": {
        "sample_z": 65,
        "optics": "rms_infinity_f50d13",
        "camera": "m12",
        "reflection_illumination": false,
        "microscope_stand:box_h": 45
      }
    },
    {
      "stl": "optics_m12_rms_infinity_f50d13_beamsplitter.stl",
      "input": "optics.scad",
      "parameters": {
        "sample_z": 65,
        "optics": "rms_infinity_f50d13",
        "camera": "m12",
        "reflection_illumination": true,
        "microscope_stand:box_h": 45
      }
    },
    {
      "stl": "optics_picamera_2_pilens.stl",
      "input": "optics.scad",
      "parameters": {
        "sample_z": 65,
        "optics": "pilens",
        "camera": "picamera_2",
        "reflection_illumination": false,
        "use_pilens_optics_module": true,
        "riser": "no riser",
        "microscope_stand:box_h": 30
      }
    },
    {
      "stl": "optics_picamera_2_rms_f40d16.stl",
      "input": "optics.scad",
      "parameters": {
        "sample_z": 65,
        "optics": "rms_f40d16",
        "camera": "picamera_2",
        "reflection_illumination": false,
        "microscope_stand:box_h": 30
      }
    },
    {
      "stl": "optics_picamera_2_rms_f40d16_beamsplitter.stl",
      "input": "optics.scad",
      "parameters": {
        "sample_z": 65,
        "optics": "rms_f40d16",
        "camera": "picamera_2",
        "reflection_illumination": true,
        "microscope_stand:box_h": 30
      }
    },
    {
      "stl": "optics_picamera_2_rms_f50d13.stl",
      "input": "optics.scad",
      "parameters": {
        "sample_z": 65,
        "optics": "rms_f50d13",
        "camera": "picamera_2",
        "reflection_illumination": false,
        "microscope_stand:box_h": 30
      }
    },
    {
      "stl": "optics_picamera_2_rms_f50d13_beamsplitter.stl",
      "input": "optics.scad",
      "parameters": {
        "sample_z": 65,
        "optics": "rms_f50d13",
        "camera": "picamera_2",
        "reflection_illumination": true,
        "microscope_stand:box_h": 30
      }
    },
    {
      "stl": "optics_picamera_2_rms_infinity_f50d13.stl",
      "input": "optics.scad",
      "parameters": {
        "sample_z": 65,
        "optics": "rms_infinity_f50d13",
        "camera": "picamera_2",
        "reflection_illumination": false,
        "microscope_stand:box_h": 45
      }
    },
    {
      "stl": "optics_picamera_2_rms_infinity_f50d13_beamsplitter.stl",
      "input": "optics.scad",
      "parameters": {
        "sample_z": 65,
        "optics": "rms_infinity_f50d13",
        "camera": "picamera_2",
        "reflection_illumination": true,
        "microscope_stand:box_h": 45
      }
    },
    {
      "stl": "picamera_2_cover.stl",
      "input": "cameras/picamera_2_cover.scad",
      "parameters": {
        "camera": "picamera_2",
        "optics": [
          "rms_f40d16",
          "rms_f50d13",
          "rms_infinity_f50d13"
        ]
      }
    },
    {
      "stl": "picamera_2_gripper.stl",
      "input": "cameras/picamera_2_gripper.scad",
      "parameters": {
        "camera": "picamera_2",
        "legacy_picamera_tools": true
      }
    },
    {
      "stl": "picamera_2_lens_gripper.stl",
      "input": "cameras/picamera_2_lens_gripper.scad",
      "parameters": {
        "camera": "picamera_2",
        "legacy_picamera_tools": true
      }
    },
    {
      "stl": "reflection_illuminator.stl",
      "input": "reflection_illuminator.scad",
      "parameters": {
        "reflection_illumination": true
      }
    },
    {
      "stl": "sample_clips.stl",
      "input": "sample_clips.scad",
      "parameters": {
        "riser": "sample"
      }
    },
    {
      "stl": "sample_riser_LS10.stl",
      "input": "sample_riser.scad",
      "parameters": {
        "big_stage": true,
        "riser": "sample",
        "sample_riser:h": 10
      }
    },
    {
      "stl": "slide_riser_LS10.stl",
      "input": "slide_riser.scad",
      "parameters": {
        "big_stage": true,
        "riser": "slide",
        "slide_riser:h": 10
      }
    },
    {
      "stl": "small_gears.stl",
      "input": "small_gears.scad",
      "parameters": {
        "motorised": true
      }
    },
    {
      "stl": "thumbwheels.stl",
      "input": "thumbwheels.scad",
      "parameters": {
        "motorised": false,
        "use_motor_gears_for_hand_actuation": false
      }
    }
  ],
  "options": {
    "enable_smart_brim": "bool",
    "reflection_illumination": "bool",
    "optics": [
      "rms_f50d13",
      "rms_infinity_f50d13",
      "pilens",
      "c270_lens",
      "m12_lens",
      "6ledcam_lens",
      "dashcam_lens",
      "rms_f40d16"
    ],
    "camera": [
      "picamera_2",
      "logitech_c270",
      "m12",
      "6ledcam",
      "dashcam"
    ],
    "use_pilens_optics_module": "bool",
    "riser": [
      "no riser",
      "sample",
      "slide"
    ],
    "microscope_stand:box_h": [
      30,
      45
    ],
    "pi_in_base": "bool",
    "base": [
      "bucket",
      "feet"
    ],
    "legacy_picamera_tools": "bool",
    "include_actuator_tension_band": "bool",
    "include_actuator_drilling_jig": "bool",
    "motorised": "bool",
    "use_motor_gears_for_hand_actuation": "bool"
  },
  "docs": [
    {
      "key": "enable_smart_brim",
      "default": true,
      "description": "Add a smart brim to the main body that helps with 3D-printer bed adhesion but doesn't gunk up the spaces needed for the flexure hinges."
    },
    {
      "key": "optics",
      "default": "rms_f50d13",
      "description": "The type of lens you'd like to use on your microscope.",
      "options": [
        {
          "key": "rms_f50d13",
          "title": "RMS F50D13",
          "description": "An RMS-threaded microscope objective with 160mm tube length, and a 12.7mm diameter, 50mm focal length achromatic doublet lens."
        },
        {
          "key": "rms_infinity_f50d13",
          "title": "RMS Infinity F50D13",
          "description": "An RMS-threaded, infinity-corrected microscope objective with a 12.7mm diameter, 50mm focal length achromatic doublet lens."
        },
        {
          "key": "pilens",
          "title": "Pi Lens",
          "description": "The lens included with the Raspberry Pi camera module, v1 or v2 (either will fit)"
        },
        {
          "key": "c270_lens",
          "title": "C270 Lens",
          "description": "The lens included with the Logitech C270 webcam"
        },
        {
          "key": "m12_lens",
          "title": "M12 Lens",
          "description": "A typical M12 CCTV lens"
        },
        {
          "key": "6ledcam_lens",
          "title": "6LED Camera Lens",
          "description": "The lens that comes with a cheap '6LED' camera."
        },
        {
          "key": "dashcam_lens",
          "title": "Dashcam Lens",
          "description": "The lens that comes with the camera of a cheap dashcam e.g. the RangeTour B90 (though it may be sold under different names)."
        },
        {
          "key": "rms_f40d16",
          "title": "RMS F40D16",
          "description": "An RMS-threaded microscope objective with 160mm tube length, and a 16mm diameter, 40mm focal length lens (no longer recommended due to poor quality at the edges of the image)"
        }
      ]
    },
    {
      "key": "camera",
      "default": "picamera_2",
      "description": "The type of camera to use with your microscope.",
      "options": [
        {
          "key": "picamera_2",
          "title": "Pi Camera",
          "description": "The Raspberry Pi camera module, version 1 or 2"
        },
        {
          "key": "logitech_c270",
          "title": "Logitech C270",
          "description": "The Logitech C270 webcam"
        },
        {
          "key": "m12",
          "title": "M12 Camera",
          "description": "A M12 CCTV camera"
        },
        {
          "key": "6ledcam",
          "title": "6LED",
          "description": "A cheap USB '6 LED' Webcam"
        },
        {
          "key": "dashcam",
          "title": "Dashcam",
          "description": "A cheap dash cam where a screen and camera are sold as one , e.g. RangeTour B90s (it may be sold under different names as well)"
        }
      ]
    },
    {
      "key": "motorised",
      "default": true,
      "description": "Use unipolar stepper motors and a motor controller PCB to move the stage. The alternative is to use hand-actuated thumbwheels."
    },
    {
      "key": "riser",
      "default": "sample",
      "description": "Type of riser to use on top of the stage for optics that require it. The slide riser is custom made for microscope slides. The sample riser is more versatile and can also hold slides using the set of included sample clips."
    },
    {
      "key": "base",
      "default": "bucket",
      "description": "Whether to use a bucket base style microscope stand. The alternative is to let it rest on its feet without housing any electronics inside it."
    },
    {
      "key": "reflection_illumination",
      "default": false,
      "advanced": true,
      "description": "Enable the microscope modifications required for reflection illumination and fluorescence microscopy."
    },
    {
      "key": "pi_in_base",
      "default": true,
      "advanced": true,
      "description": "Whether you'd like to house a Raspberry Pi in the bucket base."
    },
    {
      "key": "include_actuator_drilling_jig",
      "description": "This part is very much optional, and is only useful for cleaning up slightly dodgy prints, if the 3mm hole in the actuator has printed too small.",
      "advanced": true,
      "default": false
    },
    {
      "key": "use_motor_gears_for_hand_actuation",
      "default": false,
      "advanced": true,
      "description": "Use the normal motor gears instead of the thumbwheels with the hand-actuated version of the microscope."
    },
    {
      "key": "microscope_stand:box_h",
      "description": "Height of the microscope bucket base stand in mm.  The default 30mm height should be fine, unless you're using an infinity-corrected optics module in which case you should select 45mm, to allow it to protrude further below the bottom of the main body.",
      "advanced": true,
      "default": 30
    },
    {
      "key": "include_actuator_tension_band",
      "default": false,
      "advanced": true,
      "description": "Include some bands, to replace the o-rings, that need to be printed in TPU filament."
    },
    {
      "key": "use_pilens_optics_module",
      "default": false,
      "advanced": true,
      "description": "Use the optics module with the Raspberry Pi lens rather than the lens spacer. Using the lens spacer is recommended for most uses."
    },
    {
      "key": "legacy_picamera_tools",
      "default": false,
      "advanced": true,
      "description": "Include tools for older picameras where the lenses are glued in."
    }
  ],
  "required": [
    "^(optics_|lens_spacer|(.*cam_mount_)).*\\.stl",
    "^main_body_.*\\.stl",
    "^feet.*\\.stl"
  ],
  "presets": [
    {
      "key": "high_resolution_raspberry_pi",
      "title": "High Resolution with Raspberry Pi",
      "description": "A microscope using the Raspberry Pi camera and  high resolution optics, as used for medical work.",
      "parameters": {
        "optics": "rms_f50d13",
        "camera": "picamera_2",
        "reflection_illumination": false,
        "motorised": true,
        "base": "bucket",
        "pi_in_base": true,
        "microscope_stand:box_h": 30,
        "riser": "sample"
      }
    },
    {
      "key": "basic_raspberry_pi",
      "title": "Basic with Raspberry Pi",
      "description": "A basic microscope using the Raspberry Pi camera and simple optics. Best suited for low resolution microscopy and educational workshops.",
      "parameters": {
        "optics": "pilens",
        "use_pilens_optics_module": false,
        "camera": "picamera_2",
        "motorised": false,
        "base": "bucket",
        "pi_in_base": true,
        "microscope_stand:box_h": 30,
        "riser": "no riser"
      }
    },
    {
      "key": "low_cost_webcam",
      "title": "Low Cost with Webcam",
      "description": "The cheapest possible option using a computer webcam.",
      "parameters": {
        "optics": "6ledcam_lens",
        "camera": "6ledcam",
        "motorised": false,
        "base": "feet",
        "microscope_stand:box_h": 30,
        "riser": "no riser"
      }
    }
  ]
}