# SkyLogic AeroAlign - Sensor Node Wiring Diagram **Version**: 1.0.0 **Date**: 2026-01-22 **Target Hardware**: ESP32-C3/ESP32-S3 + MPU6050 + LiPo + TP4056 --- ## Overview This document describes the complete wiring schematic for both Master and Slave sensor nodes. Both nodes use identical wiring (Master additionally runs WiFi AP + web server in firmware). --- ## Component List (Per Node) | Component | Part Number | Quantity | Function | |-----------|-------------|----------|----------| | ESP32-C3 DevKit | ESP32-C3-DevKitM-1 | 1 | Microcontroller | | MPU6050 IMU | GY-521 module | 1 | 6-axis motion sensor | | LiPo Battery | 1S 3.7V 250-400mAh | 1 | Power source | | TP4056 Charger | USB-C variant | 1 | Battery charging | | HT7333 LDO | 3.3V 250mA | 1 | Voltage regulator | | 10kΩ Resistor | 1/4W carbon film | 2 | Voltage divider for battery ADC | | JST Connector | 2-pin PH2.0 | 1 | Battery connector | | USB-C Cable | 1m | 1 | Charging/flashing | --- ## Power Supply Wiring ``` LiPo Battery (3.7V nominal, 4.2V max, 3.0V min) │ ├─► [+] TP4056 IN+ (Battery charging input) │ TP4056 IN- [GND] │ TP4056 USB-C (for charging only) │ └─► [+] HT7333 VIN (3.0V - 4.2V input) HT7333 GND [GND] HT7333 VOUT [3.3V] ─► ESP32-C3 3.3V pin MPU6050 VCC ``` **Notes**: - TP4056 charges LiPo when USB-C connected (red LED: charging, blue LED: full) - HT7333 regulates LiPo voltage to stable 3.3V for ESP32 and IMU - ESP32-C3 DevKit has built-in USB-C for programming (separate from TP4056 charging USB-C) --- ## ESP32-C3 to MPU6050 (I2C) Wiring ``` ESP32-C3 MPU6050 (GY-521) --------- ---------------- GPIO4 (SDA) ───────► SDA (I2C Data) GPIO5 (SCL) ───────► SCL (I2C Clock) 3.3V ───────► VCC GND ───────► GND INT (not connected) AD0 (GND for 0x68 address) ``` **I2C Configuration**: - **Address**: 0x68 (default, AD0 pulled low) - **Frequency**: 400kHz (fast mode) - **Pull-ups**: Internal ESP32 pull-ups enabled (no external resistors needed) **Alternative**: BNO055 IMU (for ±0.1° accuracy upgrade) ``` ESP32-C3 BNO055 --------- ------ GPIO4 (SDA) ───────► SDA GPIO5 (SCL) ───────► SCL 3.3V ───────► VIN GND ───────► GND PS0 (GND for I2C mode) PS1 (3.3V) ``` --- ## Battery Monitoring (Voltage Divider) ``` LiPo+ (3.0V - 4.2V) │ ▼ 10kΩ Resistor (R1) │ ├────► ESP32-C3 GPIO0 (ADC1_CH0) │ ▼ 10kΩ Resistor (R2) │ └────► GND Output Voltage = (LiPo Voltage) / 2 ESP32 ADC reads 0-1650mV (half of LiPo voltage) ``` **Calculation**: ```cpp float adc_value = analogRead(GPIO0); // 0-4095 (12-bit) float voltage_at_adc = (adc_value / 4095.0) * 3.3; // Convert to volts float battery_voltage = voltage_at_adc * 2.0; // Multiply by voltage divider ratio uint8_t battery_percent = ((battery_voltage - 3.0) / (4.2 - 3.0)) * 100.0; ``` **Important**: - R1 and R2 must be equal (10kΩ each) for 2:1 division - ESP32-C3 ADC max input: 3.3V (do NOT exceed) - LiPo max voltage 4.2V / 2 = 2.1V (safe margin) --- ## Status LED (Optional) ``` ESP32-C3 GPIO10 ───► [+] LED [-] ───► 220Ω Resistor ───► GND ``` **LED Indicators**: - **Solid Blue**: WiFi AP active (Master only) - **Slow Blink (1Hz)**: Normal operation, connected - **Fast Blink (5Hz)**: Searching for Master (Slave only) - **Red Blink (3×)**: Low battery (<20%) --- ## Complete Schematic (ASCII Art) ``` +──────────────────────────────────────+ │ LiPo Battery (1S 3.7V) │ │ 250-400mAh │ +──────────────────────────────────────+ │ │ │+ │- │ │ ┌────────┴────────┐ │ │ TP4056 Charger │ │ USB-C Charge ───────┤ (USB-C input) │ │ │ OUT+ OUT-│ │ └─────┬────────────┴─────────┤ │+ -│ │ │ ┌─────┴──────────────────────┴─────┐ │ HT7333 LDO Regulator │ │ VIN GND VOUT │ └──────────────┬───────────┬───────┘ │ │ 3.3V │ │ ┌─────────────┴───────────┴────────┐ │ ESP32-C3 DevKit │ │ │ USB-C Flash ────┤ USB-C │ │ │ │ GPIO4 (SDA) ──────┐ │ │ GPIO5 (SCL) ──────┤ │ │ GPIO0 (ADC) ──────┤ │ │ GPIO10 (LED) ─────┤ │ │ 3.3V ─────────────┤ │ │ GND ──────────────┤ │ └────────────────────┼─────────────┘ │ │ ┌────────────────────┴─────────────┐ │ MPU6050 IMU (GY-521) │ │ │ │ SDA ◄──────────────────────────┤ │ SCL ◄──────────────────────────┤ │ VCC ◄───── 3.3V ───────────────┤ │ GND ◄───── GND ────────────────┤ │ INT (not connected) │ │ AD0 ◄───── GND (0x68 address) │ └──────────────────────────────────┘ Battery Monitor (Voltage Divider) LiPo+ ──┬── 10kΩ ──┬── 10kΩ ── GND │ │ │ └──► GPIO0 (ADC) │ (Read half voltage) ``` --- ## Pin Assignment Summary ### ESP32-C3 GPIO Mapping | GPIO Pin | Function | Connection | Notes | |----------|----------|------------|-------| | GPIO0 | ADC1_CH0 | Battery voltage divider midpoint | Read battery level | | GPIO4 | I2C SDA | MPU6050 SDA | IMU data line | | GPIO5 | I2C SCL | MPU6050 SCL | IMU clock line | | GPIO10 | Digital Out | Status LED (optional) | Connection indicator | | 3.3V | Power | HT7333 VOUT, MPU6050 VCC | Regulated power rail | | GND | Ground | Common ground | All components share | | USB-C | USB Serial | Flashing/debugging | Built-in on DevKit | ### MPU6050 (GY-521) Pinout | Pin | Function | Connection | Notes | |-----|----------|------------|-------| | VCC | Power | ESP32 3.3V | 3.3V or 5V compatible | | GND | Ground | Common GND | - | | SDA | I2C Data | GPIO4 | Pull-up enabled internally | | SCL | I2C Clock | GPIO5 | Pull-up enabled internally | | INT | Interrupt | Not used | Future: motion detection | | AD0 | Address Select | GND | Sets I2C address to 0x68 | --- ## Assembly Instructions ### Step 1: Solder HT7333 LDO 1. **Identify pins**: HT7333 (SOT-89 package) ``` ┌───────┐ │ HT7333│ └┬─┬─┬──┘ │ │ └── VOUT (3.3V output) │ └──── GND └────── VIN (3.0V-6.0V input) ``` 2. Solder to TP4056 OUT+ (VIN) and OUT- (GND) 3. Connect VOUT to ESP32-C3 3.3V rail ### Step 2: Connect Battery 1. Solder JST connector to LiPo (red = +, black = -) 2. Connect to TP4056 BAT+ and BAT- 3. **Important**: Check polarity before connecting! ### Step 3: Wire I2C to MPU6050 1. Solder 4 wires (SDA, SCL, VCC, GND) from ESP32-C3 to MPU6050 2. Use 22AWG silicone wire (flexible, ~10cm length) 3. Test continuity with multimeter ### Step 4: Install Voltage Divider 1. Solder two 10kΩ resistors in series 2. Connect high end to LiPo+ (or TP4056 OUT+) 3. Connect midpoint to ESP32-C3 GPIO0 4. Connect low end to GND 5. Cover with heat shrink tubing ### Step 5: Test Power Supply 1. **Without ESP32 connected**: Measure HT7333 VOUT with multimeter 2. Expected: 3.25V-3.35V (3.3V ±50mV) 3. If correct, connect ESP32-C3 3.3V pin ### Step 6: Flash Firmware 1. Connect ESP32-C3 USB-C to computer 2. Flash Master or Slave firmware via PlatformIO 3. Open serial monitor (115200 baud) 4. Verify IMU initialization: "MPU6050 initialized (0x68)" ### Step 7: Calibrate IMU 1. Place sensor on flat, level surface 2. Power on, wait 10 seconds for stabilization 3. Web UI (Master) or serial output (Slave) should show ~0.0° pitch/roll --- ## Troubleshooting ### Problem: ESP32 won't power on **Check**: - LiPo voltage (should be 3.7V-4.2V) - HT7333 VOUT (should be 3.3V) - TP4056 protection (may shut down if overcharged/over-discharged) **Solution**: Charge LiPo via TP4056 USB-C ### Problem: I2C not detected (MPU6050 not found) **Check**: - Wiring: SDA to GPIO4, SCL to GPIO5 - I2C address: Run I2C scanner (should show 0x68) - Pull-ups: Enable internal pull-ups in firmware **Solution**: Verify connections, re-solder if cold joints ### Problem: Battery percentage reads 0% or 255% **Check**: - Voltage divider wiring (two 10kΩ resistors in series) - ADC pin (GPIO0) connection to midpoint - ADC code calibration (3.3V ADC reference) **Solution**: Measure voltage at GPIO0 with multimeter (should be LiPo voltage / 2) ### Problem: IMU angles drift over time **Check**: - Complementary filter alpha (should be 0.98) - IMU temperature (MPU6050 sensitive to >15°C delta from calibration) - Vibration isolation (sensor should be firmly mounted) **Solution**: Recalibrate at operating temperature, increase filter alpha to 0.99 --- ## Safety Warnings ⚠️ **LiPo Battery Safety**: - Never short-circuit LiPo terminals (fire/explosion risk) - Do not charge above 4.2V (TP4056 prevents this) - Do not discharge below 3.0V (TP4056 prevents this) - Store at 50-60% charge (3.7V-3.8V) if unused >1 week - Dispose of damaged/swollen batteries at hazardous waste facility ⚠️ **Soldering Safety**: - Use 300-350°C iron temperature (too hot damages components) - Solder in ventilated area (avoid flux fumes) - Do not touch soldering iron tip (obvious, but critical) ⚠️ **ESD Protection**: - ESP32-C3 and MPU6050 are ESD-sensitive - Touch grounded metal before handling (discharge static) - Avoid working on carpets or synthetic fabrics --- ## Bill of Materials (Per Node) See `hardware/schematics/bom.csv` for complete BOM with Amazon ASINs and pricing. **Quick Summary**: - ESP32-C3 DevKit: $6.50 - MPU6050 IMU: $4.50 - LiPo Battery (400mAh): $8.00 - TP4056 Charger: $1.50 - HT7333 LDO: $0.80 - Resistors, wire, connectors: $2.00 - **Total per node**: ~$23.30 --- ## Revision History | Version | Date | Changes | |---------|------|---------| | 1.0.0 | 2026-01-22 | Initial wiring diagram for MVP | --- *SkyLogic AeroAlign - Precision Grounded.*