Initial KiCad project
This commit is contained in:
410
KICAD_GUIDE.md
Normal file
410
KICAD_GUIDE.md
Normal file
@@ -0,0 +1,410 @@
|
||||
# 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.
|
||||
|
||||
Reference in New Issue
Block a user