Cart  

No products

0,00 € Shipping
0,00 € Tax
0,00 € Total

Prices are tax included

Check out

List for Quote

No products added yet

FAQ

Do you need help? Go to see our FAQ section.

New products

All new products

Specials

No specials at this time

SIEMENS TC35 SMS GSM Module + Voice adapter

SIEMENS TC35 SMS GSM Module + Voice adapter

Short Description :

The SIEMENS TC35 is a standard AT commands Based GSM module, you can easily apply it with your own embedded system to creat a GSM wireless based data transfer module .Support Arduino!

More details...

38,75 €

AB-20-012-100

Availability : This product is no longer in stock

No products added yet

Secure payment
Secure payment

Detailed Description :

The SIEMENS TC35 is a standard AT commands Based GSM module, you can easily apply it with your own embedded system to creat a GSM wireless based data transfer module .Support Arduino!

The SIEMENS TC35 Module is AT Command - controlled gsm modem, via Serial Port (RS232/TTL communication).

Program source code would be provided so that buyers can use the module easily and get familiar with the module quickly.

Common applications are (sending/receiving) SMS control, phone calling.

Power supply: DC 5V

Frenquency: 900 1800

Documents are on Chinese (please ask us for documentation):

Download Link for Test File

Download Link for Usermanual

Download Link for Access Port

Download Link for GSMV1

Download Link for Transmit File

Path: > > > > SIEMENS TC35 SMS GSM Module + Voice adapter

Material : *

An Arduino Leonardo

a GSM card Siemens TC 35

A transformer block 5v DC

Connections : It is necessary to connect the ground (GND) of the TC35 card to the mass of the Arduino (yellow wire).

Then connect the TX port of the TC35 (green wire) to a digital port of the Arduino (here the port 9) card and connect the RX port of the TC35 (blue wire) to the digital port (here 10) map Arduino.

ATTENTION : the Leonardo card for RX harbor only pins 8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI) can be used. The power of the TC35 should be 5v DC, positive focus. It is necessary to turn on the TC35 card by pressing the left button of the RS232 port, the red LED will flash slowly if everything is ok (valid SIM card)

SMS sending Test :


Note: The flow rate should be between 9600 Arduino and TC35, AT commands typed without space. The following program allows you to enter a message in the serial monitor then sends.

#include <SoftwareSerial.h>   
 #define rxPin 10  
 #define txPin 9  
 // set up a new serial port for Leonardo  
 SoftwareSerial mySerial = SoftwareSerial(rxPin, txPin);  
 char recu[150];   // Array for entering message  
 String message="";  //string we're sending  
 int i;   
 void setup()  
 {//--For Leonardo  
  Serial.begin(9600);  
  while (!Serial){   
    }  
 // set the data rate for the SoftwareSerial port  
  mySerial.begin(9600);  
   delay(5000);  
   Serial.println("Hello, tapez votre SMS en terminant par un point");  
 }  
 void loop()       
 {   
    i = 0 ;   
    while ( Serial.available()>0 )     
    {recu[i] = Serial.read();   
     message += recu[i];   
     i++;   
     //-- 46 is the Ascii code for "."   
     if (recu[i-1]==46)  
     {  
     Serial.println("Envoi du SMS...");  
     SendTextMessage();  
     ShowSerialData();  
     delay(1000);   
     Serial.println("r"); //-- Carriage return  
     Serial.println("SMS parti !");   
     message="";  
     i=0;  
     }  
    }         
 }  
 ///SendTextMessage()  
 ///this function is to send a sms message  
 void SendTextMessage()  
 { mySerial.print("AT+CMGF=1r");  //Because we want to send the SMS in text mode  
  delay(1000);  
  mySerial.print("AT+CMGS="+336xxxxxxxx"r");  
  delay(1000);  
  mySerial.println(message);  
  mySerial.print("r");  
  delay(1000);  
  mySerial.println((char)26);//the ASCII code of the ctrl+z is 26  
  mySerial.println();  
 }  
 void ShowSerialData()  
 {  
  while(mySerial.available()!=0)  
   Serial.write(mySerial.read());  
 }  

Be careful to read the information from the card, it is necessary to change the size of the receive buffer in file SoftwareSerial.h line # define _SS_MAX_RX_BUFF 1024 / / RX buffer size (here we increased the buffer to 1k).

Example of sending commands to the card and read the result.

