Pages: [1]   Go Down
Author Topic: Siemens TC35 GSM Modul  (Read 3741 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Jr. Member
**
Karma: 0
Posts: 56
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Leute

Ich habe neulich ein Siemens TC35 GSM Modul günstig für 10€ bei ebay erstanden. Solch eins:
http://www.ebay.de/itm/Neu-GSM-SIEMENS-TC35-SMS-drahtlos-Module-UART-232-Free-Voice-Adapter-For-Arduino-/250922333972?pt=SPS_Bus_Logiksysteme&hash=item3a6c22f714

Nun stellt sich mir die Frage wie ich das Teil mit der Arduino Software, bzw in Verbindung mit dem Arduino Benutzen kann.
Ich habe 5V angeschlossen und eine SIM Karte mit deaktivierten PIN eingelegt. Wenn ich einen Anruf auf die Nummer tätige dann klingelt es auch am Tel. Ein Pin an dem Teil hat die bezeichnung Ring0 , dort habe ich testweise eine LED angeschlossen und diese leuchtet schwach und wenn ich die Nummer anrufe dann blinkt sie auch. Nun würde ich gerne damit die SSerial2Mobile Lib nutzen um damit eine SMS zu senden. Ich weiss leider nur nicht wie ich das anstellen soll. Vielleicht habt ihr ein paar Tips wie ich da was realisieren kann bzw das ganze anschliessen kann, den im moment weiss ich nicht genau wo ich ansetzten soll.
Ziel des ganzen soll später sein das ein Wasser und Gas Sensor dran hängt zb. und das ganze dann im Keller installiert ist, und er im Notfall meldung per SMS erstattet wenn Gasgeruch auftritt oder Wasser im Keller steht.

Danke für alle Tips.

Greeez Oli
Logged

Forum Moderator
BZ (I)
Online Online
Brattain Member
*****
Karma: 252
Posts: 21282
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

http://www.google.com/search?q=arduino+tc35&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:de:official&client=firefox-a
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 56
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Auf die Idee zu Googlen bin ich auch als erstes gekommen, und hätte ich da was verwertbares gefunden hätte ich sicher hier nicht so eine Frage gestellt.

Mittlerweile habe ich das ksgsm.pde getestet und bin aber nicht wirklich weiter gekommen.

Ich habe Pin7 an TX am TC35 DEV-Board hängen und Pin6 am RX des DEV-Board, zusätzlich noch GND vom Arduino.
Das TC35 Board hängt an einer externen Stromversorgung 5V.

Wenn ich jetzt den kdgsm Sketch benutze und den Serial Monitor aufrufe bekomme ich das:
Code:
GSM: OK

Arduino: Reset modem to factory default setting, wait..

GSM: OK

Enable modem's debug message, wait..

GSM: OK

----- Arduino GSM Control Menu -----

Press "s" to send SMS

Press "d" to dial a phone call

Press "e" to end a phone calll

----- ------------------------ -----

Wrong Input

----- Arduino GSM Control Menu -----

Press "s" to send SMS

Press "d" to dial a phone call

Press "e" to end a phone calll

----- ------------------------ -----
Weiter gehts dann nicht, egal was ich eingebe , keine Reaktion.

Hier noch der Sketch:
Code:
// serial speed to use with phone
#define PHONE_SERIAL_BUAD 9600
//  Puts teh phone into SMS texting mode ( as opposed to MMS, etc.)
#define PHONE_SET_SMS_TXT_MODE_COMMAND "AT+CMGF=1"
//  Command used to send a message
#define PHONE_SEND_MSG "AT+CMGS="
// Command to dial a call
#define PHONE_DIAL_CALL "ATD"
#define PHONE_END_CALL "ATH"
#define BUFFSIZ 90 // plenty big


#define ARDUINORX 6
#define ARDUINOTX 7
#include <NewSoftSerial.h>
NewSoftSerial gsmSerial(ARDUINORX, ARDUINOTX);
char buffer[BUFFSIZ];
//char *parseptr;
char buffidx;


void setup() 
{
  Serial.begin(9600);
  Serial.println("Hello PC");

  // set the data rate for the NewSoftSerial port
  gsmSerial.begin(PHONE_SERIAL_BUAD);
  delay(500);
  ATTest();
  Serial.println("Arduino: Reset modem to factory default setting, wait..");
  gsmSerial.println("AT&F");  wait4OK();
  Serial.println("Enable modem's debug message, wait..");
  gsmSerial.println("AT+CMEE=2"); wait4OK();
}

void loop()                     // run over and over again
{
  char  input = 'n';
  Serial.println("----- Arduino GSM Control Menu -----");
  Serial.println("Press \"s\" to send SMS ");
  Serial.println("Press \"d\" to dial a phone call ");
  Serial.println("Press \"e\" to end a phone calll ");
  Serial.println("----- ------------------------ -----");
 
  while(Serial.available()<=0){
    delay(200);
  }
  readline();
  input = buffer[0];
 
  switch(input){
    case 's':
            char phoneNum[40];
            char smsContent[40];
            Serial.println("Target Phone number:");
                readline();
                strcpy(phoneNum, buffer);
                  Serial.println(phoneNum);
              Serial.println("SMS Content");
                readline();
                strcpy(smsContent, buffer);
                  Serial.println(smsContent);
                  //-----------------------------------------------
               gsmSerial.println(PHONE_SET_SMS_TXT_MODE_COMMAND);
               delay(500);
             gsmSerial.print(PHONE_SEND_MSG);
              gsmSerial.println(phoneNum);
                delay(500);
                gsmSerial.print("\"");
              gsmSerial.print(smsContent);
              gsmSerial.print("\"");
              gsmSerial.print((char)26);
              //-----------------------------------------------
              Serial.println("SMS is sending...");
//              delay(4000);
//              wait4OK();
  if (wait4OK()==1)  {
  Serial.println("Done! SMS Sent");
  }
  else{
     Serial.println("Failed..SMS Fail");
  }
              break;
    case 'd': Serial.println("Dialing a call");
                 //char phoneNum[40];
                   Serial.println("Target Phone number:");
                readline();
                strcpy(phoneNum, buffer);
                  Serial.println(phoneNum);
                  //-----------------------------------------------
                  gsmSerial.print(PHONE_DIAL_CALL);
              gsmSerial.print(phoneNum);
               gsmSerial.println(";");
               //-----------------------------------------------
               Serial.println("Calling... use the voice adapter to talk as usual");
                delay(500);
                //wait4OK();
              break;
        case 'e':
        gsmSerial.print(PHONE_END_CALL);
        break;
    default: Serial.println("Wrong Input");
              break;
  }
/*
  if (gsmSerial.available()>0) {
      Serial.print((char)gsmSerial.read());
  }
  if (Serial.available()>0) {
      gsmSerial.println((char)Serial.read());
  }
*/ 
  delay(500);
}

void ATTest(){
  Serial.println("Arduino: Test modem Communication..wait..(if >5sec..fail..)");
  gsmSerial.println("AT");
  if (wait4OK()==1)  {
  //Serial.println("Arduino: OK");
  }
  else{
     Serial.println("Arduino: Fail!, please check connection! ");
     Serial.print("Connect pin"); Serial.print(ARDUINOTX); Serial.print("to GSM RX, ");Serial.print(ARDUINORX); Serial.print(" to GSM TX");
  }
}

int wait4OK() {
  int returnVal=0;
 
       GSMreadline();
       Serial.print("GSM: ");
       Serial.println(buffer);
       if (strncmp(buffer, "OK",2) == 0) {
          returnVal=1;
       } else  {
returnVal=-1;
  }
        return returnVal;
}

void GSMreadline(void) {
  char c;
 
  buffidx = 0; // start at begninning
  int crCount=0;
  while (1) {
   
      c=gsmSerial.read();
     
      if (c == -1){
       delay(500);
        continue;
      }
      if (c == '\n')
        continue;
       

      if((int) c == 13){
      crCount++;
     
        if (crCount==1 || crCount==2)
          continue;
         if (crCount==3){
          buffer[buffidx] = 0;
          return;
         }
       }
       
     
      if (buffidx == BUFFSIZ-1){
        buffer[buffidx] = 0;
        return;
      }
             if (crCount==2){
        buffer[buffidx++]= c;
       }
//      buffer[buffidx++]= c; //org
  }
  Serial.println("END WAIT");
}

void readline(void) {
  char c;
 
  buffidx = 0; // start at begninning
  while (1) {
      c=Serial.read();

      if (c == -1){
       delay(500);
        continue;
      }
       if(((int)c == 13) || (int)c == 10){
       buffer[buffidx] = 0;
       return;
     }
      if (buffidx == BUFFSIZ-1){
        buffer[buffidx] = 0;
        return;
      }
      buffer[buffidx++]= c;
  }
}

Bin mit meinen Latein am Ende. Jemand eine Idee?


Greeez Oli
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 56
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Welcher Sketch wird nur in diesem Video verwendet und wo finde ich ihn?

Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 1
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi @ all smiley-wink,

habe mir auch das tc 35 Modul geholt und wollte mal fragen, ob sich da schon was getan hat.

mfg

Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 56
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ist mir nichts bekannt, währe aber weiterhin auch interessiert.
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 56
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Also gefunden habe ich mittlerweile noch was auch funktioniert mit dem TC35.
http://code.google.com/p/gsm-shield-arduino/downloads/detail?name=BETA_GSM_GPRS_GPS_IDE100_v302.zip.zip&can=4&q=

Aber alles halt merkwürdig. Habe den AT Sketch getestet. Manchmal funktioniert er und man kann mit dem TC35 über die Serielle Konsole schön plaudern mit ihm aber manchmal auch nicht das der blos irgendwelche Blöcke anzeigt als wenn was mit der seriellen Kommunikation nicht hinhaut.
Vielleicht kann der ein oder andere das hier auch mal testen und berichten.

LG Oli

Logged

Deutschland
Offline Offline
Jr. Member
**
Karma: 0
Posts: 56
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hey,

habe mir das GSM-Shild auch bestellt und warte gerade schon sehnsüchtig smiley-wink
Hast du mittlerweile schon eine stabil laufende Lösung mit dem Code hinbekommen und das Problem mit der Verbindung Lösung können? Weißt du in etwa wieviel das GSM-Shild an Strom benötigt und könnte man das auch über eine Batterie betreiben eventuell sogar an die 5V des Arduinos hängen?

Mit freundlichen Grüßen
mrlowalowa
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 56
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Stromverbrauch des Moduls liegt bei ca 50-70mA und wenn es telefoniert so bei 100mA
Hier mal mein funktionierender Code unter dem es bei mir als Alarmanlage mit einem Infarotbewegungsmelder  DYP-ME003 und Türkontakt  läuft:
Code:
#include <NewSoftSerial.h>

// Pin`s to TC 35 ,    RX/TX
NewSoftSerial mySerial(2, 3);

// Door Switch
const int buttonPin = 9;
int buttonState = 0;

// DYP-ME003 Pin
int PIRpin=10;
int irstate = 0;


void setup()  
{
  Serial.begin(9600);
  Serial.println("Starte...");

  // set the data rate for the NewSoftSerial port
  mySerial.begin(4800);
  mySerial.println("at");
  
 pinMode(buttonPin, INPUT);
 pinMode(PIRpin,INPUT);
 
 pinMode(13, OUTPUT);
 pinMode(12, OUTPUT);

}

void loop()                     // run over and over again
{


irstate = digitalRead(PIRpin);  
buttonState = digitalRead(buttonPin);

if (irstate == HIGH) {    
    
    digitalWrite(13, HIGH);
    digitalWrite(12, LOW);
    Serial.println("ALARM!");
    delay(2000);
    mySerial.println("ATD12345;"); //12345 = your Tel Number
    delay(10000);
    mySerial.println("ATH");
    digitalWrite(PIRpin, LOW);
  }
  else {
    digitalWrite(13, LOW);
    digitalWrite(12, HIGH);
    Serial.println("Alles OK");
  }


if (buttonState == HIGH) {    
    digitalWrite(13, HIGH);
    digitalWrite(12, LOW);  
    Serial.println("ALARM!");
    delay(2000);
    mySerial.println("ATD12345;"); //12345 = your Tel Number
    delay(10000);
    mySerial.println("ATH");
  }
  else {
    digitalWrite(13, LOW);
    digitalWrite(12, HIGH);
    Serial.println("Alles OK");
  }


  if (mySerial.available()) {
      Serial.print((char)mySerial.read());
  }
  if (Serial.available()) {
      mySerial.print((char)Serial.read());
  }
  
}
« Last Edit: March 24, 2014, 05:36:57 am by Zyrusthc » Logged

Pages: [1]   Go Up
Jump to: