Hardware

The apparatus

RoboCam 3.1 is the software layer. This page covers the physical rig it drives on the current lab build — what it's made of, and how to build one.

The RoboCam/StentorCam rig, labeled: camera, lens, laser, 96-well plate with mask, IR pad, modified 3D printer

The apparatus, labeled — from the team's CCC Quarterly poster.

What it consists of

Motion stage

Creality Ender-5 S1 3D printer, stock Marlin firmware, repurposed as an XYZ positioning stage. Klipper-based controller boards are also supported by the software if you build on different hardware.

Camera

Player One Mars 662M (monochrome astronomy camera). A Player One Uranus M is currently being evaluated as an alternative.

Compute & storage

Raspberry Pi 5, with an M.2 HAT+ and a 512GB NVMe SSD for local storage — replacing the earlier Pi 4 + microSD setup with much faster, higher-capacity storage for raw-burst capture.

Lens

Commonlands CIL 535 (C-mount), attached via a printed T2-to-C adapter.

Stimulus illumination

Two LEDs, 495–600 nm, 2.0–2.4V forward voltage, 700 mA rated each (~500 mA combined when wired in parallel), driven through a MOSFET switched from a Raspberry Pi GPIO pin. Light passes through a tube-and-aperture system, reaching up to 500 lux at the height of a 24-well plate.

IR backlight

A DIY light pad built from an acrylic sheet edge-lit by IR LED strips, sitting beneath the well plate to provide even backlighting for imaging — separate from the visible-spectrum stimulus LEDs above.

Camera/lens mount

Custom 3D-printed mount replacing the printer's extruder, holding the Player One camera and lens assembly in place of the print head.

Well-plate stage

Darkfield masks (24-well and 96-well variants) plus a base plate that clips the IR light pad to the printer bed with two sprung fingers for repeatable removal/reattachment.

Illumination

The two stimulus LEDs are switched together via a MOSFET, gated from a Raspberry Pi GPIO pin — the same output the software's LaserController drives in rpi_gpio mode (configurable BCM pin, set in the Setup tab). Measured draw is ~500 mA combined with both LEDs wired in parallel, each individually rated to 700 mA at 2.0–2.4V.

Imaging illumination is handled separately by an IR backlight pad beneath the well plate: an acrylic sheet edge-lit by IR LED strips, diffusing light evenly upward through the plate rather than being switched per-experiment like the stimulus LEDs.

IR backlight pad, illuminated

The IR backlight pad, illuminated.

The darkfield mask

The darkfield mask is the part that makes the imaging itself work, not just the mounting. It implements transmission dark-field imaging for standard multi-well plates using a purely geometric trick — no additional optics required — so that a camera positioned above the plate sees a dark background with only the light scattered by objects in the well (e.g. a swimming Stentor) showing up as bright features. Unscattered illumination is rejected by the mask geometry itself.

Darkfield imaging system geometry: mask, well plate, and camera arrangement, with parameters A, B, C labeled

An opaque mask beneath the well plate is aligned so each well sits above a corresponding masked region. Illumination from below is blocked by the mask directly under the well and can only emerge from the unmasked area around it, entering the well at oblique angles. Three parameters, tuned jointly, govern whether this works:

Because unscattered rays are geometrically excluded from the well walls or the camera's acceptance cone while scattered light is redirected into it, the result is a dark background with only scattering structures visible — without a beam block, condenser, or any additional optical hardware beyond the mask itself. Liquid fill volume matters too: it changes meniscus curvature and optical path length, so consistent well volumes matter for consistent rejection.

From the team's internal writeup, "Dark-Field Imaging Using a Masked Illumination Geometry for Standard Well Plates" (Leonard Chau, PI Dr. Raymond Esquerra, San Francisco State University).

Assembly overview

  1. Print the mount, adapter, base, and darkfield mask (see print notes above).
  2. Remove the Ender-5 S1's stock extruder/hotend and install the Lens Mount in its place.
  3. Attach the T2-to-C adapter to the mount, then attach the C-mount lens.
  4. Mount the Player One camera to the lens assembly.
  5. Wire the two stimulus LEDs through the MOSFET driver to a Raspberry Pi GPIO pin (set the pin in RoboCam's Setup tab, laser/GPIO mode rpi_gpio).
  6. Build the IR backlight pad (acrylic sheet edge-lit with IR LED strips) and clip it to the printer bed using the StentorCam Base's sprung fingers, with the darkfield mask on top.
  7. Connect the printer (USB/serial for Marlin) and camera to the machine running RoboCam 3.1, then follow the Docs page to calibrate the four well-plate corners.

Parts cost

ItemCost
3D printer (Ender-5 S1)$264
Enclosure/tent$70
Monitor$50
Camera (Player One Mars 662M)$270
Lens$50
Compute & storage (Raspberry Pi 5 + M.2 HAT+ + 512GB SSD)updating
Acrylic diffuser sheet$15
LED strip$30
LED/laser driver$60
Laser safety goggles$20
Acrylic backlight panel$30
Laser diode module$13
Misc. optics/assembly$40
Total (before tax)updating

Original bill of materials totaled $982 (before tax) with a Raspberry Pi 4 + microSD card ($80 combined) for compute/storage — now upgraded to a Raspberry Pi 5 with an M.2 HAT+ and 512GB NVMe SSD. Total will be updated once the new compute/storage cost is finalized.