PnPAssist is a tool that helps you to assemble PCB boards manually.

Public Chat
Similar projects worth following
The PnPAssist is an open source innovative CNC table that position the next SMT component with a proper orientation for you to make hand assembly a lot more fun and way more efficient.

PnPAssist is a numerical, precise positioning device that makes tedious and repetitive manual PCB assembly easier for you and prevents you from making mistakes.

PnPAssist Discord Server:

Why I build this?

I often find myself assembling PCB boards that I designed for my own R&D activities or for a small number of boards I prepared for sale on Tindie. This process is a little bit painful. First I find the location and value of the component from the CAD software. Then I find the right value/package component from my boxes among dozens of components and locate that component by determining its place on the blank PCB. This process continues repeatedly for each component. I designed a tool for myself to improve this time-consuming and error-prone process.

I take a look at the PnP machines for a long time and made researches to make or buy one for myself. But every time I gave up. It frightened me whether it would be accurate enough and the time consuming preparation phase for each new type of board. After all, I was making dozens from one type of board, not hundreds of the same board. There was no enough place in my room for such a large machine. That's why I decided to design a simpler and easier device.

How to Use It?

This machine works with a PnP mount file. Most of the CAD software (may be all of them) for PCB design has option to export this file. For Autodesk Eagle you can export from File > Export > Mount SMD menu

This text file contains the name, X coordinate, Y coordinate, angle, value and the package of the components on the PCB. 

Example Format:

R5 14.31  6.59  90 470ohm M0805
R6 16.41 10.04 180 470ohm M0805

Save this mount file to an SD card and put it on the PnPAssist SD card reader. The machine will home itself on power up.

Place the empty board on the rotary disk. Now you are ready to PnP. For the fist component you need to adjust the machine position under the laser cross. Every time you click the on board switch the machine moves in order to center the next component under the laser cross and the microscope. If you do not have a microscope You can only use the laser cross indicator. When the next component is at the center of the main rotary axis you can rotate the machine to feel your self comfortable to put the component on its place. The machine will show you the name value and the package of the component that you will use on it's oled screen. 


This machine has one linear and one rotary axis. The two lead screws move one center gear. This design have many advantages and simplifies the hardware design. The lead screws with center gear design locks the axis from moving and rotating freely and provide great precision. If you move only one of the motor the table moves and rotates at the same time. In this aspect there is a similarity with the CoreXY platforms. If you move the motors same amount at the opposite directions only the rotary axis moves. If you move the motors same amount at the same direction only Y axis moves. For this reason I decided to use only one step pulse signal from the micro controller to the motor drivers. This ensures that both motors rotate the same amount. 

I use atan2 function to convert the Cartesian coordinates to Polar coordinates for the rotary axis. A polar coordinate system uses an angle and a distance from a center point to define a point in 2D space.

For the given x,y coordinate of a component (we read mount file line by line from SD card and parse the x,y coordinates) we calculate the angle and the radius (distance to the origin) of that point. You can see the calculations in CalcAngleRadius function in the firmware. After this calculations we need to rotate to the angle and move as much as the radius. 


I design an 3D model component box with led indicators. The main board will drive the LEDs in order to indicate the component you need to take from the component box.

Future Improvements

I listed below some improvements that I have planned to realize for the next version. Please feel free to write me your...

Read more »

Adobe Portable Document Format - 55.21 kB - 10/14/2021 at 12:28


Standard Tesselated Geometry - 80.36 kB - 08/30/2021 at 12:00


Adobe Portable Document Format - 29.13 kB - 08/12/2021 at 10:28


PnPAssist Screws and nuts.pdf

Screws and nuts used.

Adobe Portable Document Format - 20.72 kB - 08/06/2021 at 08:18



PinMap of the controller board

Adobe Portable Document Format - 18.73 kB - 07/31/2021 at 08:46


View all 21 files

