TurnTable: ESP32 Automated Photo Capture
Executive summary
An automated rotating table that uses a stepper motor and an ESP32 to facilitate perfectly spaced 360° product photography and 3D scanning. It coordinates physical rotation with wireless Bluetooth HID commands to fire a smartphone camera shutter without any physical contact.
Business strategy & value proposition
The problem
- Manual inconsistency: Rotating an object by hand for 3D scanning (photogrammetry) results in overlapping, missed, or blurry frames.
- Expensive gear: Professional automated turntable systems are notoriously costly.
The solution
- Automated precision: Uses a micro-stepper motor to guarantee exact angular offsets between photos.
- Universal compatibility: Leverages Bluetooth HID to emulate a device volume button, remotely triggering the native camera app on virtually any iOS or Android phone.
Product features & UX
Hands-free workflow
- Detail: Once initiated, the table turns a predetermined number of degrees, pauses for stabilization, triggers the camera via Bluetooth, and repeats.
- Interaction: The user sets the phone on a tripod, presses start on the turntable (or web UI), and walks away while the session completes.
Stable mechanical design
- Detail: A 3D-printed geared base optimized to support various object weights without wobbling.
Technical architecture
High-level stack
| Component | Technology | Role |
|---|---|---|
| Controller | ESP32 | Main sequencing, delays, and Bluetooth HID profile. |
| Actuator | Stepper Motor + A4988 | Provides precise, degree-perfect physical rotation. |
| Structural | 3D Printing (PETG/PLA) | The table surface, bearing track, and motor mount. |
| Interface | Bluetooth / Web UI | Configures speed, step angles, and triggers the phone. |
Core systems logic
- Configuration: The user defines the step angle (e.g., 10 degrees = 36 photos) using a web UI or physical dial.
- Rotation: ESP32 commands the A4988 driver to step the motor.
- Stabilization: The system enforces a hard delay (e.g., 2 seconds) to eliminate mechanical vibrations in the product.
- Trigger: ESP32 sends a Bluetooth "Volume Down" command to fire the smartphone shutter. Loop repeats.
Handling edge cases
- Camera lag: Phones without sufficient buffer time might miss the Bluetooth trigger or capture a blurry image before focus is obtained.
- Mitigation: Implement configurable trigger delays and stabilization pauses directly in the UI.
- Weight handling and torque: Heavy objects can cause the stepper motor to skip steps, ruining the 360-degree calculation.
- Mitigation: Use a geared down mechanism (e.g., GT2 belt or planetary gears) rather than direct drive, and design a stable bearing track near the outer edge of the platform.
Future roadmap
Phase 1 (MVP)
- [ ] Wire and configure stepper motor driver (e.g., A4988) with the ESP32.
- [ ] Implement rotation sequence logic with hardcoded step angles and delays.
- [ ] Integrate Bluetooth HID profile to simulate the volume/shutter press.
Phase 2
- [ ] Design and 3D print the rotating table, motor mounts, and support structure.
- [ ] Install load-bearing mechanisms (bearings/wheels) and assemble the physical unit.
- [ ] Conduct live timing and rotation accuracy tests for full 360° capture.
Phase 3
- [ ] Build a Web/Bluetooth UI for real-time speed, delay, and rotation control.
- [ ] Document the build process, schematic, and KiCad/Fusion360 files.
- [ ] Publish as a fully open-source photogrammetry tool.