moxon-frame-generator
simple generator for 3D-printed frames for a moxon rectangle antenna
Open-source camera with custom hardware and film-like rendering
git clone https://github.com/Yutani140x/saturnix-camera.gitYutani140x/saturnix-cameraWarning
SATURNIX is under active development. The project structure, features, hardware files, and documentation may change.
The assembly manual (SATURNIX_Assembly_Manual.pdf) is still being revised and may contain errors or outdated information.
I have always been drawn to cassette futurism — the look of old analog machines, industrial computers, worn technical equipment, and retro-future interfaces. I also love cyberpunk worlds like Blade Runner and Ghost in the Shell, and I have always been interested in photography, especially cameras as physical technical devices.
About a year ago, I wanted to build a camera of my own: something simple, tactile, and fully under my control. I wanted a device that I could tune, modify, and shape around my own idea of what a camera should feel like — from the user interface to the physical body design.
With SATURNIX, I wanted to capture the feeling of cassette-futurist hardware. I focused a lot on how the camera feels in the hand and how it feels to use. For example, instead of using small cheap push buttons, I used full-size mechanical keyboard switches to make the controls feel more physical and deliberate.
This project is not trying to replace a commercial camera. It is a personal experiment around:
This was my first time building a device like this, so not everything is perfect. But looking back at where the project started about a year ago, I am happy with how far it has come.
The software was also a major part of the challenge. I am not primarily a software developer, and the code was one of the hardest parts of the project. A lot of the development was AI-assisted, starting with earlier AI models and improving significantly as newer coding models became available. This helped me finally bring the project much closer to the version I had imagined.
SATURNIX started as a personal project. After sharing it online and seeing the level of interest, I decided to make it publicly available as open source.
With the growing interest in old digital compact cameras, I also want this project to show that custom open-source digital cameras are possible. Instead of depending only on large companies, closed firmware, and fixed design choices, we can build devices that we fully understand, modify, repair, and shape for ourselves.
Maybe SATURNIX will inspire someone else to build something even better using this code, these files, or simply the idea behind it.
SATURNIX is a DIY digital camera inspired by cassette futurism, built around a Raspberry Pi Zero 2 W, a 16-megapixel autofocus sensor, and a small LCD viewfinder.
The camera captures photos in DNG+JPEG format and processes them directly on the device using simple JPEG presets inspired by film photography.
Image capture, storage, and processing are handled entirely by the Raspberry Pi Zero 2 W. No external apps or computer connection are required.
Read first!: the Assembly Manual (PDF) contains safety notices for resin printing and lithium battery handling. Don't skip them. You build and operate this device at your own risk.
Open
SATURNIX_Assembly_Manualand keep it nearby while building the camera.
1. Order the parts — See the full BOM in Manual §02. Some electronics may take time to ship, so it is best to order the components first and print the parts while you wait.
Important
Make sure to order the correct UPS module: Waveshare UPS HAT (C). The case, wiring, battery monitoring, and shutdown behavior are designed around this specific board.
2. Print the shell — 3D-printable files are located in the /hardware folder:
saturnix-camera-buttons.zip — keycap files for the mechanical camera buttons. Includes both STL and STEP files.saturnix-camera-print-files-plain.zip — main camera body files without logos or text markings. Includes both STL and STEP files.saturnix-camera-print-files-with-logo.zip — main camera body files with SATURNIX logos and text markings. Includes both STL and STEP files.The main structural parts are designed for resin/MSLA printing. ABS-like resin is required for better strength and durability. A reference print profile for the Anycubic Photon P1 is included in Manual §03.
3. Wire the electronics — See the master GPIO pinout and per-module wiring diagrams in Manual §04. Note: the UPS HAT factory GPIO header and onboard switch are removed. The HAT is hard-wired because it does not fit inside the shell otherwise. See Manual §06 for details.
4. Flash and install the software — Follow Manual §05, or use the condensed setup below:
OS: Raspberry Pi OS (Legacy, 32-bit) — Debian Bookworm
Hostname: saturnix-dione ← hard-coded, use exactly this
User: saturnix / saturnix
Enable I2C and SPI, install the required packages and the Arducam IMX519 driver, then copy two folders from this repository to the Raspberry Pi:
python/ → the Desktop (~/Desktop/python/)saturnix-dione/ → /home/saturnix-dione/ (the .sh scripts are run from this folder via the console)The paths are hard-coded, so keep the folder locations exactly as above.
Then run:
cd /home/saturnix-dione sudo ./setup_wifi_hotspot.sh # photo transfer: SaturnixCam / saturnix24 / 192.168.4.1 sudo ./setup_fast_boot.sh # autostart on power-up sudo reboot
Before closing the case, verify that the display, buttons, autofocus, buzzer, and Wi-Fi hotspot all work correctly.
5. Assemble the camera — See the exploded view and the 16 step-by-step assembly photos in Manual §06. Once everything has been tested with the case open, close the shell, install the screws, and go shoot.
All main camera behavior is controlled through config.json.
This includes ISO and shutter menus, JPEG presets, UI colors, GPIO pins, Wi-Fi settings, and battery thresholds. The full configuration reference is available in Manual §07.
⚠️ The camera automatically shuts down at 5% battery. If the camera powers off shortly after boot, check the UPS HAT wiring, especially SDA, SCL, and power connections. Also make sure I2C is enabled. For testing, you can temporarily lower
battery_shutdown_pctinconfig.json.
💡 Building without a battery? Set
"battery_auto_shutdown": falseinconfig.json— this disables both the auto-shutdown and the low-battery warning beeps.
SATURNIX went through several stages before reaching the current release.
It started as a rough proof-of-concept and gradually evolved into a complete open-source DIY digital camera.
This was one of the first working versions — about a year ago.
The first prototype was a rough proof of concept.
I wanted to see if I could build a simple self-contained digital camera from scratch — something physical, tactile, and fully under my control. This version was not meant to be polished. It was built to test the basic idea: sensor, screen, buttons, basic controls, and image capture.
At this stage, there was almost no real UI. The camera could only take photos and change a few basic capture parameters, but that was enough. It looked rough and felt rough, but it worked.
More importantly, V0 proved that the project could become a real handheld camera rather than just a Raspberry Pi experiment.
So I kept going.
The first fully working version, about four months ago
|
|
|
|
Version 1 was the first SATURNIX build that started to feel like a real camera rather than a loose prototype.
By this stage, the project had a basic printed body, a working screen, physical controls, a simple UI, and a functional capture pipeline. It was still rough, but it finally looked and behaved like a standalone handheld device.
The design already leaned into the cassette-futurist direction: a compact body, visible physical controls, an industrial shape, and an interface inspired by old terminals and technical equipment.
However, this version still had many limitations.
The internal power system was not reliable yet, so I powered the camera from an external power bank using a cable. Image capture was also very slow — one photo could take around 25 seconds because of inefficient capture logic. JPEG presets already existed, but the results were inconsistent, and processing a single image could take about a minute.
Many interface features were also missing at this stage. There was no Wi-Fi image transfer yet, and several tools from the current version, such as the exposure meter and more advanced viewfinder elements, were not implemented.
Even with all these problems, V1 was an important milestone. It had a real UI, it could take photos, and it was usable enough to bring outside.
I traveled with this version for about a week in the mountains near Calgary and took many photos with it. That trip proved that SATURNIX was no longer just a bench experiment. It was already becoming a real camera.
This was also the version I first shared online. To my surprise, it received much more attention than I expected — people reacted strongly to the physical design, the cassette-futurist look, and the idea of an open-source custom digital camera. That response was one of the reasons I decided to continue developing SATURNIX more seriously and prepare it as a public open-source project.
A year later — this is where we ended up
Version 2 is the current public release of SATURNIX.
This release model is called SATURNIX Dione, named after one of Saturn’s moons.
The name is intentional. SATURNIX is planned as a broader camera project, not just a single device. I am also working on a more advanced camera concept with a 1-inch sensor and interchangeable C/CS-mount lenses, so naming this version Dione helps separate it from future SATURNIX models.
At this stage, the camera is no longer just a rough prototype. The body has been redesigned and refined, the battery system is fully integrated, the interface has been rebuilt, and the capture pipeline has been improved as much as possible within the limits of the Raspberry Pi Zero 2 W.
The goal was not to make SATURNIX look like a clean modern product. I wanted it to feel more like a retro-futuristic technical object — something closer to an old industrial camera, a cassette-futurist prop, or a piece of equipment from a used sci-fi world.
The case was also completely reworked visually. I experimented with painting and weathering for the first time: an aged ivory base, dark panel lines, washes, dry-brushing, worn labels, and small red details. The result feels much closer to the original idea — a camera that looks like it already has a history.
Compared to V1, this version is much more complete. The camera now has a proper internal battery setup, a more usable UI, Wi-Fi photo transfer, better feedback, more capture tools, and two different shooting modes.
It is still an experimental DIY camera, and it still has limitations. The Raspberry Pi Zero 2 W is the main bottleneck. Full-resolution capture is not instant, but this version is the best balance I could get between image quality, usability, and the hardware I chose.
Camera
Capture Modes
SATURNIX V2 has two main capture approaches:
Standard Capture
Full-resolution capture with DNG/JPEG output. This mode is intended for landscapes, portraits, static scenes, and situations where image quality matters more than speed.
Dynamic Mode
A faster capture mode that grabs frames directly from the live preview stream. It is lower resolution and does not support DNG or HDR, but it is almost instant and useful for street photography, pets, movement, or “right now” shots.
Dynamic Mode is one of the biggest improvements in V2.
On the Raspberry Pi Zero 2 W, full-resolution capture can still take around 8–12 seconds, depending on settings. Dynamic Mode avoids that delay by using the preview stream instead.
Use Standard Capture when quality matters.
Use Dynamic Mode when timing matters.
JPEG Presets
Film-inspired JPEG presets are processed directly on the camera:
These presets are not meant to be accurate film simulations. They are simple creative looks designed to run directly on the Raspberry Pi.
Interface
The UI is intentionally overdesigned in a sci-fi / terminal direction, but it is still built to stay lightweight enough for the Pi Zero 2 W.
Power
Connectivity
Audio Feedback
Extra Tools
| Component | Model |
|---|---|
| Board | Raspberry Pi Zero 2 W |
| Sensor | Arducam IMX519 16 MP Autofocus |
| Display | Waveshare 2" IPS LCD |
| Audio | Passive buzzer |
| Storage | microSD card, 32 GB+ recommended |
| Power | Waveshare UPS HAT with integrated battery |
| Controls | 5× mechanical keyboard switches |
Buttons: Left, Right, Select, Capture, Focus
The camera uses full-size mechanical-style controls instead of small cheap push buttons. This was an intentional design choice: I wanted the controls to feel physical, tactile, and deliberate.
What Changed Since V1
Version 1 proved that SATURNIX could work as a real handheld camera, but it still had many problems. The camera was powered from an external power bank, capture was slow, image processing was inconsistent, and many interface features were missing.
Version 2 improves the project in several major areas:
This release is much closer to the original idea: a self-contained open-source digital camera that feels like a real physical object, not just a Raspberry Pi project in a box.
Current Limitations
SATURNIX is still a DIY experimental camera.
The main limitation is the Raspberry Pi Zero 2 W. Full-resolution capture is slow, and after many attempts to optimize it, around 3–9 seconds per full-quality shot is the practical limit I was able to reach.
Dynamic Mode solves the speed problem, but it does so by using preview-resolution frames. That means it is much faster, but it cannot replace full-resolution DNG/JPEG capture.
So the camera has two different personalities:
This tradeoff is part of the project. SATURNIX is not trying to compete with modern commercial cameras. It is an open-source platform for experimenting with camera hardware, software, interface design, image processing, and physical product design.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
No filter
S-Gold
S-Natural
S-MonoX
No edits, straight from the camera.
Download here: https://drive.google.com/drive/folders/19HZnG9zmNsQW2zrbjA84-G9dMtUlpbSJ?usp=drive_link
Thank you to everyone who supported SATURNIX and helped make the project public.
| Supporter | Platform |
|---|---|
| 🪐Paul Black | Buy Me a Coffee |
| 🪐michael | Buy Me a Coffee |
| 🪐LazyDmedia | Patreon |
✨Additional thanks to Patreon followers and community members who followed the project early:
Fabrizio Guccione, JoshMahan, Richard Jewkes, RC, Nathan Boom, IxeLWorx.
Your support helps fund future open-source camera prototypes, documentation, parts, sensors, electronics, and test prints.
SATURNIX Dione is released as an open-source project, including the software, and hardware files.
If you find this project useful, interesting, or inspiring, you can support future SATURNIX development.
I am currently working on a more advanced camera concept with a larger sensor and interchangeable C/CS-mount lenses. Any support helps with prototypes, sensors, lenses, electronics, resin, test prints, and documentation.
Support is completely optional. The current project will remain open source.
⭐ Star this repo to follow the development!
This project uses a multi-license model:
| What | License | Commercial use |
|---|---|---|
| Firmware (Python code) | MIT License | Allowed |
| Hardware (STEP, STL, CAD files, 3D models, drawings, mechanical parts) | CERN-OHL-S-2.0 | Allowed under the license terms |
| Documentation & media (README, build guides, photos, diagrams) | CC-BY-4.0 | Allowed with attribution |
| SATURNIX name & logo | See naming policy below | Conditional |
You may build, modify, distribute, and sell hardware based on this project, including modified versions, provided that you comply with the applicable open-source licenses. Note that CERN-OHL-S-2.0 is a strongly reciprocal license: if you distribute modified hardware, you must also make your modified design sources available under the same license and keep a visible reference to the source location of this repository.
The design is fully open. The name is how you tell an official build from a third-party one — so it works like this:
Please provide clear attribution to the original project where reasonable, for example:
Based on the SATURNIX Camera open-source hardware project by Yutani140x.
⭐ Star this repo to follow the development!
Created by Yutani140x
more like this
simple generator for 3D-printed frames for a moxon rectangle antenna
GPX 轨迹转 3D 可打印地形模型 | Hiking trail to 3D printable terrain | Electron + Vue。 一款面向户外爱好者与 3D 打印玩家的 Web 工具。将 GPX 徒步/骑行轨迹一键转…
search projects, people, and tags