---
title: 3D-Scanner (ESP32-S3 + VL53L7CX)
tags: 3D-Scanner, ESP32-S3, VL53L7CX, Firmware, Python
description: ESP32-S3 VL53L7CX turntable scanner firmware and raw-scan replay tools.
---
# 3D-Scanner
ESP32-S3 VL53L7CX turntable scanner firmware and raw-scan replay tools.
<img alt="image" src="https://github.com/user-attachments/assets/132cd7b3-6e6c-4055-b3c4-b28593ea6dc3" />
<img alt="image" src="https://github.com/user-attachments/assets/f78d5273-fdf5-4e2b-9524-55271bddb7a7" />
<img alt="image" src="https://github.com/user-attachments/assets/978dbf9e-350f-498d-a727-f3aead71b301" />
[TOC]
---
## π Contents
- **`firmware/esp32s3_vl53l7cx_model_server/esp32s3_vl53l7cx_model_server.ino`**
- ESP32-S3 web UI and scanner firmware.
- Supports raw-hit point cloud, calibrated visual hull, no-background envelope estimation, and raw debug export.
- **`tools/simulate_calibration_first_replay.py`**
- Replays exported `vl53l7cx_raw_scan*.jsonl` files.
- Supports calibrated background subtraction and no-background raw-envelope estimation.
- **`tools/analyze_raw_scan_log.py`**
- Utility for inspecting raw scan/debug logs.
---
## π Recommended Scan Flow
:::info
**π‘ ζδ½³ζζζ΅η¨**
1. Open the ESP32 web UI.
2. Use `perpendicular` distance projection.
3. For best geometry, run **`η©Ίζζ ‘ζ£δΈε`** before scanning the object.
4. If no background scan is available, use raw-hit/no-bg output only as an estimated result.
:::
---
## π» Replay Examples
### Calibrated replay
```bash=
python tools/simulate_calibration_first_replay.py \
--empty vl53l7cx_raw_scan-empty.jsonl \
--object vl53l7cx_raw_scan-object.jsonl \
--distance-model perpendicular