#include <SoftwareSerial.h> 

 SoftwareSerial mySerial(10, 9); 

 char recu[150];   // Array for entering message 

 int i;  

 String message=""; 

 void setup() 

 {//--For Leonardo 

  Serial.begin(9600); 

  while (!Serial){  

    } 

  mySerial.begin(9600);   

  delay(5000); 

  Serial.println("Started!"); 

  Serial.println("Hello, tapez votre commande en terminant par un point"); 

  //-- Choose SIM memory and show the SMS in MEMORY 

  //-> AT+CPMS="SM". //mySerial.println( "AT+CPMS="SM"" ); 

  //-- Ask for all the SMS 

  //-> AT+CMGL="ALL".// mySerial.println( "AT+CMGL="ALL"" ); 

  //-> AT+CMGR=2. // Read the 2nd message 

  //-> AT+CMGD=2. // Delete the 2nd message 

  //-> AT+CNMI=?. //-- Test received message 

 } 

 void loop() 

 {   

   i = 0 ;  

    while ( Serial.available()>0 )    

    {recu[i] = Serial.read();  

     if ((recu[i]!=46)&&(recu[i]!=13)&&(recu[i]!=10)) 

       message += char(recu[i]);  

     i++;  

     if (recu[i-1]==46) 

     { 

     Serial.println("Envoi de la commande ["+message+"]"); 

     SendCmdMessage();  

     ShowSerialData(); 

     Serial.println("Commande finie,tapez votre commande en terminant par un point");  

     message=""; 

     i=0; 

     } 

    }  

 } 

 void ShowSerialData() 

 { 

  while(mySerial.available()!=0) 

  { 

   Serial.print(char(mySerial.read())); 

  } 

 } 

 void SendCmdMessage() 

 { mySerial.println(message); 

  delay(1000); 

 } 

Lighting a LED upon receiving an SMS and erase the SMS:

#include <SoftwareSerial.h>  
 SoftwareSerial mySerial(10, 9);  
 char recu[150];   // Array for entering message  
 int i;   
 int dp=0;  
 char c;  
 String message="";  
 String cmd="";  
 String cReturn="";  
 int nReturn=0;  
 int nPremier=0;  
 //--Pin of the LED to turn ON and OFF   
 int ledPin = 5;  
 void setup()  
 {//--For Leonardo  
  Serial.begin(9600);  
  while (!Serial){   
    }  
  mySerial.begin(9600);    
  delay(5000);  
  Serial.println("Started!");  
  Serial.println("Hello, Pour commencer taper Envoyer");  
  message="AT+CPMS="SM"";  
     Serial.println("Envoi de la commande ["+message+"]");  
     SendCmdMessage();   
     ShowSerialData();   
     Serial.println(nReturn);   
     nPremier=nReturn;  
      pinMode( ledPin, OUTPUT );   
  digitalWrite( ledPin, LOW);  
  //-- Choose SIM memory and show the SMS in MEMORY  
  //-> AT+CPMS="SM". //mySerial.println( "AT+CPMS="SM"" );  
  //-- Ask for all the SMS  
  //-> AT+CMGL="ALL".// mySerial.println( "AT+CMGL="ALL"" );  
  //-> AT+CMGR=2. // Read the 2nd message  
  //-> AT+CMGD=2. // Delete the 2nd message  
  //-> AT+CNMI=?. //-- Test received message  
 }  
 void loop()  
 {    
    while ( Serial.available()>0 )     
    { message="AT+CPMS="SM"";  
     SendCmdMessage();   
     ShowSerialData();  
     Serial.print("Nombre de SMS : ");  
     Serial.println(char(nReturn+48));  
     if (nReturn>nPremier)  
       {Serial.println("Nouveau SMS !");  
        //nPremier=nReturn-1;  
        Serial.print(nReturn);  
        Serial.print(" ");  
        Serial.println(nPremier);  
        digitalWrite( ledPin, HIGH);   
        delay(1000);  
        //--Read the nReturn message  
        message="";  
        message=nReturn+message;  
        message="AT+CMGR="+message;  
        Serial.println("Envoi de la commande ["+message+"]");  
        SendCmdMessage();   
        ShowSmsData();  
        delay(1000);  
        //--Delete the nReturn message  
        message="";  
        message=nReturn+message;  
        message="AT+CMGD="+message;   
        Serial.println("Envoi de la commande ["+message+"]");  
        SendCmdMessage();   
        ShowSmsData();  
        message="";  
       delay(1000);  
       digitalWrite( ledPin, LOW);  
       }  
     }  
 }  
 void ShowSerialData()  
 { cReturn="";  
  while(mySerial.available()!=0)  
  {  
   //Serial.print(char(mySerial.read()));  
   c=char(mySerial.read());  
   switch(dp){  
   case 1 :  
       if (c==44)///-- Acii code for Comma  
          dp=2;  
       else  
          cmd+=c;  
       break;  
   case 2 :  
       if (cmd!="")  
        { cmd.trim();  
         //Serial.println("Mem SMS ["+cmd+"]");  
         cReturn=cmd;  
         if (cReturn.length()==1)  
           {c=cReturn.charAt(0);  
           nReturn=c-0;  
           nReturn=nReturn-48;}  
          else  
           nReturn=0;  
        }  
       dp=0;  
       cmd="";  
       break;  
   default :  
       if (c==58) //-- Acii code for :  
        dp=1;  
       break;  
  }  
  }  
 }  
 void ShowSmsData()  
 {  
  while(mySerial.available()!=0)  
  {  
   //Serial.print(char(mySerial.read()));  
   c=char(mySerial.read());  
   switch(dp){  
   case 1 :  
       if (c==13)///-- Acii code for Return  
          dp=2;  
       else  
          cmd+=c;  
       break;  
   case 2 :  
       if (cmd!="")  
        Serial.println("Mem SMS ["+cmd+"]");  
       dp=0;  
       cmd="";  
       break;  
   default :  
       if (c==58) //-- Acii code for :  
        dp=1;  
       break;  
  }  
  }  
 }  
 void SendCmdMessage()  
 { mySerial.println(message);  
  delay(1000);  
 }   

 

