Skip to content

Commit d1a1284

Browse files
committed
update
1 parent 8b0db05 commit d1a1284

19 files changed

+109691
-24699
lines changed

.devcontainer/esphome/Dockerfile

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
FROM esphome/esphome:latest
2+
3+
# Create a non-root user
4+
RUN adduser --disabled-password --gecos '' vscode && \
5+
usermod -aG dialout vscode && \
6+
mkdir -p /home/vscode/.esphome && \
7+
chown -R vscode:vscode /home/vscode/.esphome
8+
9+
USER vscode
10+
WORKDIR /workspace
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"name": "ESPHome",
3+
"build": {
4+
"dockerfile": "Dockerfile",
5+
"context": ".."
6+
},
7+
"runArgs": [
8+
"--privileged",
9+
"--network=host"
10+
],
11+
"settings": {
12+
"terminal.integrated.defaultProfile.linux": "/bin/bash"
13+
},
14+
"extensions": [
15+
"esphome.vscode-esphome"
16+
],
17+
"remoteUser": "vscode"
18+
}

.devcontainer/kibot/devcontainer.json

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"name": "KiBot",
3+
"image": "ghcr.io/inti-cmnb/kicad9_auto_full:latest",
4+
"runArgs": [
5+
"-v",
6+
"/var/run/docker.sock:/var/run/docker.sock"
7+
],
8+
"customizations": {
9+
"vscode": {
10+
"extensions": [
11+
"danielmeza.kicad-syntax-highlighter",
12+
"argmaster.gerber-x3-x2-format-support",
13+
"ms-python.python",
14+
"github.vscode-github-actions"
15+
]
16+
}
17+
}
18+
}

.github/workflows/release.yaml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,12 @@ on:
99
branches:
1010
- main
1111
- develop
12-
12+
1313
jobs:
1414
release:
1515
runs-on: ubuntu-latest
16+
container:
17+
image: ghcr.io/inti-cmnb/kicad9_auto_full:latest
1618
permissions:
1719
contents: write
1820
steps:
@@ -39,7 +41,7 @@ jobs:
3941
with:
4042
# commit_message: Automated Change
4143
file_pattern:
42-
'docs/bom/* docs/*.pdf docs/*.svg docs/img/*.svg cad/*.stl cad/*.step'
44+
'pcb/docs/bom/*.* pcb/docs/*.* pcb/docs/img/*.svg cad/*.stl cad/*.step cad/img/*.png'
4345

4446
# generate changelog
4547
- name: Conventional Changelog Action
@@ -50,6 +52,7 @@ jobs:
5052
output-file: 'CHANGELOG.md'
5153

5254
# upload artifact
55+
- run: rm pcb/fp-info-cache
5356
- name: upload artifact
5457
uses: actions/upload-artifact@v4
5558
with:

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ _autosave-*
1515
*.tmp
1616
*-save.pro
1717
*-save.kicad_pcb
18-
fp-info-cache
18+
pcb/fp-info-cache
1919
~*.lck
2020
\#auto_saved_files#
2121

