diff --git a/website/versioned_docs/version-acs_cc/project/2026/ana_maria.lupu1304/index.md b/website/versioned_docs/version-acs_cc/project/2026/ana_maria.lupu1304/index.md index 780bd3b05c9..413bb3351cd 100644 --- a/website/versioned_docs/version-acs_cc/project/2026/ana_maria.lupu1304/index.md +++ b/website/versioned_docs/version-acs_cc/project/2026/ana_maria.lupu1304/index.md @@ -24,35 +24,27 @@ I chose this project because it combines embedded programming, control systems, The main architecture components of the project are: - **Sensing layer** - Reads acceleration and angular velocity data from the IMU. + Reads acceleration and angular velocity data from the MPU6050 IMU and, in the final system, wheel-speed feedback from the motor encoder signals. - **State estimation layer** - Processes raw IMU data and computes the current orientation and angular motion of the cube. + Processes raw sensor data and computes the current orientation and angular motion of the cube. - **Control layer** - Runs the balancing algorithm and computes correction values for each axis. + Runs the balancing algorithm and computes correction commands for each reaction-wheel axis. - **Actuation layer** - Sends control signals to the three reaction-wheel motors. + Sends PWM and direction control signals to the three Nidec reaction-wheel motors. - **Communication and tuning layer** - Allows calibration and parameter adjustment through a Bluetooth serial connection. - -- **Power layer** - Supplies the motors directly from the battery and powers the logic through a regulated 5V rail. + Supports calibration and parameter adjustment, initially through USB/debug output during development and later through a Bluetooth serial connection using the HC-05 module. ### Architecture Diagram ```mermaid flowchart LR - subgraph PWR["Power Layer"] - BATT["3S LiPo Battery 11.1V, 500mAh"] - REG["5V Regulator"] - BUZ["5V Buzzer"] - end - subgraph SENS["Sensing Layer"] IMU["MPU6050 IMU"] + ENC["Motor Feedback / Encoders"] end subgraph PROC["Processing and Control"] @@ -75,45 +67,55 @@ flowchart LR CUBE["Self-Balancing Cube"] end - IMU -->|Motion data| STM + IMU -->|Acceleration and angular velocity| STM + ENC -->|Wheel speed feedback| STM + STM --> STATE STATE --> CTRL - CTRL -->|Motor commands| MOT + CTRL -->|PWM and direction commands| MOT + MOT -->|Stabilizing torque| CUBE - CUBE -->|Motion/orientation changes| IMU + CUBE -->|Motion / orientation changes| IMU - USER -->|Bluetooth commands| BT + MOT -->|Rotation feedback| ENC + + USER -->|Calibration and tuning commands| BT BT --> CAL CAL --> STM - BATT -->|11.1V| MOT - BATT --> REG - REG -->|5V| STM - REG -->|5V| IMU - REG -->|5V| BT - REG -->|5V| BUZ - ``` ## Log ### Week 14 - 29 April -- Finalized project theme and received approval. -- Researched and ordered components. +- Finalized the project theme and received approval. +- Researched the reference project, selected the main components, and placed the orders. ### Week 4 - 10 May -- Components arrived +- Received the ordered components. +- Reviewed the hardware setup. ### Week 11 - 17 May -- Tested components separately -- Started assembling the project +- Set up the Rust embedded project. +- Verified firmware flashing and debugging on the STM32 board. +- Tested one Nidec motor in both rotation directions using PWM and direction control. +- Tested the MPU6050 IMU over I2C and verified gyroscope and accelerometer readings. +- Implemented initial tilt estimation tests using roll and pitch angles. +- Started integrating IMU input with motor response. + +### Week 18 - 24 May + +- Continue hardware integration of sensing and actuation. +- Investigate encoder feedback from the motors. +- Refine motor control behavior for smoother directional changes. +- Continue toward full cube assembly, calibration, and balancing experiments. ## Hardware -The hardware platform is built around an STM32 microcontroller, an MPU6050 IMU for motion sensing, three brushless motors with encoders for the reaction wheels, a 3S LiPo battery for power, a 5V regulator for the logic section, a Bluetooth module for tuning, and a buzzer for status feedback. +The hardware platform is built around an STM32 microcontroller, an MPU6050 IMU for motion sensing, and three Nidec brushless motors used as reaction wheels. The motors include feedback lines that are intended to be used for wheel-speed sensing during control. A Bluetooth module is planned for calibration and parameter tuning, while a buzzer will provide status feedback. ## Schematics @@ -134,3 +136,15 @@ The hardware platform is built around an STM32 microcontroller, an MPU6050 IMU f | ON/OFF switch | Main power control | 21.29 RON | [AliExpress](https://www.aliexpress.com/item/1005009232308550.html?spm=a2g0o.order_list.order_list_main.53.b7a61802PaQuli) | ## Software + +| Library | Description | Usage | +|---|---|---| +| `embassy-stm32` | STM32 hardware abstraction layer for the Embassy ecosystem | Used for GPIO control, I2C communication with the MPU6050, UART/Bluetooth communication, timers, PWM generation, and encoder input handling | +| `embassy-executor` | Async task executor for embedded systems | Runs the main firmware tasks and coordinates sensing, control, communication, and actuation logic | +| `embassy-time` | Timing and delay utilities | Used for periodic sensor sampling, control-loop timing, calibration delays, and scheduled motor updates | +| `libm` | Mathematical functions for `no_std` environments | Used for trigonometric and square-root operations in orientation estimation and tilt-angle computation | +| `defmt` | Lightweight embedded logging framework | Used for runtime diagnostics, sensor debugging, motor-control validation, and calibration feedback | +| `defmt-rtt` | RTT transport backend for `defmt` logs | Sends debug messages from the STM32 board to the development PC through the ST-LINK interface | +| `panic-probe` | Panic handler for embedded Rust applications | Provides useful crash information during firmware debugging | +| `cortex-m` | Low-level ARM Cortex-M support crate | Provides architecture-specific utilities and interrupt-safe embedded primitives | +| `cortex-m-rt` | Runtime support for Cortex-M microcontrollers | Defines startup behavior and memory initialization for the STM32 firmware |