411 lines
9.4 KiB
Markdown
411 lines
9.4 KiB
Markdown
# KiCad Schematic and PCB Design Guide
|
||
|
||
## Step-by-Step Schematic Creation
|
||
|
||
### 1. Component Libraries Setup
|
||
|
||
First, ensure you have the necessary libraries:
|
||
- **ESP32-WROOM-32**: ESP32 module footprint
|
||
- **TXB0104**: Logic level shifter
|
||
- **AMS1117**: Voltage regulator
|
||
- **CP2102N**: USB-to-Serial (optional)
|
||
- Standard libraries: Resistors, Capacitors, LEDs, Connectors
|
||
|
||
### 2. Schematic Components List
|
||
|
||
Add these components to your schematic:
|
||
|
||
#### Power Section
|
||
- **U1**: AMS1117-3.3 (Voltage Regulator)
|
||
- **C1**: 10µF Capacitor (Input)
|
||
- **C2**: 10µF Capacitor (Output)
|
||
- **C3**: 100nF Capacitor (Input decoupling)
|
||
- **C4**: 100nF Capacitor (Output decoupling)
|
||
- **USB1**: USB Micro-B Connector (Power input)
|
||
|
||
#### ESP32 Module
|
||
- **U2**: ESP32-WROOM-32E Module
|
||
|
||
#### Logic Level Shifter
|
||
- **U3**: TXB0104PWR (4-channel level shifter)
|
||
|
||
#### Midea AC Connector
|
||
- **J1**: JST-XH 4-pin Connector (or USB Type-A female)
|
||
|
||
#### USB-to-Serial (Optional)
|
||
- **U4**: CP2102N (USB-to-Serial converter)
|
||
- **USB2**: USB Micro-B Connector (Programming)
|
||
|
||
#### Status LEDs
|
||
- **LED1**: LED (WiFi Status) - GPIO2
|
||
- **LED2**: LED (BLE Status) - GPIO4
|
||
- **R1**: 220Ω Resistor (LED1 current limiting)
|
||
- **R2**: 220Ω Resistor (LED2 current limiting)
|
||
|
||
#### Buttons
|
||
- **SW1**: Tactile Switch (Reset)
|
||
- **SW2**: Tactile Switch (Boot/Flash)
|
||
- **R3**: 10kΩ Resistor (Reset pull-up)
|
||
- **R4**: 10kΩ Resistor (Boot pull-up)
|
||
|
||
#### Decoupling Capacitors
|
||
- **C5-C10**: 100nF Capacitors (ESP32 power pins)
|
||
|
||
---
|
||
|
||
## Detailed Schematic Connections
|
||
|
||
### Power Supply Section
|
||
|
||
```
|
||
USB1 (Micro-B):
|
||
Pin 1 (VCC) → C1+ → U1.IN
|
||
Pin 1 (VCC) → C3+ → U1.IN
|
||
Pin 4 (GND) → GND
|
||
|
||
U1 (AMS1117-3.3):
|
||
IN → USB1.VCC (via C1, C3)
|
||
GND → GND
|
||
OUT → C2+ → 3V3 (Power Rail)
|
||
OUT → C4+ → 3V3 (Power Rail)
|
||
|
||
Power Rails:
|
||
3V3 → ESP32 VDD pins
|
||
3V3 → Level Shifter VCCA
|
||
3V3 → LED anodes (via resistors)
|
||
3V3 → Button pull-ups
|
||
GND → Common ground plane
|
||
```
|
||
|
||
### ESP32-WROOM-32E Connections
|
||
|
||
```
|
||
U2 (ESP32-WROOM-32E):
|
||
VDD (Pins: 1,3,14,21,22,27,28,33,42) → 3V3 (via decoupling caps)
|
||
GND (Pins: 2,4,13,15,20,23,26,29,34,38,40) → GND
|
||
|
||
GPIO17 (TX) → U3.A1 (Level Shifter LV side)
|
||
GPIO16 (RX) → U3.A2 (Level Shifter LV side)
|
||
|
||
GPIO2 → R1 → LED1 (WiFi Status)
|
||
GPIO4 → R2 → LED2 (BLE Status)
|
||
|
||
GPIO0 → SW2 (Boot Button) → GND
|
||
GPIO0 → R4 → 3V3 (Pull-up)
|
||
|
||
EN → SW1 (Reset Button) → GND
|
||
EN → R3 → 3V3 (Pull-up)
|
||
|
||
GPIO1 (TX) → U4.RXD (if USB-to-Serial included)
|
||
GPIO3 (RX) → U4.TXD (if USB-to-Serial included)
|
||
```
|
||
|
||
### Logic Level Shifter (TXB0104)
|
||
|
||
```
|
||
U3 (TXB0104PWR):
|
||
VCCA → 3V3 (Low voltage side)
|
||
VCCB → 5V (High voltage side - from USB or external)
|
||
GND → GND
|
||
OE → 3V3 (Always enabled)
|
||
|
||
A1 (LV1) → U2.GPIO17 (ESP32 TX)
|
||
B1 (HV1) → J1.RX (AC Dongle RX)
|
||
|
||
A2 (LV2) → U2.GPIO16 (ESP32 RX)
|
||
B2 (HV2) → J1.TX (AC Dongle TX)
|
||
|
||
A3, A4, B3, B4 → NC (Not connected)
|
||
```
|
||
|
||
### Midea AC Connector
|
||
|
||
```
|
||
J1 (JST-XH 4-pin or USB Type-A):
|
||
Pin 1 (VCC) → 5V (if AC dongle needs power)
|
||
Pin 2 (RX) → U3.B1 (Level Shifter HV1)
|
||
Pin 3 (TX) → U3.B2 (Level Shifter HV2)
|
||
Pin 4 (GND) → GND
|
||
```
|
||
|
||
### USB-to-Serial (Optional)
|
||
|
||
```
|
||
U4 (CP2102N):
|
||
VDD → 3V3
|
||
GND → GND
|
||
DTR → U2.GPIO0 (Auto-reset for flashing)
|
||
RXD → U2.GPIO1 (ESP32 TX)
|
||
TXD → U2.GPIO3 (ESP32 RX)
|
||
VBUS → USB2.VCC (5V detection)
|
||
|
||
USB2 (Micro-B):
|
||
VCC → U4.VBUS
|
||
D+ → U4.D+
|
||
D- → U4.D-
|
||
GND → GND
|
||
```
|
||
|
||
### Status LEDs
|
||
|
||
```
|
||
LED1 (WiFi Status):
|
||
Anode → R1 → U2.GPIO2
|
||
Cathode → GND
|
||
|
||
LED2 (BLE Status):
|
||
Anode → R2 → U2.GPIO4
|
||
Cathode → GND
|
||
```
|
||
|
||
### Buttons
|
||
|
||
```
|
||
SW1 (Reset):
|
||
Pin 1 → U2.EN
|
||
Pin 2 → GND
|
||
(R3 pull-up: U2.EN → 3V3)
|
||
|
||
SW2 (Boot):
|
||
Pin 1 → U2.GPIO0
|
||
Pin 2 → GND
|
||
(R4 pull-up: U2.GPIO0 → 3V3)
|
||
```
|
||
|
||
---
|
||
|
||
## PCB Layout Guidelines
|
||
|
||
### Component Placement Order
|
||
|
||
1. **ESP32 Module (Center)**
|
||
- Place ESP32-WROOM-32E in center of board
|
||
- Leave 15mm clearance around antenna area (top-right corner)
|
||
- No ground plane under antenna
|
||
|
||
2. **Power Section (Top Left)**
|
||
- USB connector near edge
|
||
- AMS1117 regulator close to USB
|
||
- Decoupling capacitors within 5mm of regulator
|
||
|
||
3. **Level Shifter (Between ESP32 and AC Connector)**
|
||
- TXB0104 close to ESP32 GPIO17/GPIO16
|
||
- Positioned to minimize trace length to AC connector
|
||
|
||
4. **AC Connector (Right Edge)**
|
||
- JST-XH connector on right edge
|
||
- Easy access for cable connection
|
||
|
||
5. **USB-to-Serial (Bottom Left, Optional)**
|
||
- CP2102N and USB connector
|
||
- Separate from power USB
|
||
|
||
6. **Status LEDs (Top Edge)**
|
||
- Visible when board is mounted
|
||
- Near board edge
|
||
|
||
7. **Buttons (Accessible Location)**
|
||
- Reset and Boot buttons
|
||
- Easy to press during development
|
||
|
||
### Routing Priorities
|
||
|
||
1. **Power Traces (Highest Priority)**
|
||
- 3V3: Minimum 0.5mm (20mil) width
|
||
- 5V: Minimum 0.5mm (20mil) width
|
||
- Use power planes if 4-layer board
|
||
|
||
2. **Ground (Critical)**
|
||
- Ground plane on bottom layer
|
||
- Connect all GND pins to plane
|
||
- Keep ground continuous
|
||
|
||
3. **UART Signals (High Priority)**
|
||
- Keep traces short (<50mm)
|
||
- Avoid crossing power traces
|
||
- Route together (differential pair style)
|
||
- 0.2mm (8mil) minimum width
|
||
|
||
4. **GPIO Signals (Standard)**
|
||
- 0.15mm (6mil) minimum width
|
||
- Keep away from antenna area
|
||
|
||
### Design Rules
|
||
|
||
- **Trace Width**:
|
||
- Power: 0.5mm (20mil)
|
||
- Signal: 0.15-0.2mm (6-8mil)
|
||
|
||
- **Via Size**:
|
||
- Diameter: 0.5mm (20mil)
|
||
- Drill: 0.2mm (8mil)
|
||
|
||
- **Clearance**:
|
||
- Trace to trace: 0.15mm (6mil)
|
||
- Trace to pad: 0.15mm (6mil)
|
||
|
||
- **Antenna Keepout**:
|
||
- 15mm radius around ESP32 antenna
|
||
- No ground plane
|
||
- No components
|
||
- No traces (except necessary)
|
||
|
||
### Layer Stackup (2-Layer)
|
||
|
||
**Top Layer:**
|
||
- Components
|
||
- Signal traces
|
||
- Power traces (3V3, 5V)
|
||
|
||
**Bottom Layer:**
|
||
- Ground plane (primary)
|
||
- Power traces (if needed)
|
||
- Signal traces (minimal)
|
||
|
||
### Layer Stackup (4-Layer Recommended)
|
||
|
||
**Layer 1 (Top):**
|
||
- Components
|
||
- Signal traces
|
||
|
||
**Layer 2 (Inner 1):**
|
||
- Ground plane
|
||
|
||
**Layer 3 (Inner 2):**
|
||
- Power plane (3V3)
|
||
|
||
**Layer 4 (Bottom):**
|
||
- Ground plane
|
||
- Signal traces
|
||
|
||
---
|
||
|
||
## KiCad Specific Instructions
|
||
|
||
### 1. Adding Components
|
||
|
||
1. Open KiCad Schematic Editor
|
||
2. Click "Place Symbol" (A key)
|
||
3. Search for components:
|
||
- `ESP32-WROOM-32E` (may need to download footprint)
|
||
- `TXB0104` (may need custom symbol)
|
||
- `AMS1117` (search in library)
|
||
- Standard: `R`, `C`, `LED`, `SW_Push`, `Conn_01x04_Male`
|
||
|
||
### 2. Creating Custom Symbols (if needed)
|
||
|
||
**ESP32-WROOM-32E:**
|
||
- Create new symbol in Symbol Editor
|
||
- Add pins according to ESP32-WROOM-32E datasheet
|
||
- Save to custom library
|
||
|
||
**TXB0104:**
|
||
- Create symbol with 14 pins (TSSOP-14)
|
||
- Pins: VCCA, A1-A4, GND, OE, B1-B4, VCCB, GND
|
||
|
||
### 3. Assigning Footprints
|
||
|
||
1. Open "Assign Footprints" tool
|
||
2. Assign footprints:
|
||
- ESP32-WROOM-32E → `ESP32-WROOM-32` footprint
|
||
- TXB0104 → `TSSOP-14` footprint
|
||
- AMS1117 → `SOT-223` or `SOT-89` footprint
|
||
- Resistors → `R_0603` or `R_0805`
|
||
- Capacitors → `C_0603` or `C_0805`
|
||
- LEDs → `LED_0603`
|
||
- Buttons → `SW_PUSH_6mm`
|
||
- Connectors → Appropriate JST or USB footprint
|
||
|
||
### 4. Netlist and PCB
|
||
|
||
1. Generate Netlist (F8)
|
||
2. Open PCB Editor
|
||
3. Read Netlist (F8 in PCB Editor)
|
||
4. Place components according to guidelines
|
||
5. Route traces following priorities
|
||
|
||
### 5. Design Rule Check (DRC)
|
||
|
||
1. Run DRC before finalizing
|
||
2. Check for:
|
||
- Unconnected nets
|
||
- Clearance violations
|
||
- Trace width violations
|
||
- Via size issues
|
||
|
||
---
|
||
|
||
## Component Footprint Reference
|
||
|
||
| Component | Footprint | Package |
|
||
|-----------|-----------|---------|
|
||
| ESP32-WROOM-32E | Custom/ESP32-WROOM-32 | Module |
|
||
| TXB0104PWR | TSSOP-14 | TSSOP |
|
||
| AMS1117-3.3 | SOT-223 | SOT-223 |
|
||
| CP2102N | QFN-24 | QFN |
|
||
| Resistors | R_0603 or R_0805 | 0603/0805 |
|
||
| Capacitors | C_0603 or C_0805 | 0603/0805 |
|
||
| LEDs | LED_0603 | 0603 |
|
||
| Buttons | SW_PUSH_6mm | 6×6mm |
|
||
| USB Micro-B | USB_Micro-B | Through-hole |
|
||
| JST-XH | JST_XH_B4B-XH-A | Through-hole |
|
||
|
||
---
|
||
|
||
## Testing Checklist
|
||
|
||
After PCB assembly:
|
||
|
||
- [ ] Power supply: 3.3V stable at ESP32 VDD
|
||
- [ ] ESP32 boots (check serial output)
|
||
- [ ] WiFi connects
|
||
- [ ] BLE beacon transmits
|
||
- [ ] UART communication works
|
||
- [ ] Level shifter: 3.3V → 5V conversion verified
|
||
- [ ] Midea AC responds to commands
|
||
- [ ] Status LEDs function
|
||
- [ ] Buttons work (Reset, Boot)
|
||
- [ ] OTA updates work
|
||
|
||
---
|
||
|
||
## Common Issues and Solutions
|
||
|
||
### Issue: ESP32 doesn't boot
|
||
- **Check**: Power supply voltage (should be 3.3V)
|
||
- **Check**: Decoupling capacitors
|
||
- **Check**: EN pin connection
|
||
|
||
### Issue: UART communication fails
|
||
- **Check**: Level shifter connections
|
||
- **Check**: 5V power to level shifter VCCB
|
||
- **Check**: TX/RX not swapped
|
||
|
||
### Issue: WiFi/BLE interference
|
||
- **Check**: Antenna clearance (15mm)
|
||
- **Check**: No ground plane under antenna
|
||
- **Check**: Component placement
|
||
|
||
### Issue: Power regulator overheating
|
||
- **Check**: Adequate copper for heat dissipation
|
||
- **Check**: Thermal vias under regulator
|
||
- **Check**: Input voltage (should be 5V)
|
||
|
||
---
|
||
|
||
## Next Steps
|
||
|
||
1. **Create Schematic** following the connections above
|
||
2. **Assign Footprints** to all components
|
||
3. **Generate Netlist** and import to PCB
|
||
4. **Place Components** according to guidelines
|
||
5. **Route Traces** following priorities
|
||
6. **Run DRC** and fix any issues
|
||
7. **Generate Gerbers** for manufacturing
|
||
8. **Order Prototype** (start with 5-10 boards)
|
||
|
||
---
|
||
|
||
**Ready to start?** Open KiCad and begin with the power supply section, then add ESP32, level shifter, and connectors.
|
||
|