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.
18 lines
896 B
Bash
Executable File
18 lines
896 B
Bash
Executable File
#!/bin/bash
|
|
# One-shot boot verification: proves the kiosk came up and the SSD mounted.
|
|
LOG=/home/tyler/boot-check.log
|
|
export XDG_RUNTIME_DIR=/run/user/1000 WAYLAND_DISPLAY=wayland-0
|
|
sleep 20
|
|
{
|
|
echo "=== boot check $(date -Is) ==="
|
|
echo "camera service : $(systemctl is-active microscope-camera.service) (enabled: $(systemctl is-enabled microscope-camera.service))"
|
|
echo "ssd mount : $(/usr/local/sbin/microscope-ssd status)"
|
|
echo "findmnt : $(findmnt -no SOURCE,TARGET,FSTYPE /mnt/microscope || echo 'not mounted')"
|
|
echo "cage : $(pgrep -a cage | head -1)"
|
|
echo "app : $(pgrep -af 'python3 app.py' | head -1)"
|
|
} >> "$LOG"
|
|
for d in HDMI-A-1 HDMI-A-2 DSI-1 DPI-1 HDMI-1; do
|
|
if grim -o "$d" /home/tyler/boot-check.png 2>>"$LOG"; then echo "screenshot : $d" >> "$LOG"; break; fi
|
|
done
|
|
chown tyler:tyler "$LOG" /home/tyler/boot-check.png 2>/dev/null
|