Same program executable without PC connection Arduino and GSM card on the field after the spill program in Arduino :

 

  //////////////////////////////////////////////////////  
  // Delete all SMS in SIM Memory then :  
  // Wait for SMS, if SMS=OK Light PIN 5  
  // if SMS=OFF light off PIN 5  
  // if SMS=? give a status (ON or OFF) of PIN 5  
  // Otherwise return to the SMS sender a message  
  // If the AT command as an error light PIN 3  
  // If the AT command is ok light PIN 4  
  ///////////////////////////////////////////////////////  
  #include <SoftwareSerial.h>   
  SoftwareSerial mySerial(10, 9);   
  int dp=0;   
  int i=0;  
  int dpLed=0;   
  char c;   
  String message="";   
  String Res="";   
  String TxtSms="";  
  String NumSms="";  
  String cReturn="";   
  int nReturn=0;   
  int nPremier=0;   
  //--Pin of the LEDs    
  int ledPinRel = 5; //-- Led Action Or Relay  
  int ledPinOk = 4; //-- Led OK  
  int ledPinErr = 3; //-- Led Error  
  void setup()   
  {  
  mySerial.begin(9600);    
  delay(5000);   
  //-- SMS in text mode  
  message="AT+CMGF=1";  
  SendCmdMessage();  
  ShowSerialData();   
  //-- Print storage status  
  message="AT+CPMS="SM"";   
  SendCmdMessage();    
  ExtractSmsNumber();    
  //--Delete all the SMS  
  for (i=nReturn; i>0; i--)   
    { message="";   
     message=i+message;   
     message="AT+CMGD="+message;     
     SendCmdMessage();   
     ShowSerialData();  
    }  
  //-- Print storage status  
  message="AT+CPMS="SM"";   
  SendCmdMessage();    
  ExtractSmsNumber();   
  nPremier=nReturn;   
  //-- Initialize LED PIN  
  pinMode( ledPinRel, OUTPUT );    
  digitalWrite( ledPinRel, LOW);   
  pinMode( ledPinErr, OUTPUT );    
  digitalWrite( ledPinErr, LOW);   
  pinMode( ledPinOk, OUTPUT );    
  digitalWrite( ledPinOk, HIGH);   
  }  
  void loop()   
  {    
   message="AT+CPMS="SM"";   
   SendCmdMessage();  
   ExtractSmsNumber();    
   dp=0;   
   if (nReturn>nPremier)   
     {//--Read the nReturn message   
     message="";   
     message=nReturn+message;   
     message="AT+CMGR="+message;   
     SendCmdMessage();    
     ShowSmsData();  
     if (TxtSms=="ON")   
       dp=1;  
     if (TxtSms=="OFF")  
       dp=2;  
     if (TxtSms=="?")  
       dp=3;        
     switch (dp) {  
      case 1 :  
          {digitalWrite( ledPinRel, HIGH);    
          dpLed=1;  
          break;}  
      case 2 :  
          {digitalWrite( ledPinRel, LOW);    
          dpLed=0;  
          break;}  
      case 3 :  
          {if (dpLed==1)  
             message="La LED est ON";  
             else  
             message="La LED est OFF";          
           SendSms();   
           message="AT+CMGD=1";     
           SendCmdMessage();    
           ShowSerialData();   
           break;   
           }   
       default :      
         {message="Erreur, tapez ON, OFF ou ?, merci !";  
          SendSms();  
          message="AT+CMGD=1";     
          SendCmdMessage();    
          ShowSerialData();  
          break;}  
     }  
     //--Delete the nReturn message  
     message="";   
     message=nReturn+message;   
     message="AT+CMGD="+message;     
     SendCmdMessage();    
     ShowSerialData();   
     delay(1000);  
     }    
  }   
  void ExtractSmsNumber()   
  {cReturn="";  
  Res="";  
  nReturn=1;  
  dp=0;   
  while(mySerial.available()!=0)   
  {   
   c=char(mySerial.read());   
   //if ((c!=13) && (c!=10))  
   //  Res+=c;  
   switch(dp){   
   case 1 :   
     if (c==44)///-- Acii code for Comma   
      dp=2;   
     else   
      Res+=c;   
     break;   
   case 2 :   
     if (Res!="")   
     { Res.trim();    
      cReturn=Res;   
      if (cReturn.length()==1)   
       {c=cReturn.charAt(0);   
       nReturn=c-0;   
       nReturn=nReturn-48;}   
      else   
       nReturn=0;   
     }   
     dp=0;   
     Res="";   
     break;   
   default :   
     if (c==58) //-- Acii code for :   
     dp=1;   
     break;   
  }   
  }  
  Res.toUpperCase();  
  if (Res.indexOf("OK")>0)  
      {digitalWrite( ledPinOk, HIGH);   
       digitalWrite( ledPinErr, LOW);  
      }  
  if (Res.indexOf("ERROR")>0)  
      {digitalWrite( ledPinOk, LOW);   
       digitalWrite( ledPinErr, HIGH);   
      }  
  }    
 void ShowSmsData()   
 //-- Read the sender number (NumSms) and the text message (TxtSms)   
 //-- The return code format is : [+CMGR: "REC READ","+336xxxxxxxx",,"13/06/10,22:18:35+08"<CR><LF>Message<CR>]  
 {dp=0;  
  TxtSms="";   
  NumSms="";  
  Res="";  
  while(mySerial.available()!=0)   
  {   
   c=char(mySerial.read());  
   if ((c!=13) && (c!=10))  
    Res+=c;  
   if ((c==44) && (dp==0))///-- 44 Ascii code for ','   
    {//-- Entering Phone Number  
     c=char(mySerial.read()); //-- Reading '"'  
     c=char(mySerial.read());  
     dp=1;}  
   if ((c==34) && (dp==1))///-- 34 Ascii code for '"'   
    {//-- Leaving Phone Number  
     dp=2;}      
   if ((c==13) && (dp==2))///-- 13 Ascii code for <CR>   
    {//-- Entering Message zone  
     c=char(mySerial.read()); //-- Reading <LF>  
     dp=3;}  
   if ((c==13) && (dp==3))///-- 13 Ascii code for <CR>   
    {//-- Leaving Message zone  
     dp=4;}  
   switch(dp){   
   case 1 :  
       NumSms+=c;   
       break;   
   case 3 :   
       TxtSms+=c;  
       break;  
      }  
  }  
 TxtSms.toUpperCase();  
 TxtSms.trim();  
 Res.toUpperCase();  
 if (Res.indexOf("OK")>0)  
      {digitalWrite( ledPinOk, HIGH);   
       digitalWrite( ledPinErr, LOW);  
      }  
 if (Res.indexOf("ERROR")>0)  
      {digitalWrite( ledPinOk, LOW);   
       digitalWrite( ledPinErr, HIGH);   
      }  
 }   
 void SendSms()  
  {   
  mySerial.println("AT+CMGS="+NumSms);   
  delay(1000);   
  mySerial.println(message);   
  delay(1000);   
  mySerial.println((char)26);//the ASCII code of the ctrl+z is 26   
  delay(1000);   
  ShowSerialData();   
  delay(1000);   
  }  
  void SendCmdMessage()   
  {  
  mySerial.println(message);   
  delay(1000);   
  }   
  void ShowSerialData()   
  {Res="";  
  while(mySerial.available()!=0)  
  {c=char(mySerial.read());   
   if ((c!=13) && (c!=10))  
    Res+=c;  
  }  
   Res.toUpperCase();   
   if (Res.indexOf("OK")>0)  
      {digitalWrite( ledPinOk, HIGH);   
       digitalWrite( ledPinErr, LOW);  
      }  
   if (Res.indexOf("ERROR")>0)  
      {digitalWrite( ledPinOk, LOW);   
       digitalWrite( ledPinErr, HIGH);   
      }  
  }   

30 other products in the same category :