Show Posts
Pages: 1 2 3 [4]
46  International / Deutsch / Re: Siemens TC35 GSM Modul on: December 09, 2011, 05:26:51 pm
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
47  International / Deutsch / Siemens TC35 GSM Modul on: December 06, 2011, 08:10:37 pm
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
48  International / Deutsch / Re: Arduino und Klingeltrafo on: October 28, 2011, 08:27:53 pm
Das Thema mit dem Wechselstrom kannst du über eine Gleichrichterschaltung lösen, siehe dazu zb.
http://www.arduino-tutorial.de/2010/08/gleichrichterschaltung/

Ich verwendet derzeit solche Relaymodule, können auch mit 220v schalten und kosten nicht wirklich was bei ebay.
http://img.alibaba.com/img/pb/048/664/367/367664048_859.jpg
Gibts auch als einzelne.

Greeez Oli
49  International / Deutsch / Re: burn bootloader "external clock" auf atmega168 schlägt fehl. on: October 27, 2011, 06:39:24 pm
Also ich bin jetzt ein wenig weiter mit meinen Wissen.
Habe der boards.txt das hinzugefügt:
Code:
atmega168bb.name=ATmega168 on a breadboard (8 MHz internal clock)

atmega168bb.upload.protocol=stk500
atmega168bb.upload.maximum_size=14336
atmega168bb.upload.speed=19200

atmega168bb.bootloader.low_fuses=0xFF
atmega168bb.bootloader.high_fuses=0xDF
atmega168bb.bootloader.extended_fuses=0xF8
atmega168bb.bootloader.path=arduino:atmega
atmega168bb.bootloader.file=ATmegaBOOT_168_pro_8MHz.hex
atmega168bb.bootloader.unlock_bits=0x3F
atmega168bb.bootloader.lock_bits=0x0F

atmega168bb.build.mcu=m168
atmega168bb.build.f_cpu=8000000L
atmega168bb.build.core=arduino:arduino

Irgendwie bekomme ich den unlock nicht hin. arduino meldet:
Code:
avrdude: stk500_getsync(): not in sync: resp=0x00
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x00

und :
Code:
avrdude -c arduino -P/dev/ttyUSB1 -p m168 -B 5 -V -e -U lock:w:0x3F:m -U hfuse:w:0xDF:m -U lfuse:w:0xFF:m -U efuse:w:0xF8:m

das
Code:
avrdude: stk500_getsync(): not in sync: resp=0x00
50  International / Deutsch / Re: burn bootloader "external clock" auf atmega168 schlägt fehl. on: October 27, 2011, 04:21:31 pm
Jetzt bekomme ich :
Code:
avrdude: Expected signature for ATMEGA328P is 1E 95 0F
         Double check chip, or use -F to override this check.
komisch.
51  International / Deutsch / burn bootloader "external clock" auf atmega168 schlägt fehl. on: October 27, 2011, 03:51:46 pm
http://arduino.cc/en/Tutorial/ArduinoToBreadboard
Ich gehe folgenden Weg "Minimal Circuit (Eliminating the External Clock)"

Bei Board habe ich "ATmega328 on a breadboard (8 MHz internal clock)" ausgewählt und bei tools-->burn bootloader
w/arduino as ISP

Doch leider kommt die Fehlermeldung:
Code:
avrdude: stk500_getsync(): not in sync: resp=0x00
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x00

Jemand eine Idee woran es liegen könnte?

Aso benutze einen Seeeduino v2.12

Greeez Oli
52  International / Deutsch / Re: Webserver und mehrere LED`s unabhängig schalten. on: October 13, 2011, 02:46:57 pm
Super Danke
53  International / Deutsch / Re: Webserver und mehrere LED`s unabhängig schalten. on: October 13, 2011, 01:23:20 pm
Habs jetzt so gemacht. Funktioniert Super:
Code:
#include "etherShield.h"
#include "ETHER_28J60.h"

int outputPin = 4;
int outputPin2 = 5;

static uint8_t mac[6] = {0x54, 0x55, 0x58, 0x10, 0x00, 0x24};                                                           
static uint8_t ip[4] = {192, 168, 1, 15};                     
static uint16_t port = 80;                                   

int statuspin1 = 0;
int statuspin2 = 0;

ETHER_28J60 e;

void setup()
{
  e.setup(mac, ip, port);
  pinMode(outputPin, OUTPUT);
  pinMode(outputPin2, OUTPUT);
}

