4G LTE Modem (A7670C) Integration: Initialization Issue with Arduino

Hello Arduino Community,

am currently working on a project involving the integration of an ADIY 4G LTE Modem (A7670C) with Arduino. I've encountered an issue with the initialization process, and after some investigation, I discovered that the A7679C module has a 1.8V UART header.

To address this, I purchased an I2C Bi-Directional Logic Level Converter (4 Channel) from Robu, successfully shifting the voltage from 1.8V to 5V. However, even with the level shifter in place, the program is still stuck at the initializing stage.

Additionally, I observed an interesting voltage behavior when testing the 4G module's RX and TX directly without the level shifter. The RX voltage is reading 3V, while the TX voltage is 1.8V when measured with a multimeter. I'm uncertain whether these voltage readings are normal or if there might be an abnormality causing the initialization issue.

I have tried various baud rates ranging from 9600 to 115200 without success. I would greatly appreciate any insights or suggestions from the community regarding this problem. Has anyone encountered a similar issue with the A7670C module, or does anyone have recommendations on troubleshooting steps I can take to resolve the initialization problem?

Thank you in advance for your time and assistance.


//Create software serial object to communicate with SIM800L
SoftwareSerial sim900a(7, 8); //SIM800L Tx & Rx is connected to Arduino #3 & #2

void setup()
{
  //Begin serial communication with Arduino and Arduino IDE (Serial Monitor)
  Serial.begin(9600);
  
  //Begin serial communication with Arduino and SIM800L
  sim900a.begin(9600);

  Serial.println("Initializing...");
  delay(1000);

  sim900a.println("AT"); //Once the handshake test is successful, it will back to OK
  updateSerial();
  sim900a.println("AT+CSQ"); //Signal quality test, value range is 0-31 , 31 is the best
  updateSerial();
  sim900a.println("AT+CCID"); //Read SIM information to confirm whether the SIM is plugged
  updateSerial();
  sim900a.println("AT+CREG?"); //Check whether it has registered in the network
  updateSerial();
  
}

void loop()
{//sim900a.println("AT+CSQ");
  updateSerial();
}

void updateSerial()
{
  delay(500);
  while (Serial.available()) 
  {
    sim900a.write(Serial.read());//Forward what Serial received to Software Serial Port
  }
  while(sim900a.available()) 
  {
    Serial.write(sim900a.read());//Forward what Software Serial received to Serial Port
  }
}
type or paste code here

Hello Arduino Community,

I'm currently working with a Sim A7670 C Module manufactured by Adiy and attempting to connect it to my Arduino. I've noticed that the RX pin on the module shows 3V on the multimeter, but the TX pin is only showing 1.8V. According to the datasheet, both pins should operate at 1.8V.

I'm unsure if this indicates a problem with the module or if it's expected behavior. I'm having difficulty establishing communication with my Arduino. Could someone please provide insights into whether this voltage discrepancy is normal and offer suggestions for troubleshooting or resolving the communication issue?

Thanks in advance for your help!

Please give a link to the datasheet.

Most likely the RX pin has a pullup resistor activated and is pulled to it's VCC level. This mitigates random pulses on RX, should the pin be left unconnected.

Link to datasheet

A 1.8V UART port is provided and a RS-232 port. Which one do you want to use?

The RX pin has no defined idle voltage, it's only an input, not an output.

interfacing different modules and devices with varying voltage levels can be a challenge. One common scenario is the need to shift UART (Universal Asynchronous Receiver-Transmitter) communication levels between 1.8V and 5V. Can this be achieved using a specialized component known as the I2C Bi-Directional Logic Level Converter ?

I don't think that there is anything specific to I2C about that logic level shifter. The text alongside the product mentions 3.3V. I don't know if that product will work down at 1.8V.

have used SN74LVC1G34DCKR 1.65-V to 5.5-V buffer to convert 3.3V logic to 1.8V for a Quectel EC21 modem

Edit: have a look at Universal Level Shifter / Voltage Translation

edit: edit: have a look at 8-channel Bi-directional Logic Level Converter - TXB0108

