Esp32 to SIMcom A7670C serial communication, garbage issue

I am using Esp-WROOM-32 module and SIMcom A7670C module.
I am trying to send AT commands, but i am getting garbage value, bits are flipping.
so i used USB to TTL converter, here it is fine, i mean no garbage value and no bits flipping.
I am using 115200 Baud rate. both esp32 and usb to ttl converter uses CP2102 chip only, i don't understand the problem.
i am giving 4.16V power supply to SIMcom A7670C through power bench, i also connected common ground, still i am facing this issue.
the voltage between GSM GND and GSM TX pin is 1.8V.
this is how my garbage value looks like :
" 11:40:45.672 -> ��AT+CGATT?

11:40:59.065 -> +CGATT: 1
11:40:59.065 ->
11:40:59.065 -> OK
11:41:05.446 -> ���AT+CGDCONT?

11:41:39.280 -> +CGDCONT: 1,"IP","IOT.COM","",0,0,,,,
11:41:39.320 ->
11:41:39.320 -> OK
11:42:41.362 -> ����������������������������������
"
so how to resolve this?

I have moved your post because it does not relate to official Arduino Zero board.

Please take more care where you post in future. Each forum category has a pinned post at the top explaining what the category is intended for.

I suspect that is an average voltage ?

Please post a full schematic and sketch.

Keep in mind that since the default UART pins of the ESP32 are also connected to the CP2102, the Rx pin (GPIO 3) is not actually capable of reception, other than that from the CP2102.

the easiest way to test communication is to connect an external device to the ESP32 UART2 pins (cross the Tx & Rx lines and add a current limiting resistor just in case) and use the SerialPassThrough example from the IDE.

// ESP32 :left_right_arrow: A7670C AT Command Passthrough
// Upload this ONLY to upload certs

#include <Arduino.h>

#define GSM_RX 18
#define GSM_TX 19

HardwareSerial modem(1);

void setup() {
  Serial.begin(115200);
  modem.begin(115200, SERIAL_8N1, GSM_RX, GSM_TX);

  Serial.println("ESP32 :left_right_arrow: A7670C PASSTHROUGH READY");
  Serial.println("Type AT commands below:");
}

void loop() {
  // PC → Modem
  while (Serial.available()) {
    modem.write(Serial.read());
  }

  // Modem → PC
  while (modem.available()) {
    Serial.write(modem.read());
  }
}

i will take care of it from next time.

it is not built in pcb.
i have SIMcom A7670C module, my esp32 module, power bench, bread board.
i used jumper wires and connected my GPIO 18 to TX of simcom, GPIO 19 to RX of simcom, did common ground.
data is coming, but not clean. the data is like below:

15:57:02.357 -> +CPI�: RE�DY
15:57:02.357 -> 
15:57:02.357 -> OK
15:57:53.558 -> ����AT+CREG?

15:57:53.558 -> +CREG: 0,1
15:57:53.558 -> 
15:57:53.558 -> OK
15:57:53.558 -> �������������������������������������������������������������������
15:58:44.200 -> ������������������������������������������������������������������������AT+CSQ

16:02:57.625 -> +CSQ: 17,99
16:02:57.625 -> 
16:02:57.625 -> OK
16:02:57.625 -> �����������AT+CSQ?

16:02:57.625 -> ERROR
16:02:57.625 -> ���������AT+CSQ?

16:02:57.625 -> ERROR
16:02:57.625 -> ���������AT+CGATT?

16:02:57.671 -> +CGATT: 1
16:02:57.671 -> 
16:03:13.765 -> OK
16:03:13.765 -> ���AT+CGDCONT?

16:03:47.567 -> +CGDCONT: 1,"IP","iot.com.mnc049.mcc404.gprs","10.248.162.50",0,0,,,,
16:03:47.567 -> 
16:03:47.567 -> OK
16:03:47.567 -> �AT+CG�CONT?

16:03:47.567 -> +CGDCONT: 1,"I

That could be the issue, i don't see anything wrong in the code. Have yo tried a lower BAUD-rate (like 9600)?

From the datasheet it shows automatic baud rate detection.

Might be an idea to add a 10K Pulldown or pullup and see if that helps.