Initial KiCad project

This commit is contained in:
2026-01-04 01:19:56 +02:00
commit 8a26f501d8
45 changed files with 133173 additions and 0 deletions

441
DESIGN_SPEC.md Normal file
View File

@@ -0,0 +1,441 @@
# Custom PCB Design Specification: Midea AC Controller with BLE Beacon
## Recommended ESP Module
### 🏆 **Best Choice: ESP32-WROOM-32E or ESP32-WROOM-32**
**Why ESP32 (not ESP8266 or ESP32-C6)?**
-**Bluetooth BLE Support**: Required for beacon functionality
-**Midea Component Compatibility**: Works with Arduino framework (ESP32-C6 uses ESP-IDF, incompatible)
-**Excellent ESPHome Support**: Most mature and well-documented
-**Dual Core**: Can handle WiFi + BLE + Midea communication simultaneously
-**Multiple UARTs**: Can use hardware UART for Midea, software UART for debugging
-**Good Memory**: 520KB SRAM, sufficient for both features
### Module Options
| Module | Size | Flash | RAM | Price | Recommendation |
|--------|------|-------|-----|-------|----------------|
| **ESP32-WROOM-32E** | 18×25.5mm | 4MB | 520KB | $$ | ⭐ **Best for custom PCB** |
| **ESP32-WROOM-32** | 18×25.5mm | 4MB | 520KB | $$ | ⭐ Good alternative |
| **ESP32-MINI-1** | 13.2×16.6mm | 4MB | 520KB | $$ | Compact option |
| ESP32-C3 | 18×25.5mm | 4MB | 400KB | $ | RISC-V, less support |
| ESP32-C6 | 18×25.5mm | 4MB | 512KB | $$ | ESP-IDF only, no Midea |
**Recommended**: **ESP32-WROOM-32E** (most common, best support)
---
## PCB Design Requirements
### Core Components
1. **ESP32-WROOM-32E Module**
- 38 pins (19 per side)
- Requires 3.3V power
- Built-in antenna
2. **Logic Level Shifter (3.3V ↔ 5V)**
- **TXB0104** (4-channel) or **74LVC245** (8-channel)
- Required for Midea AC communication (5V logic)
- Bidirectional for TX/RX
3. **Power Supply**
- **AMS1117-3.3** or **LD1117-3.3** (3.3V regulator)
- Input: 5V (USB or external)
- Output: 3.3V @ 1A (ESP32 needs ~500mA peak)
- Decoupling capacitors: 10µF + 100nF
4. **USB-to-Serial (Optional but Recommended)**
- **CP2102** or **CH340C** for programming/debugging
- Allows OTA updates via USB
- Auto-reset circuit for easy flashing
5. **Midea AC Connector**
- **JST-XH 4-pin** or **USB Type-A** (depending on AC dongle)
- Pins: VCC (5V), GND, TX, RX
6. **Status LEDs**
- Power LED (3.3V)
- WiFi status LED
- BLE status LED (optional)
- Midea communication LED (optional)
7. **Reset Button**
- Reset ESP32
- Boot button (GPIO0) for flashing
### Pin Assignment
#### ESP32-WROOM-32E Pinout
```
Power:
VDD (Pin 1, 3, 14, 21, 22, 27, 28, 33, 42) → 3.3V
GND (Pin 2, 4, 13, 15, 20, 23, 26, 29, 34, 38, 40) → GND
Midea UART (via Level Shifter):
GPIO17 (TX) → Level Shifter LV1 → HV1 → AC Dongle RX
GPIO16 (RX) → Level Shifter LV2 → HV2 → AC Dongle TX
GND → AC Dongle GND
USB-to-Serial (if included):
GPIO1 (TX) → CP2102 RX
GPIO3 (RX) → CP2102 TX
GPIO0 (Boot) → CP2102 DTR (auto-reset)
Status LEDs:
GPIO2 → WiFi Status LED
GPIO4 → BLE Status LED (optional)
GPIO5 → Midea Communication LED (optional)
Buttons:
GPIO0 → Boot/Flash Button
EN → Reset Button
Bluetooth:
Built-in (no external pins needed)
```
### Schematic Design
#### Power Section
```
USB 5V → AMS1117-3.3 → 3.3V → ESP32 VDD
GND → Common Ground
```
#### Midea Communication Section
```
ESP32 GPIO17 (TX) → TXB0104 LV1 → HV1 → AC Dongle RX
ESP32 GPIO16 (RX) → TXB0104 LV2 → HV2 → AC Dongle TX
ESP32 GND → TXB0104 GND → AC Dongle GND
ESP32 3.3V → TXB0104 LV
External 5V → TXB0104 HV → AC Dongle VCC (if needed)
```
#### Level Shifter Configuration (TXB0104)
- **VCCA (LV)**: 3.3V from ESP32
- **VCCB (HV)**: 5V from USB or external
- **OE (Output Enable)**: Connect to 3.3V (always enabled)
- **A1 (LV1)**: ESP32 GPIO17 (TX)
- **B1 (HV1)**: AC Dongle RX
- **A2 (LV2)**: ESP32 GPIO16 (RX)
- **B2 (HV2)**: AC Dongle TX
---
## PCB Layout Considerations
### Layer Stackup (2-layer minimum, 4-layer recommended)
**2-Layer:**
- Top: Components, signal traces
- Bottom: Ground plane, power traces
**4-Layer (Recommended):**
- Top: Components, signal traces
- Layer 2: Ground plane
- Layer 3: Power plane (3.3V)
- Bottom: Ground plane, remaining signals
### Design Rules
1. **Power Traces**
- 3.3V: Minimum 0.5mm (20mil) width
- 5V: Minimum 0.5mm (20mil) width
- GND: Use ground planes where possible
2. **Signal Traces**
- UART: 0.2mm (8mil) minimum
- Keep UART traces short (<50mm)
- Avoid crossing power traces
3. **Component Placement**
- ESP32 module: Center of board
- Level shifter: Close to ESP32 and AC connector
- Power regulator: Near USB input
- Decoupling caps: Close to power pins (<5mm)
4. **Antenna Clearance**
- Keep 15mm clearance around ESP32 antenna area
- No ground plane under antenna
- No components or traces near antenna
5. **Thermal Considerations**
- Add thermal vias under power regulator
- Ensure adequate copper for heat dissipation
### Board Size Recommendation
- **Minimum**: 40mm × 50mm (fits ESP32 + essential components)
- **Recommended**: 50mm × 60mm (comfortable spacing, room for connectors)
- **With USB**: 50mm × 70mm (includes USB connector)
---
## Bill of Materials (BOM)
### Essential Components
| Component | Part Number | Quantity | Notes |
|-----------|-------------|----------|-------|
| ESP32 Module | ESP32-WROOM-32E | 1 | 4MB flash, built-in antenna |
| Level Shifter | TXB0104PWR | 1 | 4-channel, TSSOP-14 |
| 3.3V Regulator | AMS1117-3.3 | 1 | SOT-223 or SOT-89 |
| USB-to-Serial | CP2102N | 1 | Optional, QFN-24 |
| USB Connector | USB-B Micro | 1 | Optional, for programming |
| AC Connector | JST-XH 4-pin | 1 | Or USB Type-A female |
| Reset Button | Tactile Switch | 1 | 6×6mm |
| Boot Button | Tactile Switch | 1 | 6×6mm (optional) |
| Status LED | LED 0603 | 2-3 | Red/Green/Blue |
| Resistors | 10kΩ 0603 | 2 | Pull-up for buttons |
| Resistors | 220Ω 0603 | 2-3 | LED current limiting |
| Capacitors | 10µF 0805 | 2 | Power decoupling |
| Capacitors | 100nF 0603 | 5-10 | Decoupling |
### Optional Components
- **BLE Status LED**: Additional LED for Bluetooth status
- **Midea Status LED**: LED to show AC communication
- **Crystal**: 32.768kHz (if using RTC features)
- **EEPROM**: For storing settings (ESP32 has built-in)
---
## ESPHome Configuration Template
```yaml
esphome:
name: midea-ac-controller
friendly_name: Midea AC Controller
esp32:
board: esp32dev
framework:
type: arduino
# Enable logging (can use software serial or disable)
logger:
baud_rate: 115200 # Or 0 to disable
# Enable Home Assistant API
api:
encryption:
key: !secret api_encryption_key
ota:
- platform: esphome
password: !secret ota_password
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
min_auth_mode: WPA2
ap:
ssid: "Midea AC Controller"
password: !secret fallback_password
captive_portal:
# Status LEDs
binary_sensor:
- platform: status
name: "WiFi Status"
output:
- platform: gpio
pin: GPIO2
id: wifi_led
- platform: gpio
pin: GPIO4
id: ble_led
light:
- platform: monochromatic
output: wifi_led
name: "WiFi Status LED"
- platform: monochromatic
output: ble_led
name: "BLE Status LED"
# UART for Midea AC communication
uart:
id: uart_midea
tx_pin: GPIO17
rx_pin: GPIO16
baud_rate: 9600
stop_bits: 1
data_bits: 8
parity: NONE
# Midea AC Control
climate:
- platform: midea
name: "AC Controller"
uart_id: uart_midea
autoconf: true
beeper: false
period: 2s
timeout: 5s
num_attempts: 3
supported_modes:
- COOL
- HEAT
- DRY
- FAN_ONLY
supported_swing_modes:
- VERTICAL
- HORIZONTAL
- BOTH
supported_presets:
- ECO
- BOOST
- SLEEP
visual:
min_temperature: 17 °C
max_temperature: 30 °C
temperature_step: 0.5 °C
# Bluetooth Low Energy Beacon
esp32_ble_beacon:
type: iBeacon
uuid: 'c29ce823-e67a-4e71-bff2-abaa32e77a98' # Change to unique UUID
major: 1
minor: 1
tx_power: 0dBm
# Beeper control switch
switch:
- platform: template
name: "AC Beeper"
icon: "mdi:volume-source"
optimistic: true
turn_on_action:
- midea_ac.beeper_on:
turn_off_action:
- midea_ac.beeper_off:
```
---
## Design Checklist
### Schematic Design
- [ ] ESP32-WROOM-32E module placed
- [ ] Power supply circuit (5V 3.3V)
- [ ] Logic level shifter (TXB0104) connected
- [ ] Midea AC connector (JST-XH or USB)
- [ ] USB-to-Serial (optional but recommended)
- [ ] Status LEDs with current limiting resistors
- [ ] Reset and Boot buttons
- [ ] Decoupling capacitors (10µF + 100nF per power pin)
- [ ] Pull-up resistors for buttons
### PCB Layout
- [ ] ESP32 antenna clearance (15mm no-ground zone)
- [ ] Power traces adequate width (0.5mm minimum)
- [ ] Ground planes on bottom layer
- [ ] UART traces kept short and away from power
- [ ] Decoupling caps close to power pins
- [ ] Thermal vias under regulator
- [ ] Component labels and reference designators
- [ ] Test points for debugging
### Testing
- [ ] Power supply verification (3.3V stable)
- [ ] ESP32 boot and WiFi connection
- [ ] UART communication test
- [ ] Logic level shifter functionality (3.3V 5V)
- [ ] Midea AC communication
- [ ] BLE beacon transmission
- [ ] OTA update capability
---
## Manufacturing Notes
### PCB Specifications
- **Layers**: 2-layer minimum, 4-layer recommended
- **Thickness**: 1.6mm standard
- **Copper Weight**: 1oz (35µm)
- **Surface Finish**: HASL or ENIG (ENIG for better quality)
- **Solder Mask**: Green (standard) or custom color
- **Silkscreen**: White or black
### Assembly
- **Component Package**: 0603 or 0805 (hand-solderable)
- **ESP32 Module**: Can be hand-soldered or reflow
- **Level Shifter**: TSSOP-14 (requires careful soldering or stencil)
### Recommended PCB Manufacturers
- **JLCPCB**: Good for prototypes, low cost
- **PCBWay**: Good quality, reasonable price
- **OSHPark**: US-based, good for small batches
---
## Cost Estimation
### PCB Only (10 pieces)
- 2-layer 50×60mm: ~$5-10
- 4-layer 50×60mm: ~$20-30
### Components (per unit)
- ESP32-WROOM-32E: $2-3
- TXB0104: $0.50
- AMS1117-3.3: $0.20
- CP2102N: $1-2 (optional)
- Other components: $1-2
- **Total per unit**: ~$5-8
### Total Cost (10 units)
- PCB: $10-30
- Components: $50-80
- **Total**: ~$60-110 for 10 units
---
## Next Steps
1. **Create KiCad Schematic**
- Add ESP32-WROOM-32E module
- Design power supply
- Add level shifter circuit
- Connect all components
2. **Design PCB Layout**
- Place components
- Route traces
- Add ground planes
- Verify design rules
3. **Order Prototype**
- Generate Gerber files
- Order PCBs (start with 5-10 pieces)
- Order components
- Assemble and test
4. **Test and Iterate**
- Test power supply
- Test ESP32 functionality
- Test Midea communication
- Test BLE beacon
- Fix any issues
---
## References
- [ESP32-WROOM-32E Datasheet](https://www.espressif.com/sites/default/files/documentation/esp32-wroom-32e_esp32-wroom-32ue_datasheet_en.pdf)
- [TXB0104 Datasheet](https://www.ti.com/lit/ds/symlink/txb0104.pdf)
- [ESPHome Midea Component](https://esphome.io/components/climate/midea/)
- [ESPHome BLE Beacon](https://esphome.io/components/esp32_ble_beacon.html)
- [KiCad ESP32 Footprints](https://github.com/KiCad/kicad-footprints)
---
**Last Updated**: December 2025
**Design Status**: Specification Complete - Ready for Schematic Design

410
KICAD_GUIDE.md Normal file
View 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.

View File

@@ -0,0 +1,109 @@
# 2x4 Programming Header Pinout
## Header J2 - 2x4 Programming Header (8 Pins Total)
This is a standard 2-row, 4-column header (2.54mm pitch) commonly used for programming headers.
### Physical Layout
```
Top View:
┌─────────────┐
│ 1 2 3 4 │ ← Top row
│ 5 6 7 8 │ ← Bottom row
└─────────────┘
```
**Pin Numbering:**
- Top row (left to right): Pins 1, 2, 3, 4
- Bottom row (left to right): Pins 5, 6, 7, 8
### Pin Assignment
| Pin | Signal | ESP32 Connection | Description |
|-----|--------|------------------|-------------|
| **1** | **+3V3** | +3V3 Power Rail | Optional - Power ESP32 from programmer |
| **2** | **GND** | GND | Ground reference (required) |
| **3** | **UART_TX** | GPIO1 (UART0 TX) | ESP32 transmits to programmer |
| **4** | **UART_RX** | GPIO3 (UART0 RX) | ESP32 receives from programmer |
| **5** | **DTR** | GPIO0 | Data Terminal Ready (auto-reset) |
| **6** | **RTS** | EN | Request To Send (auto-reset) |
| **7** | **NC** | - | Not connected (spare) |
| **8** | **NC** | - | Not connected (spare) |
### Connection to USB-to-Serial Adapter
| USB-to-Serial Pin | J2 Pin | Signal | Notes |
|-------------------|--------|--------|-------|
| VCC (3.3V) | Pin 1 | +3V3 | Optional - only if powering ESP32 from adapter |
| GND | Pin 2 | GND | **Required** - always connect |
| RX | Pin 3 | UART_TX | Adapter RX receives from ESP32 TX |
| TX | Pin 4 | UART_RX | Adapter TX sends to ESP32 RX |
| DTR | Pin 5 | DTR | Auto-reset control |
| RTS | Pin 6 | RTS | Auto-reset control |
| - | Pin 7 | NC | Spare (not used) |
| - | Pin 8 | NC | Spare (not used) |
**Important Notes:**
- **RX/TX are swapped** - Adapter RX connects to ESP32 TX (Pin 3), and vice versa
- **Do NOT connect VCC** if ESP32 is already powered from J1 (JST connector)
- **Always connect GND** - critical for proper operation
- **DTR and RTS** enable automatic reset (no button pressing needed)
### Advantages of 2x4 Header
1. **Standard layout** - Common 2.54mm pitch header format
2. **More stable** - 2-row design is more mechanically stable
3. **Spare pins** - Pins 7 and 8 available for future expansion
4. **Easy to connect** - Standard programming cable format
5. **Prevents wrong orientation** - 2-row design makes it harder to connect backwards
### KiCad Symbol
**Library:** `Connector_PinHeader_2.54mm`
**Symbol:** `PinHeader_2x04_P2.54mm_Vertical`
### Optional Pull-up Resistors
For maximum reliability, add pull-up resistors:
- **R5**: 10kΩ between J2 Pin 5 (DTR) and +3V3
- **R6**: 10kΩ between J2 Pin 6 (RTS) and +3V3
Most USB-to-Serial adapters have built-in pull-ups, but adding them on the board ensures reliable operation.
### Flashing Process
1. Connect USB-to-Serial adapter to J2 header (pins 1-6)
2. Power the board (via J1 JST connector or J2 Pin 1)
3. Use `esptool` or ESPHome to flash:
```bash
esptool.py --port /dev/ttyUSB0 write_flash 0x0 firmware.bin
```
4. DTR/RTS signals automatically put ESP32 into boot mode
5. No button pressing required!
### Future Expansion
Pins 7 and 8 are spare and can be used for:
- Additional UART (if needed)
- I2C (SDA/SCL) for debugging
- SPI (MISO/MOSI) for additional peripherals
- GPIO monitoring
- Or leave as NC (Not Connected)
---
## Summary
**2x4 Header Layout:**
```
Top Row: VCC GND TX RX
Bottom Row: DTR RTS NC NC
```
**6 pins used** (1-6) for programming
**2 pins spare** (7-8) for future use
This is a standard, stable, and convenient programming header configuration!

View File

@@ -0,0 +1,52 @@
# AC Connection Guide
## JST-XH Connector on PCB (J1)
The PCB includes a **JST-XH 4-pin connector (J1)** for connecting to your AC unit.
### Connector Specifications
- **Type:** JST-XH (2.5mm pitch)
- **Pins:** 4-pin
- **Part Number:** JST-XH-B4B-XH-A (female connector on PCB)
- **Library:** `Connector_JST:JST_XH_B4B-XH-A`
### Pinout (J1 on PCB)
| Pin | Signal | Description |
|-----|--------|-------------|
| 1 | +5V | **Power input for PCB** - Powers the entire board |
| 2 | AC_RX | Receive line from AC (5V logic) |
| 3 | AC_TX | Transmit line to AC (5V logic) |
| 4 | GND | Ground reference |
### Connection Method
1. **On PCB:** J1 connector is mounted on the PCB
2. **Cable:** Use a cable with JST-XH connector on one end
3. **AC Unit:** Connect the other end of the cable to your AC unit's communication port
### Cable Assembly
You'll need to create or purchase a cable with:
- **One end:** JST-XH male connector (matches J1 on PCB)
- **Other end:** Connector that matches your AC unit's port
**Typical cable:**
- JST-XH connector → AC unit's communication port
- 4 wires: +5V (optional), AC_RX, AC_TX, GND
### Wiring Notes
- **+5V (Pin 1)** is the **power input for the PCB** - This powers the entire board (ESP32, regulator, etc.)
- **AC_RX** and **AC_TX** are 5V logic levels (shifted from 3.3V by TXB0104PWR)
- **GND** must be connected for proper communication and power
- Ensure proper wire gauge for power delivery (recommend 22AWG or larger for +5V and GND)
- The AC unit or external power supply must provide 5V DC to Pin 1
### Safety
- Ensure AC unit is powered off when connecting/disconnecting
- Verify pinout matches your AC unit's requirements
- Double-check GND connection before powering on

View File

@@ -0,0 +1,154 @@
# Capacitor Symbol Types in KiCad
## For This Project: Use **UNPOLARIZED** Symbols
All capacitors in this design are **ceramic capacitors**, which are **unpolarized**.
---
## Capacitor Types in This Design
### C1, C2: 10µF Capacitors
- **Type:** Ceramic (X7R or X5R)
- **Symbol:** **Unpolarized** (non-polar)
- **KiCad Symbol:** `Device:C` (standard capacitor symbol)
- **Package:** 0805
### C3, C4, C5-C13: 100nF Capacitors
- **Type:** Ceramic (X7R)
- **Symbol:** **Unpolarized** (non-polar)
- **KiCad Symbol:** `Device:C` (standard capacitor symbol)
- **Package:** 0805
---
## Polarized vs Unpolarized Capacitors
### Unpolarized Capacitors (Ceramic)
- **Symbol:** Two parallel lines (no + or - marking)
- **KiCad Symbol:** `Device:C`
- **Types:** Ceramic, Film, Mica
- **Can be connected either way** - no polarity
- **Used in this project:** All capacitors (C1-C13)
### Polarized Capacitors (Electrolytic)
- **Symbol:** One curved line (negative) and one straight line (positive)
- **KiCad Symbol:** `Device:CP` (polarized capacitor)
- **Types:** Aluminum electrolytic, Tantalum
- **Must be connected correctly** - has + and - terminals
- **NOT used in this project**
---
## How to Add Capacitors in KiCad
### Step 1: Add Symbol
1. Press `A` (Add Symbol)
2. Search for: `Device:C` (unpolarized capacitor)
3. Place on schematic
### Step 2: Set Value
1. Press `E` (Edit) on the capacitor
2. Set **Value** field:
- C1, C2: `10µF` or `10uF`
- C3-C13: `100nF` or `0.1µF`
### Step 3: Set Reference
- KiCad will auto-assign references (C1, C2, etc.) when you annotate
---
## Visual Guide
### Unpolarized Capacitor Symbol (Use This)
```
| |
| |
| |
```
Two parallel lines - **no polarity marking**
### Polarized Capacitor Symbol (Don't Use)
```
| |
| |
+ |
```
One curved line (negative) - **has polarity**
---
## Why Ceramic Capacitors?
**Advantages:**
- ✅ Unpolarized (no orientation issues)
- ✅ Small size (0805 package)
- ✅ Low cost
- ✅ Good for decoupling and filtering
- ✅ No leakage current issues
- ✅ Long lifespan
**For 10µF capacitors:**
- Ceramic capacitors in 0805 package are available up to 22µF
- X7R or X5R dielectric provides good stability
- 16V rating is sufficient for 5V input
**For 100nF capacitors:**
- Standard ceramic capacitor value
- Excellent for high-frequency decoupling
- Very common and inexpensive
---
## KiCad Symbol Library
**Use this symbol:**
- **Library:** `Device`
- **Symbol Name:** `C` (Capacitor)
- **Footprint:** `Capacitor_SMD:C_0805_2012Metric`
**Do NOT use:**
- `Device:CP` (Polarized Capacitor) - This is for electrolytic capacitors
---
## Summary
| Capacitor | Value | Type | Symbol | KiCad Symbol |
|-----------|-------|------|--------|--------------|
| C1, C2 | 10µF | Ceramic | Unpolarized | `Device:C` |
| C3, C4 | 100nF | Ceramic | Unpolarized | `Device:C` |
| C5-C13 | 100nF | Ceramic | Unpolarized | `Device:C` |
**All capacitors use the same unpolarized symbol: `Device:C`**
---
## Common Mistakes to Avoid
**Don't use:** `Device:CP` (polarized capacitor symbol)
- This is for electrolytic capacitors
- Has polarity markings (+ and -)
- Not needed for ceramic capacitors
**Do use:** `Device:C` (unpolarized capacitor symbol)
- Standard capacitor symbol
- No polarity markings
- Correct for all capacitors in this design
---
## When Would You Use Polarized Capacitors?
Polarized capacitors (electrolytic) are typically used for:
- Large capacitance values (>100µF)
- Power supply filtering
- When you need very high capacitance in a small volume
**For this project:** Ceramic capacitors are sufficient and preferred because:
- They're smaller
- They're cheaper
- They don't have polarity issues
- They work well for decoupling and filtering

View File

@@ -0,0 +1,328 @@
# Component Package Size Recommendations
This guide provides recommended package sizes for all components in the Midea AC Controller PCB design.
## General Recommendations
**For Hand Assembly (Prototyping):**
- Use **0805** (2.0mm × 1.25mm) or larger for passive components
- Easier to solder manually
- Better for low-volume production
**For Automated Assembly (Production):**
- Use **0603** (1.6mm × 0.8mm) or **0402** (1.0mm × 0.5mm)
- Smaller board size
- Lower cost in volume
- Requires pick-and-place machine
**Recommended for this project:** **0805** (good balance of size, cost, and ease of assembly)
---
## Capacitors
### Power Supply Capacitors (C1, C2: 10µF)
| Component | Value | Recommended Package | Alternative | Notes |
|-----------|-------|---------------------|-------------|-------|
| C1, C2 | 10µF | **0805** (2.0×1.25mm) | 0603, 1206 | Ceramic, X7R or X5R, 16V or higher |
| | | **Footprint:** `Capacitor_SMD:C_0805_2012Metric` | | |
**Part Number Examples:**
- **0805:** CL21A106KAYNNNE (Samsung), GRM21BR71C106KE15L (Murata)
- **0603:** CL10B106KB8NNNC (Samsung) - smaller but harder to hand solder
- **1206:** CL31A106KAHNNNE (Samsung) - larger, easier to hand solder
**Voltage Rating:** 16V minimum (for 5V input with margin)
---
### Decoupling Capacitors (C3, C4, C5-C13: 100nF)
| Component | Value | Recommended Package | Alternative | Notes |
|-----------|-------|---------------------|-------------|-------|
| C3, C4, C5-C13 | 100nF (0.1µF) | **0805** (2.0×1.25mm) | 0603, 0402 | Ceramic, X7R, 16V or higher |
| | | **Footprint:** `Capacitor_SMD:C_0805_2012Metric` | | |
**Part Number Examples:**
- **0805:** CL21B104KBCNNNC (Samsung), GRM21BR71H104KA01L (Murata)
- **0603:** CL10B104KA8NNNC (Samsung)
- **0402:** CL05B104KA5NNNC (Samsung) - very small, difficult to hand solder
**Voltage Rating:** 16V minimum
**Recommendation:** Use **0805** for all decoupling capacitors - standard size, easy to source, good for hand assembly.
---
## Resistors
### LED Current Limiting Resistors (R1, R2: 220Ω)
| Component | Value | Recommended Package | Alternative | Notes |
|-----------|-------|---------------------|-------------|-------|
| R1, R2 | 220Ω | **0805** (2.0×1.25mm) | 0603, 1206 | 1/8W or 1/10W rating |
| | | **Footprint:** `Resistor_SMD:R_0805_2012Metric` | | |
**Part Number Examples:**
- **0805:** RC0805FR-07220RL (Yageo), ERJ-6GEYJ221V (Panasonic)
- **0603:** RC0603FR-07220RL (Yageo)
- **1206:** RC1206FR-07220RL (Yageo) - larger, easier to hand solder
**Power Rating:** 1/8W (0.125W) or 1/10W (0.1W) is sufficient
- At 3.3V: P = V²/R = 3.3²/220 = 0.049W (well within rating)
**Tolerance:** ±5% (E24 series) or ±1% (E96 series)
---
### Pull-up Resistors (R3, R4, R5, R6: 10kΩ)
| Component | Value | Recommended Package | Alternative | Notes |
|-----------|-------|---------------------|-------------|-------|
| R3, R4, R5, R6 | 10kΩ | **0805** (2.0×1.25mm) | 0603, 1206 | 1/8W or 1/10W rating |
| | | **Footprint:** `Resistor_SMD:R_0805_2012Metric` | | |
**Part Number Examples:**
- **0805:** RC0805FR-0710KL (Yageo), ERJ-6GEYJ103V (Panasonic)
- **0603:** RC0603FR-0710KL (Yageo)
- **1206:** RC1206FR-0710KL (Yageo)
**Power Rating:** 1/8W (0.125W) or 1/10W (0.1W) is sufficient
- At 3.3V: P = V²/R = 3.3²/10000 = 0.001W (very low power)
**Tolerance:** ±5% (E24 series) is sufficient for pull-ups
---
## LEDs
| Component | Type | Recommended Package | Alternative | Notes |
|-----------|------|---------------------|-------------|-------|
| LED1, LED2 | LED | **0805** (2.0×1.25mm) | 0603, 1206 | Red or Green, 20mA forward current |
| | | **Footprint:** `LED_SMD:LED_0805_2012Metric` | | |
**Part Number Examples:**
- **0805:**
- Red: LTST-C170KFKT (Lite-On), L-7113HD (Kingbright)
- Green: LTST-C170KGKT (Lite-On), L-7113GD (Kingbright)
- **0603:** Smaller, harder to see and hand solder
- **1206:** Larger, brighter, easier to see
**Specifications:**
- Forward Voltage: 2.0-2.2V (Red), 3.0-3.2V (Green)
- Forward Current: 20mA typical
- With 220Ω resistor at 3.3V: I = (3.3V - 2.0V) / 220Ω = 5.9mA (safe, visible)
**Recommendation:** Use **0805** - good visibility, easy to solder, standard size.
---
## Buttons (Switches)
| Component | Type | Recommended Package | Alternative | Notes |
|-----------|------|---------------------|-------------|-------|
| SW1, SW2 | Tactile Switch | **6×6mm** | 4×4mm, 12×12mm | Through-hole or SMD |
| | | **Footprint:** `Button_Switch_SMD:SW_SPST_Tactile_6.0x6.0mm` | | |
**Part Number Examples:**
- **6×6mm SMD:** B3SN-3112P (Omron), KMR2 (C&K)
- **6×6mm THT:** B3F-4055 (Omron), KMR2 (C&K)
- **4×4mm:** Smaller, harder to press
- **12×12mm:** Larger, easier to press
**Specifications:**
- Actuation Force: 2.55N (260gf) typical
- Travel: 0.25mm typical
- Life: 100,000+ cycles
**Recommendation:** Use **6×6mm** - good size for finger pressing, common footprint.
---
## Voltage Regulator (U1: AMS1117-3.3)
| Component | Type | Package | Footprint | Notes |
|-----------|------|--------|-----------|-------|
| U1 | AMS1117-3.3 | **SOT-223** | `Package_TO_SOT_SMD:SOT-223` | 1A LDO regulator |
**Package Dimensions:**
- Body: 6.5mm × 3.5mm
- Height: 1.6mm
- Lead pitch: 2.3mm
**Part Number Examples:**
- AMS1117-3.3 (Advanced Monolithic Systems)
- LM1117-3.3 (Texas Instruments) - pin-compatible alternative
**Thermal Considerations:**
- Maximum power dissipation: ~1W (depends on heatsinking)
- At 5V input, 3.3V output, 500mA: P = (5-3.3) × 0.5 = 0.85W
- The large tab helps with heat dissipation
**Recommendation:** SOT-223 is standard and appropriate for this application.
---
## Level Shifter (U3: TXB0104PWR)
| Component | Type | Package | Footprint | Notes |
|-----------|------|--------|-----------|-------|
| U3 | TXB0104PWR | **TSSOP-14** | `Package_SO:TSSOP-14_4.4x5mm_P0.65mm` | 4-channel level shifter |
**Package Dimensions:**
- Body: 5.0mm × 4.4mm
- Height: 1.2mm
- Lead pitch: 0.65mm (fine pitch)
**Part Number:**
- TXB0104PWR (Texas Instruments)
**Assembly Note:**
- Fine pitch (0.65mm) requires careful soldering
- Consider using hot air rework station or reflow oven
- Can be hand soldered with fine tip and flux
**Recommendation:** TSSOP-14 is the standard package for this part.
---
## ESP32 Module (U2: ESP32-WROOM-32E)
| Component | Type | Package | Footprint | Notes |
|-----------|------|--------|-----------|-------|
| U2 | ESP32-WROOM-32E | **38-pin QFN** | Custom footprint required | ESP32 module |
**Package Dimensions:**
- Body: 18mm × 25.5mm × 3.1mm
- Pin pitch: 1.27mm (0.05")
- 38 pins total
**Footprint:**
- You'll need to create a custom footprint or use an existing ESP32-WROOM footprint
- Common footprint libraries may have this
**Assembly Note:**
- Requires reflow soldering (hot air or reflow oven)
- Can be hand soldered with hot air rework station
- Bottom pad needs to be soldered for proper thermal and electrical connection
**Recommendation:** Use the official Espressif footprint or create custom footprint based on datasheet.
---
## Connectors
### J1: JST-XH Connector (4-pin)
| Component | Type | Package | Footprint | Notes |
|-----------|------|--------|-----------|-------|
| J1 | JST-XH 4-pin | **JST-XH-B4B-XH-A** | `Connector_JST:JST_XH_B4B-XH-A` | 2.5mm pitch |
**Package Dimensions:**
- Pitch: 2.5mm
- Height: ~8mm
- Through-hole mounting
**Part Number:**
- B4B-XH-A (JST) - Female connector (receptacle on PCB)
- Matching cable connector: B4B-XH-A-1 (with cable)
**Recommendation:** Standard JST-XH footprint, through-hole for mechanical strength.
---
### J2: Programming Header (6-pin)
| Component | Type | Package | Footprint | Notes |
|-----------|------|--------|-----------|-------|
| J2 | Pin Header | **2.54mm pitch** | `Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_Vertical` | Standard 0.1" pitch |
**Package Dimensions:**
- Pitch: 2.54mm (0.1")
- Height: 8.5mm typical (can vary)
- Through-hole mounting
**Part Number Examples:**
- Generic pin headers available from many manufacturers
- Can use straight or right-angle headers
- Consider using shrouded header for keyed connection
**Recommendation:** Standard 2.54mm pitch header - very common, easy to source.
---
## Summary Table
| Component Type | Recommended Package | Size | Assembly Difficulty |
|----------------|---------------------|------|---------------------|
| **Capacitors (10µF)** | 0805 | 2.0×1.25mm | Easy |
| **Capacitors (100nF)** | 0805 | 2.0×1.25mm | Easy |
| **Resistors (all)** | 0805 | 2.0×1.25mm | Easy |
| **LEDs** | 0805 | 2.0×1.25mm | Easy |
| **Buttons** | 6×6mm | 6×6mm | Easy |
| **AMS1117-3.3** | SOT-223 | 6.5×3.5mm | Medium |
| **TXB0104PWR** | TSSOP-14 | 5.0×4.4mm | Medium (fine pitch) |
| **ESP32-WROOM-32E** | QFN-38 | 18×25.5mm | Hard (requires reflow) |
| **JST-XH Connector** | Through-hole | 2.5mm pitch | Easy |
| **Programming Header** | Through-hole | 2.54mm pitch | Easy |
---
## Manufacturing Considerations
### For Hand Assembly (Prototyping):
- Use **0805** for all passives (capacitors, resistors)
- Use **through-hole** connectors where possible
- Use **6×6mm** buttons
- ESP32 may require hot air rework station
### For Automated Assembly (Production):
- Can use **0603** or **0402** for passives (smaller, cheaper)
- All SMD components work with pick-and-place
- Reduces board size
- Lower cost in volume
### Recommended for This Project:
- **0805** for all passive components - good balance
- Standard through-hole connectors
- Standard SMD packages for ICs
---
## KiCad Footprint Library References
When assigning footprints in KiCad, use these library paths:
- **Capacitors (0805):** `Capacitor_SMD:C_0805_2012Metric`
- **Resistors (0805):** `Resistor_SMD:R_0805_2012Metric`
- **LEDs (0805):** `LED_SMD:LED_0805_2012Metric`
- **Buttons (6×6mm):** `Button_Switch_SMD:SW_SPST_Tactile_6.0x6.0mm`
- **AMS1117-3.3:** `Package_TO_SOT_SMD:SOT-223`
- **TXB0104PWR:** `Package_SO:TSSOP-14_4.4x5mm_P0.65mm`
- **JST-XH:** `Connector_JST:JST_XH_B4B-XH-A`
- **Programming Header:** `Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_Vertical`
---
## Cost Considerations
**Package Size vs Cost (typical, per 1000 units):**
- **0402:** Lowest cost, smallest size
- **0603:** Low cost, small size
- **0805:** Moderate cost, good size (recommended)
- **1206:** Higher cost, larger size
**For this project:** 0805 is the sweet spot - not too expensive, not too hard to assemble.
---
## Availability
All recommended packages are:
- **Widely available** from major distributors (Digi-Key, Mouser, LCSC, etc.)
- **Standard sizes** used across the industry
- **Well-documented** with datasheets and application notes
- **Compatible** with standard PCB manufacturing processes

View File

@@ -0,0 +1,8 @@
(kicad_sch
(version 20250114)
(generator "eeschema")
(generator_version "9.0")
(uuid "2594e720-7126-4413-ba08-05b40c9be845")
(paper "A4")
(lib_symbols)
)

View File

@@ -0,0 +1,180 @@
# ESP32-WROOM-32E Datasheet Reference
Based on the official ESP32-WROOM-32E datasheet: [ESP32-WROOM-32E Datasheet](https://documentation.espressif.com/esp32-wroom-32e_esp32-wroom-32ue_datasheet_en.pdf)
## Key Specifications
### Power Requirements
- **Operating Voltage:** 3.0V to 3.6V (typical 3.3V)
- **Operating Current:**
- Active mode: ~80-240mA (depends on CPU frequency and WiFi usage)
- Light sleep: ~0.8mA
- Deep sleep: ~10µA
- **Peak Current:** Up to 500mA during WiFi transmission
- **Power Supply:** Must be stable and well-regulated
### Pin Configuration
- **38 pins total** (as per our symbol)
- **VDD pins:** Multiple (1, 3, 14, 21, 22, 27, 28, 33, 42)
- **GND pins:** Multiple (2, 4, 13, 15, 20, 23, 26, 29, 34, 38, 40)
- **EN pin:** Enable pin (active high)
- **GPIO pins:** Various functions
### Critical Design Requirements
#### 1. Power Supply Decoupling
**Per ESP32 Datasheet:**
- **Each VDD pin requires a decoupling capacitor**
- **Recommended:** 100nF ceramic capacitor per VDD pin
- **Additional:** 10µF capacitor near the module (bulk capacitor)
- **Placement:** As close as possible to VDD pins
**Our Design:**
- ✅ C5-C13: 100nF capacitors for each VDD pin (9 capacitors)
- ✅ C2: 10µF output capacitor from regulator (bulk capacitor)
- ✅ C4: 100nF output decoupling from regulator
**Verification:** Our design matches datasheet requirements.
#### 2. Enable (EN) Pin
- **EN pin:** Must be pulled HIGH for normal operation
- **Pull-up resistor:** 10kΩ recommended
- **Reset button:** Can be connected to EN pin (active low reset)
**Our Design:**
- ✅ R3: 10kΩ pull-up resistor on EN pin
- ✅ SW1: Reset button connected to EN pin
- ✅ Correct configuration
#### 3. Boot Mode (GPIO0)
- **GPIO0:** Boot mode selection
- **HIGH (3.3V):** Normal boot (run from flash)
- **LOW (GND):** Download mode (for flashing)
- **Pull-up resistor:** 10kΩ recommended
**Our Design:**
- ✅ R4: 10kΩ pull-up resistor on GPIO0
- ✅ SW2: Boot button connected to GPIO0
- ✅ Correct configuration
#### 4. Crystal Oscillator
- **External crystal:** 40MHz (internal to module)
- **No external components needed** (handled by module)
**Our Design:**
- ✅ No action needed - crystal is internal to ESP32-WROOM-32E module
#### 5. Flash Memory
- **Flash:** Internal to ESP32-WROOM-32E module
- **No external flash needed**
**Our Design:**
- ✅ No action needed - flash is internal
#### 6. Antenna
- **WiFi/Bluetooth antenna:** Internal PCB antenna on ESP32-WROOM-32E
- **No external antenna connector needed** (unless using ESP32-WROOM-32UE variant)
**Our Design:**
- ✅ Using ESP32-WROOM-32E (with internal antenna)
- ✅ No external antenna needed
### Power Supply Design Verification
#### Regulator Requirements
**ESP32 Requirements:**
- Input: 3.0V to 3.6V (3.3V typical)
- Current: Up to 500mA peak
- Ripple: <50mV recommended
**Our Regulator (AMS1117-3.3):**
- Output: 3.3V fixed
- Max current: 1A (sufficient for ESP32)
- Input: 5V from J1
- Output capacitors: 10µF + 100nF (adequate)
**Verification:** AMS1117-3.3 meets ESP32 requirements
#### Decoupling Capacitor Placement
**Datasheet Recommendation:**
- 100nF ceramic capacitor at each VDD pin
- Place as close as possible to the pin
- Use short, wide traces
**Our Design:**
- C5-C13: 100nF capacitors for 9 VDD pins
- Placement: Should be close to VDD pins on PCB layout
- Package: 0805 (good for placement near pins)
**Verification:** Correct number and value of capacitors
### GPIO Pin Usage in Our Design
| GPIO | Function | Usage in Design |
|------|----------|----------------|
| GPIO0 | Boot mode | SW2 (boot button), R4 (pull-up) |
| GPIO1 | UART TX | Programming header (J2 Pin 3) |
| GPIO2 | LED control | LED1 (WiFi status) |
| GPIO3 | UART RX | Programming header (J2 Pin 4) |
| GPIO4 | LED control | LED2 (BLE status) |
| GPIO16 | UART RX | Level shifter (U3 Pin 2) - AC communication |
| GPIO17 | UART TX | Level shifter (U3 Pin 1) - AC communication |
| EN | Enable | SW1 (reset button), R3 (pull-up) |
### Thermal Considerations
- **Operating Temperature:** -40°C to +85°C
- **Power Dissipation:** Up to ~1.65W (3.3V × 500mA)
- **Heat sinking:** Not typically required for normal operation
- **PCB layout:** Ensure good ground plane for heat dissipation
### RF Performance
- **WiFi:** 2.4GHz (802.11 b/g/n)
- **Bluetooth:** BLE 4.2
- **Antenna:** Internal PCB antenna (ESP32-WROOM-32E)
- **Range:** ~100m (WiFi), ~50m (BLE) - depends on environment
### Design Checklist
- [x] Power supply: 3.3V regulated (AMS1117-3.3)
- [x] Decoupling: 100nF at each VDD pin (C5-C13)
- [x] Bulk capacitor: 10µF near module (C2)
- [x] EN pin: Pull-up resistor (R3) and reset button (SW1)
- [x] GPIO0: Pull-up resistor (R4) and boot button (SW2)
- [x] Ground plane: Should be implemented in PCB layout
- [x] Power traces: Adequate width for current (500mA peak)
### PCB Layout Recommendations
1. **Place decoupling capacitors (C5-C13) as close as possible to VDD pins**
2. **Use wide power traces** (minimum 0.5mm for 500mA)
3. **Implement ground plane** on one or both layers
4. **Keep digital and analog sections separated**
5. **Route RF section carefully** (though antenna is internal)
6. **Place bulk capacitor (C2) near ESP32 module**
### Additional Notes
- **Flash Programming:** Via UART (GPIO1/GPIO3) or OTA
- **Reset:** Can be triggered via EN pin (active low) or power cycle
- **Boot Mode:** Controlled by GPIO0 state at reset
- **Deep Sleep:** Can reduce power to ~10µA (useful for battery applications)
### References
- **Official Datasheet:** [ESP32-WROOM-32E Datasheet](https://documentation.espressif.com/esp32-wroom-32e_esp32-wroom-32ue_datasheet_en.pdf)
- **Espressif Documentation:** https://www.espressif.com/en/products/modules/esp32-wroom-32e
- **Hardware Design Guidelines:** Available in datasheet section 9

View File

@@ -0,0 +1,176 @@
# Finding Symbols in KiCad
## TXB0104PWR Symbol Location
The TXB0104PWR symbol is in your **custom library**: `Midea_ESP`
### How to Add TXB0104PWR in KiCad:
1. **Press `A`** (Add Symbol) or click the "Place Symbol" tool
2. **In the symbol chooser**, type: `Midea_ESP:TXB0104PWR`
- Or search for: `TXB0104`
- Or browse libraries and look for `Midea_ESP` library
3. **Select the symbol** and click OK
4. **Place it on the schematic**
### Full Symbol Path:
```
Library: Midea_ESP
Symbol Name: TXB0104PWR
Full Path: Midea_ESP:TXB0104PWR
```
---
## All Custom Symbols in Midea_ESP Library
Your custom library (`libs/Midea_AC_Controller.kicad_sym`) contains:
| Symbol Name | Full Path | Component |
|-------------|-----------|-----------|
| ESP32-WROOM-32E | `Midea_ESP:ESP32-WROOM-32E` | ESP32 module |
| TXB0104PWR | `Midea_ESP:TXB0104PWR` | Level shifter |
| AMS1117-3.3 | `Midea_ESP:AMS1117-3.3` | Voltage regulator |
| CP2102N | `Midea_ESP:CP2102N` | USB-to-Serial (not used) |
---
## If the Symbol Doesn't Appear
### Check 1: Library is Added to Project
1. In KiCad, go to **Preferences → Manage Symbol Libraries**
2. Check if `Midea_ESP` library is listed
3. If not, add it:
- Click **Add** (or **+**)
- **Type:** KiCad
- **Library Path:** Browse to `libs/Midea_AC_Controller.kicad_sym`
- **Library Name:** `Midea_ESP`
### Check 2: Library File Location
The library file should be at:
```
/home/nearxos/Projects/ESPHome/PCB_Board/Midea_ESP/libs/Midea_AC_Controller.kicad_sym
```
### Check 3: Symbol Name in Library
Open the library file and verify the symbol name is exactly:
```
(symbol "TXB0104PWR" ...
```
---
## Alternative: Search Methods in KiCad
### Method 1: Direct Search
1. Press `A` (Add Symbol)
2. In the search box, type: `TXB0104`
3. KiCad will search all loaded libraries
### Method 2: Browse by Library
1. Press `A` (Add Symbol)
2. In the library list, find `Midea_ESP`
3. Expand it to see all symbols
4. Select `TXB0104PWR`
### Method 3: Filter by Library
1. Press `A` (Add Symbol)
2. In the filter box, type: `Midea_ESP`
3. This shows only symbols from that library
---
## Verifying Library is Loaded
### In KiCad Schematic Editor:
1. **Preferences → Manage Symbol Libraries**
2. Look for `Midea_ESP` in the list
3. Check the **Path** column - should point to:
```
/home/nearxos/Projects/ESPHome/PCB_Board/Midea_ESP/libs/Midea_AC_Controller.kicad_sym
```
### If Library is Missing:
1. Click **Add** button
2. Choose **Type:** KiCad
3. **Library Path:** Click folder icon and browse to:
```
/home/nearxos/Projects/ESPHome/PCB_Board/Midea_ESP/libs/Midea_AC_Controller.kicad_sym
```
4. **Library Name:** `Midea_ESP` (or leave blank, KiCad will use filename)
5. Click **OK**
6. Click **OK** to close preferences
---
## Quick Reference: All Symbols for This Project
### Custom Library (Midea_ESP):
- `Midea_ESP:ESP32-WROOM-32E` - ESP32 module
- `Midea_ESP:TXB0104PWR` - Level shifter
- `Midea_ESP:AMS1117-3.3` - Voltage regulator
### Standard KiCad Libraries:
- `Device:C` - Capacitors (unpolarized)
- `Device:R` - Resistors
- `Device:LED` - LEDs
- `Button_Switch_SMD:SW_PUSH` - Buttons
- `Connector_JST:JST_XH_B4B-XH-A` - JST connector
- `Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_Vertical` - Programming header
- `power:+3V3` - Power symbols
- `power:+5V` - Power symbols
- `power:GND` - Power symbols
---
## Troubleshooting
### Problem: Symbol not found
**Solution:**
1. Verify library is added (Preferences → Manage Symbol Libraries)
2. Check file path is correct
3. Restart KiCad if needed
### Problem: Library appears but symbol doesn't
**Solution:**
1. Check symbol name spelling (case-sensitive)
2. Verify symbol exists in library file
3. Try searching for just `TXB0104` (partial match)
### Problem: Can't add library
**Solution:**
1. Check file permissions
2. Verify file exists at the path
3. Make sure you're using KiCad 9.0.2 (your version)
---
## Step-by-Step: Adding TXB0104PWR
1. **Open KiCad Schematic Editor**
2. **Press `A`** (or click Place Symbol)
3. **In the search box**, type: `Midea_ESP:TXB0104PWR`
4. **If found**, click OK and place on schematic
5. **If not found**, go to Preferences → Manage Symbol Libraries and add the library
---
## Library File Structure
The library file contains all custom symbols:
```
libs/Midea_AC_Controller.kicad_sym
├── ESP32-WROOM-32E
├── TXB0104PWR ← This is what you need
├── AMS1117-3.3
└── CP2102N
```
All symbols are in one file, but KiCad treats them as separate symbols from the `Midea_ESP` library.

View File

@@ -0,0 +1,293 @@
# KiCad Symbol Download Plugins and Tools
## Recommended Options
### 1. **KiCad Library Utils (Built-in)** ⭐ Recommended
**Status:** Built into KiCad 6.0+ (you have KiCad 9.0.2, so it's available)
**How to Access:**
1. In KiCad, go to **Tools → External Plugins → KiCad Library Utils**
2. Or use the **Plugin and Content Manager** (Tools → Plugin and Content Manager)
**Features:**
- Download symbols from official KiCad libraries
- Update existing libraries
- Install community libraries
- Manage symbol libraries
**Pros:**
- Built-in, no installation needed
- Official KiCad tool
- Safe and reliable
- Works with your KiCad 9.0.2
**Cons:**
- Limited to KiCad official/community libraries
- May not have all commercial parts
---
### 2. **SnapEDA** (Web-based + KiCad Plugin)
**Website:** https://www.snapeda.com
**How to Use:**
1. **Web Interface:**
- Go to https://www.snapeda.com
- Search for component (e.g., "TXB0104PWR")
- Download KiCad symbol and footprint
- Import into KiCad
2. **KiCad Plugin:**
- Install via Plugin and Content Manager
- Search: "SnapEDA"
- Install the plugin
- Access via Tools → External Plugins → SnapEDA
**Features:**
- Large library of commercial parts
- Symbols, footprints, and 3D models
- Free account available
- Direct KiCad format downloads
**Pros:**
- Huge library of real components
- Includes footprints and 3D models
- Free tier available
- Good for commercial ICs
**Cons:**
- Requires account (free)
- Some parts may require paid account
- Web-based (slower workflow)
---
### 3. **Ultra Librarian** (Web-based)
**Website:** https://www.ultralibrarian.com
**How to Use:**
1. Go to https://www.ultralibrarian.com
2. Search for component
3. Select KiCad format
4. Download and import
**Features:**
- Large component library
- Multiple CAD formats
- Free account available
**Pros:**
- Comprehensive library
- Multiple format support
- Free tier
**Cons:**
- Web-based only
- Requires account
- May need to convert formats
---
### 4. **KiCad Library Loader Plugin**
**Status:** Community plugin
**Installation:**
1. Go to **Tools → Plugin and Content Manager**
2. Search for "Library Loader"
3. Install
**Features:**
- Downloads symbols from various sources
- Integrates with KiCad
- Community maintained
**Pros:**
- Integrated workflow
- Multiple sources
**Cons:**
- Community maintained (may have issues)
- Limited sources
---
### 5. **Component Search Engine (CSE)**
**Website:** https://componentsearchengine.com
**How to Use:**
1. Search for component
2. Filter by KiCad format
3. Download symbol/footprint
**Features:**
- Aggregates from multiple sources
- Free to use
- Multiple formats
**Pros:**
- Free
- Multiple sources
- Easy to use
**Cons:**
- Web-based
- Quality varies by source
---
## Best Practices
### For Your Project:
**Option 1: Use Built-in Library Utils (Recommended)**
1. **Tools → Plugin and Content Manager**
2. Browse available libraries
3. Install needed libraries
4. Use symbols directly
**Option 2: Use TXB0104PWR for Commercial Parts**
1. Create free account at snapeda.com
2. Search for components
3. Download KiCad files
4. Import into your project
**Option 3: Manual Download and Import**
1. Find symbol online (SnapEDA, Ultra Librarian, etc.)
2. Download `.kicad_sym` file
3. Copy to your `libs/` folder
4. Add to project libraries
---
## How to Install Plugins in KiCad 9
### Method 1: Plugin and Content Manager
1. Open KiCad
2. Go to **Tools → Plugin and Content Manager**
3. Browse available plugins
4. Click **Install** on desired plugin
5. Restart KiCad if needed
### Method 2: Manual Installation
1. Download plugin file
2. Place in KiCad plugin directory:
```
~/.local/share/kicad/9.0/plugins/
```
3. Restart KiCad
4. Enable in **Tools → External Plugins**
---
## Recommended Workflow
### For Standard Components:
1. **Use Built-in Libraries** (Device, Connector, etc.)
2. **Use Library Utils** to install community libraries
3. **Search in KiCad** symbol chooser first
### For Commercial ICs:
1. **Try SnapEDA** first (best quality)
2. **Try Ultra Librarian** as backup
3. **Create custom symbol** if not found
### For Your Custom Components:
- **Create symbols manually** (like you did for ESP32, TXB0104PWR, etc.)
- Store in `libs/Midea_AC_Controller.kicad_sym`
---
## Quick Reference: Where to Find Symbols
| Component Type | Best Source |
|----------------|-------------|
| **Standard passives** (R, C, L) | KiCad built-in libraries |
| **Connectors** | KiCad built-in libraries |
| **Commercial ICs** | SnapEDA, Ultra Librarian |
| **Microcontrollers** | SnapEDA, manufacturer website |
| **Custom/Obsolete parts** | Create manually |
---
## Installing SnapEDA Plugin (Step-by-Step)
1. **Open KiCad**
2. **Tools → Plugin and Content Manager**
3. **Search:** "SnapEDA"
4. **Install** the plugin
5. **Restart KiCad**
6. **Access:** Tools → External Plugins → SnapEDA
**Note:** If plugin not available, use web interface at snapeda.com
---
## Alternative: Manual Symbol Import
If plugins don't work, you can manually import symbols:
1. **Download symbol file** (`.kicad_sym`) from:
- SnapEDA
- Ultra Librarian
- Component Search Engine
- Manufacturer website
2. **Copy to your library:**
```bash
cp downloaded_symbol.kicad_sym ~/Projects/ESPHome/PCB_Board/Midea_ESP/libs/
```
3. **Add to library file:**
- Open `libs/Midea_AC_Controller.kicad_sym`
- Copy symbol definition into file
- Or create separate library file
4. **Add library to project:**
- Preferences → Manage Symbol Libraries
- Add the library file
---
## Troubleshooting
### Plugin Not Appearing:
- Check KiCad version (plugins may require specific versions)
- Try manual installation
- Use web-based tools instead
### Symbol Quality Issues:
- Verify pin numbers match datasheet
- Check pin names are correct
- Test in schematic before using
### Import Errors:
- Check file format (must be `.kicad_sym`)
- Verify KiCad version compatibility
- Check for syntax errors in symbol file
---
## Summary
**For KiCad 9.0.2, I recommend:**
1. **Built-in Library Utils** - For official/community libraries
2. **SnapEDA** - For commercial ICs (web or plugin)
3. **Manual creation** - For custom parts (like you're doing)
**Quick Start:**
- Try **Tools → Plugin and Content Manager** first
- If needed, use **SnapEDA web interface** (snapeda.com)
- For custom parts, continue creating symbols manually
---
## Useful Links
- **SnapEDA:** https://www.snapeda.com
- **Ultra Librarian:** https://www.ultralibrarian.com
- **Component Search Engine:** https://componentsearchengine.com
- **KiCad Libraries:** https://gitlab.com/kicad/libraries
- **KiCad Plugin Repository:** https://gitlab.com/kicad/services/kicad-plugin-repository

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,130 @@
{
"board": {
"active_layer": 0,
"active_layer_preset": "All Layers",
"auto_track_width": true,
"hidden_netclasses": [],
"hidden_nets": [],
"high_contrast_mode": 0,
"net_color_mode": 1,
"opacity": {
"images": 0.6,
"pads": 1.0,
"shapes": 1.0,
"tracks": 1.0,
"vias": 1.0,
"zones": 0.6
},
"selection_filter": {
"dimensions": true,
"footprints": true,
"graphics": true,
"keepouts": true,
"lockedItems": false,
"otherItems": true,
"pads": true,
"text": true,
"tracks": true,
"vias": true,
"zones": true
},
"visible_items": [
"vias",
"footprint_text",
"footprint_anchors",
"ratsnest",
"grid",
"footprints_front",
"footprints_back",
"footprint_values",
"footprint_references",
"tracks",
"drc_errors",
"drawing_sheet",
"bitmaps",
"pads",
"zones",
"drc_warnings",
"locked_item_shadows",
"conflict_shadows",
"shapes"
],
"visible_layers": "ffffffff_ffffffff_ffffffff_ffffffff",
"zone_display_mode": 0
},
"git": {
"repo_type": "https",
"repo_username": "nearxos",
"ssh_key": ""
},
"meta": {
"filename": "Midea_ESP.kicad_prl",
"version": 5
},
"net_inspector_panel": {
"col_hidden": [
false,
false,
false,
false,
false,
false,
false,
false,
false,
false
],
"col_order": [
0,
1,
2,
3,
4,
5,
6,
7,
8,
9
],
"col_widths": [
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
],
"custom_group_rules": [],
"expanded_rows": [],
"filter_by_net_name": true,
"filter_by_netclass": true,
"filter_text": "",
"group_by_constraint": false,
"group_by_netclass": false,
"show_unconnected_nets": false,
"show_zero_pad_nets": false,
"sort_ascending": true,
"sorting_column": 0
},
"open_jobsets": [],
"project": {
"files": []
},
"schematic": {
"selection_filter": {
"graphics": true,
"images": true,
"labels": true,
"lockedItems": false,
"otherItems": true,
"pins": true,
"symbols": true,
"text": true,
"wires": true
}
}
}

View File

@@ -0,0 +1,618 @@
{
"board": {
"3dviewports": [],
"design_settings": {
"defaults": {
"apply_defaults_to_fp_fields": false,
"apply_defaults_to_fp_shapes": false,
"apply_defaults_to_fp_text": false,
"board_outline_line_width": 0.05,
"copper_line_width": 0.2,
"copper_text_italic": false,
"copper_text_size_h": 1.5,
"copper_text_size_v": 1.5,
"copper_text_thickness": 0.3,
"copper_text_upright": false,
"courtyard_line_width": 0.05,
"dimension_precision": 4,
"dimension_units": 3,
"dimensions": {
"arrow_length": 1270000,
"extension_offset": 500000,
"keep_text_aligned": true,
"suppress_zeroes": true,
"text_position": 0,
"units_format": 0
},
"fab_line_width": 0.1,
"fab_text_italic": false,
"fab_text_size_h": 1.0,
"fab_text_size_v": 1.0,
"fab_text_thickness": 0.15,
"fab_text_upright": false,
"other_line_width": 0.1,
"other_text_italic": false,
"other_text_size_h": 1.0,
"other_text_size_v": 1.0,
"other_text_thickness": 0.15,
"other_text_upright": false,
"pads": {
"drill": 0.8,
"height": 1.27,
"width": 2.54
},
"silk_line_width": 0.1,
"silk_text_italic": false,
"silk_text_size_h": 1.0,
"silk_text_size_v": 1.0,
"silk_text_thickness": 0.1,
"silk_text_upright": false,
"zones": {
"min_clearance": 0.5
}
},
"diff_pair_dimensions": [],
"drc_exclusions": [],
"meta": {
"version": 2
},
"rule_severities": {
"annular_width": "error",
"clearance": "error",
"connection_width": "warning",
"copper_edge_clearance": "error",
"copper_sliver": "warning",
"courtyards_overlap": "error",
"creepage": "error",
"diff_pair_gap_out_of_range": "error",
"diff_pair_uncoupled_length_too_long": "error",
"drill_out_of_range": "error",
"duplicate_footprints": "warning",
"extra_footprint": "warning",
"footprint": "error",
"footprint_filters_mismatch": "ignore",
"footprint_symbol_mismatch": "warning",
"footprint_type_mismatch": "ignore",
"hole_clearance": "error",
"hole_to_hole": "warning",
"holes_co_located": "warning",
"invalid_outline": "error",
"isolated_copper": "warning",
"item_on_disabled_layer": "error",
"items_not_allowed": "error",
"length_out_of_range": "error",
"lib_footprint_issues": "warning",
"lib_footprint_mismatch": "warning",
"malformed_courtyard": "error",
"microvia_drill_out_of_range": "error",
"mirrored_text_on_front_layer": "warning",
"missing_courtyard": "ignore",
"missing_footprint": "warning",
"net_conflict": "warning",
"nonmirrored_text_on_back_layer": "warning",
"npth_inside_courtyard": "ignore",
"padstack": "warning",
"pth_inside_courtyard": "ignore",
"shorting_items": "error",
"silk_edge_clearance": "warning",
"silk_over_copper": "warning",
"silk_overlap": "warning",
"skew_out_of_range": "error",
"solder_mask_bridge": "error",
"starved_thermal": "error",
"text_height": "warning",
"text_on_edge_cuts": "error",
"text_thickness": "warning",
"through_hole_pad_without_hole": "error",
"too_many_vias": "error",
"track_angle": "error",
"track_dangling": "warning",
"track_segment_length": "error",
"track_width": "error",
"tracks_crossing": "error",
"unconnected_items": "error",
"unresolved_variable": "error",
"via_dangling": "warning",
"zones_intersect": "error"
},
"rules": {
"max_error": 0.005,
"min_clearance": 0.0,
"min_connection": 0.0,
"min_copper_edge_clearance": 0.5,
"min_groove_width": 0.0,
"min_hole_clearance": 0.25,
"min_hole_to_hole": 0.25,
"min_microvia_diameter": 0.2,
"min_microvia_drill": 0.1,
"min_resolved_spokes": 2,
"min_silk_clearance": 0.0,
"min_text_height": 0.8,
"min_text_thickness": 0.08,
"min_through_hole_diameter": 0.3,
"min_track_width": 0.0,
"min_via_annular_width": 0.1,
"min_via_diameter": 0.5,
"solder_mask_to_copper_clearance": 0.0,
"use_height_for_length_calcs": true
},
"teardrop_options": [
{
"td_onpthpad": true,
"td_onroundshapesonly": false,
"td_onsmdpad": true,
"td_ontrackend": false,
"td_onvia": true
}
],
"teardrop_parameters": [
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"td_target_name": "td_round_shape",
"td_width_to_size_filter_ratio": 0.9
},
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"td_target_name": "td_rect_shape",
"td_width_to_size_filter_ratio": 0.9
},
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"td_target_name": "td_track_end",
"td_width_to_size_filter_ratio": 0.9
}
],
"track_widths": [],
"tuning_pattern_settings": {
"diff_pair_defaults": {
"corner_radius_percentage": 80,
"corner_style": 1,
"max_amplitude": 1.0,
"min_amplitude": 0.2,
"single_sided": false,
"spacing": 1.0
},
"diff_pair_skew_defaults": {
"corner_radius_percentage": 80,
"corner_style": 1,
"max_amplitude": 1.0,
"min_amplitude": 0.2,
"single_sided": false,
"spacing": 0.6
},
"single_track_defaults": {
"corner_radius_percentage": 80,
"corner_style": 1,
"max_amplitude": 1.0,
"min_amplitude": 0.2,
"single_sided": false,
"spacing": 0.6
}
},
"via_dimensions": [],
"zones_allow_external_fillets": false
},
"ipc2581": {
"dist": "",
"distpn": "",
"internal_id": "",
"mfg": "",
"mpn": ""
},
"layer_pairs": [],
"layer_presets": [],
"viewports": []
},
"boards": [],
"cvpcb": {
"equivalence_files": []
},
"erc": {
"erc_exclusions": [],
"meta": {
"version": 0
},
"pin_map": [
[
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
2,
0,
1,
0,
0,
1,
0,
2,
2,
2,
2
],
[
0,
0,
0,
0,
0,
0,
1,
0,
1,
0,
1,
2
],
[
0,
1,
0,
0,
0,
0,
1,
1,
2,
1,
1,
2
],
[
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
2
],
[
1,
1,
1,
1,
1,
0,
1,
1,
1,
1,
1,
2
],
[
0,
0,
0,
1,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
2,
1,
2,
0,
0,
1,
0,
2,
2,
2,
2
],
[
0,
2,
0,
1,
0,
0,
1,
0,
2,
0,
0,
2
],
[
0,
2,
1,
1,
0,
0,
1,
0,
2,
0,
0,
2
],
[
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2
]
],
"rule_severities": {
"bus_definition_conflict": "error",
"bus_entry_needed": "error",
"bus_to_bus_conflict": "error",
"bus_to_net_conflict": "error",
"different_unit_footprint": "error",
"different_unit_net": "error",
"duplicate_reference": "error",
"duplicate_sheet_names": "error",
"endpoint_off_grid": "warning",
"extra_units": "error",
"footprint_filter": "ignore",
"footprint_link_issues": "warning",
"four_way_junction": "ignore",
"global_label_dangling": "warning",
"hier_label_mismatch": "error",
"label_dangling": "error",
"label_multiple_wires": "warning",
"lib_symbol_issues": "warning",
"lib_symbol_mismatch": "warning",
"missing_bidi_pin": "warning",
"missing_input_pin": "warning",
"missing_power_pin": "error",
"missing_unit": "warning",
"multiple_net_names": "warning",
"net_not_bus_member": "warning",
"no_connect_connected": "warning",
"no_connect_dangling": "warning",
"pin_not_connected": "error",
"pin_not_driven": "error",
"pin_to_pin": "warning",
"power_pin_not_driven": "error",
"same_local_global_label": "warning",
"similar_label_and_power": "warning",
"similar_labels": "warning",
"similar_power": "warning",
"simulation_model_issue": "ignore",
"single_global_label": "ignore",
"unannotated": "error",
"unconnected_wire_endpoint": "warning",
"unit_value_mismatch": "error",
"unresolved_variable": "error",
"wire_dangling": "error"
}
},
"libraries": {
"pinned_footprint_libs": [],
"pinned_symbol_libs": []
},
"meta": {
"filename": "Midea_ESP.kicad_pro",
"version": 3
},
"net_settings": {
"classes": [
{
"bus_width": 12,
"clearance": 0.2,
"diff_pair_gap": 0.25,
"diff_pair_via_gap": 0.25,
"diff_pair_width": 0.2,
"line_style": 0,
"microvia_diameter": 0.3,
"microvia_drill": 0.1,
"name": "Default",
"pcb_color": "rgba(0, 0, 0, 0.000)",
"priority": 2147483647,
"schematic_color": "rgba(0, 0, 0, 0.000)",
"track_width": 0.2,
"via_diameter": 0.6,
"via_drill": 0.3,
"wire_width": 6
}
],
"meta": {
"version": 4
},
"net_colors": null,
"netclass_assignments": null,
"netclass_patterns": []
},
"pcbnew": {
"last_paths": {
"gencad": "",
"idf": "",
"netlist": "",
"plot": "",
"pos_files": "",
"specctra_dsn": "",
"step": "",
"svg": "",
"vrml": ""
},
"page_layout_descr_file": ""
},
"schematic": {
"annotate_start_num": 0,
"bom_export_filename": "${PROJECTNAME}.csv",
"bom_fmt_presets": [],
"bom_fmt_settings": {
"field_delimiter": ",",
"keep_line_breaks": false,
"keep_tabs": false,
"name": "CSV",
"ref_delimiter": ",",
"ref_range_delimiter": "",
"string_delimiter": "\""
},
"bom_presets": [],
"bom_settings": {
"exclude_dnp": false,
"fields_ordered": [
{
"group_by": false,
"label": "Reference",
"name": "Reference",
"show": true
},
{
"group_by": false,
"label": "Qty",
"name": "${QUANTITY}",
"show": true
},
{
"group_by": true,
"label": "Value",
"name": "Value",
"show": true
},
{
"group_by": true,
"label": "DNP",
"name": "${DNP}",
"show": true
},
{
"group_by": true,
"label": "Exclude from BOM",
"name": "${EXCLUDE_FROM_BOM}",
"show": true
},
{
"group_by": true,
"label": "Exclude from Board",
"name": "${EXCLUDE_FROM_BOARD}",
"show": true
},
{
"group_by": true,
"label": "Footprint",
"name": "Footprint",
"show": true
},
{
"group_by": false,
"label": "Datasheet",
"name": "Datasheet",
"show": true
}
],
"filter_string": "",
"group_symbols": true,
"include_excluded_from_bom": true,
"name": "Default Editing",
"sort_asc": true,
"sort_field": "Reference"
},
"connection_grid_size": 50.0,
"drawing": {
"dashed_lines_dash_length_ratio": 12.0,
"dashed_lines_gap_length_ratio": 3.0,
"default_line_thickness": 6.0,
"default_text_size": 50.0,
"field_names": [],
"intersheets_ref_own_page": false,
"intersheets_ref_prefix": "",
"intersheets_ref_short": false,
"intersheets_ref_show": false,
"intersheets_ref_suffix": "",
"junction_size_choice": 3,
"label_size_ratio": 0.375,
"operating_point_overlay_i_precision": 3,
"operating_point_overlay_i_range": "~A",
"operating_point_overlay_v_precision": 3,
"operating_point_overlay_v_range": "~V",
"overbar_offset_ratio": 1.23,
"pin_symbol_size": 25.0,
"text_offset_ratio": 0.15
},
"legacy_lib_dir": "",
"legacy_lib_list": [],
"meta": {
"version": 1
},
"net_format_name": "",
"page_layout_descr_file": "",
"plot_directory": "",
"space_save_all_events": true,
"spice_current_sheet_as_root": false,
"spice_external_command": "spice \"%I\"",
"spice_model_current_sheet_as_root": true,
"spice_save_all_currents": false,
"spice_save_all_dissipations": false,
"spice_save_all_voltages": false,
"subpart_first_id": 65,
"subpart_id_separator": 0
},
"sheets": [
[
"f579dd88-b421-4fbc-bd0c-53cb7bf597e7",
"Root"
]
],
"text_variables": {}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,112 @@
# ESP32-WROOM-32E Pinout Comparison
## RF_Module Library vs Our Custom Library
### Key Differences Found:
**RF_Module Library (Standard KiCad):**
- Pin 1: GND ✓
- Pin 2: VDD ✓
- Pin 3: EN (separate numbered pin)
- GPIO naming: IO34, IO35, IO32, etc.
- Total: 39 pins
**Our Custom Library (Midea_ESP):**
- Pin 1: GND ✓ (just fixed)
- Pin 2: VDD ✓ (just fixed)
- EN: Separate pin (not numbered as pin 3)
- GPIO naming: GPIO34, GPIO35, GPIO32, etc.
- Total: 45+ pins (includes all GPIO pins)
### Pin Mapping Reference
| RF_Module Pin | RF_Module Name | Our Library Pin | Our Library Name | Function |
|---------------|----------------|-----------------|------------------|----------|
| 1 | GND | 1 | GND | Ground |
| 2 | VDD | 2 | VDD | Power (3.3V) |
| 3 | EN | EN | EN | Enable |
| 4 | SENSOR_VP | - | - | Sensor (not used) |
| 5 | SENSOR_VN | - | - | Sensor (not used) |
| 6 | IO34 | 5 | GPIO32 | GPIO (input only) |
| 7 | IO35 | 6 | GPIO33 | GPIO (input only) |
| 8 | IO32 | 5 | GPIO32 | GPIO (bidirectional) |
| 9 | IO33 | 6 | GPIO33 | GPIO (bidirectional) |
| 10 | IO25 | 7 | GPIO25 | GPIO (bidirectional) |
| 11 | IO26 | 8 | GPIO26 | GPIO (bidirectional) |
| 12 | IO27 | 9 | GPIO27 | GPIO (bidirectional) |
| 13 | IO14 | 16 | GPIO14 | GPIO (bidirectional) |
| 14 | IO12 | 17 | GPIO12 | GPIO (bidirectional) |
| 15 | GND | 4 | GND | Ground |
| 16 | IO13 | 18 | GPIO13 | GPIO (bidirectional) |
| 23 | IO15 | 24 | GPIO15 | GPIO (bidirectional) |
| 24 | IO2 | 25 | GPIO2 | GPIO (bidirectional) |
| 25 | IO0 | 26 | GPIO0 | GPIO (bidirectional) |
| 26 | IO4 | 30 | GPIO4 | GPIO (bidirectional) |
| 27 | IO16 | 31 | GPIO16 | GPIO (bidirectional) |
| 28 | IO17 | 32 | GPIO17 | GPIO (bidirectional) |
| 29 | IO5 | 35 | GPIO5 | GPIO (bidirectional) |
| 30 | IO18 | 36 | GPIO18 | GPIO (bidirectional) |
| 31 | IO19 | 37 | GPIO19 | GPIO (bidirectional) |
| 33 | IO21 | 39 | GPIO21 | GPIO (bidirectional) |
| 34 | RXD0/IO3 | 41 | GPIO3 | UART0 RX |
| 35 | TXD0/IO1 | 43 | GPIO1 | UART0 TX |
| 36 | IO22 | 44 | GPIO22 | GPIO (bidirectional) |
| 37 | IO23 | 45 | GPIO23 | GPIO (bidirectional) |
| 38 | GND | 40 | GND | Ground |
| 39 | GND | - | - | Ground (additional) |
### Important Notes:
1. **Pin 1 and Pin 2 are correct** in both libraries:
- Pin 1: GND ✓
- Pin 2: VDD ✓
2. **EN Pin:**
- RF_Module: Pin 3
- Our library: Separate EN pin (not numbered)
- Both are correct, just different representation
3. **GPIO Naming:**
- RF_Module uses: IO34, IO35, IO32, etc.
- Our library uses: GPIO34, GPIO35, GPIO32, etc.
- Both refer to the same physical pins
4. **VDD Pins:**
- RF_Module shows: Pin 2 only (simplified)
- Our library shows: Pins 2, 3, 14, 21, 22, 27, 28, 33, 42 (all VDD pins)
- Our library is more complete for power distribution
5. **GND Pins:**
- RF_Module shows: Pins 1, 15, 38, 39
- Our library shows: Pins 1, 4, 13, 15, 20, 23, 26, 29, 34, 38, 40 (all GND pins)
- Our library is more complete for ground distribution
### Recommendation:
**For our design, we should:**
- ✅ Keep using our custom library (more complete pin representation)
- ✅ Ensure Pin 1 = GND and Pin 2 = VDD (already fixed)
- ✅ Use GPIO naming (GPIO17, GPIO16, etc.) as it's more standard in ESP32 documentation
- ✅ Include all VDD and GND pins for proper power distribution
### Power Pin Verification:
**VDD Pins (per datasheet and RF_Module):**
- Pin 2: VDD ✓
- Additional VDD pins: 3, 14, 21, 22, 27, 28, 33, 42 (our library includes all)
**GND Pins (per datasheet and RF_Module):**
- Pin 1: GND ✓
- Additional GND pins: 4, 13, 15, 20, 23, 26, 29, 34, 38, 40 (our library includes all)
### Conclusion:
Our custom library is **more complete** than the RF_Module library for PCB design because:
1. Shows all VDD pins (needed for proper decoupling)
2. Shows all GND pins (needed for proper grounding)
3. Uses standard GPIO naming convention
4. Matches the physical pinout more accurately
The RF_Module library is simplified for schematic representation, while our library is better for detailed PCB design.

View File

@@ -0,0 +1,74 @@
# Programming Header Pinout
## Header J2 - 2x4 Programming Header (8 Pins)
Use this header to connect an external USB-to-Serial adapter (CP2102, CH340, FT232, etc.) for flashing the ESP32.
### Pinout (Top View)
```
┌─────────────┐
│ 1 2 3 4 │ ← Top row
│ 5 6 7 8 │ ← Bottom row
└─────────────┘
```
| Pin | Signal | ESP32 Connection | Description |
|-----|--------|------------------|-------------|
| 1 | +3V3 | +3V3 Power Rail | Optional - Power ESP32 from programmer |
| 2 | GND | GND | Ground reference |
| 3 | UART_TX | GPIO1 (UART TX) | ESP32 transmits to programmer |
| 4 | UART_RX | GPIO3 (UART RX) | ESP32 receives from programmer |
| 5 | DTR | GPIO0 | Data Terminal Ready (auto-reset for flashing) |
| 6 | RTS | EN | Request To Send (auto-reset for flashing) |
| 7 | NC | - | Not connected (spare) |
| 8 | NC | - | Not connected (spare) |
### Connection to USB-to-Serial Adapter
When connecting your USB-to-Serial adapter:
| Adapter Pin | J2 Pin | Signal |
|-------------|--------|--------|
| VCC | Pin 1 | +3V3 (optional - only if powering ESP32 from adapter) |
| GND | Pin 2 | GND |
| RX | Pin 3 | UART_TX (receives TX from ESP32) |
| TX | Pin 4 | UART_RX (sends to RX of ESP32) |
| DTR | Pin 5 | DTR (auto-reset) |
| RTS | Pin 6 | RTS (auto-reset) |
| - | Pin 7 | NC (spare) |
| - | Pin 8 | NC (spare) |
**Important Notes:**
- **Do NOT connect VCC** if your ESP32 is already powered from J1 (JST connector power input)
- **Always connect GND** - this is critical for proper operation
- **RX/TX are swapped** - Adapter RX goes to ESP32 TX, and vice versa
- **DTR and RTS** enable automatic reset during flashing (no need to press buttons)
### Optional Pull-up Resistors
For maximum reliability, add pull-up resistors:
- **R5**: 10kΩ between J2 Pin 5 (DTR) and +3V3
- **R6**: 10kΩ between J2 Pin 6 (RTS) and +3V3
Most USB-to-Serial adapters have built-in pull-ups, but adding them on the board ensures reliable operation.
### Flashing Process
1. Connect USB-to-Serial adapter to J2 header
2. Power the board (via J1 JST connector or J2 Pin 1)
3. Use `esptool` or ESPHome to flash:
```bash
esptool.py --port /dev/ttyUSB0 write_flash 0x0 firmware.bin
```
4. The DTR/RTS signals will automatically put ESP32 into boot mode
### Common USB-to-Serial Adapters
- **CP2102**: Common, reliable, good driver support
- **CH340**: Very common, cheap, good for Linux
- **FT232**: Premium option, excellent driver support
- **PL2303**: Older, less reliable
All of these will work with this header configuration.

View File

@@ -0,0 +1,153 @@
# Programming Header: 4-Pin vs 6-Pin Comparison
## Quick Answer
**You can use a 4-pin header** if you're okay with manually pressing buttons during flashing. However, **6-pin header is recommended** because it enables automatic reset (no buttons needed).
---
## 4-Pin Header (Minimal)
### Pinout:
```
Pin 1: +3V3 (optional)
Pin 2: GND
Pin 3: UART_TX (ESP32 GPIO1)
Pin 4: UART_RX (ESP32 GPIO3)
```
### Pros:
- ✅ Simpler (fewer pins)
- ✅ Lower cost (smaller header)
- ✅ Works for basic flashing
### Cons:
-**Must manually press buttons** every time you flash
- ❌ More error-prone (easy to miss timing)
- ❌ Slower workflow
### Flashing Process (4-Pin):
1. Connect USB-to-Serial adapter (VCC, GND, TX, RX only)
2. Power board (via J1 or J2 Pin 1)
3. **Hold SW2 (Boot button)** - pulls GPIO0 LOW
4. **Press and release SW1 (Reset button)** - resets ESP32
5. **Release SW2** after 1-2 seconds
6. ESP32 enters download mode
7. Run `esptool` or ESPHome to flash
8. **Press SW1 (Reset)** again to restart
**You must do steps 3-5 every time you flash!**
---
## 6-Pin Header (Recommended)
### Pinout:
```
Pin 1: +3V3 (optional)
Pin 2: GND
Pin 3: UART_TX (ESP32 GPIO1)
Pin 4: UART_RX (ESP32 GPIO3)
Pin 5: DTR (ESP32 GPIO0)
Pin 6: RTS (ESP32 EN)
```
### Pros:
-**Automatic reset** - no buttons needed
- ✅ Faster and easier flashing
- ✅ Less error-prone
- ✅ Standard for ESP32 development
- ✅ Works with all flashing tools automatically
### Cons:
- ❌ 2 extra pins (minimal cost difference)
- ❌ Slightly larger header
### Flashing Process (6-Pin):
1. Connect USB-to-Serial adapter (all 6 pins)
2. Power board (via J1 or J2 Pin 1)
3. **Just run `esptool` or ESPHome** - that's it!
4. DTR/RTS automatically handle reset and boot mode
5. No buttons needed!
**Much easier!**
---
## Recommendation
### Use 4-Pin If:
- You only flash firmware occasionally
- You don't mind pressing buttons
- You want absolute minimal component count
- Cost is critical (though difference is minimal)
### Use 6-Pin If (Recommended):
- You flash firmware regularly
- You want convenience
- You want standard ESP32 development workflow
- You want automatic reset (most common setup)
---
## Cost Comparison
| Header Type | Cost (typical) | Difference |
|-------------|----------------|------------|
| 4-pin header | ~$0.05 | - |
| 6-pin header | ~$0.07 | +$0.02 |
**Difference is negligible** (~$0.02 per board)
---
## Component Count
| Option | Header Pins | Resistors | Total Components |
|--------|-------------|-----------|------------------|
| 4-pin | 4 | 0 | 1 component |
| 6-pin | 6 | 2 (optional) | 1-3 components |
**6-pin with optional pull-ups:** Adds 2 resistors (R5, R6) - but these are optional
---
## My Recommendation
**Use 6-pin header** because:
1. **Only $0.02 more expensive** (negligible)
2. **Much more convenient** - no button pressing
3. **Standard practice** for ESP32 development
4. **Pull-up resistors are optional** - you can skip R5 and R6 if you want
5. **Saves time** - especially if you flash multiple times during development
**If you really want minimal:** Use 4-pin, but you'll need to press buttons every time you flash.
---
## Updated Component List for 4-Pin Option
If you choose 4-pin header:
| Ref | Component | Library | Symbol | Value | Notes |
|-----|-----------|---------|--------|-------|-------|
| J2 | Header | `Connector_PinHeader_2.54mm` | `PinHeader_1x04_P2.54mm_Vertical` | - | 4-pin programming header |
**Connections:**
- J2 Pin 1 → +3V3 (optional)
- J2 Pin 2 → GND
- J2 Pin 3 → Net Label `UART_TX` → U2.GPIO1
- J2 Pin 4 → Net Label `UART_RX` → U2.GPIO3
**No R5, R6 resistors needed** (they're only for DTR/RTS pull-ups)
---
## Summary
**4-Pin:** Works, but requires manual button pressing every flash
**6-Pin:** Recommended - automatic reset, standard practice, only $0.02 more
**My vote:** Go with 6-pin for the convenience, especially since the cost difference is minimal.

View File

@@ -0,0 +1,197 @@
# Quick Start: Building the Schematic
## Step-by-Step Guide
### 1. Start with Power Supply (Page 1 or Top Left)
**Add Components:**
1. Press `A` → Search `Midea_ESP:AMS1117-3.3` → Place as **U1**
2. Press `A` → Search `Device:C` → Place 4 capacitors: **C1, C2, C3, C4**
**Set Values:**
- C1, C2: 10µF
- C3, C4: 100nF
**Add Power Symbols:**
- Press `P` → Select `+3V3` → Place near U1 output
- Press `P` → Select `+5V` → Place near where J1 will connect (on Page 3)
- Press `P` → Select `GND` → Place multiple times
**Connect:**
- **Net Label `+5V_POWER`** → **U1 Pin 3 (IN)** (this connects to J1 Pin 1 on Page 3)
- **Net Label `+5V_POWER`** → **C1 (one terminal)** (parallel - connect directly to +5V net)
- **Net Label `+5V_POWER`** → **C3 (one terminal)** (parallel - connect directly to +5V net)
- **C1 (other terminal)** → **GND**
- **C3 (other terminal)** → **GND**
- **U1 Pin 2 (OUT)** → **+3V3 power symbol** (connect to +3V3 net)
- **U1 Pin 2 (OUT)** → **C2 (one terminal)** (parallel - connect directly to +3V3 net)
- **U1 Pin 2 (OUT)** → **C4 (one terminal)** (parallel - connect directly to +3V3 net)
- **C2 (other terminal)** → **GND**
- **C4 (other terminal)** → **GND**
- **U1 Pin 1 (GND)** → **GND**
- **U1 Pin TAB (GND)** → **GND**
**Note:**
- Power comes from J1 Pin 1 (+5V) on Page 3. Use net labels to connect between pages.
- **C1 and C3 are in PARALLEL** (both connected between +5V and GND for input filtering)
- **C2 and C4 are in PARALLEL** (both connected between +3V3 and GND for output filtering)
---
### 2. Add ESP32 (Page 2 or Center)
**Add Components:**
1. Press `A` → Search `Midea_ESP:ESP32-WROOM-32E` → Place as **U2**
2. Press `A` → Search `Device:C` → Place 2 capacitors: **C5** (100nF), **C6** (10µF)
3. Press `A` → Search `Button_Switch_SMD:SW_PUSH` → Place 2 buttons: **SW1, SW2**
4. Press `A` → Search `Device:R` → Place 4 resistors: **R1, R2, R3, R4**
5. Press `A` → Search `Device:LED` → Place 2 LEDs: **LED1, LED2**
**Set Values:**
- R1, R2: 220Ω
- R3, R4: 10kΩ
- C5: 100nF
- C6: 10µF
**Connect Power:**
- **U2 Pin 2 (VDD)** → **+3V3** (only exposed VDD pin on your module)
- **U2 Pin 2 (VDD)** → **C5 (one terminal)****+3V3**, **C5 (other terminal)****GND** (100nF decoupling)
- **U2 Pin 2 (VDD)** → **C6 (one terminal)****+3V3**, **C6 (other terminal)****GND** (10µF bulk capacitor)
- **All exposed U2 GND pins** → **GND** (typically Pin 1 and other exposed GND pins)
**Connect Buttons:**
- SW1 Pin 1 → U2.EN, R3 → +3V3
- SW1 Pin 2 → GND
- SW2 Pin 1 → U2.GPIO0, R4 → +3V3
- SW2 Pin 2 → GND
**Connect LEDs:**
- LED1 Anode → R1 → U2.GPIO2
- LED1 Cathode → GND
- LED2 Anode → R2 → U2.GPIO4
- LED2 Cathode → GND
**Add Net Labels:**
- Press `L` → Type `ESP32_TX` → Attach to wire from U2.GPIO17
- Press `L` → Type `ESP32_RX` → Attach to wire from U2.GPIO16
---
### 3. Add Level Shifter and AC Connector (Page 3 or Right)
**Add Components:**
1. Press `A` → Search `Midea_ESP:TXB0104PWR` → Place as **U3**
2. Press `A` → Search `Connector_JST:JST_XH_B4B-XH-A` → Place as **J1**
**Connect Power:**
- U3 Pin 12 (VCCA) → +3V3
- U3 Pin 11 (VCCB) → +5V
- U3 Pin 10 (OE) → +3V3
- U3 Pins 5, 13, 14 (GND) → GND
**Connect Signals:**
- U3 Pin 1 (A1) → Net Label `ESP32_TX` (connects to U2.GPIO17)
- U3 Pin 2 (A2) → Net Label `ESP32_RX` (connects to U2.GPIO16)
- U3 Pin 9 (B1) → Net Label `AC_RX` → J1 Pin 2
- U3 Pin 8 (B2) → Net Label `AC_TX` → J1 Pin 3
- **J1 Pin 1 → Net Label `+5V_POWER` → Connect to Page 1 (U1 input via capacitors)**
- **J1 Pin 4 → GND**
**Note:** J1 is a JST-XH connector on the PCB. This connector provides:
- **Power input** (Pin 1: +5V) - Powers the entire PCB
- **AC communication** (Pins 2-3: UART signals)
- **Ground** (Pin 4: GND)
Connect a cable with matching JST-XH connector to your AC unit.
---
### 4. Add Programming Header (Required - Page 4 or Bottom)
**Add Components:**
1. Press `A` → Search `Connector_PinHeader_2.54mm:PinHeader_2x04_P2.54mm_Vertical` → Place as **J2**
2. Press `A` → Search `Device:R` → Place 2 resistors: **R5, R6** (optional)
**Set Values:**
- R5, R6: 10kΩ (optional - for pull-ups)
**Connect:**
- J2 Pin 1 → +3V3 (optional - for powering from programmer)
- J2 Pin 2 → GND
- J2 Pin 3 → Net Label `UART_TX` (connects to U2.GPIO1)
- J2 Pin 4 → Net Label `UART_RX` (connects to U2.GPIO3)
- J2 Pin 5 → Net Label `DTR` → U2.GPIO0 (auto-reset)
- J2 Pin 6 → Net Label `RTS` → U2.EN (auto-reset)
**Optional Pull-ups (for reliability):**
- J2 Pin 5 (DTR) → R5 → +3V3
- J2 Pin 6 (RTS) → R6 → +3V3
**Add Net Labels on Page 2:**
- Press `L` → Type `UART_TX` → Attach to wire from U2.GPIO1
- Press `L` → Type `UART_RX` → Attach to wire from U2.GPIO3
- Press `L` → Type `DTR` → Attach to wire from U2.GPIO0
- Press `L` → Type `RTS` → Attach to wire from U2.EN
**Programming Header Pinout (J2) - 2x4 Header:**
```
Top Row: Pin 1: VCC Pin 2: GND Pin 3: TX Pin 4: RX
Bottom Row: Pin 5: DTR Pin 6: RTS Pin 7: NC Pin 8: NC
```
```
Pin 1: +3V3 (optional)
Pin 2: GND
Pin 3: UART_TX (ESP32 TX → Programmer RX)
Pin 4: UART_RX (ESP32 RX ← Programmer TX)
Pin 5: DTR (Auto-reset)
Pin 6: RTS (Auto-reset)
```
**External USB-to-Serial Adapter Connection:**
When flashing, connect your USB-to-Serial adapter (CP2102, CH340, FT232, etc.):
- Adapter VCC → J2 Pin 1 (optional - only if powering ESP32 from adapter)
- Adapter GND → J2 Pin 2
- Adapter RX → J2 Pin 3 (receives TX from ESP32)
- Adapter TX → J2 Pin 4 (sends to RX of ESP32)
- Adapter DTR → J2 Pin 5 (auto-reset)
- Adapter RTS → J2 Pin 6 (auto-reset)
---
## Keyboard Shortcuts
- `A` - Add Symbol
- `W` - Add Wire
- `P` - Add Power Port
- `L` - Add Net Label
- `E` - Edit Component
- `M` - Move Component
- `R` - Rotate Component
- `Delete` - Delete Selected
- `Ctrl+Z` - Undo
- `Ctrl+S` - Save
---
## Verification Checklist
After completing the schematic:
- [ ] All components have reference designators (U1, U2, etc.)
- [ ] All components have values set
- [ ] All power pins connected to appropriate power rails
- [ ] All ground pins connected to GND
- [ ] Net labels match between pages (if using multiple pages)
- [ ] No unconnected pins (except NC pins)
- [ ] Run ERC: Tools → Electrical Rules Checker
- [ ] Fix any ERC warnings/errors
---
## Common Issues
1. **"Unconnected pin" warning**: Check if pin should be connected or marked as NC
2. **"Power pin not driven"**: Ensure power symbols are connected
3. **"Multiple net names"**: Check for duplicate net labels or conflicting connections
4. **"Pin connected to multiple nets"**: Check for wiring errors

55
Midea_ESP/README.md Normal file
View File

@@ -0,0 +1,55 @@
# Midea AC Controller PCB Design
Custom PCB design for controlling Midea/Inventor AC units using ESP32 with BLE beacon capabilities.
## Project Files
- `Midea_ESP.kicad_pro` - KiCad project file
- `Midea_ESP.kicad_sch` - Schematic file
- `Midea_ESP.kicad_pcb` - PCB layout file
- `Midea_ESP.kicad_prl` - Project local settings
## Custom Library
- `libs/Midea_AC_Controller.kicad_sym` - Custom symbol library containing:
- ESP32-WROOM-32E
- TXB0104PWR (Level shifter)
- AMS1117-3.3 (Voltage regulator)
- CP2102N (USB-to-Serial - not used, kept for reference)
## Documentation
- **`SCHEMATIC_COMPONENT_LIST.md`** - Complete component list with pin-by-pin connections and schematic structure
- **`QUICK_START_SCHEMATIC.md`** - Step-by-step guide for building the schematic in KiCad
- **`PROGRAMMING_HEADER.md`** - Programming header pinout and connection guide
- **`COMPONENT_SIZES.md`** - Recommended package sizes for all components (capacitors, resistors, LEDs, etc.)
- **`AC_CONNECTION.md`** - AC connector pinout and connection guide
## Getting Started
1. Open the project in KiCad: `kicad Midea_ESP.kicad_pro`
2. Follow `QUICK_START_SCHEMATIC.md` to build the schematic
3. Refer to `SCHEMATIC_COMPONENT_LIST.md` for detailed component information
4. Use `PROGRAMMING_HEADER.md` when connecting a USB-to-Serial adapter for flashing
## Design Features
- ESP32-WROOM-32E microcontroller
- 5V to 3.3V voltage regulation (AMS1117-3.3)
- 3.3V ↔ 5V level shifter (TXB0104PWR) for AC communication
- Programming header for external USB-to-Serial adapter
- Reset and boot buttons
- Status LEDs
- JST-XH connector (J1) - Provides power input and AC communication
## Power Supply
- **Power Input:** J1 Pin 1 (+5V) - Powers the entire PCB
- **Voltage Regulator:** AMS1117-3.3 converts 5V to 3.3V for ESP32
- **Ground:** J1 Pin 4 (GND)
## Cost Optimization
- Uses programming header instead of onboard USB-to-Serial chip (saves ~$2.50 per board)
- Minimal component count while maintaining functionality

View File

@@ -0,0 +1,451 @@
# Schematic Component List and Connection Guide
## Schematic Structure (Recommended)
### Page 1: Power Supply Section
- Power input via JST connector (J1 Pin 1)
- Voltage regulator (AMS1117-3.3)
- Input/output capacitors
- Power distribution
### Page 2: Main Controller (ESP32)
- ESP32-WROOM-32E module
- Decoupling capacitors
- Reset and boot buttons
- Status LEDs
### Page 3: Level Shifter and AC Interface
- TXB0104 level shifter
- AC connector (JST-XH)
- Signal connections
### Page 4: Programming Header (Optional)
- Header pins for external USB-to-Serial adapter
- Auto-reset connections
---
## Component List
### Page 1: Power Supply
| Ref | Component | Library | Symbol | Value | Notes |
|-----|-----------|---------|--------|-------|-------|
| U1 | Voltage Regulator | `Midea_ESP` | `AMS1117-3.3` | AMS1117-3.3 | 3.3V regulator |
| C1 | Capacitor | `Device` | `C` | 10µF | Input capacitor |
| C2 | Capacitor | `Device` | `C` | 10µF | Output capacitor |
| C3 | Capacitor | `Device` | `C` | 100nF | Input decoupling |
| C4 | Capacitor | `Device` | `C` | 100nF | Output decoupling |
**Note:** Power is supplied via J1 Pin 1 (+5V) from the AC unit connection. See Page 3 for J1 connector details.
**Connections:**
- **J1 Pin 1 (+5V)** → **U1 Pin 3 (IN)** (connect from Page 3 using net label `+5V_POWER`)
- **J1 Pin 1 (+5V)** → **C1 (one terminal)** (parallel connection - connect directly to +5V net)
- **J1 Pin 1 (+5V)** → **C3 (one terminal)** (parallel connection - connect directly to +5V net)
- **C1 (other terminal)** → **GND**
- **C3 (other terminal)** → **GND**
- **U1 Pin 2 (OUT)** → **+3V3 Power Rail** (connect to +3V3 power symbol)
- **U1 Pin 2 (OUT)** → **C2 (one terminal)** (parallel connection - connect directly to +3V3 net)
- **U1 Pin 2 (OUT)** → **C4 (one terminal)** (parallel connection - connect directly to +3V3 net)
- **C2 (other terminal)** → **GND**
- **C4 (other terminal)** → **GND**
- **U1 Pin 1 (GND)** → **GND**
- **U1 Pin TAB (GND)** → **GND**
- **J1 Pin 4 (GND)** → **GND** (connect from Page 3)
**Note:**
- All capacitors are unpolarized (ceramic), so either terminal can connect to either net.
- **C1 and C3 are in PARALLEL** between +5V and GND (input filtering/decoupling)
- **C2 and C4 are in PARALLEL** between +3V3 and GND (output filtering/decoupling)
**Power Symbols:**
- Add `+3V3` power symbol (press `P`, select `+3V3`)
- Add `GND` power symbol (press `P`, select `GND`)
- Add `+5V` power symbol (press `P`, select `+5V`) - connects to J1 Pin 1 and level shifter
---
### Page 2: ESP32 Main Controller
| Ref | Component | Library | Symbol | Value | Notes |
|-----|-----------|---------|--------|-------|-------|
| U2 | ESP32 Module | `Midea_ESP` | `ESP32-WROOM-32E` | ESP32-WROOM-32E | Main MCU (onboard antenna) |
| C5 | Capacitor | `Device` | `C` | 100nF | VDD decoupling (Pin 2) |
| C6 | Capacitor | `Device` | `C` | 10µF | Bulk capacitor near module |
| SW1 | Reset Button | `Button_Switch_SMD` | `SW_PUSH` | - | Reset switch |
| SW2 | Boot Button | `Button_Switch_SMD` | `SW_PUSH` | - | Boot/Flash switch |
| R3 | Resistor | `Device` | `R` | 10kΩ | Reset pull-up |
| R4 | Resistor | `Device` | `R` | 10kΩ | Boot pull-up |
| LED1 | LED | `Device` | `LED` | - | WiFi status |
| LED2 | LED | `Device` | `LED` | - | BLE status |
| R1 | Resistor | `Device` | `R` | 220Ω | LED1 current limit |
| R2 | Resistor | `Device` | `R` | 220Ω | LED2 current limit |
**Power Connections (For ESP32-WROOM-32E with Only Pin 2 VDD Exposed):**
- **ESP32 Pin 2 (VDD)** → **+3V3 Power Rail**
- **Note:** Only Pin 2 (VDD) is exposed on your module (onboard antenna variant)
- **C5 (100nF):** **U2 Pin 2 (VDD)****C5 (one terminal)****+3V3**, **C5 (other terminal)****GND** (decoupling capacitor - required)
- **C6 (10µF):** **U2 Pin 2 (VDD)****C6 (one terminal)****+3V3**, **C6 (other terminal)****GND** (bulk capacitor - recommended near module)
- **Placement:** C5 and C6 must be placed as close as possible to Pin 2 (<5mm recommended)
- **ESP32 GND pins** (all exposed GND pins) **GND**
- **Note:** Connect all exposed GND pins to ground plane
- **Typical GND pins:** Pin 1, and any other exposed GND pins on your module
- **Note:** Internal VDD pins are handled by the module internally - only external Pin 2 needs decoupling
**Critical Control Pins (Per Datasheet):**
- **U2 EN (Enable Pin) - Pin 3 in RF_Module library:**
- **Function:** Active HIGH - enables ESP32 operation (must be HIGH for normal operation)
- **Pull-up resistor:** R3 (10kΩ) +3V3 (required by datasheet)
- **Reset button:** SW1 connected to EN pin (active LOW reset - pulls EN LOW to reset)
- **Connections:**
- **U2.EN** **R3 (10kΩ)** **+3V3** (pull-up resistor)
- **U2.EN** **SW1 Pin 1** (reset button)
- **SW1 Pin 2** **GND** (when button pressed, EN goes LOW = reset)
- **Note:** EN must be HIGH (3.3V) for ESP32 to operate. Pulling it LOW resets the chip.
- **U2 GPIO0 (Boot Mode Pin):**
- **Function:** Boot mode selection
- **HIGH (3.3V):** Normal boot from flash
- **LOW (GND):** Download mode for flashing
- **Pull-up resistor:** R4 (10kΩ) +3V3 (required by datasheet)
- **Boot button:** SW2 connected to GPIO0 (pull LOW for download mode)
- **Connection:** U2.GPIO0 R4 +3V3, U2.GPIO0 SW2 Pin 1, SW2 Pin 2 GND
**GPIO Connections:**
- **U2 GPIO17 (UART1 TX):** Label: `ESP32_TX` Connect to Page 3 (U3.A1) - AC communication
- **U2 GPIO16 (UART1 RX):** Label: `ESP32_RX` Connect to Page 3 (U3.A2) - AC communication
- **U2 GPIO2:** R1 (220Ω) LED1 Anode LED1 Cathode GND (WiFi status indicator)
- **U2 GPIO4:** R2 (220Ω) LED2 Anode LED2 Cathode GND (BLE status indicator)
- **U2 GPIO1 (UART0 TX):** Label: `UART_TX` Connect to Page 4 (J2 Pin 3) [if programming header]
- **U2 GPIO3 (UART0 RX):** Label: `UART_RX` Connect to Page 4 (J2 Pin 4) [if programming header]
**Programming Header Connections (Optional):**
- **U2 GPIO0:** Label: `DTR` Connect to Page 4 (J2 Pin 5) - Auto-reset for flashing
- **U2 EN:** Label: `RTS` Connect to Page 4 (J2 Pin 6) - Auto-reset for flashing
**Note:** According to ESP32-WROOM-32E datasheet:
- **Power supply:** Must be stable 3.0V to 3.6V (we use 3.3V)
- **Peak current:** Up to 500mA during WiFi transmission
- **Decoupling:** 100nF ceramic capacitor required at exposed VDD pin (Pin 2)
- **Bulk capacitor:** 10µF recommended near module (C6)
- **PCB layout:** Decoupling capacitors must be placed as close as possible to Pin 2
- **Module variant:** Your module (onboard antenna) only exposes Pin 2 as VDD - internal VDD pins are handled by the module
**Button Connections:**
- **SW1 (Reset Button) - Connected to EN Pin (Pin 3 in RF_Module library):**
- **SW1 Pin 1** **U2.EN** (Enable pin - Pin 3 in RF_Module library)
- **SW1 Pin 1** **R3 (10kΩ)** **+3V3** (pull-up resistor)
- **SW1 Pin 2** **GND**
- **Function:** Pressing SW1 pulls EN LOW, which resets the ESP32
- **Normal state:** EN is HIGH (3.3V) via R3 pull-up, ESP32 operates normally
- **Reset state:** When button pressed, EN goes LOW (GND), ESP32 resets
- **SW2 (Boot Button) - Connected to GPIO0:**
- **SW2 Pin 1** **U2.GPIO0** (Boot mode pin)
- **SW2 Pin 1** **R4 (10kΩ)** **+3V3** (pull-up resistor)
- **SW2 Pin 2** **GND**
- **Function:** Pressing SW2 pulls GPIO0 LOW, which puts ESP32 in download mode
- **Normal state:** GPIO0 is HIGH (3.3V) via R4 pull-up, ESP32 boots from flash
- **Download mode:** When button pressed, GPIO0 goes LOW (GND), ESP32 enters download mode
**LED Connections:**
- LED1 Anode R1 U2.GPIO2
- LED1 Cathode GND
- LED2 Anode R2 U2.GPIO4
- LED2 Cathode GND
**Decoupling Capacitors (For Module with Only Pin 2 VDD Exposed):**
- **C5:** U2 Pin 2 (VDD) GND (100nF ceramic, 0805 package)
- **Purpose:** High-frequency decoupling for VDD pin
- **Placement:** As close as possible to Pin 2 (<5mm)
- **C6:** U2 Pin 2 (VDD) GND (10µF ceramic, 0805 package)
- **Purpose:** Bulk capacitor for power supply stability
- **Placement:** Near ESP32 module, close to Pin 2
**Note:**
- Your ESP32-WROOM-32E module (onboard antenna) only exposes Pin 2 as VDD
- Internal VDD pins are handled internally by the module
- Only the exposed Pin 2 requires external decoupling capacitors
- C5 (100nF) for high-frequency decoupling
- C6 (10µF) for bulk power supply filtering
**PCB Layout Requirements:**
- **C5 (100nF):** Place **as close as possible** to Pin 2 (<5mm recommended)
- **C6 (10µF):** Place near ESP32 module, close to Pin 2
- **Trace width:** Use short, wide traces from Pin 2 to capacitors
- **Ground connection:** Connect capacitors to ground plane with short, wide traces
- **Power trace:** Use adequate trace width for 500mA peak current (minimum 0.5mm)
---
### Page 3: Level Shifter and AC Interface
| Ref | Component | Library | Symbol | Value | Notes |
|-----|-----------|---------|--------|-------|-------|
| U3 | Level Shifter | `Midea_ESP` | `TXB0104PWR` | TXB0104PWR | 4-channel level shifter (TSSOP-14) |
| J1 | AC Connector | `Connector_JST` | `JST_XH_B4B-XH-A` | - | 4-pin JST-XH |
| C14 | Capacitor | `Device` | `C` | 100nF | VCCA decoupling (U3 Pin 12) |
| C15 | Capacitor | `Device` | `C` | 100nF | VCCB decoupling (U3 Pin 11) |
**TXB0104PWR Pin Connections:**
**Low Voltage Side (3.3V - ESP32):**
- **U3 Pin 1 (A1)** Net Label: `ESP32_TX` Connect to Page 2 (U2.GPIO17)
- **U3 Pin 2 (A2)** Net Label: `ESP32_RX` Connect to Page 2 (U2.GPIO16)
- **U3 Pin 3 (A3)** NC (Not Connected)
- **U3 Pin 4 (A4)** NC (Not Connected)
**High Voltage Side (5V - AC):**
- **U3 Pin 9 (B1)** Net Label: `AC_RX` J1 Pin 2
- **U3 Pin 8 (B2)** Net Label: `AC_TX` J1 Pin 3
- **U3 Pin 7 (B3)** NC (Not Connected)
- **U3 Pin 6 (B4)** NC (Not Connected)
**Power (Per TXB0104 Datasheet):**
- **U3 Pin 12 (VCCA)** **+3V3 Power Rail** (Low voltage side: 1.2V to 3.6V, we use 3.3V)
- **C14 (100nF)** **U3 Pin 12 (VCCA)** **+3V3**, **C14 (other terminal)** **GND** (decoupling capacitor - required by datasheet)
- **U3 Pin 11 (VCCB)** **+5V Power Rail** (High voltage side: 1.65V to 5.5V, we use 5V)
- **C15 (100nF)** **U3 Pin 11 (VCCB)** **+5V**, **C15 (other terminal)** **GND** (decoupling capacitor - required by datasheet)
- **U3 Pin 10 (OE)** **+3V3 Power Rail** (Output Enable - referenced to VCCA per datasheet)
- **Note:** OE input circuit is referenced to VCCA (not VCCB) per datasheet
- **Function:** HIGH (3.3V) = enabled, LOW (GND) = high-impedance state
- **U3 Pin 5 (GND)** GND
- **U3 Pin 13 (GND)** GND
- **U3 Pin 14 (GND)** GND
**Critical Requirement (Per Datasheet):**
- **VCCA must NOT exceed VCCB:** 3.3V 5V (correct)
- **Decoupling capacitors:** 100nF ceramic capacitors required on both VCCA and VCCB (C14, C15)
**AC Connector (J1) - JST-XH Connector on PCB:**
- **J1 Pin 1** **+5V Power Rail** Connect to Page 1 (U1 Pin 3 via capacitors) - **Power input for PCB**
- **J1 Pin 2** Net Label: `AC_RX` U3 Pin 9 (B1)
- **J1 Pin 3** Net Label: `AC_TX` U3 Pin 8 (B2)
- **J1 Pin 4** **GND** Connect to all GND nets
**Note:** J1 is a JST-XH connector mounted on the PCB. This connector provides:
- **Power input** (Pin 1: +5V) - Powers the entire PCB
- **AC communication** (Pins 2-3: UART signals)
- **Ground** (Pin 4: GND)
You will connect a cable with a matching JST-XH connector on one end to connect to your AC unit. The other end of the cable connects to J1 on the PCB.
**Net Labels to Use:**
- `ESP32_TX` - ESP32 transmit to level shifter
- `ESP32_RX` - ESP32 receive from level shifter
- `AC_TX` - AC transmit line
- `AC_RX` - AC receive line
---
### Page 4: Programming Header (Required for Flashing)
| Ref | Component | Library | Symbol | Value | Notes |
|-----|-----------|---------|--------|-------|-------|
| J2 | Header | `Connector_PinHeader_2.54mm` | `PinHeader_2x04_P2.54mm_Vertical` | - | 2x4 programming header (8 pins total, 6 used) |
| R5 | Resistor | `Device` | `R` | 10kΩ | DTR pull-up (optional but recommended) |
| R6 | Resistor | `Device` | `R` | 10kΩ | RTS pull-up (optional but recommended) |
**Programming Header (J2) Pinout - 2x4 Header (2.54mm pitch):**
**Pin Layout (Top View):**
```
┌─────────────┐
│ 1 2 3 4 │ ← Top row
│ 5 6 7 8 │ ← Bottom row
└─────────────┘
```
| J2 Pin | Signal | ESP32 Connection | Description |
|--------|--------|------------------|-------------|
| 1 | +3V3 | +3V3 Power Rail | Optional - Power ESP32 from programmer |
| 2 | GND | GND | Ground reference (required) |
| 3 | UART_TX | U2.GPIO1 (UART0 TX) | ESP32 transmits to programmer |
| 4 | UART_RX | U2.GPIO3 (UART0 RX) | ESP32 receives from programmer |
| 5 | DTR | U2.GPIO0 | Data Terminal Ready (auto-reset for flashing) |
| 6 | RTS | U2.EN | Request To Send (auto-reset for flashing) |
| 7 | NC | - | Not connected (spare) |
| 8 | NC | - | Not connected (spare) |
**Connections:**
- **J2 Pin 1** **+3V3 Power Rail** (optional - for powering from programmer)
- **J2 Pin 2** **GND** (required)
- **J2 Pin 3** Net Label: `UART_TX` Connect to Page 2 (U2.GPIO1) - ESP32 TX
- **J2 Pin 4** Net Label: `UART_RX` Connect to Page 2 (U2.GPIO3) - ESP32 RX
- **J2 Pin 5** Net Label: `DTR` Connect to Page 2 (U2.GPIO0) - Auto-reset
- **J2 Pin 6** Net Label: `RTS` Connect to Page 2 (U2.EN) - Auto-reset
- **J2 Pin 7** **NC** (Not Connected - spare for future use)
- **J2 Pin 8** **NC** (Not Connected - spare for future use)
**Flashing with 2x4 Header:**
- **Automatic** - no buttons needed:
- DTR/RTS signals automatically put ESP32 in boot mode
- Just run `esptool` or ESPHome - it handles everything
- Much easier and faster
**Note:** Pins 7 and 8 are spare and can be used for future expansion if needed.
**Auto-Reset Circuit (Optional but Recommended):**
- **J2 Pin 5 (DTR)** R5 +3V3
- **J2 Pin 5 (DTR)** U2.GPIO0 (Boot mode control)
- **J2 Pin 6 (RTS)** R6 +3V3
- **J2 Pin 6 (RTS)** U2.EN (Reset control)
**Note:** The pull-up resistors (R5, R6) are optional. Most USB-to-Serial adapters have built-in pull-ups, but adding them ensures reliable operation.
**Net Labels:**
- `UART_TX` - ESP32 UART TX to programmer
- `UART_RX` - ESP32 UART RX from programmer
- `DTR` - Data Terminal Ready (auto-reset)
- `RTS` - Request To Send (auto-reset)
**External USB-to-Serial Adapter Connections:**
When connecting an external USB-to-Serial adapter (e.g., CP2102, CH340, FT232):
- Adapter **VCC** J2 Pin 1 (optional - only if you want to power ESP32 from adapter)
- Adapter **GND** J2 Pin 2
- Adapter **RX** J2 Pin 3 (UART_TX from ESP32)
- Adapter **TX** J2 Pin 4 (UART_RX to ESP32)
- Adapter **DTR** J2 Pin 5 (auto-reset)
- Adapter **RTS** J2 Pin 6 (auto-reset)
---
## How to Add Components in KiCad
### Step 1: Add Components
1. Press **`A`** (or click "Place Symbol" tool)
2. In the symbol chooser, search for the component
3. Click to place on schematic
4. Press **`E`** to edit properties (set Reference, Value)
### Step 2: Add Power Symbols
1. Press **`P`** (or click "Place Power Port" tool)
2. Select power symbol: `+3V3`, `+5V`, or `GND`
3. Click to place
4. All symbols with the same name are automatically connected
### Step 3: Add Wires
1. Press **`W`** (or click "Place Wire" tool)
2. Click on a pin, then click on destination pin
3. KiCad will route the wire automatically
### Step 4: Add Net Labels (for cross-page connections)
1. Press **`L`** (or click "Place Net Label" tool)
2. Type the net name (e.g., `ESP32_TX`)
3. Click on the wire to attach the label
4. Use the same label name on other pages to connect them
### Step 5: Add Hierarchical Sheets (for multiple pages)
1. Press **`S`** (or click "Place Hierarchical Sheet" tool)
2. Draw a rectangle for the sheet
3. Double-click to edit sheet properties
4. Set sheet name and file name
---
## Connection Summary by Net
### +3V3 Net (3.3V Power Rail)
- U1 Pin 2 (OUT)
- U2 All VDD pins (1, 3, 14, 21, 22, 27, 28, 33, 42)
- U3 Pin 12 (VCCA)
- U3 Pin 10 (OE)
- J2 Pin 1 (optional - if powering from programmer)
- R1, R2, R3, R4, R5, R6 (one end of pull-up resistors)
- LED1, LED2 anodes (via resistors)
### +5V Net (5V Power Rail)
- J1 Pin 1 (Power input from AC connection)
- U1 Pin 3 (IN)
- U3 Pin 11 (VCCB)
### GND Net (Ground)
- J1 Pin 4 (Ground from AC connection)
- U1 Pin 1 and TAB
- U2 All GND pins (2, 4, 13, 15, 20, 23, 26, 29, 34, 38, 40)
- U3 Pins 5, 13, 14 (GND)
- J2 Pin 2 (GND)
- All capacitor negative terminals
- SW1 Pin 2, SW2 Pin 2
- LED1, LED2 cathodes
### ESP32_TX Net
- U2 GPIO17 U3 Pin 1 (A1)
### ESP32_RX Net
- U2 GPIO16 U3 Pin 2 (A2)
### AC_TX Net
- U3 Pin 8 (B2) J1 Pin 3
### AC_RX Net
- U3 Pin 9 (B1) J1 Pin 2
### UART_TX Net (if programming header included)
- U2 GPIO1 J2 Pin 3
### UART_RX Net (if programming header included)
- U2 GPIO3 J2 Pin 4
### DTR Net (if programming header included)
- J2 Pin 5 U2 GPIO0
### RTS Net (if programming header included)
- J2 Pin 6 U2 EN
---
## Recommended Schematic Layout
### Option 1: Single Page (Simple)
- Left: Power supply (powered from J1)
- Center: ESP32 with peripherals
- Right: Level shifter and AC connector (J1 provides power)
- Bottom: Programming Header (if included)
### Option 2: Multiple Pages (Organized)
- **Page 1**: Power Supply (USB input, regulator, capacitors)
- **Page 2**: ESP32 Main (MCU, buttons, LEDs, decoupling caps)
- **Page 3**: Level Shifter & AC Interface
- **Page 4**: Programming Header (optional)
Use hierarchical sheets or net labels to connect between pages.
---
## Tips
1. **Use Net Labels** for cross-page connections instead of wires
2. **Group related components** together
3. **Place power symbols** near components that need them
4. **Use buses** if you have multiple similar signals (not needed here)
5. **Add text notes** to document special connections
6. **Run ERC** (Electrical Rules Check) after completing: Tools Electrical Rules Checker
---
## Component Values Summary
| Component | Value | Purpose |
|-----------|-------|---------|
| U1 | AMS1117-3.3 | 5V to 3.3V regulator |
| U2 | ESP32-WROOM-32E | Main microcontroller |
| U3 | TXB0104PWR | 3.3V 5V level shifter |
| J2 | 6-pin Header | Programming header (optional) |
| R1, R2 | 220Ω | LED current limiting |
| R3, R4 | 10kΩ | Button pull-up resistors |
| R5, R6 | 10kΩ | DTR/RTS pull-up resistors (optional) |
| C1, C2 | 10µF | Power supply capacitors |
| C3, C4 | 100nF | Decoupling capacitors |
| C5-C13 | 100nF | ESP32 decoupling |
| C14, C15 | 100nF, 10µF | CP2102N decoupling |
---
## Next Steps After Schematic
1. **Annotate Components**: Tools Annotate Schematic
2. **Electrical Rules Check**: Tools Electrical Rules Checker
3. **Assign Footprints**: Tools Assign Footprints
4. **Generate Netlist**: Tools Generate Netlist
5. **Open PCB Editor**: Click "Open PCB in Board Editor"

View File

@@ -0,0 +1,149 @@
# TXB0104PWR Datasheet Reference
Based on the official TXB0104 datasheet: [TXB0104 Datasheet](https://www.ti.com/lit/ds/symlink/txb0104.pdf)
## Key Specifications
### Power Supply Requirements
- **VCCA (A Port):** 1.2V to 3.6V
- **Our design:** 3.3V (for ESP32)
- **Pin:** Pin 12 (VCCA)
- **VCCB (B Port):** 1.65V to 5.5V
- **Our design:** 5V (for AC communication)
- **Pin:** Pin 11 (VCCB)
- **Critical:** VCCA must NOT exceed VCCB
- **Our design:** 3.3V ≤ 5V ✓ (correct)
### Pin Configuration (TSSOP-14 Package - TXB0104PW)
| Pin | Name | Function | Our Connection |
|-----|------|----------|----------------|
| 1 | A1 | A Port 1 (Low Voltage) | ESP32 GPIO17 (TX) |
| 2 | A2 | A Port 2 (Low Voltage) | ESP32 GPIO16 (RX) |
| 3 | A3 | A Port 3 (Low Voltage) | NC (Not Connected) |
| 4 | A4 | A Port 4 (Low Voltage) | NC (Not Connected) |
| 5 | GND | Ground | GND |
| 6 | B4 | B Port 4 (High Voltage) | NC (Not Connected) |
| 7 | B3 | B Port 3 (High Voltage) | NC (Not Connected) |
| 8 | B2 | B Port 2 (High Voltage) | AC TX (J1 Pin 3) |
| 9 | B1 | B Port 1 (High Voltage) | AC RX (J1 Pin 2) |
| 10 | OE | Output Enable | +3V3 (VCCA) |
| 11 | VCCB | B Port Power Supply | +5V |
| 12 | VCCA | A Port Power Supply | +3V3 |
| 13 | GND | Ground | GND |
| 14 | GND | Ground | GND |
### Critical Design Requirements
#### 1. Output Enable (OE) Pin
**Per Datasheet:**
- **OE input circuit is referenced to VCCA** (not VCCB)
- **When OE is LOW:** All outputs are in high-impedance state
- **When OE is HIGH:** Device is enabled
- **Power-up/down:** OE must be tied to GND through a pulldown resistor to ensure high-impedance during power transitions
**Our Design:**
- **OE (Pin 10):** Connected to +3V3 (VCCA) ✓
- **Note:** We connect OE directly to VCCA (3.3V), which keeps the device always enabled
- **Alternative:** Could add pulldown resistor for power-up safety, but direct connection to VCCA is acceptable for always-on operation
**Recommendation:**
- Current design (OE → +3V3) is correct for always-enabled operation
- Optional: Add 10kΩ pulldown resistor from OE to GND for power-up safety (not critical if power sequencing is controlled)
#### 2. Power Supply Sequencing
**Per Datasheet:**
- VCCA must not exceed VCCB
- VCC isolation: If either VCC input is at GND, all outputs are in high-impedance state
- IOFF supports partial power-down mode
**Our Design:**
- VCCA = 3.3V, VCCB = 5V ✓ (3.3V ≤ 5V, correct)
- Both supplies come from same source (J1 Pin 1 = +5V)
- 3.3V is derived from 5V via regulator
- Power sequencing: 5V comes first, then 3.3V (via regulator) - this is acceptable
#### 3. Bidirectional Translation
**Per Datasheet:**
- Automatic direction sensing
- No direction control needed
- Works bidirectionally on A and B ports
**Our Design:**
- A1 (Pin 1) ↔ B1 (Pin 9): ESP32 TX ↔ AC RX ✓
- A2 (Pin 2) ↔ B2 (Pin 8): ESP32 RX ↔ AC TX ✓
- Automatic direction sensing handles UART communication ✓
#### 4. Decoupling Capacitors
**Per Datasheet:**
- Recommended: 0.1µF (100nF) ceramic capacitor on VCCA
- Recommended: 0.1µF (100nF) ceramic capacitor on VCCB
- Place as close as possible to power pins
**Our Design:**
- VCCA (Pin 12): Should have 100nF capacitor to GND
- VCCB (Pin 11): Should have 100nF capacitor to GND
- **Note:** These are not explicitly listed in our component list - should be added
**Recommendation:**
- Add C14: 100nF from VCCA (Pin 12) to GND
- Add C15: 100nF from VCCB (Pin 11) to GND
### Electrical Characteristics
- **Low Power Consumption:** 5µA maximum ICC
- **ESD Protection:** ±15kV on B port
- **Latch-up Performance:** Exceeds 100mA per JESD 78, Class II
- **Operating Temperature:** -40°C to +85°C
### Package Information
**TXB0104PW (TSSOP-14):**
- **Package:** TSSOP (14-pin)
- **Body Size:** 5.00mm × 4.40mm
- **Height:** 1.2mm max
- **Lead Pitch:** 0.65mm (fine pitch)
- **Footprint:** `Package_SO:TSSOP-14_4.4x5mm_P0.65mm`
### PCB Layout Recommendations
**Per Datasheet:**
1. **Decoupling capacitors:** Place 100nF ceramic capacitors as close as possible to VCCA and VCCB pins
2. **Ground plane:** Use ground plane for GND pins (5, 13, 14)
3. **Trace routing:** Keep A and B port traces short and matched length if possible
4. **Thermal:** No special thermal considerations needed (low power device)
### Design Verification
**Our Design vs Datasheet:**
| Requirement | Datasheet | Our Design | Status |
|-------------|-----------|------------|--------|
| VCCA voltage | 1.2V to 3.6V | 3.3V | ✓ |
| VCCB voltage | 1.65V to 5.5V | 5V | ✓ |
| VCCA ≤ VCCB | Required | 3.3V ≤ 5V | ✓ |
| OE connection | VCCA referenced | +3V3 (VCCA) | ✓ |
| Package | TSSOP-14 | TSSOP-14 | ✓ |
| Decoupling caps | 100nF on VCCA/VCCB | **Missing** | ⚠️ Should add |
### Missing Components
**Should Add:**
- **C14:** 100nF ceramic capacitor from VCCA (Pin 12) to GND
- **C15:** 100nF ceramic capacitor from VCCB (Pin 11) to GND
**Optional (for power-up safety):**
- **R7:** 10kΩ pulldown resistor from OE (Pin 10) to GND (optional, not critical)
### References
- **Official Datasheet:** [TXB0104 Datasheet](https://www.ti.com/lit/ds/symlink/txb0104.pdf)
- **Package Information:** TSSOP-14 (TXB0104PW)
- **Application Note:** See datasheet section 8 for typical applications

View File

@@ -0,0 +1,251 @@
a# USB-to-Serial Adapters for 6-Pin Programming Header
## What You Need
For the 6-pin programming header, you need a **USB-to-Serial adapter** that has:
-**VCC** (or 3.3V) - Optional, for powering ESP32
-**GND** - Required
-**TX** (Transmit) - Required
-**RX** (Receive) - Required
-**DTR** (Data Terminal Ready) - Required for auto-reset
-**RTS** (Request To Send) - Required for auto-reset
**Important:** The adapter **MUST have DTR and RTS pins** for automatic reset to work.
---
## Recommended USB-to-Serial Adapters
### 1. **CP2102** (Recommended) ⭐
**Why it's good:**
- Very common and reliable
- Excellent driver support (Windows, Linux, macOS)
- Usually has all 6 pins (VCC, GND, TX, RX, DTR, RTS)
- Good quality, stable operation
- 3.3V logic levels (perfect for ESP32)
**Common boards:**
- CP2102 USB-to-Serial breakout boards
- Available from many manufacturers
- Usually $2-5 USD
**Example products:**
- Generic CP2102 breakout boards (AliExpress, eBay, Amazon)
- SparkFun CP2102 Breakout
- Adafruit CP2102 Friend
---
### 2. **CH340** (Budget Option)
**Why it's good:**
- Very cheap ($1-2 USD)
- Common in China-made boards
- Good Linux support
- Usually has all 6 pins
**Common boards:**
- CH340G USB-to-Serial modules
- Very common on cheap Arduino clones
- Available everywhere
**Note:** May need driver installation on Windows/macOS
---
### 3. **FT232RL** (Premium Option)
**Why it's good:**
- Premium quality
- Excellent driver support
- Very reliable
- Professional grade
- Usually $5-10 USD
**Common boards:**
- FTDI FT232RL breakout boards
- SparkFun FT232RL Breakout
- Adafruit FT232H (more advanced)
---
### 4. **CH341** (Alternative)
**Why it's good:**
- Similar to CH340
- Usually cheaper
- Good Linux support
- Usually has all 6 pins
**Note:** May need driver installation
---
## What to Look For
### Required Features:
1. **DTR pin** - Must be present (for auto-reset)
2. **RTS pin** - Must be present (for auto-reset)
3. **3.3V logic levels** - ESP32 uses 3.3V (not 5V)
4. **Standard pinout** - Easy to connect
### Pin Configuration:
Most USB-to-Serial adapters have this pinout:
```
VCC - Power (3.3V or 5V)
GND - Ground
TX - Transmit (to ESP32 RX)
RX - Receive (from ESP32 TX)
DTR - Data Terminal Ready
RTS - Request To Send
```
---
## Where to Buy
### Online:
- **AliExpress** - Very cheap ($1-3), ships from China
- **eBay** - Good prices, various sellers
- **Amazon** - Faster shipping, slightly higher prices
- **SparkFun** - Quality boards, higher prices
- **Adafruit** - Quality boards, higher prices
- **Digi-Key/Mouser** - Professional components
### Local:
- Electronics stores
- Maker/hacker spaces
- Local electronics suppliers
---
## Price Comparison
| Adapter | Price (typical) | Quality | Driver Support |
|---------|----------------|---------|----------------|
| **CH340** | $1-2 | Good | May need drivers |
| **CP2102** | $2-5 | Excellent | Excellent |
| **FT232RL** | $5-10 | Premium | Excellent |
| **CH341** | $1-2 | Good | May need drivers |
**Recommendation:** CP2102 is the sweet spot - good quality, good price, excellent support.
---
## Connection Example
### CP2102 Breakout Board to J2 Header:
| CP2102 Pin | J2 Pin | Signal |
|------------|--------|--------|
| VCC (3.3V) | Pin 1 | +3V3 (optional) |
| GND | Pin 2 | GND |
| RX | Pin 3 | UART_TX (ESP32 TX) |
| TX | Pin 4 | UART_RX (ESP32 RX) |
| DTR | Pin 5 | DTR (GPIO0) |
| RTS | Pin 6 | RTS (EN) |
**Note:** RX/TX are swapped - CP2102 RX connects to ESP32 TX, and vice versa.
---
## Driver Installation
### CP2102:
- **Windows:** Usually auto-installs, or download from Silicon Labs
- **Linux:** Usually works out-of-the-box (built into kernel)
- **macOS:** Usually auto-installs, or download from Silicon Labs
### CH340:
- **Windows:** May need driver download
- **Linux:** Usually works out-of-the-box
- **macOS:** May need driver download
### FT232RL:
- **Windows/Linux/macOS:** Excellent driver support, usually auto-installs
---
## Testing Your Adapter
After connecting, test with:
```bash
# Check if device is detected
ls /dev/ttyUSB* # Linux
# or
ls /dev/cu.* # macOS
# Test with esptool
esptool.py --port /dev/ttyUSB0 chip_id
```
If it works, you'll see the ESP32 chip ID.
---
## Common Issues
### Problem: Adapter doesn't have DTR/RTS
**Solution:** You'll need to manually press buttons (use 4-pin header instead)
### Problem: Adapter is 5V logic
**Solution:** ESP32 can handle 5V on UART pins (they're 5V tolerant), but 3.3V is safer
### Problem: Driver not working
**Solution:** Download drivers from manufacturer website
### Problem: Device not detected
**Solution:**
- Check USB cable (some are power-only)
- Try different USB port
- Check drivers are installed
- On Linux: Check user is in `dialout` group
---
## My Recommendation
**Get a CP2102 USB-to-Serial adapter** because:
- ✅ Excellent quality and reliability
- ✅ Good price ($2-5)
- ✅ Excellent driver support
- ✅ Usually has all 6 pins (VCC, GND, TX, RX, DTR, RTS)
- ✅ 3.3V logic levels (perfect for ESP32)
- ✅ Very common and easy to find
**Where to buy:**
- AliExpress: Search "CP2102 USB to Serial"
- Amazon: Search "CP2102 breakout"
- eBay: Search "CP2102 module"
**What to look for:**
- Make sure it has DTR and RTS pins
- 3.3V logic levels (or jumper-selectable)
- Standard pinout
---
## Alternative: Use Existing Adapter
If you already have a USB-to-Serial adapter:
1. Check if it has DTR and RTS pins
2. If yes → Use 6-pin header (automatic reset)
3. If no → Use 4-pin header (manual buttons)
Most modern USB-to-Serial adapters have DTR and RTS, so 6-pin header is usually the better choice.
---
## Summary
**For 6-pin programming header, you need:**
- USB-to-Serial adapter with **DTR and RTS pins**
- **Recommended:** CP2102 adapter ($2-5)
- **Budget option:** CH340 adapter ($1-2)
- **Premium option:** FT232RL adapter ($5-10)
**All of these will work** - CP2102 is the best balance of price and quality.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

102642
Midea_ESP/fp-info-cache Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,328 @@
(kicad_sch
(version 20250114)
(generator "eeschema")
(generator_version "9.0")
(uuid "ea8a73d6-9851-41a5-a08a-6cb24887010d")
(paper "A4")
(lib_symbols
(symbol "Connector:Conn_01x04_Pin"
(pin_names
(offset 1.016)
(hide yes)
)
(exclude_from_sim no)
(in_bom yes)
(on_board yes)
(property "Reference" "J"
(at 0 5.08 0)
(effects
(font
(size 1.27 1.27)
)
)
)
(property "Value" "Conn_01x04_Pin"
(at 0 -7.62 0)
(effects
(font
(size 1.27 1.27)
)
)
)
(property "Footprint" ""
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Datasheet" "~"
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Description" "Generic connector, single row, 01x04, script generated"
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "ki_locked" ""
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
)
)
)
(property "ki_keywords" "connector"
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "ki_fp_filters" "Connector*:*_1x??_*"
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(symbol "Conn_01x04_Pin_1_1"
(rectangle
(start 0.8636 2.667)
(end 0 2.413)
(stroke
(width 0.1524)
(type default)
)
(fill
(type outline)
)
)
(rectangle
(start 0.8636 0.127)
(end 0 -0.127)
(stroke
(width 0.1524)
(type default)
)
(fill
(type outline)
)
)
(rectangle
(start 0.8636 -2.413)
(end 0 -2.667)
(stroke
(width 0.1524)
(type default)
)
(fill
(type outline)
)
)
(rectangle
(start 0.8636 -4.953)
(end 0 -5.207)
(stroke
(width 0.1524)
(type default)
)
(fill
(type outline)
)
)
(polyline
(pts
(xy 1.27 2.54) (xy 0.8636 2.54)
)
(stroke
(width 0.1524)
(type default)
)
(fill
(type none)
)
)
(polyline
(pts
(xy 1.27 0) (xy 0.8636 0)
)
(stroke
(width 0.1524)
(type default)
)
(fill
(type none)
)
)
(polyline
(pts
(xy 1.27 -2.54) (xy 0.8636 -2.54)
)
(stroke
(width 0.1524)
(type default)
)
(fill
(type none)
)
)
(polyline
(pts
(xy 1.27 -5.08) (xy 0.8636 -5.08)
)
(stroke
(width 0.1524)
(type default)
)
(fill
(type none)
)
)
(pin passive line
(at 5.08 2.54 180)
(length 3.81)
(name "Pin_1"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "1"
(effects
(font
(size 1.27 1.27)
)
)
)
)
(pin passive line
(at 5.08 0 180)
(length 3.81)
(name "Pin_2"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "2"
(effects
(font
(size 1.27 1.27)
)
)
)
)
(pin passive line
(at 5.08 -2.54 180)
(length 3.81)
(name "Pin_3"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "3"
(effects
(font
(size 1.27 1.27)
)
)
)
)
(pin passive line
(at 5.08 -5.08 180)
(length 3.81)
(name "Pin_4"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "4"
(effects
(font
(size 1.27 1.27)
)
)
)
)
)
(embedded_fonts no)
)
)
(symbol
(lib_id "Connector:Conn_01x04_Pin")
(at 147.32 93.98 0)
(unit 1)
(exclude_from_sim no)
(in_bom yes)
(on_board yes)
(dnp no)
(fields_autoplaced yes)
(uuid "d2cc109a-bf92-43ec-a901-af895c5de566")
(property "Reference" "J1"
(at 147.955 86.36 0)
(effects
(font
(size 1.27 1.27)
)
)
)
(property "Value" "Conn_01x04_Pin"
(at 147.955 88.9 0)
(effects
(font
(size 1.27 1.27)
)
)
)
(property "Footprint" ""
(at 147.32 93.98 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Datasheet" "~"
(at 147.32 93.98 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Description" "Generic connector, single row, 01x04, script generated"
(at 147.32 93.98 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(pin "1"
(uuid "d6494f1f-8015-406f-81e9-0a1d1ac6a7ea")
)
(pin "2"
(uuid "48d6339b-2e75-4934-ac88-245b0ef73219")
)
(pin "3"
(uuid "1f0a8d9a-9121-4387-96ec-82b1d8b0c319")
)
(pin "4"
(uuid "c1bbe21b-5887-423d-8af6-290e6f6b4a05")
)
(instances
(project ""
(path "/f579dd88-b421-4fbc-bd0c-53cb7bf597e7/f8d8d011-8388-4453-9dee-2228ec2b7902"
(reference "J1")
(unit 1)
)
)
)
)
)

View File

@@ -0,0 +1,383 @@
(kicad_symbol_lib (version 20241209) (generator kicad_symbol_editor)
(symbol "ESP32-WROOM-32E" (pin_names (offset 1.016)) (in_bom yes) (on_board yes)
(property "Reference" "U" (at 0 0 0)
(effects (font (size 1.27 1.27)) (justify left bottom))
)
(property "Value" "ESP32-WROOM-32E" (at 0 -2.54 0)
(effects (font (size 1.27 1.27)) (justify left bottom))
)
(property "Footprint" "" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "Datasheet" "https://www.espressif.com/sites/default/files/documentation/esp32-wroom-32e_esp32-wroom-32ue_datasheet_en.pdf" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(symbol "ESP32-WROOM-32E_0_1"
(rectangle (start -25.4 -38.1) (end 25.4 38.1)
(stroke (width 0.254) (type default))
(fill (type background))
)
(pin passive line (at -27.94 35.56 0) (length 2.54)
(name "GND" (effects (font (size 1.27 1.27))))
(number "1" (effects (font (size 1.27 1.27))))
)
(pin passive line (at -27.94 33.02 0) (length 2.54)
(name "VDD" (effects (font (size 1.27 1.27))))
(number "2" (effects (font (size 1.27 1.27))))
)
(pin passive line (at -27.94 30.48 0) (length 2.54)
(name "VDD" (effects (font (size 1.27 1.27))))
(number "3" (effects (font (size 1.27 1.27))))
)
(pin passive line (at -27.94 27.94 0) (length 2.54)
(name "GND" (effects (font (size 1.27 1.27))))
(number "4" (effects (font (size 1.27 1.27))))
)
(pin input line (at -27.94 25.4 0) (length 2.54)
(name "GPIO32" (effects (font (size 1.27 1.27))))
(number "5" (effects (font (size 1.27 1.27))))
)
(pin input line (at -27.94 22.86 0) (length 2.54)
(name "GPIO33" (effects (font (size 1.27 1.27))))
(number "6" (effects (font (size 1.27 1.27))))
)
(pin input line (at -27.94 20.32 0) (length 2.54)
(name "GPIO25" (effects (font (size 1.27 1.27))))
(number "7" (effects (font (size 1.27 1.27))))
)
(pin input line (at -27.94 17.78 0) (length 2.54)
(name "GPIO26" (effects (font (size 1.27 1.27))))
(number "8" (effects (font (size 1.27 1.27))))
)
(pin input line (at -27.94 15.24 0) (length 2.54)
(name "GPIO27" (effects (font (size 1.27 1.27))))
(number "9" (effects (font (size 1.27 1.27))))
)
(pin passive line (at -27.94 12.7 0) (length 2.54)
(name "GND" (effects (font (size 1.27 1.27))))
(number "10" (effects (font (size 1.27 1.27))))
)
(pin passive line (at -27.94 10.16 0) (length 2.54)
(name "VDD" (effects (font (size 1.27 1.27))))
(number "11" (effects (font (size 1.27 1.27))))
)
(pin passive line (at -27.94 7.62 0) (length 2.54)
(name "GND" (effects (font (size 1.27 1.27))))
(number "12" (effects (font (size 1.27 1.27))))
)
(pin passive line (at -27.94 5.08 0) (length 2.54)
(name "GND" (effects (font (size 1.27 1.27))))
(number "13" (effects (font (size 1.27 1.27))))
)
(pin passive line (at -27.94 2.54 0) (length 2.54)
(name "VDD" (effects (font (size 1.27 1.27))))
(number "14" (effects (font (size 1.27 1.27))))
)
(pin passive line (at -27.94 0 0) (length 2.54)
(name "GND" (effects (font (size 1.27 1.27))))
(number "15" (effects (font (size 1.27 1.27))))
)
(pin input line (at -27.94 -2.54 0) (length 2.54)
(name "GPIO14" (effects (font (size 1.27 1.27))))
(number "16" (effects (font (size 1.27 1.27))))
)
(pin output line (at -27.94 -5.08 0) (length 2.54)
(name "GPIO12" (effects (font (size 1.27 1.27))))
(number "17" (effects (font (size 1.27 1.27))))
)
(pin input line (at -27.94 -7.62 0) (length 2.54)
(name "GPIO13" (effects (font (size 1.27 1.27))))
(number "18" (effects (font (size 1.27 1.27))))
)
(pin passive line (at -27.94 -10.16 0) (length 2.54)
(name "GND" (effects (font (size 1.27 1.27))))
(number "19" (effects (font (size 1.27 1.27))))
)
(pin passive line (at -27.94 -12.7 0) (length 2.54)
(name "GND" (effects (font (size 1.27 1.27))))
(number "20" (effects (font (size 1.27 1.27))))
)
(pin passive line (at -27.94 -15.24 0) (length 2.54)
(name "VDD" (effects (font (size 1.27 1.27))))
(number "21" (effects (font (size 1.27 1.27))))
)
(pin passive line (at -27.94 -17.78 0) (length 2.54)
(name "VDD" (effects (font (size 1.27 1.27))))
(number "22" (effects (font (size 1.27 1.27))))
)
(pin passive line (at -27.94 -20.32 0) (length 2.54)
(name "GND" (effects (font (size 1.27 1.27))))
(number "23" (effects (font (size 1.27 1.27))))
)
(pin input line (at 27.94 -20.32 0) (length 2.54)
(name "GPIO15" (effects (font (size 1.27 1.27))))
(number "24" (effects (font (size 1.27 1.27))))
)
(pin input line (at 27.94 -17.78 0) (length 2.54)
(name "GPIO2" (effects (font (size 1.27 1.27))))
(number "25" (effects (font (size 1.27 1.27))))
)
(pin input line (at 27.94 -15.24 0) (length 2.54)
(name "GPIO0" (effects (font (size 1.27 1.27))))
(number "26" (effects (font (size 1.27 1.27))))
)
(pin passive line (at 27.94 -12.7 0) (length 2.54)
(name "GND" (effects (font (size 1.27 1.27))))
(number "27" (effects (font (size 1.27 1.27))))
)
(pin passive line (at 27.94 -10.16 0) (length 2.54)
(name "VDD" (effects (font (size 1.27 1.27))))
(number "28" (effects (font (size 1.27 1.27))))
)
(pin passive line (at 27.94 -7.62 0) (length 2.54)
(name "GND" (effects (font (size 1.27 1.27))))
(number "29" (effects (font (size 1.27 1.27))))
)
(pin input line (at 27.94 -5.08 0) (length 2.54)
(name "GPIO4" (effects (font (size 1.27 1.27))))
(number "30" (effects (font (size 1.27 1.27))))
)
(pin input line (at 27.94 -2.54 0) (length 2.54)
(name "GPIO16" (effects (font (size 1.27 1.27))))
(number "31" (effects (font (size 1.27 1.27))))
)
(pin output line (at 27.94 0 0) (length 2.54)
(name "GPIO17" (effects (font (size 1.27 1.27))))
(number "32" (effects (font (size 1.27 1.27))))
)
(pin passive line (at 27.94 2.54 0) (length 2.54)
(name "VDD" (effects (font (size 1.27 1.27))))
(number "33" (effects (font (size 1.27 1.27))))
)
(pin passive line (at 27.94 5.08 0) (length 2.54)
(name "GND" (effects (font (size 1.27 1.27))))
(number "34" (effects (font (size 1.27 1.27))))
)
(pin input line (at 27.94 7.62 0) (length 2.54)
(name "GPIO5" (effects (font (size 1.27 1.27))))
(number "35" (effects (font (size 1.27 1.27))))
)
(pin input line (at 27.94 10.16 0) (length 2.54)
(name "GPIO18" (effects (font (size 1.27 1.27))))
(number "36" (effects (font (size 1.27 1.27))))
)
(pin input line (at 27.94 12.7 0) (length 2.54)
(name "GPIO19" (effects (font (size 1.27 1.27))))
(number "37" (effects (font (size 1.27 1.27))))
)
(pin passive line (at 27.94 15.24 0) (length 2.54)
(name "GND" (effects (font (size 1.27 1.27))))
(number "38" (effects (font (size 1.27 1.27))))
)
(pin input line (at 27.94 17.78 0) (length 2.54)
(name "GPIO21" (effects (font (size 1.27 1.27))))
(number "39" (effects (font (size 1.27 1.27))))
)
(pin passive line (at 27.94 20.32 0) (length 2.54)
(name "GND" (effects (font (size 1.27 1.27))))
(number "40" (effects (font (size 1.27 1.27))))
)
(pin input line (at 27.94 22.86 0) (length 2.54)
(name "GPIO3" (effects (font (size 1.27 1.27))))
(number "41" (effects (font (size 1.27 1.27))))
)
(pin passive line (at 27.94 25.4 0) (length 2.54)
(name "VDD" (effects (font (size 1.27 1.27))))
(number "42" (effects (font (size 1.27 1.27))))
)
(pin input line (at 27.94 27.94 0) (length 2.54)
(name "GPIO1" (effects (font (size 1.27 1.27))))
(number "43" (effects (font (size 1.27 1.27))))
)
(pin input line (at 27.94 30.48 0) (length 2.54)
(name "GPIO22" (effects (font (size 1.27 1.27))))
(number "44" (effects (font (size 1.27 1.27))))
)
(pin input line (at 27.94 33.02 0) (length 2.54)
(name "GPIO23" (effects (font (size 1.27 1.27))))
(number "45" (effects (font (size 1.27 1.27))))
)
(pin power_in line (at 0 -40.64 0) (length 2.54)
(name "EN" (effects (font (size 1.27 1.27))))
(number "EN" (effects (font (size 1.27 1.27))))
)
)
)
(symbol "TXB0104PWR" (pin_names (offset 1.016)) (in_bom yes) (on_board yes)
(property "Reference" "U" (at 0 0 0)
(effects (font (size 1.27 1.27)) (justify left bottom))
)
(property "Value" "TXB0104PWR" (at 0 -5.08 0)
(effects (font (size 1.27 1.27)) (justify left bottom))
)
(property "Footprint" "Package_SO:TSSOP-14_4.4x5mm_P0.65mm" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "Datasheet" "https://www.ti.com/lit/ds/symlink/txb0104.pdf" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(symbol "TXB0104PWR_0_1"
(rectangle (start -5.08 -7.62) (end 5.08 7.62)
(stroke (width 0.254) (type default))
(fill (type background))
)
(pin bidirectional line (at -7.62 5.08 0) (length 2.54)
(name "A1" (effects (font (size 1.27 1.27))))
(number "1" (effects (font (size 1.27 1.27))))
)
(pin bidirectional line (at -7.62 2.54 0) (length 2.54)
(name "A2" (effects (font (size 1.27 1.27))))
(number "2" (effects (font (size 1.27 1.27))))
)
(pin bidirectional line (at -7.62 0 0) (length 2.54)
(name "A3" (effects (font (size 1.27 1.27))))
(number "3" (effects (font (size 1.27 1.27))))
)
(pin bidirectional line (at -7.62 -2.54 0) (length 2.54)
(name "A4" (effects (font (size 1.27 1.27))))
(number "4" (effects (font (size 1.27 1.27))))
)
(pin power_in line (at -7.62 -5.08 0) (length 2.54)
(name "GND" (effects (font (size 1.27 1.27))))
(number "5" (effects (font (size 1.27 1.27))))
)
(pin bidirectional line (at 7.62 -5.08 0) (length 2.54)
(name "B4" (effects (font (size 1.27 1.27))))
(number "6" (effects (font (size 1.27 1.27))))
)
(pin bidirectional line (at 7.62 -2.54 0) (length 2.54)
(name "B3" (effects (font (size 1.27 1.27))))
(number "7" (effects (font (size 1.27 1.27))))
)
(pin bidirectional line (at 7.62 0 0) (length 2.54)
(name "B2" (effects (font (size 1.27 1.27))))
(number "8" (effects (font (size 1.27 1.27))))
)
(pin bidirectional line (at 7.62 2.54 0) (length 2.54)
(name "B1" (effects (font (size 1.27 1.27))))
(number "9" (effects (font (size 1.27 1.27))))
)
(pin input line (at 7.62 5.08 0) (length 2.54)
(name "OE" (effects (font (size 1.27 1.27))))
(number "10" (effects (font (size 1.27 1.27))))
)
(pin power_in line (at 0 9.652 0) (length 2.54)
(name "VCCB" (effects (font (size 1.27 1.27))))
(number "11" (effects (font (size 1.27 1.27))))
)
(pin power_in line (at 0 -9.652 0) (length 2.54)
(name "VCCA" (effects (font (size 1.27 1.27))))
(number "12" (effects (font (size 1.27 1.27))))
)
(pin power_in line (at -2.54 7.62 90) (length 2.54)
(name "GND" (effects (font (size 1.27 1.27))))
(number "13" (effects (font (size 1.27 1.27))))
)
(pin power_in line (at 2.54 7.62 90) (length 2.54)
(name "GND" (effects (font (size 1.27 1.27))))
(number "14" (effects (font (size 1.27 1.27))))
)
)
)
(symbol "AMS1117-3.3" (pin_names (offset 1.016)) (in_bom yes) (on_board yes)
(property "Reference" "U" (at 0 0 0)
(effects (font (size 1.27 1.27)) (justify left bottom))
)
(property "Value" "AMS1117-3.3" (at 0 -5.08 0)
(effects (font (size 1.27 1.27)) (justify left bottom))
)
(property "Footprint" "Package_TO_SOT_SMD:SOT-223" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "Datasheet" "https://www.advanced-monolithic.com/pdf/ds1117.pdf" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(symbol "AMS1117-3.3_0_1"
(rectangle (start -5.08 -7.62) (end 5.08 7.62)
(stroke (width 0.254) (type default))
(fill (type background))
)
(pin power_in line (at -7.62 5.08 0) (length 2.54)
(name "GND" (effects (font (size 1.27 1.27))))
(number "1" (effects (font (size 1.27 1.27))))
)
(pin power_in line (at -7.62 -5.08 0) (length 2.54)
(name "OUT" (effects (font (size 1.27 1.27))))
(number "2" (effects (font (size 1.27 1.27))))
)
(pin power_in line (at 7.62 -5.08 0) (length 2.54)
(name "IN" (effects (font (size 1.27 1.27))))
(number "3" (effects (font (size 1.27 1.27))))
)
(pin power_in line (at 0 9.652 0) (length 2.54)
(name "GND" (effects (font (size 1.27 1.27))))
(number "TAB" (effects (font (size 1.27 1.27))))
)
)
)
(symbol "CP2102N" (pin_names (offset 1.016)) (in_bom yes) (on_board yes)
(property "Reference" "U" (at 0 0 0)
(effects (font (size 1.27 1.27)) (justify left bottom))
)
(property "Value" "CP2102N" (at 0 -5.08 0)
(effects (font (size 1.27 1.27)) (justify left bottom))
)
(property "Footprint" "Package_DFN_QFN:SiliconLabs_QFN-24_EP_3x3mm_P0.4mm" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "Datasheet" "https://www.silabs.com/documents/public/data-sheets/cp2102n-datasheet.pdf" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(symbol "CP2102N_0_1"
(rectangle (start -7.62 -7.62) (end 7.62 7.62)
(stroke (width 0.254) (type default))
(fill (type background))
)
(pin input line (at -10.16 5.08 0) (length 2.54)
(name "VBUS" (effects (font (size 1.27 1.27))))
(number "1" (effects (font (size 1.27 1.27))))
)
(pin input line (at -10.16 2.54 0) (length 2.54)
(name "D+" (effects (font (size 1.27 1.27))))
(number "2" (effects (font (size 1.27 1.27))))
)
(pin input line (at -10.16 0 0) (length 2.54)
(name "D-" (effects (font (size 1.27 1.27))))
(number "3" (effects (font (size 1.27 1.27))))
)
(pin power_in line (at -10.16 -2.54 0) (length 2.54)
(name "VDD" (effects (font (size 1.27 1.27))))
(number "4" (effects (font (size 1.27 1.27))))
)
(pin power_in line (at -10.16 -5.08 0) (length 2.54)
(name "GND" (effects (font (size 1.27 1.27))))
(number "5" (effects (font (size 1.27 1.27))))
)
(pin output line (at 10.16 -5.08 0) (length 2.54)
(name "TXD" (effects (font (size 1.27 1.27))))
(number "6" (effects (font (size 1.27 1.27))))
)
(pin input line (at 10.16 -2.54 0) (length 2.54)
(name "RXD" (effects (font (size 1.27 1.27))))
(number "7" (effects (font (size 1.27 1.27))))
)
(pin input line (at 10.16 0 0) (length 2.54)
(name "DTR" (effects (font (size 1.27 1.27))))
(number "8" (effects (font (size 1.27 1.27))))
)
(pin input line (at 10.16 2.54 0) (length 2.54)
(name "RTS" (effects (font (size 1.27 1.27))))
(number "9" (effects (font (size 1.27 1.27))))
)
(pin power_in line (at 10.16 5.08 0) (length 2.54)
(name "GND" (effects (font (size 1.27 1.27))))
(number "10" (effects (font (size 1.27 1.27))))
)
)
)
)

View File

@@ -0,0 +1,5 @@
(kicad_symbol_lib
(version 20241209)
(generator "kicad_symbol_editor")
(generator_version "9.0")
)

View File

@@ -0,0 +1,387 @@
(kicad_symbol_lib
(version 20241209)
(generator "kicad_symbol_editor")
(generator_version "9.0")
(symbol "TXB0104PWR"
(pin_names
(offset 0.254)
)
(exclude_from_sim no)
(in_bom yes)
(on_board yes)
(property "Reference" "U"
(at 30.48 10.16 0)
(effects
(font
(size 1.524 1.524)
)
)
)
(property "Value" "TXB0104PWR"
(at 30.48 7.62 0)
(effects
(font
(size 1.524 1.524)
)
)
)
(property "Footprint" "PW14"
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
(italic yes)
)
(hide yes)
)
)
(property "Datasheet" "https://www.ti.com/lit/gpn/txb0104"
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
(italic yes)
)
(hide yes)
)
)
(property "Description" ""
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "ki_locked" ""
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
)
)
)
(property "ki_keywords" "TXB0104PWR"
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "ki_fp_filters" "PW14 PW14-M PW14-L"
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(symbol "TXB0104PWR_0_1"
(polyline
(pts
(xy 7.62 5.08) (xy 7.62 -20.32)
)
(stroke
(width 0.127)
(type default)
)
(fill
(type none)
)
)
(polyline
(pts
(xy 7.62 -20.32) (xy 53.34 -20.32)
)
(stroke
(width 0.127)
(type default)
)
(fill
(type none)
)
)
(polyline
(pts
(xy 53.34 5.08) (xy 7.62 5.08)
)
(stroke
(width 0.127)
(type default)
)
(fill
(type none)
)
)
(polyline
(pts
(xy 53.34 -20.32) (xy 53.34 5.08)
)
(stroke
(width 0.127)
(type default)
)
(fill
(type none)
)
)
(pin power_in line
(at 0 0 0)
(length 7.62)
(name "VCCA"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "1"
(effects
(font
(size 1.27 1.27)
)
)
)
)
(pin bidirectional line
(at 0 -2.54 0)
(length 7.62)
(name "A1"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "2"
(effects
(font
(size 1.27 1.27)
)
)
)
)
(pin bidirectional line
(at 0 -5.08 0)
(length 7.62)
(name "A2"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "3"
(effects
(font
(size 1.27 1.27)
)
)
)
)
(pin bidirectional line
(at 0 -7.62 0)
(length 7.62)
(name "A3"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "4"
(effects
(font
(size 1.27 1.27)
)
)
)
)
(pin bidirectional line
(at 0 -10.16 0)
(length 7.62)
(name "A4"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "5"
(effects
(font
(size 1.27 1.27)
)
)
)
)
(pin unspecified line
(at 0 -12.7 0)
(length 7.62)
(name "NC"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "6"
(effects
(font
(size 1.27 1.27)
)
)
)
)
(pin power_in line
(at 0 -15.24 0)
(length 7.62)
(name "GND"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "7"
(effects
(font
(size 1.27 1.27)
)
)
)
)
(pin power_in line
(at 60.96 0 180)
(length 7.62)
(name "VCCB"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "14"
(effects
(font
(size 1.27 1.27)
)
)
)
)
(pin bidirectional line
(at 60.96 -2.54 180)
(length 7.62)
(name "B1"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "13"
(effects
(font
(size 1.27 1.27)
)
)
)
)
(pin bidirectional line
(at 60.96 -5.08 180)
(length 7.62)
(name "B2"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "12"
(effects
(font
(size 1.27 1.27)
)
)
)
)
(pin bidirectional line
(at 60.96 -7.62 180)
(length 7.62)
(name "B3"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "11"
(effects
(font
(size 1.27 1.27)
)
)
)
)
(pin bidirectional line
(at 60.96 -10.16 180)
(length 7.62)
(name "B4"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "10"
(effects
(font
(size 1.27 1.27)
)
)
)
)
(pin unspecified line
(at 60.96 -12.7 180)
(length 7.62)
(name "NC"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "9"
(effects
(font
(size 1.27 1.27)
)
)
)
)
(pin output line
(at 60.96 -15.24 180)
(length 7.62)
(name "OE"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "8"
(effects
(font
(size 1.27 1.27)
)
)
)
)
)
(embedded_fonts no)
)
)

View File

@@ -0,0 +1,634 @@
(kicad_sch
(version 20250114)
(generator "eeschema")
(generator_version "9.0")
(uuid "4dfabaa5-752e-4f6a-ace2-ff3431003a0e")
(paper "A4")
(lib_symbols
(symbol "Device:C"
(pin_numbers
(hide yes)
)
(pin_names
(offset 0.254)
)
(exclude_from_sim no)
(in_bom yes)
(on_board yes)
(property "Reference" "C"
(at 0.635 2.54 0)
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
)
(property "Value" "C"
(at 0.635 -2.54 0)
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
)
(property "Footprint" ""
(at 0.9652 -3.81 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Datasheet" "~"
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Description" "Unpolarized capacitor"
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "ki_keywords" "cap capacitor"
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "ki_fp_filters" "C_*"
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(symbol "C_0_1"
(polyline
(pts
(xy -2.032 0.762) (xy 2.032 0.762)
)
(stroke
(width 0.508)
(type default)
)
(fill
(type none)
)
)
(polyline
(pts
(xy -2.032 -0.762) (xy 2.032 -0.762)
)
(stroke
(width 0.508)
(type default)
)
(fill
(type none)
)
)
)
(symbol "C_1_1"
(pin passive line
(at 0 3.81 270)
(length 2.794)
(name "~"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "1"
(effects
(font
(size 1.27 1.27)
)
)
)
)
(pin passive line
(at 0 -3.81 90)
(length 2.794)
(name "~"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "2"
(effects
(font
(size 1.27 1.27)
)
)
)
)
)
(embedded_fonts no)
)
(symbol "Regulator_Linear:AMS1117-3.3"
(exclude_from_sim no)
(in_bom yes)
(on_board yes)
(property "Reference" "U"
(at -3.81 3.175 0)
(effects
(font
(size 1.27 1.27)
)
)
)
(property "Value" "AMS1117-3.3"
(at 0 3.175 0)
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
)
(property "Footprint" "Package_TO_SOT_SMD:SOT-223-3_TabPin2"
(at 0 5.08 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Datasheet" "http://www.advanced-monolithic.com/pdf/ds1117.pdf"
(at 2.54 -6.35 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Description" "1A Low Dropout regulator, positive, 3.3V fixed output, SOT-223"
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "ki_keywords" "linear regulator ldo fixed positive"
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "ki_fp_filters" "SOT?223*TabPin2*"
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(symbol "AMS1117-3.3_0_1"
(rectangle
(start -5.08 -5.08)
(end 5.08 1.905)
(stroke
(width 0.254)
(type default)
)
(fill
(type background)
)
)
)
(symbol "AMS1117-3.3_1_1"
(pin power_in line
(at -7.62 0 0)
(length 2.54)
(name "VI"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "3"
(effects
(font
(size 1.27 1.27)
)
)
)
)
(pin power_in line
(at 0 -7.62 90)
(length 2.54)
(name "GND"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "1"
(effects
(font
(size 1.27 1.27)
)
)
)
)
(pin power_out line
(at 7.62 0 180)
(length 2.54)
(name "VO"
(effects
(font
(size 1.27 1.27)
)
)
)
(number "2"
(effects
(font
(size 1.27 1.27)
)
)
)
)
)
(embedded_fonts no)
)
)
(symbol
(lib_id "Device:C")
(at 127 63.5 0)
(unit 1)
(exclude_from_sim no)
(in_bom yes)
(on_board yes)
(dnp no)
(fields_autoplaced yes)
(uuid "0b3358cc-069e-434e-a10d-4ff13ad42e74")
(property "Reference" "C2"
(at 130.81 62.2299 0)
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
)
(property "Value" "C"
(at 130.81 64.7699 0)
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
)
(property "Footprint" ""
(at 127.9652 67.31 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Datasheet" "~"
(at 127 63.5 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Description" "Unpolarized capacitor"
(at 127 63.5 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(pin "2"
(uuid "ec3a1cec-710e-4b64-adae-011b8d276a1d")
)
(pin "1"
(uuid "f3b98695-d18c-4927-b958-1f2dadd7d630")
)
(instances
(project ""
(path "/f579dd88-b421-4fbc-bd0c-53cb7bf597e7/a01d76ba-9e94-49f2-aeb3-6c30b509b9b7"
(reference "C2")
(unit 1)
)
)
)
)
(symbol
(lib_id "Regulator_Linear:AMS1117-3.3")
(at 88.9 62.23 0)
(unit 1)
(exclude_from_sim no)
(in_bom yes)
(on_board yes)
(dnp no)
(fields_autoplaced yes)
(uuid "2380d301-85a6-4cc5-96d2-d51bf3f37595")
(property "Reference" "U1"
(at 88.9 55.88 0)
(effects
(font
(size 1.27 1.27)
)
)
)
(property "Value" "AMS1117-3.3"
(at 88.9 58.42 0)
(effects
(font
(size 1.27 1.27)
)
)
)
(property "Footprint" "Package_TO_SOT_SMD:SOT-223-3_TabPin2"
(at 88.9 57.15 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Datasheet" "http://www.advanced-monolithic.com/pdf/ds1117.pdf"
(at 91.44 68.58 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Description" "1A Low Dropout regulator, positive, 3.3V fixed output, SOT-223"
(at 88.9 62.23 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(pin "2"
(uuid "1ce80bd3-6af9-48a7-8f98-6eeb2461bf3c")
)
(pin "1"
(uuid "cbd19fae-c824-49d5-b4e7-fb620134441c")
)
(pin "3"
(uuid "10382763-59f9-442c-bcdc-bd1463965bf3")
)
(instances
(project ""
(path "/f579dd88-b421-4fbc-bd0c-53cb7bf597e7/a01d76ba-9e94-49f2-aeb3-6c30b509b9b7"
(reference "U1")
(unit 1)
)
)
)
)
(symbol
(lib_id "Device:C")
(at 139.7 63.5 0)
(unit 1)
(exclude_from_sim no)
(in_bom yes)
(on_board yes)
(dnp no)
(fields_autoplaced yes)
(uuid "a5a20cab-0eae-42ac-84fd-487e51eca11c")
(property "Reference" "C3"
(at 143.51 62.2299 0)
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
)
(property "Value" "C"
(at 143.51 64.7699 0)
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
)
(property "Footprint" ""
(at 140.6652 67.31 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Datasheet" "~"
(at 139.7 63.5 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Description" "Unpolarized capacitor"
(at 139.7 63.5 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(pin "2"
(uuid "bc6c0443-2710-41e3-bb94-81cef26c38b1")
)
(pin "1"
(uuid "a064ec1b-3cda-434c-b503-0598eb8d8495")
)
(instances
(project "Midea_ESP"
(path "/f579dd88-b421-4fbc-bd0c-53cb7bf597e7/a01d76ba-9e94-49f2-aeb3-6c30b509b9b7"
(reference "C3")
(unit 1)
)
)
)
)
(symbol
(lib_id "Device:C")
(at 152.4 63.5 0)
(unit 1)
(exclude_from_sim no)
(in_bom yes)
(on_board yes)
(dnp no)
(fields_autoplaced yes)
(uuid "ed438dde-6aaa-4ee5-b8b0-34e01aa1d248")
(property "Reference" "C4"
(at 156.21 62.2299 0)
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
)
(property "Value" "C"
(at 156.21 64.7699 0)
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
)
(property "Footprint" ""
(at 153.3652 67.31 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Datasheet" "~"
(at 152.4 63.5 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Description" "Unpolarized capacitor"
(at 152.4 63.5 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(pin "2"
(uuid "89bab3de-3566-4c7a-aa17-1b7261b99488")
)
(pin "1"
(uuid "b48059a8-8d10-4b63-b615-bcfa5828fcf3")
)
(instances
(project "Midea_ESP"
(path "/f579dd88-b421-4fbc-bd0c-53cb7bf597e7/a01d76ba-9e94-49f2-aeb3-6c30b509b9b7"
(reference "C4")
(unit 1)
)
)
)
)
(symbol
(lib_id "Device:C")
(at 69.85 62.23 90)
(unit 1)
(exclude_from_sim no)
(in_bom yes)
(on_board yes)
(dnp no)
(fields_autoplaced yes)
(uuid "ffb9410f-8db1-4bc5-84c4-7ea23eb5e141")
(property "Reference" "C1"
(at 69.85 54.61 90)
(effects
(font
(size 1.27 1.27)
)
)
)
(property "Value" "C"
(at 69.85 57.15 90)
(effects
(font
(size 1.27 1.27)
)
)
)
(property "Footprint" ""
(at 73.66 61.2648 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Datasheet" "~"
(at 69.85 62.23 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Description" "Unpolarized capacitor"
(at 69.85 62.23 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(pin "2"
(uuid "64093eb6-d3f5-452e-bd51-1e4ae024ef57")
)
(pin "1"
(uuid "1a8b624a-741c-40f4-b90a-c5600328281c")
)
(instances
(project ""
(path "/f579dd88-b421-4fbc-bd0c-53cb7bf597e7/a01d76ba-9e94-49f2-aeb3-6c30b509b9b7"
(reference "C1")
(unit 1)
)
)
)
)
)

4
Midea_ESP/sym-lib-table Normal file
View File

@@ -0,0 +1,4 @@
(sym_lib_table
(version 7)
(lib (name "Midea_ESP")(type "KiCad")(uri "${KIPRJMOD}/libs/Midea_ESP.kicad_sym")(options "")(descr ""))
)

View File

@@ -0,0 +1 @@
{"hostname":"nrx-p340","username":"nearxos"}

43
README.md Normal file
View File

@@ -0,0 +1,43 @@
# Midea AC Controller PCB Design
This folder contains the KiCad project files and documentation for the custom Midea AC Controller PCB with BLE beacon capabilities.
## Project Structure
```
PCB_Board/
├── Midea_ESP/ # KiCad project folder
│ ├── Midea_ESP.kicad_pro # KiCad project file
│ ├── Midea_ESP.kicad_sch # Schematic file
│ ├── Midea_ESP.kicad_pcb # PCB layout file
│ ├── libs/ # Custom component library
│ │ └── Midea_AC_Controller.kicad_sym # Custom symbols
│ ├── LIBRARY_SETUP.md # How to add libraries
│ └── COMPONENT_REFERENCE.md # Component quick reference
├── DESIGN_SPEC.md # Complete design specification
├── KICAD_GUIDE.md # Step-by-step KiCad guide
└── SCHEMATIC_CONNECTIONS.txt # Detailed connection list
```
## Quick Start
1. **Setup Libraries**: See `Midea_ESP/LIBRARY_SETUP.md`
2. **Read Design Spec**: See `DESIGN_SPEC.md`
3. **Create Schematic**: Follow `KICAD_GUIDE.md`
4. **Reference Connections**: Use `SCHEMATIC_CONNECTIONS.txt`
## Key Components
- **ESP32-WROOM-32E**: Main microcontroller (WiFi + BLE)
- **TXB0104PWR**: Logic level shifter (3.3V ↔ 5V)
- **AMS1117-3.3**: Voltage regulator
- **JST-XH Connector**: Midea AC interface
## Documentation Files
- `DESIGN_SPEC.md`: Complete hardware design specification
- `KICAD_GUIDE.md`: Detailed KiCad schematic and PCB guide
- `SCHEMATIC_CONNECTIONS.txt`: Pin-to-pin connection reference
- `Midea_ESP/LIBRARY_SETUP.md`: Library setup instructions
- `Midea_ESP/COMPONENT_REFERENCE.md`: Component quick reference

196
SCHEMATIC_CONNECTIONS.txt Normal file
View File

@@ -0,0 +1,196 @@
===============================================================================
KICAD SCHEMATIC CONNECTION LIST - Midea AC Controller with BLE Beacon
===============================================================================
COMPONENT REFERENCE DESIGNATORS:
- U1: AMS1117-3.3 (Voltage Regulator)
- U2: ESP32-WROOM-32E (Main MCU)
- U3: TXB0104PWR (Logic Level Shifter)
- U4: CP2102N (USB-to-Serial, Optional)
- USB1: USB Micro-B (Power Input)
- USB2: USB Micro-B (Programming, Optional)
- J1: JST-XH 4-pin (Midea AC Connector)
- LED1: WiFi Status LED
- LED2: BLE Status LED
- SW1: Reset Button
- SW2: Boot Button
- R1-R4: Resistors
- C1-C10: Capacitors
===============================================================================
POWER SUPPLY SECTION
===============================================================================
USB1 (Micro-B Connector):
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_POWER_RAIL → U2.VDD (all VDD pins)
3V3_POWER_RAIL → U3.VCCA
3V3_POWER_RAIL → R1 (LED1 pull-up)
3V3_POWER_RAIL → R2 (LED2 pull-up)
3V3_POWER_RAIL → R3 (Reset pull-up)
3V3_POWER_RAIL → R4 (Boot pull-up)
3V3_POWER_RAIL → U4.VDD (if USB-to-Serial included)
5V_POWER_RAIL → U3.VCCB (Level shifter high voltage side)
5V_POWER_RAIL → J1.Pin1 (if AC dongle needs power)
GND → Common ground (all GND pins connected)
===============================================================================
ESP32-WROOM-32E CONNECTIONS
===============================================================================
U2 (ESP32-WROOM-32E):
VDD Pins (1,3,14,21,22,27,28,33,42) → 3V3_POWER_RAIL
→ Each pin should have 100nF decoupling cap (C5-C13) to GND
GND Pins (2,4,13,15,20,23,26,29,34,38,40) → GND
GPIO17 (TX) → U3.A1 (Level Shifter LV1)
GPIO16 (RX) → U3.A2 (Level Shifter LV2)
GPIO2 → R1 → LED1.ANODE (WiFi Status LED)
GPIO4 → R2 → LED2.ANODE (BLE Status LED)
GPIO0 → SW2.Pin1 (Boot Button)
GPIO0 → R4 → 3V3_POWER_RAIL (Pull-up)
SW2.Pin2 → GND
EN → SW1.Pin1 (Reset Button)
EN → R3 → 3V3_POWER_RAIL (Pull-up)
SW1.Pin2 → GND
GPIO1 (TX) → U4.RXD (if USB-to-Serial included)
GPIO3 (RX) → U4.TXD (if USB-to-Serial included)
Decoupling Capacitors:
C5 → U2.VDD_Pin1 → GND (100nF)
C6 → U2.VDD_Pin3 → GND (100nF)
C7 → U2.VDD_Pin14 → GND (100nF)
C8 → U2.VDD_Pin21 → GND (100nF)
C9 → U2.VDD_Pin22 → GND (100nF)
C10 → U2.VDD_Pin27 → GND (100nF)
(Add more as needed for other VDD pins)
===============================================================================
LOGIC LEVEL SHIFTER (TXB0104PWR)
===============================================================================
U3 (TXB0104PWR - TSSOP-14):
Pin 1 (A1) → U2.GPIO17 (ESP32 TX - Low Voltage)
Pin 2 (A2) → U2.GPIO16 (ESP32 RX - Low Voltage)
Pin 3 (A3) → NC (Not Connected)
Pin 4 (A4) → NC (Not Connected)
Pin 5 (GND) → GND
Pin 6 (B4) → NC (Not Connected)
Pin 7 (B3) → NC (Not Connected)
Pin 8 (B2) → J1.Pin3 (AC Dongle TX - High Voltage)
Pin 9 (B1) → J1.Pin2 (AC Dongle RX - High Voltage)
Pin 10 (OE) → 3V3_POWER_RAIL (Output Enable - Always High)
Pin 11 (VCCB) → 5V_POWER_RAIL (High Voltage Side Power)
Pin 12 (VCCA) → 3V3_POWER_RAIL (Low Voltage Side Power)
Pin 13 (GND) → GND
Pin 14 (GND) → GND
===============================================================================
MIDEA AC CONNECTOR
===============================================================================
J1 (JST-XH 4-pin or USB Type-A Female):
Pin 1 (VCC) → 5V_POWER_RAIL (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 - FOR PROGRAMMING)
===============================================================================
U4 (CP2102N - QFN-24):
VDD → 3V3_POWER_RAIL
GND → GND
DTR → U2.GPIO0 (Auto-reset for flashing)
RXD → U2.GPIO1 (ESP32 TX)
TXD → U2.GPIO3 (ESP32 RX)
VBUS → USB2.VCC (5V detection)
D+ → USB2.D+
D- → USB2.D-
USB2 (Micro-B Connector):
VCC → U4.VBUS
D+ → U4.D+
D- → U4.D-
GND → GND
===============================================================================
STATUS LEDs
===============================================================================
LED1 (WiFi Status - GPIO2):
ANODE → R1 → U2.GPIO2
CATHODE → GND
(R1 = 220Ω for ~15mA current)
LED2 (BLE Status - GPIO4):
ANODE → R2 → U2.GPIO4
CATHODE → GND
(R2 = 220Ω for ~15mA current)
===============================================================================
BUTTONS
===============================================================================
SW1 (Reset Button):
Pin 1 → U2.EN
Pin 2 → GND
(R3 = 10kΩ pull-up: U2.EN → 3V3_POWER_RAIL)
SW2 (Boot/Flash Button):
Pin 1 → U2.GPIO0
Pin 2 → GND
(R4 = 10kΩ pull-up: U2.GPIO0 → 3V3_POWER_RAIL)
===============================================================================
NET NAMES (FOR KICAD)
===============================================================================
Power Nets:
+3V3, +5V, GND
Signal Nets:
ESP32_TX (U2.GPIO17 → U3.A1)
ESP32_RX (U2.GPIO16 → U3.A2)
AC_TX (U3.B2 → J1.Pin3)
AC_RX (U3.B1 → J1.Pin2)
ESP32_UART_TX (U2.GPIO1 → U4.RXD) [if USB-to-Serial]
ESP32_UART_RX (U2.GPIO3 → U4.TXD) [if USB-to-Serial]
WIFI_LED (U2.GPIO2 → R1 → LED1)
BLE_LED (U2.GPIO4 → R2 → LED2)
RESET_NET (U2.EN → SW1 → R3)
BOOT_NET (U2.GPIO0 → SW2 → R4)
===============================================================================
NOTES:
===============================================================================
1. All GND pins must be connected to common ground plane
2. Decoupling capacitors should be placed within 5mm of power pins
3. Level shifter requires both 3.3V (VCCA) and 5V (VCCB) power
4. ESP32 antenna area (top-right corner) needs 15mm clearance
5. USB-to-Serial section is optional but recommended for easy programming
6. If AC dongle doesn't need external power, J1.Pin1 can be left unconnected
7. All unused GPIO pins can be left floating or pulled to GND via 10kΩ
===============================================================================