You will have problems trying to use that particular level shifter at 1.8V.
I also do not recommend the TXB0108 unless you are designing a PCB, as many people have had problems with that IC.

Do you want something you can build on a breadboard?

UART lines are not bidirectional, so the translator circuit doesn't really need to provide for that. For example, in the circuit referenced in the OP, the pullup resistor on the sending side isn't needed, and will only slow things down.

Transmitting from high to low can be as simple as a resistor divider, or possibly a pullup resistor and diode. Transmitting from low to high, such as 1.8V to 5V, could be a pullup resistor and NPN transistor (with base resistor).

The 74LV1T parts are much more efficient, and are designed to be translators, but I don't think they will do 1.8V to 5V.

Those level shifters usually use the BSS138 MOSFET, which based on the datasheet should actually work at 1.8V (VGS, TH is measured at 1 mA which is already more than you need for this level shifting, and guaranteed to be <1.5V).

It can be done simpler, and with a little modification to the level shifter circuit as you linked to perfectly reliable.

What you need to shift 5V to 1.8V is a voltage divider.

What you need to shift 1.8V to 5V is a different circuit - in the level shifter as you linked to, you replace the MOSFET with an NPN transistor (the circuit is now unidirectional), and the low signal on the 5V side is at about 0.2-0.3V which is well below the 1.5V threshold for a LOW state on the Arduino.

Schematic:

Hi Arduino community,

I'm reaching out for some troubleshooting assistance with my SIM7670C module and Arduino Uno. My code gets stuck during initialization........, preventing any communication with the module.

Setup:
Module: SIM7670C Module, datasheet
Arduino Board: Arduino Uno
Power Supply: 12V 1A adapter connected directly to SIM7670C
Baud Rate: Tried various rates (9600, 115200, etc.) in code and Serial Monitor

Problem:

Code hangs during initialization......., no response from AT commands ("AT", etc.) on Serial Monitor.

Troubleshooting Steps Taken:

Used multiple baud rates for both code and Serial Monitor.
Employed a logic shifter for communication.
Double-checked connections and pins.
Verified power supply requirements and stability.

Additional Information:

Sending AT commands for handshaking but receiving no response.
No error messages or unexpected outputs on Serial Monitor.

I'd greatly appreciate any help or advice to overcome this initialization hurdle and establish communication with the SIM7670C. Any insights or suggestions are welcome!

Thanks in advance

#include <SoftwareSerial.h>

//Create a software serial object to communicate with SIM800L
SoftwareSerial mySerial(3, 2); //SIm Tx & Rx is connected to Arduino #3 & #2

void setup()
{

Serial.begin(9600);

mySerial.begin(9600);

Serial.println("Initializing...");
delay(1000);

mySerial.println("AT"); //Once the handshake test is successful, it will back to OK
updateSerial();
mySerial.println("AT+CMGF=1"); // Configuring TEXT mode
updateSerial();
mySerial.write(26);
}

void loop()
{
  while (Serial.available())
  {
    mySerial.write(Serial.read());
  }
  while (mySerial.available())
  {
    Serial.write(mySerial.read());
  }
}

void updateSerial()
{
delay(500);
while (Serial.available())
{
mySerial.write(Serial.read());//Forward what Serial received to Software Serial Port
}
while(mySerial.available())
{
Serial.write(mySerial.read());//Forward what Software Serial received to Serial Port
}
}

please show your connection diagram.

Arduino Uno is a 5v device, the modem has a 3.3v logic level. Do you use any level shifting between them?

I see that this is already your fourth topic about SIM7670 this week. Starting new threads for similar topics is not recommended by the forum rules. Maybe it’s worth combining all your threads about the modem into one?

I have merged your topics due to them having too much overlap on the same subject matter @floricx.

In the future, please only create one topic for each distinct subject matter and be careful not to cause them to converge into parallel discussions.

The reason is that generating multiple threads on the same subject matter can waste the time of the people trying to help. Someone might spend a lot of time investigating and writing a detailed answer on one topic, without knowing that someone else already did the same in the other topic.

Thanks in advance for your cooperation.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.