Do you need a robot who clicks the "like" button on all your friends' posts? This screen tapping robot clicks touch screen in the way you program it to!
Step 1: The Operation Console
I used a 9" x 12" pattern plate as the operation console which holds the mobile phone (or any other touch screen based devices) and the motion components.
There are two grommets and two standoffs attached to the platform in order to fix the mobile phone so that when the stylus is tapping, the mobile phone won't move.
Step 2: The X-Axis
To control the stylus movement, I built a rack based on Cartesian coordinate system, i. e. one with X and Y axises. I also tried polarized coordinate system which required fewer components, but it was much less stable.
The X-axis is implemented by a lead screw driven by a NEMA 17 stepper motor. Because the X-axis need to mobilize the rest of the components including Y-axis and the stylus system, which are kind of heavy, I stabilized the X-axis movement using two 8mm x 300mm stainless steel precision shaftings with linear ball bearings.
Step 3: The Y-Axis
I could use another lead screw to implement Y-axis, but it is too heavy because the lead screw is stainless steel. So I built a slider system based on aluminum pinion pulleys and timing belt.
The timing belt is attached to two channel sliders so that I can mount the stylus system later.
The Y-Axis is driven by another NEMA 17 stepper motor.
Step 4: The Stylus System
To click the touch screen, I need to make the stylus move linearly. Initially I was planning to use linear actuator, but it was too big and more expensive than I expected, so I ended up with building my own.
The stylus is attached to a pulley system similar to the Y-axis, but much smaller. Another difference from the Y-axis is the stylus movement is driven by a standard servo (instead of a stepper motor).
Step 5: The Control
Now everything is in place, it's time to make them moving!
The stepper motors and servo can be driven from any micro controller. I picked Raspberry Pi 3 as the main controller and used two A4988 based stepper motor drivers to control the stepper motors for axis movement. The servo is driven by the PWM signal from Raspberry Pi itself. If you want to drive multiple servos at the same time (which is not the case in this project), you may want to get a PCA9685 based multi channel servo driver.