Files
AeroAlign/hardware/schematics/sensor_node_wiring.md
T
2026-03-12 06:55:33 +01:00

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