Old standard communication way between two devices, there are several ways it has implemented.
I've ordered a SIM800L module for trying to communicate my AVR board with Me. As it has arrived, I've connected to my CH341A USB to Serial/I2C adapter.
Logically very easy to connect, CH341A RX,TX to SIM800L TX,RX (RX to TX and TX to RX). The only problem is that the maximum voltage level of SIM800L UART is 3.3V (I chose 2.8V) and CH341A works with 5V by default, so I have to use a level shifter (e.g. TXS0102). As SIM800L recommended voltage for power supply is 3.4V-4.4V, you should power it from a 3.7V battery, not directly from 5V of USB. Another reason to use battery is that USB current is only 300mA-500mA and SIM800L can use 2A.
After the good connection I could access it under /dev/ttyUSBx in my Linux. SIM800L works like old analogue modems, You can manage it with AT commands in a serial monitor. You can choose several programs: screen, putty, ... I used PUTTY now. (It works similar in Windows, just select correct COM port instead of /dev/ttyUSB0.)
ESP-12F ESP8266 Wifi
I have ordered an ESP-12F Wifi module, but it escaped my attention that it is not compatible with my breadboard, and I haven't found any adapter nearby, so I designed and etched one fast. (Download this adapter - designed with Autodesk Eagle)
Set CH341a adapter to USB Serial port mode and 3.3V.
Some of the manuals refer BootSEL PINs as GPIO2 must set high, others mention GPIO2 Pin to leave it disconnected. As I tried I can say both of them works. Although you have to set this Pins you can use them later, because it is necessary only to set up on boot, so you can controll them with another MCU/CPU. You do not need to build one, you may try NodeMCU or similar solutions.
If your module has AT command compatible firmware installed you can manage it in serial monitor.
pip3 install esptool python -m esptool --baud 460800 --port /dev/ttyUSB0 write_flash --flash_size=detect --flash_freq=40m -fm dio 0x000000 Firmware_4MByte.bin
You can create your code in C/C++ e.g. with Arduino IDE.
Micropython also available for ESP8266 chip. https://micropython.org/download/esp8266/ (http://docs.micropython.org/en/latest/esp8266/tutorial/index.html). After successful installation of Micropython firmware you have to change connection ( Disconnect GPIO0, GPIO2, CH341 RTS and DTR; But RST,EN,VCC,GND,GPIO15,RX,TX connected as previously) then press RESET and start Thonny. (GPIO15 have to be set low only on boot time)
I have created a webserver in micropython to ESP8266 which can be programmed in HTML+mPy to run MCU jobs, so I can manage connected devices through web.