View all 16 components

  • V2 Components List

    Nuri Erginer4 days ago 0 comments

    We have produced 10 kits for early adaptors. And this list is the one we have purchased. You can find out the real costs of each item and the link you can also buy one for yourself. We decided to prepare the kit in China so the links are from Chinese suppliers.

  • PnPAssist V2 Source Files

    Nuri Erginer09/27/2021 at 07:35 0 comments

    I have published all the source files including assembly manual and build instructions video for PnPAssist V2. In order for you to find out the related files easily I decided to link them here in this project log.

    2D Laser Cut Drawing Dxf File

    3D Print Files

    Custom Shaft

    Firmware source code

    PCB design files

    PCB BOM file

    Assembly Manual

    Build instructions Video

  • PnPAssist V2

    Nuri Erginer09/20/2021 at 11:12 0 comments

    I had very good results with PnPAssist V1. However, I saw that there were some opportunities for improvements and started working on the design of V2. The main reason for V1's design change is Center of Mass (CM). The stepper motors are the heaviest part of the system and both motors are positioned at the rear and pulling the CM towards them. However, the CM must be on the main rotary axis, which is in the center. In order to make the CM in the center I decided to place the motors on each side to balance the system. 

    The other design change needed is because of the center main gear. This 3D printed part works well, but it is obvious that it will wear out over time due to the large frictional forces on it. This part must be manufactured from metal. However, it will be difficult to manufacture due to its unusual and low tolerance structure. In my new design, I decided to use a timing belt because it was cheap and accessible. With these design considerations here is the design of the V2:

  • Functional Block Diagram

    Nuri Erginer08/04/2021 at 08:11 0 comments

    User Inputs : 

    The user provides a mount file (PnP file) stored in an SD card. This file contains component names, values, coordinates and angles all of which are input for the controller. 

    The other user interaction with the device is pressing the next component button. This input triggers the controller to read the next line from the mount file and moves the motors to the position to center the next component that will be placed on the PCB. The controller also display the name, value and package of that component.

    Mount File Inputs: 

    The mount file contains the following data and the controller reads this file line by line and generates the following outputs.

    Name, Value and Package of the componentDisplay on Oled Display
    X, Y Coordinates of the component
    Motor pulses after kinematic calculations.
    Angle of the componentController does nothing. User rotates the machine at the main axes to feel  comfortable before placement.

    Power Inputs:

    This device requires 12V DC power and around 1 amps current. There are two voltage regulators 5V and 3.3V for the on board peripherals. In order for the cables not to disturb the user, the power is transferred to the board with a small slip ring.


    Oled Display

    Display the name, value and the package of the component to the user in order to help to pick it up from the component storage.

    Motors and Motor drivers

    Performs the movement to center the next component.

  • Failed!

    Nuri Erginer08/03/2021 at 06:56 0 comments


    The neo pixel component box did not worked with the current firmware which heavily rely on interrupts. The single-wire control protocol used by NeoPixels requires a very steady data stream at 800 kilobits per second. Bits must be issued at a precisely controlled rate. We are also generating pulses for motor driver, we have I2C oled and SPI SD card on board. It is not easy for Atmega328 to handle all this time critical processes. 


    • We can use Dotstars (APA102C and SK9822) which use a two-wire SPI-like protocol. It has no specific timing requirements, which makes it much less demanding to drive. Either a hardware SPI module or a bit-bashed equivalent can be used.  
    • We can use another micro controller like arm based systems that has extra timers for this time consuming process.
    • Or we can work deeply on the firmware to find out a better software solution.

    I will choose none of them. I am working on the mechanical design of the PnPAssist V2. I have better ideas for the component box.  if i need to give a hint it will be a carousel!

  • Main rotary axis bearing changed

    Nuri Erginer07/26/2021 at 17:17 0 comments

    I have change the main rotary axis bearing to 

    16010 bearing 50x80x10

    The old one is not precise enough under microscope.

    The BOM updated

  • 2D Files Added to Github Repo

    Nuri Erginer07/26/2021 at 17:10 0 comments

    I just added the 2D files for sheet metal parts. You may need to countersink some holes for proper assembly.

    ### Material and production
    Laser cut from 2mm Aluminum

  • Better Main Gear Design

    Nuri Erginer07/24/2021 at 12:25 0 comments

    I tested so many different designs for the main rotary gear. I am glad where I am at the moment. It took my time to get an accurate design point. I updated the github repo with the final design

  • Video of PnpAssist

    Nuri Erginer07/20/2021 at 16:39 0 comments

    here is the video of the machine

  • Controller Board Production

    Nuri Erginer06/21/2021 at 08:41 0 comments

    It is time to get a fabricated PCB board instead of this messy one. I build the first one with the in hand components  

    I have designed and order the New Controller Board from PCBWay. All the design files are in the GitHub Repo.

