A wireless sensor network project using Bosch BNO055 IMU (Inertial Measurement Unit) modules to transmit motion data and visualize the orientation of multiple nodes in 3D. This project combines embedded C programming with Python-based visualization and data management.
- Real-time Motion Tracking: Captures and transmits orientation data from BNO055 IMU sensors
- 3D Visualization: Real-time visualization of sensor orientation using quaternions and Euler angles
- Wireless Communication: Network infrastructure for multiple sensor nodes
- Data Logging: Database integration for storing and analyzing sensor data
- Multiple Operation Modes: Support for different data formats and use cases
nordic-bno055/
├── src/
│ ├── Database/ # Database integration (v1)
│ ├── DatabaseV2/ # Enhanced database functionality
│ ├── Network/ # Wireless network implementation
│ ├── PingPong/ # Network testing utilities
│ ├── RawDataModule/ # Raw sensor data handling
│ ├── SensorModule/ # BNO055 sensor interface (quaternion, euler, controller)
│ ├── Visualisierung/ # 3D visualization components
│ └── main.c # Main application entry point
├── CMakeLists.txt # Build configuration (Zephyr RTOS)
└── requirements.txt # Python dependencies
- Nordic Semiconductor development board (nRF series)
- Bosch BNO055 9-axis absolute orientation sensor
- I2C/SPI connection between microcontroller and sensor
- Zephyr RTOS (version 3.20.0 or higher)
- CMake 3.20.0 or higher
- Nordic SDK and toolchain
Install Python dependencies:
pip install -r requirements.txtRequired packages:
matplotlib- Data plotting and visualizationnumpy- Numerical computationspygame- Interactive visualizationpyserial- Serial communication with sensorsvpython- 3D graphics and animation
- Set up your Zephyr environment:
export ZEPHYR_BASE=/path/to/zephyr- Build the project:
cmake -B build
cmake --build build- Flash to your Nordic device:
west flash-
Connect your sensor network to your computer via serial port
-
Run the visualization script (from the appropriate module):
python src/Visualisierung/<visualization_script>.py- controller.c: Main sensor control logic
- quaternion. c: Quaternion-based orientation (commented in CMakeLists.txt)
- euler.c: Euler angle representation (commented in CMakeLists. txt)
- test_server.c: Server-side network testing
- test_client. c: Client-side network testing
Two versions for data persistence and logging of sensor readings over time.
Python-based 3D visualization using VPython and Pygame for real-time orientation display.
- Motion capture and analysis
- Robotics orientation tracking
- Gesture recognition systems
- Wearable device orientation monitoring
- Multi-sensor spatial awareness systems
Edit CMakeLists.txt to enable different modules:
- Uncomment
target_sourceslines to switch between quaternion, euler, or controller modes - Modify network configuration for server/client setup
- 3D Visualization
- Database Management
- Embedded C Programming
- Python Development
- Wireless Sensor Networks
This project does not currently specify a license. Consider adding one for clarity on usage rights.
Note: This project uses the Zephyr RTOS and is designed for Nordic Semiconductor microcontrollers. Ensure you have the proper development environment set up before building.