PROJECT · PERSONAL · 2026–2028

DIY Two-Year
Time-lapse Project.

A Raspberry Pi, an Arducam HQ camera, and a 3D-printed weatherproof enclosure pointed at a Los Angeles hillside for two years.

The Enclosure · body_main.stl

drag to rotate · scroll to zoom · v3 design, parametric OpenSCAD source below

LOADING MESH…

Same hillside as the Native Plant Oasis project. Different angle — instead of mapping it in 3D, watch it grow. Five captures a day at PST-locked clock times for two years, stitched into roughly a two-minute video at the end.

5 / day Captures
730 Days
~3,650 Frames
12 MP Per frame

The build.

An iterative weekend project that turned into a multi-day rabbit hole. The hardware was the easy part.

Raspberry Pi 3B+ with bare Arducam HQ camera attached via ribbon cable
01 · HARDWARE

Pi 3B+ + Arducam HQ + adjustable varifocal.

A spare Raspberry Pi from the parts bin, a new Arducam HQ camera board with an IMX477 sensor, and a 2.8–12 mm CS-mount varifocal lens. The Pi does all the work; the camera shoots at full 4056×3040 resolution.

Close-up of the adjustable varifocal lens with zoom, focus, and aperture rings
02 · THE LENS

Manual zoom, manual focus, manual aperture.

Three rings: zoom (2.8–12 mm), focus, and aperture (f/1.6). Once dialed in, lock the set screws and walk away. The lens design rejects the convenience of autofocus — which is exactly what a multi-year time-lapse wants.

Second-story exterior wall with two windows where the rig will mount under the eave
03 · MOUNT LOCATION

Second-story stucco wall, under the eave.

Solid stucco between the two upstairs windows, sightline straight out at the hillside. The deep eave overhang above will handle 95% of the weather without needing aggressive sealing. LA gets roughly 36 days of rain a year; the rest is dry.

Pi and camera assembled with the v1 printed enclosure beside them
04 · ENCLOSURE V1

The first print was wrong, mostly.

Designed for an under-eave shelf mount. Then we pivoted to a flat wall mount and the geometry stopped making sense. Cable cutout too small, Pi standoffs in the wrong column, lens hood didn't account for the wide-angle FOV, the lid notch missing for the wall tab. Useful only as a fit-test.

Top-down view inside the v2 printed enclosure showing where the camera and Pi don't fit together cleanly
05 · ITERATION

v2 found the conflicts. v3 fixed them.

Pi and camera mounted on the same back wall to share rigidity with the house wall behind. But the Pi's HDMI/power ports landed under the camera body, the camera's CSI ribbon connector crashed into the camera-tilt wedge. v3 offsets the Pi 2 cm to the side, removes the internal wedge entirely, replaces full-height lid-screw posts with compact corner brackets, adds a notched 1 mm test plate so future tweaks can verify alignment in five minutes of print time.

Pi mounted in the printed enclosure interior with the camera mounted nearby
06 · LIVE TEST

Indoor pilot, pointed out a second-story window.

Indoors first — same camera, same Pi, same schedule, just pointed through glass at the planned hillside view. A 120-frame test at 30-second intervals stitched into a five-second video proves the whole pipeline before any weatherproofing happens.

The result — so far.

Five seconds of hillside at one frame every 30 seconds. Real output won't exist until 2028.

test · 120 frames · 24 fps · 2026-05-23

The stack.

Pi 3B+ Headless Pi OS · systemd schedule
Arducam HQ IMX477 · 12.3 MP · CS mount
Arducam 2.8-12mm Manual zoom / focus / aperture
Bambu X1 Carbon PETG/ASA enclosure
picamera2 Python capture, 4056×3040 JPEG
launchd + rsync Mac-side mirror, 6-hour cadence
ffmpeg x264 stitch, 24 fps
Claude Code Pair-programmed end to end

The files.

v3 STLs — print in PETG or ASA, 4 walls, 30% infill. Designed for the specific Pi 3B+ / Arducam HQ / 2.8-12 mm varifocal stack. See the README for assembly notes.