KO
|
EN
gitlite — search
Search
#javascript
#python
#hacktoberfest
#react
#ai
#typescript
#llm
#go
#golang
#android
#machine-learning
#rust
#deep-learning
#linux
pnpmachine
★ 13
Open GitHub ↗
pnpmachine
Download README (.md)
Explore Similar Repositories
SchoolLibraryManagementSystem
:
No description available.
InterLV-Search-Bench
:
No description available.
jd-cv-grill
:
JD CV Grill helps experienced candidates read a job description, recover relevant project evidence, and tailor a truthful bilingual CV/resume for ATS and recruiters. 简历优化 / JD匹配 / 经历挖掘.
plaid-wave-sync
:
Sync bank transactions from Plaid → Wave accounting. Keyword-based categorization, GitHub Actions ready.
The-Ultimate-AI-Guide-for-Linux-Engineers
:
No description available.
// repository documentation
Was this content helpful?
★ 0
(0 ratings)
Select Rating:
★
★
★
★
★
Submit Feedback
Recent Feedback
×
Download README
Do you want to download the
README.md
file for
pnpmachine
?
Download (.md)
#Pick and Place G-Code Generator [](https://www.shawonline.co.za/redirl) An application is required to write G-Code for a laboratory or hobbyist pick and place machine. The machine automates the board populating process of Printer Circuit Board Assemblies (PCBA), commonly used in PCB houses which produce consumer electronic components in industrial volumes. When manufacturing small quantities of circuit boards for personal, educational or prototyping use vacuum suction pens are used to pick up passive and intergrated circuit components from trays and to place them on the footprints of pads on the circuit board. For multiple boards, the manual process becomes time-consuming and inaccurate placements decreases product quality by introducing conductivity problems or missing components. By automating this process, multiple error sources are removed and production rate is increased. It was decided to a version of the previously monolithic C# code-base that used a split front-backend design. By separating concerns using a Model-View-Controller based architecture, each structural function was allocated its own module. This allows the code-base to be easier to update, modify and extend. Concise comments provide a clear understanding of code and makes troubleshooting easier. The front-end is built using a React-based view layer and provides the application functions to the user. Component state is managed using React's useState hook, handling file selections and coordinate inputs. API communication is abstracted into a dedicated client module, separating network concerns from the view layer. The back-end is separated into six modules with separate concerns. Express middleware provides routes between the endpoints. A controller handles business logic such as path planning, creating g-code and file I/O. A models module has repositories for the parts list that should be placed, available parts feeders and a list of allowed components. It also validates file inputs through format checks and seeing whether the files were uploaded. A configuration module reads a config file with the INI middleware, allowing machine configuration settings to be used by the different modules. Lastly, a RESTful API sends multiple files through form data and receives error message responses in JSON for the back-end. The application uses a path planning algorithm to decide which placement head moves what component in order. The project's dual-headed end effectors need to pick up two components before moving to the placement condition and needs to omit unplaceable components that do not have available parts. This allows the system to be more robust, populating boards under supply chain constraints. These two decisions adds significant complexity to the business services code. The pathplanning approach was to find the least complex algorithm that would populate the placements with available parts, given the physical assembly. Optimising route length was omitted as it did not improve production speed enough at this scale and the resources was better spent elsewhere. Identical feeders of the same parts use priority numbers to decide which is used first. The code is further simplified by having algorithms for picking and placing, since each pneumatic head is identical. Errors are handled gracefully in services and models by returning 400 errors with appropriate descriptions to the front-end. Data validation is used to ensure only sanitised inputs are processed. Only two routing endpoints are used to send files and information to the backend, with files returned as raw data attached to the form body. The picture.jpg image in the repository was taken after the demonstration at university. #History The application was developed in partial fulfillment of a Bachelor's degree in Mechatronic Engineering. The version used in the project had a monolithic C# codebase, with a form and single module. After the project and without much commercial appeal, it was decided to use the electronic domain knowledge and repurpose the software portion to learn software development. It was updated in May 2026 to the react/node.js version that exists today. 