SIM900 und AT

Hallo,
ich habe hier ein SIM900-Board (+, GND, Rx, Tx)

Wenn ich diesen Code...

void setup()
{
  Serial2.begin(19200);
  Serial2.print("\r");
  delay(1000);
  Serial2.print("AT+CMGF=1\r");    //SMS in TextMode
  delay(1000);
  Serial2.print("AT+CSCA=\"+494711\"\r");  //SMS-Center
  delay(1000);
  Serial2.print("AT+CMGS=\"01754712\"\r");    // Empfänger
  delay(1000);
  Serial2.println("Zeile A\r");   // Text
  Serial2.print("Zeile B\r");
  delay(1000);
  Serial2.print(26, byte()); // Ctrl+Z
}

void loop()
{

}

...nutze, dann wird die SMS ohne Probleme versendet.

Wenn ich dem Board aber ein "AT" sende, dann reagiert es überhaupt nicht.
Egal, ob das "AT" vom Arduino kommt, oder von einem TerminalProgramm.
Was für einen Spruch muss ich denn aufsagen, damit sich das rührt?
Oder übersehe ich hier etwas?
Gruß und Dank
Andreas

Board

mit Datenblätter

WiKi dazu

Hast du den folgenden Satz gelesen?

If you want to see messages from the shield in the serial monitor such as, you need disable auto-bauding mode, using "AT+IPR=19200" . (Factory setting is AT+IPR=0 auto-bauding)

Außerdem schickst du im Sketch immer noch ein "Serial2.print("\r");" hinterher.

Gruß Scherheinz

Hallo,
mit dem Sketch wollte ich nur demonstrieren, das das Ding AT-Kommandos verarbeitet.
Tippe ich aber ein "AT" übers TerminalProgramm ein, dann rührt sich nichts.
Auch nicht, wenn das "AT" vom Arduino kommt.
Gruß und Dank
Andreas

Was erwartest du denn nach einem AT ?
Ich sehe keine Abfrage der Seriellen nachdem du etwas rausschickst.
Du musst schon dein GSM900 auch abfragen und das an den seriellen Monitor schicken.

Hallo,
ich kenne es so, wenn man einem Modem ein AT sendet, dann bekommt man in der Regel ein OK zurück.
Das hat hier weder mit dem Arduino, noch mit einem T-Programm funktioniert.

Nachdem ich mir aber das Datenblatt zur Brust geführt habe ist der Fehler bekannt geworden.
Beim anlegen der Versorgungsspannung reagiert das Ding anders als nicht im Netz beschrieben.
Jetzt läuft es ohne Probleme- ohne Lib! So wie es aussieht, ist es ziemlich leistungsfähig.
Gruß und Dank
Andreas

Datenblatt PDF kommt hoch

SkobyMobil:
Hallo,
ich kenne es so, wenn man einem Modem ein AT sendet, dann bekommt man in der Regel ein OK zurück.
Das hat hier weder mit dem Arduino, noch mit einem T-Programm funktioniert.

Na klar, wenn man das Modem auch am seriellen Monitor abfragt, sollte das so sein.
Nur in deinem Sketch sehe ich nichts davon, wie soll das dann funktionieren ?

Hallo,
der Sketch ist ein C&P aus dem Netz. Nur zum probieren.
Der läuft einfach durch und sendet den Text als SMS.
Da gibt es ja AT das funktioniert.
Gruß und Spaß
Andreas

Offensichtlich verstehst du es immer noch nicht.

Wenn du AT an das Sim900 sendest, musst du auch das Sim abfragen was dein Sim darauf zu antworten hat.
Erst danach kann der serielle Monitor dir etwas anzeigen.

In deinem Demo-Sketch fehlt diese Abfrage.
Wie du es in deinem nicht funktionieren Sketch gemacht hast, kann ich nicht erkennen, da dieser geheim ist.

Das Sim wird schon darauf reagieren, nur siehst du es nicht, wenn du keine Abfrage darauf machst.
Einfach nur AT senden reicht eben nicht aus.

Hallo,
der Sketch macht mir nicht so die Sorgen.
Wenn Das Ding über USB<->SeriellAdapter am Terminal hängt, dann hat man das gleiche Problem.
Es wird ein einfaches AT gesendet, aber ein OK kommt nicht zurück.

