Touchscreen kiosk for the Raspberry Pi HQ camera (IMX477) used as a microscope: live preview from boot, raw frame recording, full-resolution stills, and automatic capture-SSD mounting. - app.py: GTK3 fullscreen UI over cage — preview, REC/STOP, PHOTO, 90-degree rotate button, tap-to-open exposure/gain/settings sliders, and an "SSD NOT MOUNTED" badge - camera.py: picamera2 wrapper with separate video (ISP preview + packed 12-bit raw) and still (4056x3040) configurations - recorder.py: writer thread turning the raw stream into one Bayer frame per file plus index.jsonl/session.json, with dropped/missed accounting - photos.py: still capture to DNG + JPEG, and a background worker that renders a viewable 16-bit sRGB TIFF from the 12-bit Bayer frame - storage.py: SSD mount state and the date/time/format session layout - tools/unpack_raw.py: desktop-side unpacker/demosaicer - system/ + install.sh: systemd units, udev rule, mount helper, sudoers Note: raw frames are written byte-for-byte as the sensor produced them, so they stay decodeable regardless of how the stills pipeline evolves.
14 lines
415 B
Desktop File
14 lines
415 B
Desktop File
[Unit]
|
|
Description=Mount the microscope capture SSD
|
|
Documentation=man:mount(8)
|
|
After=systemd-udevd.service
|
|
Before=local-fs.target
|
|
|
|
[Service]
|
|
# No RemainAfterExit: the unit returns to inactive after each run so that every
|
|
# subsequent plug-in event can start it again. The helper is idempotent, so an
|
|
# already-mounted drive is a no-op.
|
|
Type=oneshot
|
|
ExecStart=/usr/local/sbin/microscope-ssd mount
|
|
TimeoutStartSec=30
|