141 lines
3.7 KiB
Markdown
141 lines
3.7 KiB
Markdown
# SkyLogic AeroAlign - IMU Node Wiring
|
|
|
|
**Version**: 2.0.0
|
|
**Date**: 2026-03-11
|
|
**Scope**: Master and IMU slave nodes for the combined AeroAlign + CoG platform
|
|
|
|
## Overview
|
|
|
|
This document covers the current wiring for the angle-measurement nodes:
|
|
|
|
- `Master`: ESP32-C3 or ESP32-S3, WiFi AP, web UI, ESP-NOW receiver, local IMU
|
|
- `IMU Slave`: ESP32-C3 or ESP32-S3, remote MPU6050 node over ESP-NOW
|
|
|
|
The Master and IMU Slave share the same MPU6050 wiring. The main difference is firmware role.
|
|
CoG-specific hardware is documented separately in [cog_scale_wiring.md](cog_scale_wiring.md).
|
|
|
|
## Supported ESP32 Pin Maps
|
|
|
|
### ESP32-C3
|
|
|
|
| Signal | GPIO | Notes |
|
|
|--------|------|-------|
|
|
| `SDA` | `GPIO4` | MPU6050 I2C data |
|
|
| `SCL` | `GPIO5` | MPU6050 I2C clock |
|
|
| `BATTERY_ADC` | `GPIO0` | Battery divider midpoint |
|
|
| `STATUS_LED` | `GPIO10` | Optional |
|
|
|
|
### ESP32-S3
|
|
|
|
| Signal | GPIO | Notes |
|
|
|--------|------|-------|
|
|
| `SDA` | `GPIO4` | MPU6050 I2C data |
|
|
| `SCL` | `GPIO5` | MPU6050 I2C clock |
|
|
| `BATTERY_ADC` | `GPIO1` | Only if divider is actually fitted |
|
|
| `STATUS_LED` | disabled | Board-dependent, firmware keeps it off by default |
|
|
|
|
## Power Topology
|
|
|
|
```
|
|
LiPo 1S
|
|
|
|
|
+--> TP4056 BAT+/BAT-
|
|
|
|
|
+--> LDO VIN
|
|
|
|
|
+--> 3.3V rail --> ESP32 3V3
|
|
--> MPU6050 VCC
|
|
```
|
|
|
|
### Notes
|
|
|
|
- A dedicated 3.3V regulator is still recommended for clean IMU behavior.
|
|
- The Master S3 configuration currently assumes battery monitoring may be absent.
|
|
- If no ADC divider is wired on the Master, leave `BATTERY_MONITOR_ENABLED` disabled in [config.h](../../firmware/master/src/config.h).
|
|
|
|
## MPU6050 Wiring
|
|
|
|
| ESP32 | MPU6050 | Notes |
|
|
|-------|---------|-------|
|
|
| `GPIO4` | `SDA` | I2C |
|
|
| `GPIO5` | `SCL` | I2C |
|
|
| `3V3` | `VCC` | Use 3.3V |
|
|
| `GND` | `GND` | Common ground |
|
|
| `GND` | `AD0` | Sets address `0x68` |
|
|
|
|
### Bus Settings
|
|
|
|
- ESP32-C3 default: `400 kHz`
|
|
- ESP32-S3 default: `100 kHz`
|
|
|
|
The lower S3 bus speed is intentional and matches the current robust MPU6050 access code.
|
|
|
|
## Battery Divider
|
|
|
|
Use the divider only on nodes that really need local battery reporting.
|
|
|
|
```
|
|
LiPo+
|
|
|
|
|
[10k]
|
|
|
|
|
+----> BATTERY_ADC
|
|
|
|
|
[10k]
|
|
|
|
|
GND
|
|
```
|
|
|
|
### Current firmware assumptions
|
|
|
|
- IMU slaves: divider enabled in firmware
|
|
- Master C3: divider enabled
|
|
- Master S3: divider disabled by default until the ADC path is actually wired
|
|
|
|
## Master Node Wiring Summary
|
|
|
|
| Block | Required | Notes |
|
|
|-------|----------|-------|
|
|
| ESP32-C3 or ESP32-S3 | yes | `master` firmware |
|
|
| MPU6050 | yes | local reference IMU |
|
|
| LiPo + charger + regulator | yes | portable operation |
|
|
| Battery divider | optional | hidden in UI if absent |
|
|
|
|
## IMU Slave Wiring Summary
|
|
|
|
| Block | Required | Notes |
|
|
|-------|----------|-------|
|
|
| ESP32-C3 or ESP32-S3 | yes | `slave` firmware |
|
|
| MPU6050 | yes | same robust driver as Master |
|
|
| LiPo + charger + regulator | yes | remote node |
|
|
| Battery divider | recommended | transmitted to Master |
|
|
|
|
## Bring-Up Checklist
|
|
|
|
1. Verify `3.3V` rail before plugging the ESP32 in.
|
|
2. Confirm MPU6050 address `0x68` with `AD0` tied low.
|
|
3. Keep SDA/SCL leads short on S3 builds.
|
|
4. On the Slave, set the Master MAC in [config.cpp](../../firmware/slave/src/config.cpp).
|
|
5. Build and flash:
|
|
- `cd firmware/master && pio run`
|
|
- `cd firmware/slave && pio run -e esp32-s3`
|
|
|
|
## Troubleshooting
|
|
|
|
### No MPU6050 detected
|
|
|
|
- Check `GPIO4` and `GPIO5`
|
|
- Check `AD0 -> GND`
|
|
- Reduce wire length
|
|
- Prefer the S3 default `100 kHz`
|
|
|
|
### Battery percentage missing on Master
|
|
|
|
- Expected on S3 unless the divider is fitted and `BATTERY_MONITOR_ENABLED` is enabled
|
|
- The web UI now hides the metric when unavailable
|
|
|
|
### Slave does not show up
|
|
|
|
- Recheck Master MAC in [config.cpp](../../firmware/slave/src/config.cpp)
|
|
- Ensure Master AP channel and ESP-NOW channel match
|