Skip to content

Commit bff303d

Browse files
committed
docs: prepare repository for public release
1 parent 60653f2 commit bff303d

5 files changed

Lines changed: 94 additions & 126 deletions

File tree

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
*.log
1717
*.err
1818
.env
19+
Thumbs.db
20+
.DS_Store
1921

2022
# Local extracted UI assets (generated from src/web_assets.h)
2123
/app.js

README.md

Lines changed: 64 additions & 125 deletions
Original file line numberDiff line numberDiff line change
@@ -1,162 +1,101 @@
11
# RealityScanRig3000
22

3-
**RealityScanRig3000** is an ESP32-S3 powered scanning rig controller for automated photogrammetry capture workflows.
3+
RealityScanRig3000 is an ESP32-S3 firmware + web UI for automated dual-axis photogrammetry capture.
44

5-
Created and maintained by **Superwutz**.
5+
The project is designed for end users first:
6+
- Install from a website over USB
7+
- Run and configure from a browser UI
8+
- Update firmware from the UI (OTA)
69

7-
This project was built **largely in collaboration with AI** (design, coding, refactoring, and documentation), with human validation and iterative testing.
10+
No IDE is required for normal installation and updates.
811

9-
---
12+
## Main Features
1013

11-
## What This Project Does
14+
- Browser-based control UI hosted by the ESP32
15+
- Dual-axis sequence engine (rotation + tilt)
16+
- Preset-driven scan profiles
17+
- Live status, progress, and error indicators
18+
- Manual motion controls
19+
- OTA update flow from the Settings screen
20+
- Web installer for first-time flashing
1221

13-
RealityScanRig3000 controls a dual-axis turntable and camera trigger workflow through a browser-based UI:
22+
## Supported Hardware
1423

15-
- Rotation + tilt scan sequencing
16-
- Preset-based scan profiles
17-
- Live status, progress, and segment visualization
18-
- Manual axis controls
19-
- BLE auto-recovery during scan interruptions
20-
- OTA firmware update directly from the UI
24+
- ESP32-S3 board (`esp32-s3-devkitc-1` target)
25+
- Revopoint Dual-axis Turntable
2126

22-
The goal is practical, repeatable, low-friction scanning for end users without requiring a full embedded toolchain.
27+
## Quick Start (End Users)
2328

24-
Primary target hardware:
25-
- **Revopoint Dual-axis Turntable**
26-
https://www.revopoint3d.com/products/dual-axis-turntable
29+
1. Open the installer page in desktop Chrome or Edge:
30+
`https://superwutz.github.io/RealityScanRig3000/`
31+
2. Connect your ESP32 board by USB.
32+
3. Click `Install` and choose the serial device.
33+
4. Wait for flash + reboot.
34+
5. Open the rig UI at:
35+
- `http://scanrig.local`
36+
- or the IP shown by your router
2737

28-
---
38+
## Firmware Updates (OTA)
2939

30-
## Key Features
40+
After initial USB install, updates are done directly in the UI:
3141

32-
- **Browser UI on device** (ESP32 serves HTML/CSS/JS itself)
33-
- **Dual-axis scan sequencer** with tilt/rotation step logic
34-
- **Live progress views**:
35-
- top-down rotation ring
36-
- side-view tilt arc
37-
- compressed full-sequence bar
38-
- **Error segment marking** in progress views (BLE/TCP/WiFi issues)
39-
- **Manual control block** (rotation/tilt/zero/stop/snap)
40-
- **BLE auto-connect + heartbeat + recover**
41-
- **OTA update endpoint** (`/api/update`)
42-
- **Web-installer export flow** for non-technical end users
42+
1. Open the rig UI.
43+
2. Go to `Settings` -> `Firmware Update`.
44+
3. Click `Check Updates`.
45+
4. If a newer release is available, click `Update Now`.
4346

44-
---
47+
The board reboots automatically after a successful update.
4548

46-
## Hardware + Software Stack
49+
You can also upload a local firmware file via `Upload Firmware (.bin)`.
4750

48-
- **MCU**: ESP32-S3 (`esp32-s3-devkitc-1` target)
49-
- **Framework**: Arduino (PlatformIO)
50-
- **BLE**: NimBLE-Arduino
51-
- **Web server**: ESPAsyncWebServer + AsyncTCP
52-
- **Frontend**: Embedded static assets in firmware (`src/web_assets.h`)
53-
54-
---
55-
56-
## End User Quick Start (No IDE)
57-
58-
### 1) Install via browser (USB)
59-
60-
Use the official installer page:
61-
62-
https://superwutz.github.io/RealityScanRig3000/
63-
64-
User flow:
65-
1. Open the installer page in Chrome or Edge (desktop).
66-
2. Connect your ESP32 board with a USB data cable.
67-
3. Click `Install` and select the board's serial device.
68-
4. Wait until flashing finishes and the board reboots.
69-
5. Open rig UI at `http://scanrig.local` (or router-assigned DHCP IP).
70-
71-
---
72-
73-
## OTA Updates (From Rig UI)
74-
75-
After first install, updates can be done from the UI:
76-
77-
1. Open rig UI
78-
2. Console section:
79-
- `Check Updates` (manifest-based)
80-
- `Update Now` (downloads `firmware.bin` and uploads OTA)
81-
3. Device reboots automatically after successful update
82-
83-
You can still upload a local `.bin` manually via `Upload Firmware (.bin)`.
84-
85-
Default OTA manifest endpoint in firmware:
51+
Default update manifest URL:
8652

