TC35 GSM module does not respond to "AT" command

Hi all,

I am testing my new TC35 GSM module.

When i send "AT" to the module it does not respond with "OK".

But it respond with: "ÿ"

Txd0 of the module is connected with pin 2(softwareSerial Rx) on my Arduino Uno.

Here's my code:

#include <SoftwareSerial.h>  
char gsm_char=0;      //Stores character from the gsmSerial
String content = "";

SoftwareSerial gsmSerial(2,3);  //Creates software serial port(rx,tx)
 
void setup()
{
  //Initialize 
  Serial.begin(9600);
  gsmSerial.begin(9600);
  Serial.println(" TC35 ready");
  
}
void loop() {
  
    if(Serial.available() > 0)
    {
      gsm_char = Serial.read();       
        //Evaluate input.
      if(gsm_char=='t')//Checks input char = t
        {         
          Serial.println("t received"); 
          
          gsmSerial.print("AT\r\n"); //Send AT TO GSM module           
          delay(500); // wait a moment 
          
          gsm_char = gsmSerial.read();
          Serial.println(gsm_char);     
        }
          
     }
      
 }

Thanks!

It could be wrong baud rate.

By the way, the line:

gsm_char = gsmSerial.read();
Serial.println(gsm_char);

only read a single character.

The default baud rate is 9600 ...

Still no response...

drled:

void loop() {

if(Serial.available() > 0)
    {
      gsm_char = Serial.read();       
        //Evaluate input.
      if(gsm_char=='t')//Checks input char = t
        {         
          Serial.println("t received");
         
          gsmSerial.print("AT\r\n"); //Send AT TO GSM module           
          delay(500); // wait a moment
         
          gsm_char = gsmSerial.read();
          Serial.println(gsm_char);     
        }   
     }
}

You may try waiting for a longer "moment". Instead of 500 you could put 5000, yes five seconds, at least once.

I notice you use print("AT\r\n"): why not println("AT")? Maybe you are right in doing so, but since the sequence \r\n (cr-lf) is often confusing in AT commands you may also try print("AT\r") and print("AT\n").

There is a logic in the program's behavior (perhaps not the one you intended): after sending the command and waiting for 1/2 sec you read a character from the gsm without checking for gmsSerial.available() first. So if there is no answer gsmSerial.read() will return -1, translated by the serial monitor into that glyph (try Serial.println(gsm_char, DEC) to see its value as a number).

Still the same problem.

It seems that gsmSerial.available is not true.

 if(gsm_char=='t'){
      
        gsmSerial.print("AT\r");  //Send test command
        delay(5000);
      
         if (gsmSerial.available() > 0 ){
            gsm_char = gsmSerial.read();
            Serial.println(gsm_char,DEC);
          }
    }

Although the the checking of available character is perform after 5 s, there could be possibility that the character comes in after 5 s although it's rather unlikely. In that case, you serial check will return zero.
Why not doing something simpler like this:

if (Serial.available() > 0)
{
  gsmSerial.write(Serial.read());
}

if (gsmSerial.available() > 0)
{
  Serial.write(gsmSerial.read());
}

Whatever you type on the PC should be relayed to the modem and vice versa.
If this fails, it could be something simple like inadequate current of the power supply or a GND is not connected between the boards.

Still the same problem... :~
I can not go in this part of the loop:

if (gsmSerial.available() > 0)
{
  Serial.write(gsmSerial.read());
}

Ground of the TC35 module is connected to the ground of the Arduino...

The TC35 module is powered by a adjustable power supply witch is set to 5V DC & max 1A.

On the display of the power supply i can see the current swing between 20 - 80 mA...

I did read some thread over the net, some saying it the default baud rate is 19200 bps for this modem.
Not sure whether this is true, but worth trying out?

unfortunately it does not work with 19200 bps.

Another thing to try would be shorting the CTS & RTS together.
Some modem enabled these handshake on default setting based on my experience.
Worth a try I guess.