View all 11 project logs

  • 1
    PnPAssist Build Instructions
  • 2
    PnPAssist V2 Build instructions

View all instructions

Enjoy this project?



richardsaenz8765 wrote 3 days ago point

I was wondering if someone already tried PnPAssist and now I see it here with it's full potential, great project!

  Are you sure? yes | no

Pedro Barbero wrote 08/03/2021 at 11:39 point

Hi Nuri,
This project is incredible, I felt in love with it instantaneously! 

I've read that you use a switch in the main board to move to the next smd competent in the list, So... did you thought that you can use a foot switch to hands free switching? maybe will be useful, giving the possibility to being placing and soldering without using your hands for anything more. 

If the base could be  printed into ABS or metal cnc mechanized... you could be able to use a SMD rework station without damage the base.   

Hope you like my ideas! I'm finalist too into the refresh work from home life challenge and i'm so proud to be one of them with people like you! 

  Are you sure? yes | no

Nuri Erginer wrote 08/03/2021 at 13:15 point

Thank you Pedro,
I also like your project very much. Congratulation on being a finalist. 
Your ideas related with my project is stunning. I will consider them for the next version. It can be great to add a heating element to the base in order to reflow the PCB after PnP. I will think of that.
Most importantly maker communities like are great places to share projects. It is my honer to meet with you. While we both compete for the award, we aim to reach the better together by supporting each other.

  Are you sure? yes | no

Elliot Williams wrote 07/28/2021 at 12:48 point

Absolutely beautiful machine, and a great and simple idea that does just what it should.  And a clever 2D homing mechanism too.  

These kinds of devices -- not professional, fully-automatic, but human-augmenting -- are underappreciated IMO.   

  Are you sure? yes | no

Nuri Erginer wrote 07/28/2021 at 13:40 point

Thanks a lot Elliot,

I am very happy that makers like you love the tech / design of the machine

  Are you sure? yes | no

Reginald Beardsley wrote 07/24/2021 at 15:46 point

Please put this up on Crowdsupply or Kickstarter made with injection molded parts.  That would be much faster than using a lot of 3D printers to manufacture them   You can easily make molds for a small manual plastic injection molding machine.using the 3D printed parts as the pattern,   Make  plasters pattern for the parts, dry it out and pour the molds using zinc alloy.

However, I think this would sell well enough to justify taking it to a production shop.

But I'd love to buy a 3D printed one if you choose to start that way.

I'd like to suggest a pivoting vacuum  pick 'n place tool that would pick up from a  cut tape holder and then place and hold the part for soldering.  Load the part, press a button and solder.  Load next strip of parts.

That would also work for placement for reflow soldering.  For a small run of boards, place each part of a type on all the boards before switching the tape.

  Are you sure? yes | no

Nuri Erginer wrote 07/27/2021 at 08:32 point

Thanks for your support and ideas. I will open up a discord server in order to talk about the ideas and the progress with the community.

  Are you sure? yes | no

David wrote 07/24/2021 at 10:52 point

This is so awesome, I am totally going to build one.

  Are you sure? yes | no

Nuri Erginer wrote 07/24/2021 at 12:29 point

Hear to happy that. I am here if you like to ask anything

  Are you sure? yes | no

Oliveira wrote 06/23/2021 at 21:25 point

love it , such a professional look

  Are you sure? yes | no

Nuri Erginer wrote 06/24/2021 at 06:30 point

Thank you. Not that much but progressing well. :)

  Are you sure? yes | no

heinz wrote 06/16/2021 at 08:46 point

Very cool, thanks for sharing!

Do you have a video of it in action?

  Are you sure? yes | no

Nuri Erginer wrote 06/24/2021 at 06:31 point

Thank you. I will share all the STL files and a video soon.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates