{"id":26539759,"url":"https://github.com/mmame/multidmx","last_synced_at":"2026-05-09T19:39:25.790Z","repository":{"id":283640114,"uuid":"940145808","full_name":"mmame/MultiDMX","owner":"mmame","description":"ESP32 based isolated DMX slave with Stepper, Servo, Relay, and H-Bridge Motor control","archived":false,"fork":false,"pushed_at":"2025-03-21T09:19:39.000Z","size":14216,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-21T10:37:36.904Z","etag":null,"topics":["dmx","easyeda","esp32","jlcpcb","oshw","oss","platformio"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mmame.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-02-27T17:29:34.000Z","updated_at":"2025-03-21T09:40:52.000Z","dependencies_parsed_at":"2025-03-21T10:37:40.672Z","dependency_job_id":"d236eb0d-839c-454e-bea8-775b8b6c6a57","html_url":"https://github.com/mmame/MultiDMX","commit_stats":null,"previous_names":["mmame/multidmx"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mmame%2FMultiDMX","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mmame%2FMultiDMX/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mmame%2FMultiDMX/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mmame%2FMultiDMX/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mmame","download_url":"https://codeload.github.com/mmame/MultiDMX/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244885772,"owners_count":20526308,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dmx","easyeda","esp32","jlcpcb","oshw","oss","platformio"],"created_at":"2025-03-22T00:18:51.040Z","updated_at":"2026-05-09T19:39:25.756Z","avatar_url":"https://github.com/mmame.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DMX-Controlled ESP32 System with Stepper, Servo, Relays, and H-Bridge Motor\n\nThis project is an **ESP32-based DMX Slave** that controls:\n- **Stepper Motor (TMC2209 with Sensorless Homing)**\n- **2 x H-Bridge DC Motor**\n- **4 x RC Servos**\n- **2 x Relays**\n- **DIP Switch for Base DMX Address Selection**\n\n## 🚀 Features\n- **DMX Slave** using `esp_dmx`\n- **Stepper Motor Control** (via `TMC2209`, with Speed and Position control)\n- **Sensorless Homing** using `StallGuard`\n- **H-Bridge DC Motor Control** (PWM \u0026 Direction)\n- **Servo Control** (RC Servo via PWM)\n- **Relay Control** (On/Off)\n- **DIP Switch-Based DMX Address Selection**\n\n![Screenshot](pcb3d.png)\n\n---\n# MultiDMX Web Configuration Interface\n\n## Overview\nThe **MultiDMX Web Configuration Interface** allows users to configure stepper motors, servos, and DMX settings via a web-based UI served by an ESP32 microcontroller. Settings are saved persistently and can be adjusted dynamically.\n\n## Features\n✅ Web-based UI for easy configuration  \n✅ Saves settings in **ESP32 Preferences** (persistent storage)  \n✅ Supports **stepper motors, servos, and DMX controls**  \n✅ Built-in **Wi-Fi access point** for standalone configuration  \n✅ **Dynamic settings loading** via JavaScript (AJAX)  \n\n---\n\n## Getting Started\n\n### 1. Powering On \u0026 Connecting to Wi-Fi\n1. Power on the ESP32 module.\n2. The ESP32 creates a **Wi-Fi Access Point** named:  \n   **`MDMX-XXXXXXXX`** (where `XXXXXXXX` is the last 4 bytes of the ESP32 MAC address).\n3. Connect to this Wi-Fi network\n4. Open a web browser and go to:  \n   **`http://192.168.4.1/`**  \n\n---\n\n## Web Interface Overview\n\n### Configuration Page (`/`)\n- Displays a **static HTML page**.\n- Loads current configuration dynamically using JavaScript from **`/config`** API.\n- Allows modifying stepper, servo, and DMX settings.\n\n### JSON Configuration API (`/config`)\n- Returns **current settings in JSON format** (used by the webpage to auto-fill form fields).\n\n### Save Settings (`/save`)\n- The form submits changes to **`/save`**.\n- Settings are stored in ESP32 **Preferences**.\n- ESP32 **automatically restarts** if changes are detected.\n\n### Reset to Defaults (`/reset`)\n- Clicking \"Reset to Defaults\" clears all settings and restarts the ESP32.\n\n---\n\n## Configuration Options\n\n### Stepper Motor Settings\n| Setting | Description |\n|---------|-------------|\n| **Stepper Current** | Adjusts the stepper driver current |\n| **Stepper Scaling Factor** | Scale for step position |\n| **Stepper Max Speed** | Maximum step speed (steps/sec) |\n| **Stepper Acceleration** | Acceleration (steps/sec²) |\n| **Stepper Homing Speed** | Speed during homing sequence |\n| **Stepper Homing Acceleration** | Acceleration during homing |\n| **Stepper Homing Timeout** | Timeout (ms) for homing |\n| **Stepper Homing Step Limit** | Maximum steps for homing |\n| **Stepper Reversed** | Checkbox to reverse stepper direction |\n\n### Servo Settings (1-4)\n| Setting | Description |\n|---------|-------------|\n| **Servo Min Micros** | Minimum PWM pulse width |\n| **Servo Max Micros** | Maximum PWM pulse width |\n| **Servo Reversed** | Checkbox to reverse servo direction |\n\n---\n\n## DMX Configuration \u0026 Ports\n\nThe following **DMX channels** are used in the system:\n\n| DMX Channel | Function |\n|-------------|----------|\n| **Base DMX Address + 0*** | Controls Servo 1 Angle, mapped 0-255 → 0-180° |\n| **Base DMX Address + 1*** | Controls Servo 2 Angle, mapped 0-255 → 0-180° |\n| **Base DMX Address + 2*** | Controls Servo 3 Angle, mapped 0-255 → 0-180° |\n| **Base DMX Address + 3*** | Controls Servo 4 Angle, mapped 0-255 → 0-180° |\n| **Base DMX Address + 4*** | Controls Motor A Speed \u0026 Direction, 1-127 reverse, 129-255 forward, 0/128: standstill  |\n| **Base DMX Address + 5*** | Controls Motor B Speed \u0026 Direction, 1-127 reverse, 129-255 forward, 0/128: standstill  |\n| **Base DMX Address + 6*** | Sets stepper speed, mapped 0-255 → 1-\"Stepper Max Speed\" |\n| **Base DMX Address + 7*** | Sets stepper position , mapped 0-255 → 1-\"Stepper Scaling Factor\" |\n| **Base DMX Address + 8*** | Controls Relay 1 0-127 off, 128-255 on |\n| **Base DMX Address + 9*** | Controls Relay 2 0-127 off, 128-255 on |\n\n- The **Base DMX Address** is determined via **DIP switch input**.\n\n---\n\n## How Settings Work\n1. Open **`http://192.168.4.1/`** in your browser.\n2. The webpage **fetches current settings** from the ESP32 using **`/config`**.\n3. Adjust values in the form.\n4. Click **\"Save Settings\"** – the ESP32 will **restart** if settings changed.\n\n---\n\n## Debugging \u0026 Serial Output\n\n### Viewing Logs\n- Use **Arduino Serial Monitor** at `115200` baud rate.\n- The ESP32 prints **Wi-Fi connection logs, configuration updates, and DMX data**.\n\n### Resetting the ESP32\n- To clear saved settings, use the **\"Reset to Defaults\"** button on the web interface.\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmmame%2Fmultidmx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmmame%2Fmultidmx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmmame%2Fmultidmx/lists"}