void loop()
{
 
 char* params;
  if (params = e.serviceRequest())
  {
// PIN 1
    e.print("<table border=1><tr><td><b>PIN 4</b></td>");

    if (strcmp(params, "?cmd=on") == 0)
    {
      digitalWrite(outputPin, HIGH);
    }
    if (strcmp(params, "?cmd=off") == 0)
    {
      digitalWrite(outputPin, LOW);
    }
   

statuspin1 = digitalRead(outputPin);
if (statuspin1 == true)
{
  e.print("<td><font color=green>aktiv</font></td>");
}
else
{
  e.print("<td><font color=red>inaktiv</font></td>");
}
    e.print("<td><A HREF='?cmd=off'>Ausschalten</A></td> ");
    e.print("<td><A HREF='?cmd=on'>Anschalten</A></td></tr>");
   
// PIN 2
    e.print("<tr><td><b>PIN 5</b></td>");
 
    if (strcmp(params, "?cmd2=on") == 0)
    {
      digitalWrite(outputPin2, HIGH);
    }
    if (strcmp(params, "?cmd2=off") == 0)
    {
      digitalWrite(outputPin2, LOW);
    }
 
statuspin2 = digitalRead(outputPin2);
if (statuspin2 == true)
{
  e.print("<td><font color=green>aktiv</font></td>");
}
else
{
  e.print("<td><font color=red>inaktiv</font></td>");
}
    e.print("<td><A HREF='?cmd2=off'>Ausschalten</A></td>");
    e.print("<td><A HREF='?cmd2=on'>Anschalten</A></td>");
 
    e.respond();
  } 
}
54  International / Deutsch / Re: Webserver und mehrere LED`s unabhängig schalten. on: October 13, 2011, 10:52:50 am
Danke das funktioniert nun das beide wie gewünscht gesteuert werden können.
Nun ist aber noch ein anderes Problem aufgetretten mit der Ausgabe am Webserver da wenn ich eine LED aktivere er auf cmd=foobar geht und mit den 2 Link nicht mehr anzeigt.

Code sieht so im moment aus:
Code:
void loop()
{
 
 char* params;
  if (params = e.serviceRequest())
  {
    e.print("<b>Web Remote PIN 4 </b>");
    if (strcmp(params, "?cmd=on") == 0)
    {
      digitalWrite(outputPin, HIGH);
      e.print("<A HREF='?cmd=off'>Ausschalten</A><br>");
    }
        if (strcmp(params, "?cmd=on") == 0)
    {
      digitalWrite(outputPin, LOW);
      e.print("<A HREF='?cmd=on'>Anschalten</A><br>");
    }
    if (strcmp(params, "") == 0)
    {
      digitalWrite(outputPin, LOW);
      e.print("<A HREF='?cmd=on'>Anschalten</A><br>");
    }

 
 
 
    e.print("<br><b>Web Remote PIN 5 </b>");
    if (strcmp(params, "?cmd2=on") == 0)
    {
      digitalWrite(outputPin2, HIGH);
      e.print("<A HREF='?cmd2=off'>Ausschalten</A>");
    }
    if (strcmp(params, "?cmd2=off") == 0)
    {
      digitalWrite(outputPin2, LOW);
      e.print("<A HREF='?cmd2=on'>Anschalten</A>");
    }
    if (strcmp(params, "") == 0)
    {
      digitalWrite(outputPin2, LOW);
      e.print("<A HREF='?cmd2=on'>Anschalten</A>");
    }
   
    e.respond();
  } 
}

Hat jemand eine Idee.

Greeez Oli
55  International / Deutsch / Re: Arduinoboard2 mit Arduinoboard1 updaten on: October 13, 2011, 08:04:06 am
Vielleicht hilft dir das weiter.
http://jeelabs.org/2010/07/02/fixing-a-faulty-atmega-arduino/

Grüsse Oli
56  International / Deutsch / Webserver und mehrere LED`s unabhängig schalten. on: October 12, 2011, 11:58:38 pm
Hallo zusammen ich bin ganz neu in der arduino Welt.
Mein Vorhaben 2 LED`s später Relays über den Webserver zu steuern.

Habe das Arduino Ethernet Shield v1.1 laufen mit folgenden Sketch:
Code:
#include "etherShield.h"
#include "ETHER_28J60.h"

int outputPin = 4;
int outputPin2 = 5;

static uint8_t mac[6] = {0x54, 0x55, 0x58, 0x10, 0x00, 0x24};                                                           
static uint8_t ip[4] = {192, 168, 1, 15};                     
static uint16_t port = 80;                                   

ETHER_28J60 e;

void setup()
{
  e.setup(mac, ip, port);
  pinMode(outputPin, OUTPUT);
  pinMode(outputPin2, OUTPUT);
}

void loop()
{
 
 char* params;
  if (params = e.serviceRequest())
  {
    e.print("<H1>Web Remote PIN 4</H1>");
    if (strcmp(params, "?cmd=on") == 0)
    {
      digitalWrite(outputPin, HIGH);
      e.print("<A HREF='?cmd=off'>Ausschalten</A>");
    }
    else
    {
      digitalWrite(outputPin, LOW);
      e.print("<A HREF='?cmd=on'>Anschalten</A>");
    }
 
 
    e.print("<H1>Web Remote PIN 5</H1>");
    if (strcmp(params, "?cmd2=on") == 0)
    {
      digitalWrite(outputPin2, HIGH);
      e.print("<A HREF='?cmd2=off'>Ausschalten</A>");
    }
    else
    {
      digitalWrite(outputPin2, LOW);
      e.print("<A HREF='?cmd2=on'>Anschalten</A>");
    }
    e.respond();
  }
}
Funktioniert soweit ganz gut bis auf das Problem das sich blos immer ein LED anschalten lässt. Sprich ist Pin4 aktiv und ich klicke Pin5 anschalten dann geht 4 aus. Und umgekehrt gleichzeitig. Kann mir jemand nen hilfreichen Hint geben wie ich das Problem in Griff bekomme? Sitze schon die halbe Nacht davor und habe so einiges Probiert wie weitere Abfragen einzubauen was alles gescheitert ist.

Greeez Oli
Pages: 1 2 3 [4]