Open hardware + software platform to democratize photonic imaging. Designed so a motivated high-schooler with a <$100 budget can assemble, calibrate, and generate quantitative 2D / 3D intensity maps.
PhotonPeek performs a raster scan using either manual stage shifts or stepper-driven motion. A 650 nm laser spot is steered onto the sample and the reflected or transmitted intensity is captured by a photodiode. The Arduino Mega streams raw readings tagged with coordinates; the Python application accumulates, averages (samples-per-pixel oversampling), then executes a modular enhancement pipeline.
See hardware/ in the repo for STL files and wiring
diagrams.
5mW. Stable red illumination; safe, inexpensive.
Analog voltage proportional to intensity; feeds A0.
Fixed 90° deviation; alignment simplicity.
Multiple analog inputs & flash space.
Automated XY(Z) scanning (optional upgrade).
Spot shaping + resolution improvement.
Rigid, repeatable mechanical geometry.
Acquisition + processing pipeline.
The Python pipeline executes the following steps:
The acquisition layer is line-oriented ASCII for clarity & debugging:
CONFIG,<mode>,<precision>,<x>,<y>,<z>,<spp> HEADER,<x>,<y>,<z>,<spp> DATA,<x>,<y>,<z>,<value>
CONFIG sets the session. HEADER echoes geometry for host validation. Each DATA line is streamed as soon as the analog read settles, enabling overlapping compute & I/O.