Files
ESP_Midea/KICAD_GUIDE.md
2026-01-04 01:19:56 +02:00

411 lines
9.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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.