The Inertial Measurement Unit (IMU) is an excellent choice for learning embedded systems and navigation algorithms. However, it is challenging to find a development board that truly stands out: one that is purely focused on IMU functionality, uses a relatively new, high-precision sensor, and is fully transparent and open-source across every technical step.
This comprehensive transparency must extend from the schematic design and PCB layout, through the bare-metal embedded development, the IMU driver and data processing, the attitude determination (AHRS) calculation, and finally to the host GUI interface.
Recognizing this significant gap was the driving force behind the creation of the IMU. Combined with the hands-on development tutorial I wrote based on this entire process, I believe this is what makes it truly unique.
Key Specifications and FeaturesHardware Components and Specifications- Microcontroller: STM32F405 Processor.
- IMU Sensor: ICM42688-P (High-precision and low-noise).
- External Clocking: External 8M active crystal oscillator (for MCU)
- External 32.768kHz active crystal oscillator (for IMU).
- Interfaces: Serial USB-C, 1 UART(TTL) , 1 I2C, 1 CAN 2.0B
- Flexible power supply: USB-C
- Protocol supported: MAVLink, CAN2.0B, DroneCAN and ROS2
- Static test: Yaw instability 0.01deg/hour
- Hardware: Open-source schematic and PCB design file with KiCAD
https://github.com/leelili444/Hardware - Firmware: Open-source firmware source code developed with STM32CubeIDE and CubeMX.
https://github.com/leelili444/imu_firmware - GUI: Python GUI for online parameter tuning and data logging via MAVLink protocol.
https://github.com/leelili444/IMU_GUI - Support: Online tutorial provided.
https://mx-motion.gitbook.io/tutorial


_4YUDWziWQ8.png?auto=compress%2Cformat&w=48&h=48&fit=fill&bg=ffffff)
_Ujn5WoVOOu.png?auto=compress%2Cformat&w=40&h=40&fit=fillmax&bg=fff&dpr=2)

Comments