← Back to projects
This repository contains the core embedded C++ codebase used by my Junior Design team.
Rather than concentrating logic in a single file, the codebase is organized to separate platform setup, reusable drivers, and application behavior.
Hardware / Platform
- PlatformIO-based embedded workflow (platformio.ini)
- Custom PCB Design for color sensors, IR sensor, and H-Bridge motor driver
Software Architecture
- Top-level state machine to manage system modes and transitions
- Clear separation between hardware initialization, peripheral drivers, and application logic
- Reusable drivers for I2C, SPI, UART, sensors, and actuators
Key Takeaways
This project strengthened my ability to:
- Design embedded software around state machines and explicit transitions
- Build reusable, well-bounded driver modules
- Maintain a clean project layout that scales with team development
Junior Design
Embedded Arduino/C++ codebase for my Junior Design team, structured as a modular PlatformIO project with reusable drivers and a state-driven main control loop.
Embedded ArduinoCustom PCB DesignWebsocket
Highlights
- State-machine control flow designed for clear, testable behavior
- Custom PCB creation and integration with reusable peripheral drivers
- Websocket Communication for real-time data exchange and monitoring with bot
This repository contains the core embedded C++ codebase used by my Junior Design team.
Rather than concentrating logic in a single file, the codebase is organized to separate platform setup, reusable drivers, and application behavior.
Hardware / Platform
- PlatformIO-based embedded workflow (platformio.ini)
- Custom PCB Design for color sensors, IR sensor, and H-Bridge motor driver
Software Architecture
- Top-level state machine to manage system modes and transitions
- Clear separation between hardware initialization, peripheral drivers, and application logic
- Reusable drivers for I2C, SPI, UART, sensors, and actuators
Key Takeaways
This project strengthened my ability to:
- Design embedded software around state machines and explicit transitions
- Build reusable, well-bounded driver modules
- Maintain a clean project layout that scales with team development