generated from wessel/boilerplate
feat(IMU): Add IMU project README
This commit is contained in:
77
doc/architecture/IMU/README.md
Normal file
77
doc/architecture/IMU/README.md
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
# IMU (MPU6886) ESP-IDF
|
||||||
|
=====================
|
||||||
|
|
||||||
|
Small ESP-IDF project that reads an MPU6886 IMU over I2C and publishes readings over MQTT.
|
||||||
|
Includes an option to run WiFi in STA (client) or AP (access point) mode.
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
- I2C communication functions for MPU6886 (accelerometer, gyro, temp)
|
||||||
|
- MQTT client using `esp-mqtt`
|
||||||
|
- WiFi: STA or AP mode selectable at build time
|
||||||
|
- AP mode defaults to static IP 192.168.10.1/24 (configurable in code)
|
||||||
|
- MQTT, Serial toggle using the boot button on the esp32
|
||||||
|
|
||||||
|
## Quick start
|
||||||
|
|
||||||
|
### Prerequisites
|
||||||
|
|
||||||
|
- ESP-IDF installed and activated (the repo was developed with ESP-IDF v5.x).
|
||||||
|
- Toolchain and Python deps per ESP-IDF instructions.
|
||||||
|
|
||||||
|
### Build and flash
|
||||||
|
|
||||||
|
From the IMU root:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# configure project options
|
||||||
|
idf.py menuconfig
|
||||||
|
|
||||||
|
# build
|
||||||
|
idf.py build
|
||||||
|
|
||||||
|
# flash and monitor (set your serial port)
|
||||||
|
idf.py -p /dev/ttyUSB0 flash monitor
|
||||||
|
```
|
||||||
|
|
||||||
|
## Project Configuration (menuconfig)
|
||||||
|
|
||||||
|
Open `idf.py menuconfig` and there you will see the `ESP32 IMU Project Configuration` submenu where you can configure specific data for I2C, MQTT and WIFI
|
||||||
|
|
||||||
|
### I2C
|
||||||
|
---
|
||||||
|
In the `I2C Master configuration` submenu there are three options:
|
||||||
|
- SCL GPIO Num - Default 21 - GPIO used for I2C SDA
|
||||||
|
- SDA GPIO Num - Default 22 - GPIO used for I2C SCL
|
||||||
|
- Master Frequency - Default 100000hz - I2C bus speed
|
||||||
|
|
||||||
|
### MQTT
|
||||||
|
|
||||||
|
- Broker URI - Default: `"mqtt://192.168.4.2:1883"`
|
||||||
|
- MQTT Topic - Default: `"esp32/imu"`
|
||||||
|
|
||||||
|
### WiFi / network
|
||||||
|
|
||||||
|
- Toggle AP mode at build time by enabling `CONFIG_WIFI_AP_MODE` in menuconfig. If enabled the firmware will start as an access point on boot; if disabled the device starts as a station and attempts to connect to the configured SSID using the set Password
|
||||||
|
- Toggle AP mode swaps the available settings when toggled between AP conf- and station configurations respectively
|
||||||
|
- AP credentials can be set with `WiFi AP SSID` and `Wifi AP Password`.
|
||||||
|
- Station credentials can be set with `WiFi SSID` and `WiFi Password`.
|
||||||
|
|
||||||
|
### AP IP / DHCP
|
||||||
|
|
||||||
|
- The AP is configured by default to use a static IP of `192.168.4.1` with netmask `255.255.255.0` and a DHCP server is started so clients receive addresses on that subnet.
|
||||||
|
|
||||||
|
## Notes about units and macros
|
||||||
|
|
||||||
|
- The macro `SF_RAD_S` (in `main/mpu6886.h`) is the degrees-to-radians conversion factor: PI/180. Gyroscope readings are converted from degrees/sec to radians/sec using this scale.
|
||||||
|
- Sensitivity scale constants (e.g. `ACCEL_SO_2G`, `GYRO_SO_250DPS`) are used to convert raw sensor counts to physical units.
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
- "`MQTT_TOPIC` undefined" at build time: run menuconfig
|
||||||
|
- "I2C init failed": confirm SDA/SCL pins in menuconfig or wiring.
|
||||||
|
|
||||||
|
## Files of interest
|
||||||
|
|
||||||
|
- `main/mpu6886.c` - main application, WiFi init, MQTT publish loop
|
||||||
|
- `main/mpu6886.h` - sensor constants and types
|
||||||
Reference in New Issue
Block a user