Forum: Mikrocontroller und Digitale Elektronik Arduino und SIM900 Kommunikationsproblem


von Daniel S. (lirant)


Lesenswert?

Hallo Leute,
mein kleines Projekt ist eig. ganz einfach, wenn ich eine SMS bekomme 
soll der Arduino was machen.
Dazu benutze ich den Arduino UNO und ein SIM900
Soweit so gut, irgendwie hab ich gewisse Probleme mit der Kommunikation 
über den Softwareserial.


(SoftwareSerial GPRS(7, 8); // RX, TX)

Code:

  GPRS.write("AT");
  delay(500);
  while (GPRS.available())
    Serial.println(char(GPRS.read()));


Das ist der interessante Ausschnitt (und auch der einzige nicht nicht 
auskommentiert ist).
Hier bekomme ich als Antwort immer "AT" sonst nix, andere Anfragen wie 
z.B. "AT+CMGR=?" liefern auch nur "AT+CMGR=?" zurück.
Der SMS Speicher ist voll und lässt sich nicht über "AT+CMGD=1" usw. 
löschen, auch hier kommt nur der Befehl zurück.
Jetzt kommt das witzige, wenn ich das Modul ausschalte schreibt er mir 
brav "NORMAL POWER DOWN" in den Monitor.

Ich hab schon viel Probleme mit den Dingern gelesen aber sowas noch 
nicht ...
Es kann ja vernünftig antworten ... ach keine Ahnung
(Nach dem ausschalten des SIM-Moduls kommt nix mehr in den Monitor, also 
antwortet sich der Arduino auch nicht selbst)


Ich hoffe ihr könnt helfen :)

: Verschoben durch Moderator
von Sogar (Gast)


Lesenswert?

Falsches Unterforum, hier sollen nur fertige Projekte vorgestellt 
werden.

Normalerweise werden AT Kommandos mit <CR> abgeschlossen, und manche 
Module reagieren sogar nur auf AT+xxx<CR><LF>.

von Daniel S. (lirant)


Lesenswert?

Oha
Schande über mein Haupt :O

Also an denjenigen der hier befugt ist, möge er (von mir aus auch sie, 
mir egal) diesen Thread bitte verschieben.

Auf diese Art antwortet er überhaupt nicht mehr :-/

: Bearbeitet durch User
von Daniel S. (lirant)


Lesenswert?

So, fragt bitte nicht warum, ich weiß es selbst nicht, jetzt antwortet 
er etwas mehr...

Code:

  GPRS.println("AT");
  delay(500);
  while (GPRS.available())
    Serial.print(char(GPRS.read()));

  GPRS.println("AT+CMGR=1");
  delay(500);
  while (GPRS.available()){
    b = GPRS.read();
    buffer[pos++] = b;
  }
  Serial.println(buffer);
  pos=0;
  delay(8000);

Als Antwort bekomme ich allerdings "nur":

AT

OK
AT+CMGR=1

+CMGR: 1,"",22
0791947101670000040D91945111201549


Auch hier fühle ich mich überfordert wie ich das zu übersetzen hätte :-/
(Auch kein 7Bit Spaß)

von Sogar (Gast)


Lesenswert?

Daniel S. schrieb:

> Auf diese Art antwortet er überhaupt nicht mehr :-/

Auf welche Art, was hast du da gemacht?

Dein GPRS.write("AT") schickt nur die Zeichen 'A' und 'T' an das Modul, 
während bei GPRS.println("AT") automatisch noch <CR> und <LF> angehängt 
wird. Deshalb antwortet das Modul jetzt.

Bei der Interpretation der Antwort hilft dir vielleicht diese Seite:

https://www.developershome.com/sms/cmgrCommand.asp

von Daniel S. (lirant)


Lesenswert?

Offensichtlich hab ich das zuvor manuell falsch angehängt ...
Da bin ich froh um den Glückstreffer. Auch wenn du mir eh schon gesagt 
hättest wie es geht :D

Danke für die Webseite, ich hab sie jetzt mal überflogen aber ich werd 
immer noch nicht richtig schlau draus.

Ich schlaf erst mal ne Nacht drüber.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.