Không có mô tả

Tuan Nguyen 7db640c360 fix status 11 tháng trước cách đây
.github 414b11c5e9 Update docker-publish.yml 1 năm trước cách đây
dune_weaver_flask f1fe2089c0 initial port 11 tháng trước cách đây
firmware f1fe2089c0 initial port 11 tháng trước cách đây
modules 7db640c360 fix status 11 tháng trước cách đây
patterns f1fe2089c0 initial port 11 tháng trước cách đây
static 7db640c360 fix status 11 tháng trước cách đây
steps_calibration 9666a8d877 support dlc32 for different hardware 11 tháng trước cách đây
templates 7db640c360 fix status 11 tháng trước cách đây
.env.example fc5b570529 update example env and mqtt mock classs 11 tháng trước cách đây
.gitignore d9bcae3778 fix progress bar in docker 11 tháng trước cách đây
CHANGELOG.md a6b2188163 Update firmware 1 năm trước cách đây
Dockerfile ec6781a3ef Feature/firmware updater (#34) 1 năm trước cách đây
LICENSE 80aa77567c add license 1 năm trước cách đây
PATTERN_CREDITS.md b51eb87aeb add patterns 11 tháng trước cách đây
README.md 11026e9840 add websocket supports 11 tháng trước cách đây
app.py 7db640c360 fix status 11 tháng trước cách đây
docker-compose.yml 013654b1e5 fix docker performance issue 11 tháng trước cách đây
mirror_pattern.py f4e8905abd add script to mirror pattern for text, undo script transformation 1 năm trước cách đây
requirements.txt 2011e904b2 add requirement, display current speed 11 tháng trước cách đây
test_websocket.py 7db640c360 fix status 11 tháng trước cách đây

README.md

Dune Weaver

Dune Weaver Gif

Dune Weaver is a project for a mesmerizing, motorized sand table that draws intricate patterns in sand using a steel ball moved by a magnet. This project combines hardware and software, leveraging an Arduino for hardware control and a Python/Flask-based web interface for interaction.

Features

  • Theta-Rho Coordinate System: Supports theta-rho pattern files to generate smooth, intricate designs.
  • Web-Based Control: Easily upload, preview, and execute patterns via a Flask-based web interface.
  • Batch Execution: Optimized batching for smoother table movement.
  • Pre-Execution Actions: Configurable pre-execution clearing actions.
  • Arduino Integration: Communicates with the Arduino over serial for precise movement control.
  • Real-Time Monitoring: Continuously reads and displays Arduino responses.

Technologies Used

  • Python: Backend application logic and web server.
  • Flask: Lightweight web framework for serving the UI and handling API calls.
  • Arduino: Handles the motor control for the sand table.
  • Serial Communication: Facilitates communication between Python and the Arduino.

Setup Instructions

Hardware Requirements

  1. A sand table with:
    • A stepper motor
    • Magnet for moving the steel ball
  2. Arduino Uno (or compatible microcontroller).
  3. DRV8825 motor driver (or an alternative for quieter operation).
  4. Power supply and necessary wiring.
  5. Computer with USB connection to the Arduino.

Software Requirements

UI

  • Python 3.7+
  • Arduino IDE
  • Flask
  • Serial communication libraries

Installation Steps

  1. Clone the repository:

    git clone https://github.com/tuanchris/dune-weaver.git
    cd dune-weaver
    
  2. Install the required Python libraries:

    pip install -r requirements.txt
    
  3. Set up your Arduino: • Flash the Arduino with the provided firmware to handle serial commands. • Connect the Arduino to your computer.

  4. Run the Flask server:

    python app.py
    
  5. Access the web interface: Open your browser and navigate to http://localhost:8080.

File Management

• Patterns: Save .thr files (theta-rho coordinate files) in the patterns/ directory. • Uploads: Upload patterns via the web interface.

Pattern File Format

Each pattern file consists of lines with theta and rho values (in degrees and normalized units, respectively), separated by a space. Comments start with #.

Example:

# Example pattern
0 0.5
90 0.7
180 0.5
270 0.7

API Endpoints

The project exposes RESTful APIs for various actions. Here are some key endpoints: • List Serial Ports: /list_serial_ports (GET) • Connect to Serial: /connect (POST) • Upload Pattern: /upload_theta_rho (POST) • Run Pattern: /run_theta_rho (POST) • Stop Execution: /stop_execution (POST)

Project Structure

dune-weaver/
├── app.py              # Flask app and core logic
├── patterns/           # Directory for theta-rho files
├── static/             # Static files (CSS, JS)
├── templates/          # HTML templates for the web interface
├── README.md           # Project documentation
├── requirements.txt    # Python dependencies
└── arduino/            # Arduino firmware

Happy sand drawing with Dune Weaver! 🌟