SCARA Robotic Drawing Arm

internals

What

This Robotic Arm was a team based project for a Junior Design class. We were given certain engineering requirements such as affordability, speed, precision and SCARA topology. From there we were free to attempt any approach we liked and we chose servos to move the arm. The system takes in G-code inputs or cursor movements and performs the respective movement. For this project we used an ESP32-WROOM-32D, a custom PCB designed in KiCad, an adjustable 3A buck converter and 3D-printed arms, joints and an enclosure.

PCB

How

For this project we divided the project up into 6 blocks and assigned each team member 2 blocks. From there, each team member made the documentation and validated the inputs and outputs for each block. Once validation was complete we began building and assembling the blocks which included a code/microcontroller block, power delivery PCB block, Mechanical block and other smaller blocks. The arms were designed in Fusion360 and printed with PLA. The code block contained all the inverse kinematics calculations to convert the position we wanted the drawing utensil to be at, into angles of each servo (base and elbow servo). The code also included wifi connectivity such that we could communicate over a port on the same WiFi network. For example, someone could run our python GUI script and send g-codes on the port that the microcontroller was listening on. We extended this principle to the drawing window where we allow users to sketch with their cursor; all cursor locations on the window are translated to g-code commands and sent to the microcontroller in the same fashion.

GUI

Reflection

After completing the team project and achieving all engineering requirements we had a few ideas for what we might change if we were to start again from scratch. For starters, servos did okay in our application, however, they have some slop between the gears which leads to more inaccuracies the farther the arm is from zero. Stepper motors and belts could have helped us in this scenario as we could reduce the weight on each arm as well as changing the gearing ratio for adjusting speed and control. Other things we learned was that documentation of each block and good communication with peers working on neighboring blocks is crucial for seamless system integration. However, despite some challenges along the way, we as a team had a lot of fun in the design and testing of the arm and are very proud of the final product.