And are you sure 1 A is enough? Usually most module out there range from 1.8 - 2.5 A (Sierra, Cinterion, SIM, uBlox).

I connected the CTS0& RTS0 to each other but i don't see a difference in the serial monitor.

Yes maybe 2A is required in some situations but now it's only using 90 mA at max ?

I had a quick look at the TC35 manual and I think you shouldn't overlook the fact that the serial interface operates at 2.65V. The Uno's serial operates at 5V. Apart from communication problems (also arising from the differences between CMOS and TTL levels), you are running the risk of damaging your GSM module. You may want to search for more information on signal conversion before returning to the software issue.

Forgot to mention this earlier.
I have a TC35 module which already has a level converter on it( MAX232E ).

This is the exact module that i bought:
http://www.ebay.com/itm/GSM-SIEMENS-TC35-SMS-Wireless-Module-UART-232-TC35I-MC35I-ge-/281035188132?pt=LH_DefaultDomain_0&hash=item416f00a7a4

drled:
Forgot to mention this earlier.
I have a TC35 module which already has a level converter on it( MAX232E ).

This is the exact module that i bought:
http://www.ebay.com/itm/GSM-SIEMENS-TC35-SMS-Wireless-Module-UART-232-TC35I-MC35I-ge-/281035188132?pt=LH_DefaultDomain_0&hash=item416f00a7a4

Good. Then how is it connected? You only said that Txd0 of the module is connected with pin 2 on the Arduino, no mention of where the tx of the Arduino (pin 3 in your code) is going. Also you talk of Txd0 and that gives me the impression you are bypassing the level converter and connect directly to the GSM module, but without manuals or schematics it's hard to tell.

This is the schematic of the module.

Right now i have 4 wire's connected to the Tc35 module:

+5V from the power supply is soldered to JP4 VCC.
Ground from the power supply is soldered to JP4 Ground.

Pin 2 arduino(SofttSerial Rx) --> Rxd0 JP6
Pin 3 arduino (SoftsSerial Tx) --> Txd0 JP6.

There's an extra wire between the ground of the arduino to the ground of the TC35.

Unless I'm missing something (which happens rather frequently, so double check yourself) all output pins on the board go into the GSM module. Your only access to the MAX232 seems to be through the serial port itself (pins 2=OUT, 3=IN, 5=GND).

I'm afraid that if you were directly connecting the RXD of the TC35i to the Arduino board, it might be damaged by now.

I am using a TC35 not a TC35 i.

@ Spatula: I don't want connect RS232 levels (+12 V?) to my arduino uno ? So i don't have to use the output pins of the max 232 ?

You are right, the other side of the converter is at RS232 levels, so it seems we are still lacking a TTL - CMOS level converter. My understanding is that connecting the Arduino pins to the JP6 pins bypasses the MAX232 and may damage the GSM module.

I went through the other documentation from the Sainsmart site but I found it less than informative, and I'm afraid that only people who dealt directly with this device can provide guidance. Here in the forum I found this Arduino Forum creative solution, where the poster created a loopback on the MAX232 and (apparently) managed to obtain the required conversion. There is no explanation, however, and the desired effect depends on having full access to the MAX232 pins and on powering it with a 3V source. I also wonder whether there's any undocumented accessory (such as the jack connectors shown in the photo) that can perform the trick.

48X24X48X:
I'm afraid that if you were directly connecting the RXD of the TC35i to the Arduino board, it might be damaged by now.

I am in the same situation, I might have killed the modem.
however, i was following this website, which says it worked to him...
http://denhart.dk/2012/01/siemens-tc35-gsm-module-arduino/
there are pictures showing the direct connections.

any idea?
y am getting the ÿ on each gsmSerial.read()
although its the same as if I disconnect the wires, so thats not saying anything good.

the led on the modem is flashing but i cant get anything usefull on the serial monitor.

any test to check if modem is burned?
its interesting to see that the led does blink constantly.