Wenn man das Ding mit Spannung versorgt, dann sollte es antworten. Macht es aber nicht.
Entweder habe ich hier ein Treiber- oder ein USB<->SeriellAdapter Problem. Es ist auch möglich,
das mein neues BetriebsSystem (Win10 Enterprise 2016 LTSB) den aussperrt. Da bin ich aber noch
nicht hinter.
Mich wundert es nur, das dieser einfache SMS-SendSketch ohne Probleme zu jeder Zeit läuft.
Also scheint es so zu sein, das das Modem i. O. ist.
Ich werde mir mal einen neuen USB<->TTL-SeriellAdapter besorgen. Dem alten mit seinem Treibern
traue ich nicht so richtig mehr über den Weg.
Gruß und Spaß
Andreas

Hallo,
da kann ich ja die kalte Wut bekommen.
Mein USB<->SeriellAdapter funktioniert mit jeder seriellen Krücke-
nur nicht mit dem Modem. Ist gut möglich, das der mit seinen Treibern
nicht unter meinem OS arbeitet. Weiß der Teufel.

Nun habe ich einen Uno als USB<->SeriellAdapter vergewaltigt,

#include <SoftwareSerial.h>

String Arduino, GSMO;
SoftwareSerial SIM(10, 11); // RX, TX

void setup()
{
  Serial.begin(19200);
  Serial.println("Test SIM900");
  SIM.begin(19200);
}

void loop()
{
  if (SIM.available())
  {
    GSMO = SIM.readString();
    Serial.println(GSMO);
  }

  if (Serial.available())
  {
    Arduino = Serial.readString();
    SIM.println(Arduino);
  }
}

und...
läuft alles wie die wilde Wutz. Keine Probleme. Das Modem wird bei
Spannung anlegen, so wie im Betrieb sofort erkannt und funktioniert
ohne Probleme. Der Drops ist gelutscht.
Gruß und Dank
Andreas

Ehrlich, du tust mir leid.....du liest scheinbar nicht, was man dir schreibt.

Hallo,
"du liest scheinbar nicht, was man dir schreibt"
Was hast Du denn zu TerminalProgramm und USB/SeriellAdapter beigetragen?
Gruß und Dank
Andreas

Ich habe dir geschrieben, was dein Sketch können muss.
Welche Hardware du verwendest, wollte ich dir nicht vorschreiben, das möchte ich dir überlassen.

Grüße Dich,
versuche mir doch einmal zu erklären, was hier, warum nicht rund läuft.

const int GSMR = 3; // Relais GSM-SIM900
const int GSMP = 4; // Power für Start GSM-SIM900
String Arduino, GSMO;


void setup()
{
  Serial.begin(19200);
 Serial2.begin(19200);

   pinMode(GSMR, OUTPUT); // Relais GSM-SIM900
  digitalWrite(GSMR, HIGH);
  pinMode(GSMP, OUTPUT); // Power für Start GSM-SIM900
  delay(5000);
  digitalWrite(GSMP, HIGH);
  delay(2000);
 digitalWrite(GSMP, LOW);
}

void loop()
{
  if (Serial2.available())
  {
    GSMO = Serial2.readString();
    Serial.println(GSMO);
  }

  if (Serial.available())
  {
    Arduino = Serial.readString();
    Serial2.println(Arduino);
  }
}

Wenn ich hier im S-Monitor AT sende, dann sollte ein OK zurückkommen.
Kommt aber nicht.

Was ist hier denn so falsch?
Gruß und Dank
Andreas

Was genau soll der Ausgang GSMR machen ?
Den verwendest du aktuell nicht.
Evtl. ist das dein Fehler.

Hallo,
const int GSMR = 3; // Relais GSM-SIM900, VersorgungsSpannung Modem
const int GSMP = 4; // Power für Start GSM-SIM900, Taste Power vom Modem, betätigung SoftwareSeite.

Lege es einmal auf Eis. Ich muß hier einmal etwas probieren. Am Uno funktioniert das ganze Gerödel.

Gruß und Dank
Andreas

