It appears to me that GPIO0 pin has an internal pull up resistor, so it may be left unconnected. However, it must not be pull low on power up or reset or the module will enter it’s bootloader mode. Also, the CH_PD (chip enable) must be pulled high with a pull up resistor attached to Vcc and remain so, for normal module function. The first step to update the flash firmware is to pull down the GPIO0 pin by attaching it GND (ground) with a pull down resistor and then resetting the module by momentarily pull the RST pin to GND, which put the module into its bootloader state. After examining the screen capture you’ve posted above, it appears the module is loaded with the AI-Thinker AT Firmware v0.9.5.0 or v0.9.5.2, their latest release of firmware. As there are valid text intermixed with spurious characters, the current baud rate appears to be correct. The spurious characters lead me to suspect, the main issue you face at the moment is attempting to communicate with the module through a softUART, Arduino’s Software Serial Library. I recommend first configuring the module for a lower baud rate, 9600 or less, utilizing a FT232R or similar USB to Serial bridge chip BOB (Breakout Board) or cable. You should be able to lower the baud rate to 9600 or less using the AT+CIOBAUD=9600 command. Attempting to properly configure the module for a lower baud rate using a softUART at higher speeds might prove to be unreliable and may unintentionally configure the module with improper settings, therefore I would suggest utilizing the aforementioned BOB or cable.