-
Notifications
You must be signed in to change notification settings - Fork 32
Expand file tree
/
Copy pathtest_esp32_dev_kit.py
More file actions
365 lines (320 loc) · 8.87 KB
/
Copy pathtest_esp32_dev_kit.py
File metadata and controls
365 lines (320 loc) · 8.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
from circuit_synth import circuit, Component, Net
@circuit(name="ESP32_C6_Dev_Kit")
def esp32_dev_kit():
"""
Complete ESP32-C6 Development Kit
- USB-C power input with 5V
- 3.3V linear regulator with proper decoupling
- Auto-reset circuit for programming
- Boot button for manual entry to programming mode
- User LED on GPIO8
- All GPIOs broken out to headers
"""
# ======================
# USB-C Interface
# ======================
usb_conn = Component(
symbol="Connector:USB_C_Receptacle_USB2.0",
ref="J",
footprint="Connector_USB:USB_C_Receptacle_GCT_USB4085"
)
# CC resistors for 5V power negotiation (5.1k to GND)
cc1_resistor = Component(
symbol="Device:R",
ref="R",
value="5.1k",
footprint="Resistor_SMD:R_0603_1608Metric"
)
cc2_resistor = Component(
symbol="Device:R",
ref="R",
value="5.1k",
footprint="Resistor_SMD:R_0603_1608Metric"
)
# ======================
# Power Supply (5V to 3.3V)
# ======================
vreg = Component(
symbol="Regulator_Linear:AMS1117-3.3",
ref="U",
footprint="Package_TO_SOT_SMD:SOT-223-3_TabPin2"
)
# Input capacitor (before regulator)
cap_in = Component(
symbol="Device:C",
ref="C",
value="10uF",
footprint="Capacitor_SMD:C_0805_2012Metric"
)
# Output capacitor (after regulator)
cap_out = Component(
symbol="Device:C",
ref="C",
value="22uF",
footprint="Capacitor_SMD:C_0805_2012Metric"
)
# ======================
# ESP32-C6 Module
# ======================
esp32 = Component(
symbol="RF_Module:ESP32-C6-MINI-1",
ref="U",
footprint="RF_Module:ESP32-C6-MINI-1"
)
# ESP32 decoupling capacitors
cap_esp1 = Component(
symbol="Device:C",
ref="C",
value="10uF",
footprint="Capacitor_SMD:C_0805_2012Metric"
)
cap_esp2 = Component(
symbol="Device:C",
ref="C",
value="100nF",
footprint="Capacitor_SMD:C_0603_1608Metric"
)
# ======================
# Programming Interface (Auto-Reset)
# ======================
# DTR/RTS capacitors for auto-reset circuit
cap_dtr = Component(
symbol="Device:C",
ref="C",
value="100nF",
footprint="Capacitor_SMD:C_0603_1608Metric"
)
cap_rts = Component(
symbol="Device:C",
ref="C",
value="100nF",
footprint="Capacitor_SMD:C_0603_1608Metric"
)
# Reset pull-up resistor
reset_pullup = Component(
symbol="Device:R",
ref="R",
value="10k",
footprint="Resistor_SMD:R_0603_1608Metric"
)
# Boot pull-up resistor
boot_pullup = Component(
symbol="Device:R",
ref="R",
value="10k",
footprint="Resistor_SMD:R_0603_1608Metric"
)
# ======================
# User Buttons
# ======================
boot_btn = Component(
symbol="Switch:SW_Push",
ref="SW",
footprint="Button_Switch_SMD:SW_SPST_CK_RS282G05A3"
)
reset_btn = Component(
symbol="Switch:SW_Push",
ref="SW",
footprint="Button_Switch_SMD:SW_SPST_CK_RS282G05A3"
)
# ======================
# User LED
# ======================
led = Component(
symbol="Device:LED",
ref="D",
footprint="LED_SMD:LED_0603_1608Metric"
)
led_resistor = Component(
symbol="Device:R",
ref="R",
value="330",
footprint="Resistor_SMD:R_0603_1608Metric"
)
# ======================
# GPIO Headers
# ======================
header_left = Component(
symbol="Connector_Generic:Conn_01x15_Pin",
ref="J",
footprint="Connector_PinHeader_2.54mm:PinHeader_1x15_P2.54mm_Vertical"
)
header_right = Component(
symbol="Connector_Generic:Conn_01x15_Pin",
ref="J",
footprint="Connector_PinHeader_2.54mm:PinHeader_1x15_P2.54mm_Vertical"
)
# ======================
# Define Nets
# ======================
# Power nets
vbus = Net('VBUS') # 5V from USB
vcc_3v3 = Net('VCC_3V3') # 3.3V regulated
gnd = Net('GND') # Ground
# USB data nets
usb_dp = Net('USB_DP')
usb_dm = Net('USB_DM')
cc1 = Net('CC1')
cc2 = Net('CC2')
# Programming nets
dtr = Net('DTR')
rts = Net('RTS')
en = Net('EN') # Reset pin
gpio9 = Net('GPIO9') # Boot pin
# GPIO nets
gpio8 = Net('GPIO8') # User LED
gpio0 = Net('GPIO0')
gpio1 = Net('GPIO1')
gpio2 = Net('GPIO2')
gpio3 = Net('GPIO3')
gpio4 = Net('GPIO4')
gpio5 = Net('GPIO5')
gpio6 = Net('GPIO6')
gpio7 = Net('GPIO7')
gpio10 = Net('GPIO10')
gpio11 = Net('GPIO11')
gpio18 = Net('GPIO18')
gpio19 = Net('GPIO19')
gpio20 = Net('GPIO20')
gpio21 = Net('GPIO21')
gpio22 = Net('GPIO22')
gpio23 = Net('GPIO23')
# ======================
# USB-C Connections
# ======================
usb_conn["VBUS"] += vbus
usb_conn["GND"] += gnd
usb_conn["CC1"] += cc1
usb_conn["CC2"] += cc2
usb_conn["D+"] += usb_dp
usb_conn["D-"] += usb_dm
# CC resistors for 5V negotiation
cc1_resistor[1] += cc1
cc1_resistor[2] += gnd
cc2_resistor[1] += cc2
cc2_resistor[2] += gnd
# ======================
# Power Supply Connections
# ======================
vreg["VI"] += vbus
vreg["VO"] += vcc_3v3
vreg["GND"] += gnd
cap_in[1] += vbus
cap_in[2] += gnd
cap_out[1] += vcc_3v3
cap_out[2] += gnd
# ======================
# ESP32-C6 Connections
# ======================
# Power
esp32["VDD"] += vcc_3v3
esp32["GND"] += gnd
# Programming pins
esp32["EN"] += en
esp32["IO9"] += gpio9
# USB (for native USB)
esp32["IO12"] += usb_dm
esp32["IO13"] += usb_dp
# User LED
esp32["IO8"] += gpio8
# GPIO pins
esp32["IO0"] += gpio0
esp32["IO1"] += gpio1
esp32["IO2"] += gpio2
esp32["IO3"] += gpio3
esp32["IO4"] += gpio4
esp32["IO5"] += gpio5
esp32["IO6"] += gpio6
esp32["IO7"] += gpio7
esp32["IO10"] += gpio10
esp32["IO11"] += gpio11
esp32["IO18"] += gpio18
esp32["IO19"] += gpio19
esp32["IO20"] += gpio20
esp32["IO21"] += gpio21
esp32["IO22"] += gpio22
esp32["IO23"] += gpio23
# ESP32 decoupling
cap_esp1[1] += vcc_3v3
cap_esp1[2] += gnd
cap_esp2[1] += vcc_3v3
cap_esp2[2] += gnd
# ======================
# Auto-Reset Circuit
# ======================
# DTR → EN (reset)
cap_dtr[1] += dtr
cap_dtr[2] += en
# RTS → GPIO9 (boot)
cap_rts[1] += rts
cap_rts[2] += gpio9
# Pull-ups
reset_pullup[1] += vcc_3v3
reset_pullup[2] += en
boot_pullup[1] += vcc_3v3
boot_pullup[2] += gpio9
# ======================
# User Buttons
# ======================
boot_btn[1] += gpio9
boot_btn[2] += gnd
reset_btn[1] += en
reset_btn[2] += gnd
# ======================
# User LED
# ======================
led_resistor[1] += gpio8
led_resistor[2] += Net('LED_ANODE')
led["A"] += Net('LED_ANODE')
led["K"] += gnd
# ======================
# GPIO Headers
# ======================
# Left header
header_left[1] += vcc_3v3
header_left[2] += gpio0
header_left[3] += gpio1
header_left[4] += gpio2
header_left[5] += gpio3
header_left[6] += gpio4
header_left[7] += gpio5
header_left[8] += gpio6
header_left[9] += gpio7
header_left[10] += gpio8
header_left[11] += gpio9
header_left[12] += gpio10
header_left[13] += gpio11
header_left[14] += en
header_left[15] += gnd
# Right header
header_right[1] += vbus
header_right[2] += gpio18
header_right[3] += gpio19
header_right[4] += gpio20
header_right[5] += gpio21
header_right[6] += gpio22
header_right[7] += gpio23
header_right[8] += usb_dp
header_right[9] += usb_dm
header_right[10] += dtr
header_right[11] += rts
header_right[12] += vcc_3v3
header_right[13] += vcc_3v3
header_right[14] += gnd
header_right[15] += gnd
if __name__ == "__main__":
# Generate the circuit
circuit = esp32_dev_kit()
# Generate KiCad project files
result = circuit.generate_kicad_project(
project_name="ESP32_C6_Dev_Kit",
placement_algorithm="hierarchical",
generate_pcb=True
)
print("✓ ESP32-C6 Dev Kit generated successfully!")
print(f" Project: ESP32_C6_Dev_Kit/ESP32_C6_Dev_Kit.kicad_pro")
print(f"\nTo open in KiCad:")
print(f" open ESP32_C6_Dev_Kit/ESP32_C6_Dev_Kit.kicad_pro")
# Generate BOM
circuit.generate_bom(project_name="ESP32_C6_Dev_Kit")
print(f"\n✓ Bill of Materials: ESP32_C6_Dev_Kit/ESP32_C6_Dev_Kit.csv")