Arduino Forum

International => Deutsch => Topic started by: SkobyMobil on Oct 12, 2019, 12:16 am

Title: SIM900 und AT
Post by: SkobyMobil on Oct 12, 2019, 12:16 am
Hallo,
ich habe hier ein SIM900-Board (+, GND, Rx, Tx)

Wenn ich diesen Code...
Code: [Select]
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 (https://www.komputer.de/zen/index.php?main_page=product_info&cPath=37&products_id=217&zenid=jag6cusc4bvo7pfon6ir72bkv7)

mit Datenblätter (https://www.elecfreaks.com/estore/gprs-gsm-module-efcom-pro-efcompro.html)

WiKi dazu (https://www.elecfreaks.com/wiki/index.php?title=EFCom_Pro_GPRS/GSM_Module)
Title: Re: SIM900 und AT
Post by: Scherheinz on Oct 12, 2019, 01:34 am
Hast du den folgenden Satz gelesen?

Quote
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
Title: Re: SIM900 und AT
Post by: SkobyMobil on Oct 12, 2019, 02:31 pm
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
Title: Re: SIM900 und AT
Post by: HotSystems on Oct 12, 2019, 02:45 pm
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.
Title: Re: SIM900 und AT
Post by: SkobyMobil on Oct 12, 2019, 09:03 pm
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 (https://www.espruino.com/datasheets/SIM900_AT.pdf) PDF kommt hoch
Title: Re: SIM900 und AT
Post by: HotSystems on Oct 12, 2019, 11:22 pm
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 ?
Title: Re: SIM900 und AT
Post by: SkobyMobil on Oct 13, 2019, 12:38 am
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
Title: Re: SIM900 und AT
Post by: HotSystems on Oct 13, 2019, 12:10 pm
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.
Title: Re: SIM900 und AT
Post by: SkobyMobil on Oct 14, 2019, 02:57 pm
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
Title: Re: SIM900 und AT
Post by: SkobyMobil on Oct 14, 2019, 05:25 pm
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,
Code: [Select]
#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

(https://forum.arduino.cc/index.php?action=dlattach;topic=640386.0;attach=328299)
Title: Re: SIM900 und AT
Post by: HotSystems on Oct 14, 2019, 06:13 pm
Ehrlich, du tust mir leid.....du liest scheinbar nicht, was man dir schreibt.
Title: Re: SIM900 und AT
Post by: SkobyMobil on Oct 14, 2019, 08:10 pm
Hallo,
"du liest scheinbar nicht, was man dir schreibt"
Was hast Du denn zu TerminalProgramm und USB/SeriellAdapter beigetragen?
Gruß und Dank
Andreas
Title: Re: SIM900 und AT
Post by: HotSystems on Oct 14, 2019, 10:05 pm
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.
Title: Re: SIM900 und AT
Post by: SkobyMobil on Oct 17, 2019, 03:40 pm
Grüße Dich,
versuche mir doch einmal zu erklären, was hier, warum nicht rund läuft.

Code: [Select]

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
Title: Re: SIM900 und AT
Post by: HotSystems on Oct 17, 2019, 06:01 pm
Was genau soll der Ausgang GSMR machen ?
Den verwendest du aktuell nicht.
Evtl. ist das dein Fehler.
Title: Re: SIM900 und AT
Post by: SkobyMobil on Oct 17, 2019, 08:14 pm
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
Title: Re: SIM900 und AT
Post by: HotSystems on Oct 17, 2019, 10:06 pm
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.
Title: Re: SIM900 und AT
Post by: SkobyMobil on Oct 18, 2019, 12:46 am
Hallo,
das Relais so zu bedienen ist eine alte Angewohnheit...

Paß auf, dieser C&P Sketch

Code: [Select]
//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
Title: Re: SIM900 und AT
Post by: uxomm on Oct 18, 2019, 01:34 am
Jedenfalls funktioniert SoftwareSerial am Mega nicht auf allen Pins (das ist sozusagen eine "Mega-Stolperfalle") :)
Dass also mit 7/8 nichts empfangen wird ist nicht verwunderlich.

Quote
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 (https://www.arduino.cc/en/Reference/SoftwareSerial)

(Warum es mit Hardware Serial nicht funktioniert ist eine andere Frage.)
Title: Re: SIM900 und AT
Post by: SkobyMobil on Oct 18, 2019, 11:20 pm
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
Title: Re: SIM900 und AT
Post by: SkobyMobil on Oct 22, 2019, 02:15 am
Hallo,
neuer Mega, neues Modem. Ja, alles wird gut- denkste Puppe!
Der gleiche Dreck!
Diesen Testaufbau in die Ecke gefeuert und das alte Modem wieder aus der Schlachterkiste
geholt. Also mal mit Sinn und Verstand an die Sache.
Ich habe mir dann wirklich alle Datenblätter und AT-Kommandos durchgelesen. Einige von
diesen AT-Befehlen setzen am Modem bestimmte Parameter wieder auf Werkzustand zurück.
Das hat mit dem TerminalProgramm sicher funktioniert.

Da weder alter Mega noch neuer Mega sich gerührt haben bin ich davon ausgegangen das der
alte Mega und das alte Modem technisch i.O. sind.
Das führt nach sich, das sich der Fehler vor der Tastatur aufhält. Dort befindet er sich
dann in der Birne- Schublade, serielle Arduino Kommunikation.

Ich habe mir dann einmal den Sketch #6,  (https://forum.arduino.cc/index.php?topic=634159.msg4293510#msg4293510)von Serenifly kopiert.

Das ganze neu verdrahtet und den Sketch gestartet. Und? Was soll ich sagen, das hat
auf Anhieb funktioniert. Das Modem hat nach Datenblatt alle Start-Informationen aus-
geworfen und der Arduino hat sie im Monitor gelistet.
Wenn ich ein AT sende, dann bekomme ich tatsächlich ein OK zurück!

Wenn Serenifly seine Routine das kann, dann kann meine das auch!
So nach ne´r guten Stunde bin ich dann drauf gekommen- zu kleiner Buffer, keine Zeiten
berücksichtig, und FALSCHER TERMINATOR! Man!

Wie auch immer, jetzt läuft es so, wie ich es mir vorgestellt habe.
Hat mich aber fast an den Rand des Wahnsinn getrieben, SerielleKommunikation eben.
Gruß und Dank
Andreas
Title: Re: SIM900 und AT
Post by: Scherheinz on Oct 22, 2019, 03:26 am
Quote
zu kleiner Buffer, keine Zeiten
berücksichtig, und FALSCHER TERMINATOR!
Klingt erstmal einleuchtend aber wieso hat es dann auf dem Uno funktioniert?

Gruß
Title: Re: SIM900 und AT
Post by: SkobyMobil on Oct 22, 2019, 09:13 am
Hallo,
den UNO habe ich mit SoftwareSeriell genutzt, das hat auf dem Mega nicht funktioniert.
Die C&P BeispielSketche funktionierten ja auf beiden so eben.
Nur mein Sketch mit dem senden von AT, und das empfangen von OK lief auf keinem
Arduino.
Das ist ja das Problem gewesen. Ich konnte auf beiden ein AT senden, aber ein OK habe
ich im seriellen Monitor nie zu sehen bekommen.
Gruß und Spaß
Andreas
Title: Re: SIM900 und AT
Post by: Scherheinz on Oct 23, 2019, 07:02 pm
Ah ok, dann hatte ich das falsch aufgefasst.

Gruß