{"id":28263524,"url":"https://github.com/nerdyscout/esp32stepper","last_synced_at":"2026-01-24T09:01:47.741Z","repository":{"id":300441697,"uuid":"941268722","full_name":"nerdyscout/esp32stepper","owner":"nerdyscout","description":"Stepper motor controller using TMC2208, ESP32-S3 and USB-PD mountable onto any NEMA17 motor.","archived":false,"fork":false,"pushed_at":"2025-07-03T18:41:01.000Z","size":17647,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-03T19:41:07.531Z","etag":null,"topics":["closed-loop","esp32-s3","esphome","mpu9250","nema17","stepper-motor","tmc2208","usb-pd"],"latest_commit_sha":null,"homepage":"https://nerdyscout.github.io/esp32stepper","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nerdyscout.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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,"zenodo":null}},"created_at":"2025-03-01T22:08:49.000Z","updated_at":"2025-07-03T18:41:05.000Z","dependencies_parsed_at":"2025-06-21T18:44:02.912Z","dependency_job_id":null,"html_url":"https://github.com/nerdyscout/esp32stepper","commit_stats":null,"previous_names":["nerdyscout/esp32stepper"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/nerdyscout/esp32stepper","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nerdyscout%2Fesp32stepper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nerdyscout%2Fesp32stepper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nerdyscout%2Fesp32stepper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nerdyscout%2Fesp32stepper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nerdyscout","download_url":"https://codeload.github.com/nerdyscout/esp32stepper/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nerdyscout%2Fesp32stepper/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28721975,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-24T08:27:05.734Z","status":"ssl_error","status_checked_at":"2026-01-24T08:27:01.197Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["closed-loop","esp32-s3","esphome","mpu9250","nema17","stepper-motor","tmc2208","usb-pd"],"created_at":"2025-05-20T08:11:33.028Z","updated_at":"2026-01-24T09:01:47.735Z","avatar_url":"https://github.com/nerdyscout.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ESP32STEPPER\n\ncurrent state: untested :warning:\n\ninspired by [joshr120/PD-Stepper](https://github.com/joshr120/PD-Stepper) but being fully open hardware/software.\n\nStepper motor controller using Trinamic TMC2208, ESP32-S3 and USB-PD mountable onto any NEMA17 motor. \n\n## Main Features:\n- **ESP32-S3**\n  - alternatively a LM555 pulse generator can be used.\n- **USB Power Delivery** providing up to 20V operation\n  - alternatively 9-24 Volt external supply \n- **TMC2208** silent stepper motor driver\n- optional\n  - rotary encoder:\n    - **AS5048B** 14-Bit angular position sensor\n    - **MPU-9250** 9-axis motion sensor\n  - 0.96\" 128x96 **LC-Display**\n  - **BME280** temperature sensor\n  - **QWIIC** connector for external I2C components\n  - **JTAG** pins accessible\n  - **3 GPIO** pins and **UART** available\n  - 2x **WS2812** RGB LEDs\n  - 2x **Push Buttons**\n\n## PCB\n\n### Schematic\n\n[![schematic](pcb/docs/img/esp32stepper-schematic.svg)](pcb/docs/esp32stepper-schematic.pdf)\n\n### Bill of Materials\n\nThe complete BOM is available in different formats:\n  - interactive [HTML](https://nerdyscout.github.io/esp32stepper/pcb/docs/bom/esp32stepper-ibom.html)\n\u003c!--  - [octopart](pcb/docs/bom/esp32stepper-octopart.csv) --\u003e\n  - [Excel](pcb/docs/bom/esp32stepper-bom.xlsx)\n\n### Fabrication\n\n[![fabrication](pcb/docs/img/esp32stepper-fabrication.svg)](pcb/docs/esp32stepper-fabrication.pdf)\n\n#### Layout\n\n\u003ctable border=\"0\" width=\"100%\"\u003e\n  \u003ctr\u003e\n    \u003cth\u003e\u003cstrong\u003eTop\u003c/strong\u003e\u003c/th\u003e\n    \u003cth\u003e\u003cstrong\u003eBottom\u003c/strong\u003e\u003c/th\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg src=\"pcb/docs/img/esp32stepper-top.svg\" alt=\"PCB top view\" width=\"400\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"pcb/docs/img/esp32stepper-bottom.svg\" alt=\"PCB bottom view\" width=\"400\"\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\nAll fabrication files needed to produce this PCB are located within the [release package](https://github.com/nerdyscout/esp32stepper/releases).\n\n#### Assembly Variants\n\nThere are two options to power this board, do not connect both at the same time!\n- via connector *PWR* an **external 9-24 Voltage** can be applied which than also will be used to power the stepper motor. \n- **USB-PD** by setting the CFG pins a voltage is selected. This can be made either by assembling the resistors or in firmware of the ESP32.\n\nThere are as well two options for controlling the board:\n- The **LM555** gives some basic PWM frequency driving the stepper controller. Instead of the external rotary encoder a potentiometer can be connected and choosing R15, R16 and C18 correctly should allow any stepping frequency.\n- using the **ESP32-S3** gives much more options as it allows to utilize the I2C components (LC Display, accelerometer, temperature sensor), two RGB Leds and dynamically sets USB voltage.\n\nMicrostepping can be enabled by setting jumper MS1 and MS2.\n\n## Mechanics\n\n![render](cad/img/render.png) \n\nin the folder `cad` the spacers between motor and PCB, as well as the top housing, can be found. The spacer below the stepper controller should be made out of metal so it could act as heat sink, the other part can be simply 3D printed. If the external power connector is not assembled those two spacer parts could be manufactured with less hight, this brings the hall sensor closer to the magnet which needs to be glued onto the motor axis. \n\n## Firmware\n\n### ESPHome\n\nThere is a [esphome](https://esphome.io/) config file supporting various features located at `firmware/esphome`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnerdyscout%2Fesp32stepper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnerdyscout%2Fesp32stepper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnerdyscout%2Fesp32stepper/lists"}