Modify an off-the-shelf CP2102 module as an Arduino programmer
Kerry D. Wong wrote an article on how to modify a CP2102 module as an Arduino programmer:
This entry was posted in Arduino, how-to and tagged ATMega328p, CP2102.
To make it work with the Arduino bootloader, one easy approach is to disconnect the RST header pin from CP2102 pin 9 and connect it to the DTR pin (pin 28) instead. While in the Arduino schematics, the reset pin is connected to the ATmega328P pin 1 (RST) via a 100 ohm resistor, this connection is not strictly needed as pulses from the DTR pin (connected to ATmega328P pin 1 via a 100nF capacitor) will reset the MCU properly during programming. The two pictures below illustrate the connection between the module RST header and the RST pin of CP2102.