8753
`https://superwutz.github.io/RealityScanRig3000/manifest.json`
8854

89-
If you need a custom endpoint, override `SCANRIG_UPDATE_MANIFEST_URL` in `src/secrets.local.h`.
90-
91-
Release policy and commands are documented in `RELEASE.md`.
92-
93-
---
55+
## Network Configuration (No IDE)
9456

95-
---
57+
Wi-Fi and static IP can be configured directly in the UI:
9658

97-
## WiFi + Secrets
59+
1. Open `Settings` -> `Network`
60+
2. Enter SSID/password
61+
3. Optionally enable static IPv4
62+
4. Save (or Save + Reboot)
9863

99-
Do **not** commit real credentials.
64+
If STA connection is unavailable, the device can fall back to AP mode.
10065

101-
Use:
102-
- `src/secrets.example.h` (placeholders, tracked)
103-
- `src/secrets.local.h` (real values, ignored)
66+
## Privacy and Credentials
10467

105-
---
68+
Do not commit real credentials.
10669

107-
## Technical Notes
70+
- `src/secrets.example.h` is tracked and contains placeholders.
71+
- `src/secrets.local.h` is ignored and intended for private values.
10872

109-
- Core firmware lives in `src/main.cpp`
110-
- Embedded UI lives in:
111-
- source workspace: `.tmp_ui/`
112-
- compiled/embedded form: `src/web_assets.h`
113-
- UI and firmware communicate via WebSocket (`/`) using compact JSON messages
114-
- Sequencer state machine handles:
115-
- tilt send/wait
116-
- rotate send/wait
117-
- settle/snap/cooldown
118-
- recover on disconnect
73+
## Developer Notes
11974

120-
---
75+
For release workflow details, see `RELEASE.md`.
12176

122-
## Disclaimers
77+
Core files:
78+
- Firmware: `src/main.cpp`
79+
- Embedded web assets: `src/web_assets.h`
80+
- Web installer template: `deploy/web-installer/index.html`
81+
- Published installer/OTA artifacts: `docs/`
12382

124-
### Safety + Liability
125-
126-
This project is provided **as-is**, without warranty of any kind.
127-
Use at your own risk.
128-
129-
You are responsible for:
130-
- safe electrical wiring
131-
- safe operation around moving hardware
132-
- protecting camera and rig equipment
133-
- validating all firmware behavior before production use
83+
## Security Reporting
13484

135-
Neither **Superwutz** nor contributors are liable for equipment damage, data loss, injury, or any consequential damages.
85+
Please report security issues privately first.
13686

137-
### Compliance
87+
See `SECURITY.md` for disclosure instructions.
13888

139-
You are responsible for complying with local laws and regulations regarding:
140-
- electronics operation
141-
- radio/BLE usage
142-
- photography and data capture
89+
## Safety Disclaimer
14390

144-
### Professional Use
91+
This project is provided as-is and without warranty.
14592

146-
This is not a certified industrial safety controller.
147-
Do not use it where hardware failure can create safety-critical outcomes.
148-
149-
---
150-
151-
## Credits
152-
153-
- Project lead: **Superwutz**
154-
- Built largely with AI-assisted development workflows
155-
- Open-source libraries: NimBLE-Arduino, ESPAsyncWebServer, AsyncTCP, PlatformIO ecosystem
156-
157-
---
93+
You are responsible for:
94+
- Safe electrical wiring
95+
- Safe operation around moving hardware
96+
- Validation before production use
97+
- Compliance with local regulations
15898

15999
## License
160100

161-
This project is licensed under the **MIT License**.
162-
See `LICENSE` for the full text.
101+
MIT License. See `LICENSE`.

README.txt

Lines changed: 0 additions & 1 deletion
This file was deleted.

SECURITY.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# Security Policy
2+
3+
## Supported Versions
4+
5+
Security fixes are provided for the latest release line only.
6+
7+
- Supported: latest `v0.x.y`
8+
- Not supported: older tags and unreleased historical commits
9+
10+
## Reporting a Vulnerability
11+
12+
Please do not open public issues for security vulnerabilities.
13+
14+
Instead, contact the maintainer privately with:
15+
- A short description of the issue
16+
- Impact and affected versions
17+
- Reproduction steps
18+
- Any suggested mitigation
19+
20+
The project will acknowledge the report, validate it, and publish a fix in a new release as quickly as possible.
21+
22+
## Scope Notes
23+
24+
Common security-sensitive areas in this project:
25+
- Wi-Fi credentials handling
26+
- OTA update flow and manifest source
27+
- Local AP fallback behavior
28+
- Web UI endpoints and command interface

git

Whitespace-only changes.

0 commit comments

Comments
 (0)