Embedded Project

General Description

Welcome to my Embedded System Project portfolio, showcasing my experience in Programing embedded real-time system.

Project Background

Design Highlight

1. Universal Compatibility: Built to work seamlessly with all gaming systems supporting a standard USB controller, the device utilizes the industry-standard HID protocol for USB communication, ensuring broad compatibility across various gaming platforms.

2. Enhanced Gameplay Controls: Featuring six momentary pushbuttons, a 2-axis joystick with a pushbutton, and a 3-axis accelerometer, the controller offers intuitive and responsive gameplay controls. Additionally, toggle switches allow users to switch between analog and DPad modes, as well as enable or disable the accelerometer as per their preference.

3. Turbo Functionality: In response to the need for rapid button presses in certain games, the controller incorporates turbo mode for the four general-purpose buttons. Users can easily toggle turbo mode for individual buttons, enabling rapid and continuous button presses for enhanced gameplay performance.

4. Visual Feedback: Equipped with LEDs corresponding to each general-purpose button, the controller provides visual feedback on turbo mode status. LEDs indicate whether turbo mode is enabled, disabled, or actively being utilized, enhancing user awareness during gameplay.

5. Customizable RGB Lighting: Adding a personalized touch to the gaming experience, the controller features RGB LEDs spread underneath the controller body. Users can customize the brightness and color of these LEDs using a GUI application on the PC, with settings retained in non-volatile memory for consistent lighting preferences.

6. Configuration Flexibility: Offering users flexibility in configuration, the controller allows adjustment of joystick deadzone and analog-to-DPad conversion thresholds via GUI software. These configurations are retained across power cycles, ensuring a tailored gaming experience for each user.

PCB Design Experience

The development of the custom input device involved a comprehensive PCB design process, leveraging advanced techniques and considerations for optimal functionality and user experience:

1. Component Integration: Careful integration of components was crucial to ensure seamless functionality and ergonomic design. Components such as pushbuttons, toggle switches, joysticks, and accelerometers were strategically placed to maximize usability and comfort during gameplay.

2. Signal Integrity Management: Attention to signal integrity management was paramount to minimize signal interference and ensure reliable data transmission. Proper grounding, signal routing, and impedance matching techniques were employed to maintain signal integrity across the PCB.

3. Power Optimization: Efficient power management techniques were implemented to optimize power consumption and extend battery life. Low-power design principles were employed to minimize power wastage and enhance the device's longevity during extended gaming sessions.

4. Testing and Validation: Rigorous testing and validation procedures were conducted to ensure the reliability and performance of the PCB design. Functional testing, signal analysis, and compatibility testing were performed to verify the functionality and compatibility of the device with various gaming systems.

5. Compliance: Ensuring compliance with industry standards, particularly RoHS requirements, can be challenging when sourcing components and materials.
I overcame this by carefully vetting suppliers, verifying component compliance documentation, and conducting periodic audits to ensure ongoing compliance throughout the design process.

6. Documentation and Compliance: Thorough documentation of the PCB design process, including schematics, layout files, and fabrication notes, was maintained to ensure compliance with industry standards and facilitate future revisions or modifications. Compliance with regulatory requirements and industry standards was ensured throughout the design process.

Code (Github)

Click the icon below to see codes for the project: