This project is a modular camera turret system consisting of a web-based UI, a camera streaming backend, and firmware for controlling turret hardware. The system is containerized using Docker Compose for easy development and deployment.
- docker-compose.yml: Orchestrates the services for development using Docker Compose.
- ui/: Next.js web application for controlling and viewing the camera turret.
- camera-stream/: Python backend for camera streaming and image processing.
- firmware/: Embedded code for controlling the turret hardware (motors and camera), organized for PlatformIO.
- Built with Next.js.
- Provides a user interface to control the turret and view the camera feed.
- Hot-reloads in development via Docker Compose.
- Python application (see
app.py
). - Handles camera input and streams video to the UI.
- Can serve a fallback image if the camera is unavailable.
- Contains PlatformIO projects for both camera and motor control.
- Each subfolder (
cam/
,motors/
) has its own source code and configuration for embedded development.
- Docker and Docker Compose
- PlatformIO (for firmware development, optional)
- Clone the repository.
- From the root directory, run:
docker-compose up --build
- Access the UI at http://localhost:3000.
- Firmware is managed separately using PlatformIO.
- See
firmware/cam/
andfirmware/motors/
for details.
Part Description | Link |
---|---|
Screw terminals (for electrical) | Amazon |
Cooling fans (for electronics box) | Amazon |
Nema 17 motors 1.5a 42x42x38mm (x2) | Amazon |
ESP32 Cam | Amazon |
8mm flange coupling connectors | Amazon |
8x100mm shafts | Amazon |
Assorted M3 screws | Amazon |
Closed loop rubber belts | Amazon |
DRV8825 stepper motor driver | Amazon |
Various Dupont jumper cables | Amazon |
Many parts of this project are 3D printed. I used a BambuLabs A1 and PETG filament, but any printer with a sufficiently large build area should be fine.
Files are available on MakerWorld.