@@ -41,3 +41,5 @@ _site
4141
.jekyll-cache
4242
.jekyll-metadata
4343
vendor
44+
45+
firmware/esphome/.esphome/*

README.md

Lines changed: 50 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -4,51 +4,79 @@ current state: untested :warning:
44

55
inspired by [joshr120/PD-Stepper](https://github.com/joshr120/PD-Stepper) but being fully open hardware/software.
66

7-
Stepper motor controller using silent Trinamic TMC2209, ESP32-S3 and USB-PD mountable onto any NEMA17 motor.
7+
Stepper motor controller using Trinamic TMC2208, ESP32-S3 and USB-PD mountable onto any NEMA17 motor.
88

99
## Main Features:
10-
- **TMC2209** stepper motor driver
1110
- **ESP32-S3**
12-
- alternatively NE555 pulse generator
11+
- alternatively a LM555 pulse generator can be used.
1312
- **USB Power Delivery** providing up to 20V operation
14-
- alternatively external voltage supply possible
15-
- **MPU-6050** 6axis accelerometer
16-
- **BME280** temperature sensor
17-
- **QWIIC** connector for external I2C components
18-
- 2x **WS2812** RGB LEDs
19-
- 2x **Push Buttons**
20-
- optional 0.96" 128x96 **LC-Display**
21-
- **JTAG** pins accessible
22-
- **3 GPIO** pins and **UART** available
13+
- alternatively 9-24 Volt external supply
14+
- **TMC2208** silent stepper motor driver
15+
- optional
16+
- rotary encoder:
17+
- **AS5048B** 14-Bit angular position sensor
18+
- **MPU-9250** 9-axis motion sensor
19+
- 0.96" 128x96 **LC-Display**
20+
- **BME280** temperature sensor
21+
- **QWIIC** connector for external I2C components
22+
- **JTAG** pins accessible
23+
- **3 GPIO** pins and **UART** available
24+
- 2x **WS2812** RGB LEDs
25+
- 2x **Push Buttons**
2326

2427
## PCB
2528

2629
### Schematic
2730

28-
[![schematic](docs/esp32stepper-schematic.svg)](docs/esp32stepper-schematic.pdf)
31+
[![schematic](pcb/docs/img/esp32stepper-schematic.svg)](pcb/docs/esp32stepper-schematic.pdf)
2932

3033
### Bill of Materials
3134

3235
The complete BOM is available in different formats:
33-
- [Excel](docs/bom/esp32stepper-bom.xlsx)
34-
- interactive [HTML](https://nerdyscout.github.io/esp32stepper/docs/bom/esp32stepper-ibom.html)
36+
- interactive [HTML](https://nerdyscout.github.io/esp32stepper/pcb/docs/bom/esp32stepper-ibom.html)
37+
<!-- - [octopart](pcb/docs/bom/esp32stepper-octopart.csv) -->
38+
- [Excel](pcb/docs/bom/esp32stepper-bom.xlsx)
3539

36-
### Layout
40+
### Fabrication
3741

38-
| Top | Bottom |
39-
| ------------------------------------------ | ------------------------------------------------ |
40-
| ![top view](docs/img/esp32stepper-top.svg) | ![bottom view](docs/img/esp32stepper-bottom.svg) |
42+
[![fabrication](pcb/docs/img/esp32stepper-fabrication.svg)](pcb/docs/esp32stepper-fabrication.pdf)
43+
44+
#### Layout
45+
46+
<table border="0" width="100%">
47+
<tr>
48+
<th><strong>Top</strong></th>
49+
<th><strong>Bottom</strong></th>
50+
</tr>
51+
<tr>
52+
<td><img src="pcb/docs/img/esp32stepper-top.svg" alt="PCB top view" width="400"></td>
53+
<td><img src="pcb/docs/img/esp32stepper-bottom.svg" alt="PCB bottom view" width="400"></td>
54+
</tr>
55+
</table>
4156

42-
### Gerbers
4357

4458
All fabrication files needed to produce this PCB are located within the [release package](https://github.com/nerdyscout/esp32stepper/releases).
4559

60+
#### Assembly Variants
61+
62+
There are two options to power this board, do not connect both at the same time!
63+
- via connector *PWR* an **external 9-24 Voltage** can be applied which than also will be used to power the stepper motor.
64+
- **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.
65+
66+
There are as well two options for controlling the board:
67+
- 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.
68+
- 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.
69+
70+
Microstepping can be enabled by setting jumper MS1 and MS2.
71+
4672
## Mechanics
4773

48-
in the folder `cad` the spacers between motor and PCB, as well as the housing, can be found. One of the two spacer parts can be made out of metal to act as heatsink for the TMC2209.
74+
![render](cad/img/render.png)
75+
76+
in 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.
4977

5078
## Firmware
5179

5280
### ESPHome
5381

54-
There is a [esphome](https://esphome.io/) config file supporting different features located at `firmware/esphome`
82+
There is a [esphome](https://esphome.io/) config file supporting various features located at `firmware/esphome`

_config.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020

2121
title: ESP32STEPPER
2222
email: stefan.herold@posteo.de
23-
description: "Stepper motor controller using TMC2209, ESP32-S3 and USB-PD mountable onto any NEMA17 motor."
23+
description: "Stepper motor controller using TMC2208, ESP32-S3 and USB-PD mountable onto any NEMA17 motor."
2424
baseurl: "esp32stepper" # the subpath of your site, e.g. /blog
2525
url: "" # the base hostname & protocol for your site, e.g. http://example.com
2626
github_username: nerdyscout

cad/esp32stepper.FCStd

-4.59 MB
Binary file not shown.

0 commit comments

Comments
 (0)