Siemens TC35 GSM Programmierfehler????



  • hallo an alle 🙂

    ich verzweifle bald

    mein code steht und funktioniert so:

    #include <SoftwareSerial.h>
    SoftwareSerial mySerial(8, 9);
    
    String inData = "";
    char last;
    #include <DHT.h>
    #include <SD.h>
    #define DHTPIN 2
    #define DHTTYPE DHT22
    DHT dht1 (DHTPIN, DHTTYPE);
    #include <SPI.h>
    #include <Wire.h>
    #include "RTClib.h"
    RTC_DS1307 RTC;
    const int chipSelect = 4;
    const int analogInPin = A0;
    int sensorValue = 0;
    
    void setup()  
    {
    
      Wire.begin();
      RTC.begin();
      Serial.begin(9600);
      Serial.println("Starte...");
    
      mySerial.begin(9600);
      mySerial.println("AT");
      pinMode(10, OUTPUT);
    
      if (!SD.begin(chipSelect))
      {
        Serial.println("Card failed, or not present");
        return;
      }
    
      Serial.println("card initialized.");
      Serial.println("");
      delay(1000);
    }
    
    void call(String n)
    {
      mySerial.print("ATD");
      mySerial.print(n);
      mySerial.println(";");
      Serial.println("Starte Anruf...");
      delay(10000);
      mySerial.println("ATH");
      Serial.print("Anruf an ");
      Serial.print(n);
      Serial.println(" beendet");
    }
    
    void loop()
    {
    
      while (Serial.available() > 0)
      {
        char recieved = Serial.read();
        inData += recieved;
    
        if (recieved == '\n')
        {
          Serial.print("Arduino Received: ");
          Serial.print(inData);
        }
      }
    
      DateTime now = RTC.now();
    
      if (inData == "d")
      {
        Serial.print(now.day(), DEC);
        Serial.print('.');  
        Serial.print(now.month(), DEC);
        Serial.print('.');
        Serial.print(now.year(), DEC);
        Serial.print(' ');
        Serial.print(now.hour(), DEC);
        Serial.print(':');
        Serial.print(now.minute(), DEC);
        Serial.print(':');
        Serial.println(now.second(), DEC);
        Serial.println();
      }
    
      String dataString = "";
    
      sensorValue = analogRead(analogInPin);
    
      float h = dht1.readHumidity();  
    
      float t = dht1.readTemperature();
    
      if (isnan(t) || isnan(h))
      {
        Serial.println ("Fehler - Lesen von Luftfeuchte bzw. Temperatur");
        Serial.println("Gaswert soll: < 100");
        Serial.print("Gaswert ist:  < ");    
        Serial.println(sensorValue);
        Serial.println("");  
      }
    
      if (inData == "a")
      {
        Serial.print("Feuchte:        ");
        Serial.print(h);
        Serial.println(" %   ");
        Serial.print("Temperatur:     ");
        Serial.print(t);
        Serial.println(" C");
        Serial.println("Gaswert soll: < 100");
        Serial.print("Gaswert ist:  < ");    
        Serial.println(sensorValue);
        Serial.println("");
        delay(1000);                    
      }
    
      if (last != now.minute())
      {
        byte a = h;
        byte b = t;
        byte c = sensorValue;
        dataString += String(a);
        dataString += ",";
        dataString += String(b);
        dataString += ",";
        dataString += String(c);
        dataString += ",";
        dataString += String(now.day(), DEC);
        dataString += ".";
        dataString += String(now.month(), DEC);
        dataString += ".";
        dataString += String(now.year(), DEC);
        dataString += ",";
        dataString += String(now.hour(), DEC);
        dataString += ":";
        dataString += String(now.minute(), DEC);
        dataString += ";";
    
        File dataFile = SD.open("datalog.txt", FILE_WRITE);
    
        if (dataFile)
        {
          dataFile.println(dataString);
          dataFile.close();
          Serial.println(dataString);
          Serial.println("Gespeichert - SD: 'datalog.txt'");
        }
        else
        {
          Serial.println("Fehler - Lesen von SD: 'datalog.txt'");
        }
    
        last = now.minute();
    
        Serial.println("");
      }
    
      if (inData == "c")
      {
        call("x");
      }
    
      if (inData.length() > 4)
      {
        call(inData);
      }
    
      dataString="";
      inData = "";
      delay(100);
    
    }
    

    wenn ich jetzt an diesem code aber was ändere, sei es eine zeile in call() oder ich setzte, was ich gerne hätte folgenden code egal wohin in meinen sketch, sagt er fehler beim sd karte lesen...

    if ((sensorValue > 60) || (t > 50) || h > 80))
      {
      mySerial.print("AT+CMGF=1\r");
      delay(100);
      mySerial.println("AT+CMGS=\"xxxxxx\"");
      delay(100);
      mySerial.print("Temp: ");
      mySerial.print(t);
      mySerial.println(" C");
      mySerial.print("Feuchte: ");
      mySerial.print(h);
      mySerial.println(" %");
      mySerial.print("Gas: ");
      mySerial.print(sensorValue);
      mySerial.println(" C");
      delay(100);
      mySerial.println((char)26);
      }
    

    also auch wenn ich etwas unerhebliches ändere streikt er sofort, ich verstehe es einfach nicht, vollkommen gleichgültig ob ich den code nach oder vor der speicheranweisung setzte, sofort geht das speichern nicht mehr...

    kann mir da bitte einer helfen, vlt wirke ich ja irgendwie auf den speicherprozess ein, allerdings reicht es auch schon nur in call() etwas zu verändern, eine kleinigkeit und er streikt...

    hilfe



  • Aus einem anderen Forum wurde ich auf den internen Speicher hingewiesen...

    Durch Reduzierung des Codes auf

    #include <SoftwareSerial.h>
    SoftwareSerial mySerial(8, 9);
    
    String inData = "";
    char last;
    #include <DHT.h>
    #include <SD.h>
    #define DHTPIN 2 
    #define DHTTYPE DHT22
    DHT dht1 (DHTPIN, DHTTYPE);
    #include <SPI.h>
    #include <Wire.h>
    #include "RTClib.h"
    RTC_DS1307 RTC;
    const int chipSelect = 4;
    const int analogInPin = A0;
    int sensorValue = 0;
    int sent = 0;
    
    void setup()  
    {
    
      Wire.begin();
      RTC.begin();
      Serial.begin(9600);
      Serial.println("Starte...");
    
      mySerial.begin(9600);
      mySerial.println("AT");
      pinMode(10, OUTPUT);
    
      if (!SD.begin(chipSelect)) 
      {
        Serial.println("Card failed, or not present");
        return;
      }
    
      Serial.println("card initialized.");
      Serial.println("");
      delay(1000);
    }
    
    void loop()
    {
    
      while (Serial.available() > 0)
      {
        char recieved = Serial.read();
        inData += recieved; 
    
        if (recieved == '\n')
        {
          Serial.print("Arduino Received: ");
          Serial.print(inData);
        }
      }
    
      DateTime now = RTC.now();
    
      String dataString = "";
    
      sensorValue = analogRead(analogInPin);
    
      float h = dht1.readHumidity();  
    
      float t = dht1.readTemperature();
    
      if (isnan(t) || isnan(h))
      {
        Serial.println ("Fehler - Lesen von Luftfeuchte bzw. Temperatur");
        Serial.print("Gaswert ist:    ");    
        Serial.print(sensorValue);
        Serial.println(" ppm"); 
        Serial.println("");  
      }
    
      if (inData == "a")
      {
        Serial.print("Feuchte:        ");
        Serial.print(h);
        Serial.println(" %   ");
        Serial.print("Temperatur:     ");
        Serial.print(t);
        Serial.println(" C");
        Serial.print("Gaswert ist:    ");    
        Serial.print(sensorValue);
        Serial.println(".00 ppm"); 
        Serial.println("");  
        delay(1000);                     
      }
    
      if (last != now.minute())
      {
        byte a = h;
        byte b = t;
        byte c = sensorValue;
        dataString += String(a);
        dataString += ",";
        dataString += String(b);
        dataString += ",";
        dataString += String(c);
        dataString += ",";
        dataString += String(now.day(), DEC);
        dataString += ".";
        dataString += String(now.month(), DEC);
        dataString += ",";
        dataString += String(now.hour(), DEC);
        dataString += ":";
        dataString += String(now.minute(), DEC);
        dataString += ";";
    
        File dataFile = SD.open("datalog.txt", FILE_WRITE);
    
        if (dataFile)
        {
          dataFile.println(dataString);
          dataFile.close();
          Serial.println(dataString);
          Serial.println("Gespeichert - SD: 'datalog.txt'");
        }
        else
        {
          Serial.println("Fehler - Lesen von SD: 'datalog.txt'");
        }
    
        last = now.minute();
    
        Serial.println("");
      }
    
     if (sent == 0)
     {
     if ((sensorValue > 80) || (t > 60) || (h > 80) || (inData == "t"))
      {
      mySerial.print("AT+CMGF=1\r");
      delay(100);
      mySerial.println("AT+CMGS=\"xxxxx\"");
      delay(100);
      mySerial.println("ALARM!");
      mySerial.print("Temp:     ");
      mySerial.print(t);
      mySerial.println(" C");
      mySerial.print("Feuchte: ");
      mySerial.print(h);
      mySerial.println(" %");
      mySerial.print("Gas:        ");
      mySerial.print(sensorValue);
      mySerial.println(".00 ppm");
      delay(100);
      mySerial.println((char)26);
      delay(100);
      Serial.println("SMS an xxxxx versendet");
      Serial.println("");
      sent = 1;
      }
     }
    
      dataString="";
      inData = "";
      delay(100);
    }
    

    wurde das problem gelöst, danke trotzdem für jeden gehirnschmalz der geflossen ist 😉


Anmelden zum Antworten