This project leverages the STM32F103C8T6 Bluepill microcontroller and the libopencm3 library to create an advanced conveyor belt system with adjustable speed and height-based object detection.
This project will involve designing and implementing an embedded system in a collaborative GitHub environment. Each team of 4 students will follow a structured approach to plan, design, document, and implement the project. Below are the steps and expectations for each part of the project.
Task Breakdown
1. Project Plan and Milestones
Objective: Develop a comprehensive project plan outlining all key stages, goals, and milestones.
Deliverables:
A high-level project description (one paragraph).
Define the main objectives and success criteria for the project.
Create a timeline and assign tasks to each team member.
Include a checklist or Kanban-style board in GitHub Projects to track task progress. (Optional)
2. System Design Documentation
Objective: Outline the design of the embedded system to ensure that all team members understand the structure and functionality.
Deliverables:
Block diagrams or flowcharts representing the system architecture.
State diagrams or flow diagrams for critical functions or states.
Define the main modules, their purpose, and how they interact.
Describe the communication between different components, especially if peripherals like ADC, DAC, GPIO, or other sensors are used.
3. Implement Continuous Integration and Continuous Deployment (CI/CD)(if applicable)
Objective: Set up a CI/CD pipeline to automate the build and test process.
Deliverables:
Configure GitHub Actions to automatically build the code upon each pull request.
Integrate code quality checks using clang-format to enforce consistent coding style.
Configure unit tests and static analysis tools to catch potential issues early. (Optional)
4. Code Implementation and Style Guidelines
Objective: Implement the code with a consistent and professional style, documented thoroughly.
Deliverables:
Write clean, modular code that adheres to best practices and utilizes meaningful variable and function names.
Run clang-format on all code to ensure consistent styling across the project.
Make use of comments for code clarity and readability.
5. Comprehensive Documentation with Doxygen
Objective: Ensure the code is thoroughly documented for ease of understanding and maintainability.
Deliverables:
Document all functions, modules, and key variables using Doxygen-style comments.
Provide a README.md that explains the overall functionality of the code, lists team members, and includes any general notes about the codebase.
Use Doxygen to generate HTML documentation and commit it to a docs/ directory for easy access.
6. INSTALL.md - Installation and Setup Guide
Objective: Provide a clear and detailed guide for building, flashing, and running the firmware on the target hardware.
Deliverables:
Instructions on how to compile the code, including any specific tools or dependencies required.
Detailed steps for flashing the firmware onto the target hardware (e.g., using OpenOCD, ST-Link, or other tools).
Information about supported platforms, such as operating systems and specific microcontroller details.
7. Hardware Specifications and Schematics
Objective: Provide all relevant details about the hardware configuration and connections.
Deliverables:
A brief overview of the hardware used (microcontroller type, sensors, actuators, etc.).
Circuit schematics in image or SVG format that detail the connections of all components.
A hardware setup guide describing how components should be physically connected.
8. Additional Suggestions
Use Git internal branches for each feature or module, and merge them only when reviewed and approved by at least two team member and team leader.
Create a branch 1.0.0 considered the release branch, and merge only when reviewed and approved by professor.
DO NOT MERGE TO MASTER OR MAKE COMMIT DIRECTLY
Apply good practices of software engineering.
Consider creating an Issue Tracker for each task and keep the conversation within the comments to log progress.
Make use of GitHub's Wiki or Project Board features to organize and visualize the workflow.
Final Deliverable
The project should be fully implemented, tested, and documented. Each team will create a GitHub repository with all code, diagrams, and documentation completed and structured as per the requirements above. Ensure that the README.md provides a quick overview and instructions to navigate the repository effectively.
Good luck, and remember that collaboration and clear communication are key to a successful project! 🍀
This project will involve designing and implementing an embedded system in a collaborative GitHub environment. Each team of 4 students will follow a structured approach to plan, design, document, and implement the project. Below are the steps and expectations for each part of the project.
Task Breakdown
1. Project Plan and Milestones
2. System Design Documentation
3. Implement Continuous Integration and Continuous Deployment (CI/CD) (if applicable)
clang-format
to enforce consistent coding style.4. Code Implementation and Style Guidelines
clang-format
on all code to ensure consistent styling across the project.5. Comprehensive Documentation with Doxygen
docs/
directory for easy access.6. INSTALL.md - Installation and Setup Guide
7. Hardware Specifications and Schematics
8. Additional Suggestions
1.0.0
considered the release branch, and merge only when reviewed and approved by professor.Final Deliverable
The project should be fully implemented, tested, and documented. Each team will create a GitHub repository with all code, diagrams, and documentation completed and structured as per the requirements above. Ensure that the
README.md
provides a quick overview and instructions to navigate the repository effectively.Good luck, and remember that collaboration and clear communication are key to a successful project! 🍀