Ok, ich lege es auf Eis.
Nur hast du den Pin auf High gesetzt, aber die üblichen Relais arbeiten mit LOW-aktiv.
Daher habe ich vermutet, du verwendest den nicht weiter.

Hallo,
das Relais so zu bedienen ist eine alte Angewohnheit...

Paß auf, dieser C&P Sketch

//Once you open a serial monitor, make sure that ‘Both NL & CR’ option is selected!

#include <SoftwareSerial.h>

//Create software serial object to communicate with SIM900
SoftwareSerial mySerial(7, 8); //SIM900 Tx & Rx is connected to Arduino #7 & #8

void setup()
{
  //Begin serial communication with Arduino and Arduino IDE (Serial Monitor)
  Serial.begin(19200);
  
  //Begin serial communication with Arduino and SIM900
  mySerial.begin(19200);

  Serial.println("Initializing...");
  delay(1000);

  mySerial.println("AT"); //Handshaking with SIM900
  updateSerial();
  mySerial.println("AT+CSQ"); //Signal quality test, value range is 0-31 , 31 is the best
  updateSerial();
  mySerial.println("AT+CCID"); //Read SIM information to confirm whether the SIM is plugged
  updateSerial();
  mySerial.println("AT+CREG?"); //Check whether it has registered in the network
  updateSerial();
}

void loop()
{
  updateSerial();
}

void updateSerial()
{
  delay(500);
  while (Serial.available()) 
  {
    mySerial.write(Serial.read());//Forward what Serial received to Software Serial Port
  }
  while(mySerial.available()) 
  {
    Serial.write(mySerial.read());//Forward what Software Serial received to Serial Port
  }
}

läuft an einem UNO einwandfrei.
Lasse ich den genau so auf meinem Mege laufen, rührt sich nichts. Keine Ausgabe.
Ändere ich die SoftSerial in echte RTx2 kommt auch nichts hoch.
Der Sketch liefert automatisch nur einige Info´s.
Ich habe ja langsam das Gefühl, das mein Mega einen wech hat.
Ich probiere das ganze noch einmal mit einer SIM900 Lib, mal sehen was da raus kommt.
Gruß und Dank
Andreas

Jedenfalls funktioniert SoftwareSerial am Mega nicht auf allen Pins (das ist sozusagen eine "Mega-Stolperfalle") :slight_smile:
Dass also mit 7/8 nichts empfangen wird ist nicht verwunderlich.

SoftwareSerial
Limitations

The library has the following known limitations:

Not all pins on the Mega and Mega 2560 support change interrupts, so only the following can be used for RX: 10, 11, 12, 13, 14, 15, 50, 51, 52, 53, A8 (62), A9 (63), A10 (64), A11 (65), A12 (66), A13 (67), A14 (68), A15 (69).

Quelle

(Warum es mit Hardware Serial nicht funktioniert ist eine andere Frage.)

Hallo,
die Sache mit den Pin´s ist mir schon klar. Mit SoftSerial funktioniert das nur
sporadisch.
Ich habe hier ja einen SMS-Sketch eingestellt, der läuft so ohne Probleme mit
Hard/Soft-Serial durch. Keine Probleme. Auch das Empfangen von SMS läuft völlig
reibungslos.

Ich habe das SIM900 am TerminalProgramm mit zwei Adaptern und verschiedenen Treiber
probiert. Da passiert so richtig- reproduzierbares- NICHTS!

Aus dem Ding ist keine Rückmeldung zu bekommen.
Es ist auch in den Datenblättern unterschiedlich beschrieben. Nach anlegen der
Versorgungsspannung soll es mit 19200, oder auch 115200 oder Auto-Baud laufen. Auch
soll es eine bestimmte Sequenz ausgeben. Da rührt sich aber nichts.

Wie auch immer, ich habe es in die SchlachterKiste geworfen. 3 Tage Ärger und 25.-
Lehrgeld.
Morgen kommt ein neues Modem SIM808 und ein neuer Mega2560. Bin ja mal gespannt, ob
ich den Mega "umsonst" gekauft habe.
Also, vielen Dank euch beiden.
Gruß und Spaß
Andreas