Forum: Mikrocontroller und Digitale Elektronik SIM800L Verbindung instabil


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von A. H. (dernetteeddie1978)


Angehängte Dateien:

Bewertung
-1 lesenswert
nicht lesenswert
Hi Leute,

möchte mit meinem Arduino Uno das SIM800L GSM Bord per AT-Befehle 
ansteuern.

Dazu hab ich die entsprechende Library von Vittorio in Github 
installiert.
Ich versuche SMS zu senden ("send SMS" aus den Beispielfiles) aber es 
gehen keine raus.
Auch Statusabfragen aus dem Beispiel "get Informations" kommen nicht 
richtig im seriellen Monitor an. Stattdessen erscheinen div. merkwürdige 
Zeichen. Im Netz steht überall das läge an einer falsch eingestellten 
Baudrate, die ist in den Beispielen aber mit 9600Baud voreingestellt und 
der Chip soll die lt. HW-Manual auch unterstützen. Auch andere Baudraten 
bessern nichts.

Verschiedene Sachen hab ich beachtet/ versucht:

- Die Betriebsspannung des GSM Boards ist 4V bis 2A Stromstärke per 
Labornetzteil, Masse ist mit dem Arduinoboard verbunden.

- Die Ansteuerung der UART Schnittstelle des SIM800L Boards erfolgt ja 
über GPIO Pins des Arduino Boards, so wie es in der Library 
implementiert ist.
Lt. HW Spec des GSM Boards passen die Spannungspegel zw. den beiden 
Boards nicht zusammen. Daher wird dort eine Beispielschaltung (siehe 
Seite 31) zur Anpassung vorgeschlagen. Die hab ich implementiert, 
wenngleich ich nicht sicher bin ob das überhaupt nötig ist weil die 
HW-Spec nur für den Chip ist, nicht aber das ganze GSM Board. Das Board 
wird ja f. Arduino verkauft und normalerweise sind die Sachen ja Plug n 
Play. Das ist zwar bei der Versorgungsspannung auch nicht der Fall, da 
wird es aber überall im Netz erwähnt. Bei den Pins f. die Schnittstelle 
schreibt niemand was davon.
Unterm Strich hats nichts geändert.

Ein anderer Code aus dem Netz funktioniert etwas besser in dem Sinn dass 
Statusabfragen nun ab und zu korrekt beantwortet, werden aber teilweise 
kommt auch Error zurück (siehe Screenshots). SMS senden geht immer noch 
nicht.
1
#include <SoftwareSerial.h>
2
3
SoftwareSerial mySerial(10, 11); // RX, TX
4
5
void setup()
6
{
7
  // Open serial communication
8
  Serial.begin(9600);
9
10
  // set the data rate for the SoftwareSerial port
11
  mySerial.begin(9600);
12
13
  delay(1000);
14
  Serial.println("Testing SIM800L module");
15
  Serial.println();
16
  Serial.print("Sizeof(mySerial) = "); Serial.println(sizeof(mySerial));
17
  Serial.println();
18
19
}
20
21
void loop() // run over and over
22
{
23
24
  if( mySerial.available() )
25
  {
26
    char c = mySerial.read();
27
    Serial.print(c);
28
  }
29
30
  if(Serial.available())
31
  {
32
    String Arsp = Serial.readString();
33
34
    Serial.println("Serial available");
35
    Serial.println(Arsp);
36
    mySerial.println(Arsp);
37
    Serial.println("Serial available end");
38
  }
39
40
}


Schicke ich beispielsweise ein "AT" so kommt beim ersten mal die 
korrekte Antwort beim zweiten Mal wieder so ein merkwürdiges Zeichen, 
siehe Screens im Anhang.
Ein "AT+CGMF=1" gibt einen Error zurück. Manchmal gehts aber dann auch 
nach mehreren Versuchen.

Teilweise stürzt die Kommunikation auch ganz ab und ich bekomme gar 
keine Rückmeldung mehr.

Merkwürdig ist außerdem dass die "Program Running" Rückmeldung der IDE 
auch fehlt und trotzdem funktioniert die Kommunikation teilweise.

Die IDE ist Atmel Studio mit vMicro Plugin.

Irgendwo im Netz bin ich mal über nen Post gestolpert nachdem das ein FW 
Fehler des SIM800L Chips sein soll.
Kann das wer bestätigen? Wenn ja gibts ne bessere Alternative?

Gruß
Eddie

von Rufus Τ. F. (rufus) (Moderator) Benutzerseite


Bewertung
1 lesenswert
nicht lesenswert
Zwar kann das Labornetzteil bis zu 2A liefern, aber wie ist es 
angeschlossen? Das Ding kann schnelle Lastspitzen produzieren, die z.B. 
bei einem halben Meter Kabel schon zu störenden Spannungseinbrüchen 
führen können.

Hast Du einen ausreichenden Kondensator unmittelbar am SIM800L 
untergebracht?

von H.p. S. (hps)


Bewertung
0 lesenswert
nicht lesenswert
Ich hatte ähnliche Probleme mit einem SIM800L. AT-Kommandos gingen, 
SMS-Senden ging nicht.
Habe mir daraufhin ein SIM800C(!) zugelegt ... funktionierte praktisch 
auf Anhieb.
Es gibt auch einen anderen Thread hier, der die Eignung des SIM800L für 
Deutschland (Europa?) in Frage stellt.

VG HPS

von A. H. (dernetteeddie1978)


Bewertung
0 lesenswert
nicht lesenswert
Rufus Τ. F. schrieb:
> Zwar kann das Labornetzteil bis zu 2A liefern, aber wie ist es
> angeschlossen? Das Ding kann schnelle Lastspitzen produzieren, die z.B.
> bei einem halben Meter Kabel schon zu störenden Spannungseinbrüchen
> führen können.
>
> Hast Du einen ausreichenden Kondensator unmittelbar am SIM800L
> untergebracht?

Hi,

danke. Den Kondensator hab ich nicht, aber das Netzteil zeigt auch den 
Stromfluss an. Der liegt bei max. 100mA. Das sind aber natürlich nur 
Durchschnittswerte.

Welche Größenordnung bräuchte ich da?

LG

von A. H. (dernetteeddie1978)


Bewertung
0 lesenswert
nicht lesenswert
H.p. S. schrieb:
> Es gibt auch einen anderen Thread hier, der die Eignung des SIM800L für
> Deutschland (Europa?) in Frage stellt.

Ja, ich hatte auch schon mal so etwas gesehen. Aber die AT Kommandos 
gehen ja auch nur teilweise.

Hast du was zum Level shiften dazwischen geschaltet? Welches Board hast 
du da genau? Wenn gar nix mehr geht hole ich mir halt das 800C für paar 
Euros auch noch.

LG

von H.p. S. (hps)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,
kein Level-Shifter dazwischen ... das Board über E-Bucht vom Chinesen 
(5,70 Euronen)...
Du siehst auch am Blinken, ob es sich überhaupt anmelden kann: ca. 1Hz, 
wenn nicht, ca. 3Hz, wenn es geklappt hat...
Gruss HPS

von H.p. S. (hps)


Bewertung
0 lesenswert
nicht lesenswert
muss natürlich 0,3Hz statt 3Hz heißen, also sehr langsames Blinken...
Gruss HPS

von Rufus Τ. F. (rufus) (Moderator) Benutzerseite


Bewertung
1 lesenswert
nicht lesenswert
A. H. schrieb:
> aber das Netzteil zeigt auch den Stromfluss an. Der liegt bei max.
> 100mA. Das sind aber natürlich nur Durchschnittswerte.

Allerdings. Denk einfach mal daran, daß das Ding eine Sendeleistung von 
2 Watt hat. Das muss irgendwo herkommen.

> Welche Größenordnung bräuchte ich da?

Sieh Dir mal im "Hardware Design Guide" 
(http://wiki.seeedstudio.com/images/4/46/SIM800L_Hardware_Design_V1.00.pdf)

den Abschnitt 4.1 "Power Supply" (ab Seite 21) an.

von A. H. (dernetteeddie1978)


Bewertung
0 lesenswert
nicht lesenswert
So, also den 100µF hab ich num mit dran, die anderenm beiden hab ich 
nicht da. Gibt aber keine Verbesserung.

Einbuchen ins Netz tut er sich schon. Dauert ne Weile aber dan fängt er 
an im 3 Sek. Takt zu blinken.

Kommandos gehen immer noch nicht einwandfrei.
@HPS: Welche Library hast du benutzt?

LG

: Bearbeitet durch User
von Rufus Τ. F. (rufus) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
A. H. schrieb:
> Gibt aber keine Verbesserung.

Und wie sieht die Verdrahtung aus? Ist das ein Aufbau auf einem 
Frickelboard?

von A. H. (dernetteeddie1978)


Bewertung
0 lesenswert
nicht lesenswert
Jepp, ist n Breadboard.

Auf dem SIM800L PCB sind auch schon teile Drauf. Eins istn 470µF, die 
LED mit 470R und zwei Teile ohne Bezeichnung, die sehen aber auch nach 
Kondensatoren aus.

LG

: Bearbeitet durch User
von A. H. (dernetteeddie1978)


Bewertung
0 lesenswert
nicht lesenswert
Hier überhaupt mal der Link zum Board:

Ebay-Artikel Nr. 172561022940

von Rufus Τ. F. (rufus) (Moderator) Benutzerseite


Bewertung
1 lesenswert
nicht lesenswert
Nun, das sind zwar die im "Designer Manual" erwähnten Kondensatoren, 
aber die Verdrahtung auf einem Frickelboard ist halt eben genau das: 
Frickelig.

Ersetze die durch möglichst kurze Leitungen, die direkt mit dem Netzteil 
verbunden sind, und wo möglichst wenige Steckkontakte im Spiel sind.

Die schnell pulsierende Stromaufnahme des Moduls ist ein 
Herausforderung.

von A. H. (dernetteeddie1978)


Bewertung
0 lesenswert
nicht lesenswert
Jepp, hab hier auch grad nen anderen Thred gefunden wo das genau das 
Problem war.

Habs mit dem Oskar mal nachgemessen und tatsächlich beim Einbuchen ins 
Netz sieht man gelegentliche Spannungseinbrüche um ca 0,5 bis 1 Volt.
Eigentlich sollte der ganze Arduino Kram doch Plug n Play sein. Daher 
hatte ich an sowas gar nicht gedacht.

@Hps: Wie hadt du es mit dem 800c gemacht? Ist der auch so empfindlich?

Lg

von H.p. S. (hps)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,
da meine Steuerung (Strom-)ausfallsicher sein soll, habe ich eh' einen 
6V Gel-Akku, 4,5Ah (neu ca. 15,-) als Speisung. Das SIM800C habe ich da 
direkt über 2 Dioden (eine normale (0,7V) und eine Schootky (0,3V)) 
angeschlossen, ergibt also 5V (mein SIM800C hat eine 5V-Speisung).
Da ging es mit dem 800C problemlos, das 800L konnte sich nicht einwählen 
(kann also nicht das Stromproblem sein) ...
Sicher geht es auch über eine andere Batterie-/Stromversorgung.

Beim Initiieren des 800C habe ich folgende AT-Befehle verwendet:
- Setze Baud-Rate auf 19200
- Setze den Textmode auf "GSM"
- setze den Character-Mode für SMS
- setze das CSCA (SMS Center), bei mir Telekom
- sende SMS ersten Teil (Empf. Nr.)
- warte, bis 0x20 (Blank) zurückkommt
- Sende SMS-Nachrichten-Text
- Sende 0x1A (Fertig-Zeichen)

Das hat funktioniert...

VG HPS

von Jim Beam (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Noch etwas Senf:

SIM800C, SIM800L, SIM800D, SIM900

Habe ich stabil + zuverlässig in div. Projekten am laufen.
SMS+Voice, bisher keine bekannten Ausfälle.
Popel-Billig-SIMCARD von NettoKOM, Prepaid, PIN-Input/PIN-Change/PUK
Guthabenabfrage per AT+CUSD=1,"*100#",geht alles.

> (kann also nicht das Stromproblem sein) ...
Doch das kann.
Vor wenigen Tagen erst ein Thread, bei dem es daran "GARANTIERT NICHT" 
liegen konnte, der TO praktisch unbelehrbar war, und wo es dann 
zu-Kreuze-kriech GENAU-DARAN lag...

Die Module versuchen erstmal pausenlos eine Verbindung zum Netz zu 
bekommen, es kommt also zu unkalkulierbaren Peaks in der Versorgung. 
Solange dies nicht zuverlässig geklärt ist, sind alle anderen 
Überlegungen sinnlos, da bei intern abgekackten Modulen auch keine 
sinnvolle RS232-Kommunikation gewährleistet ist.

Inkompatibilitäten lokaler Firmware zeigt sich sicher NICHT daran, dass 
es "manchmal geht" und manchmal nicht.

Solange das Thema der Versorgung sowie der Begriff LowESR nicht im Kern 
begriffen ist, machen weitere Hinweise keinen Sinn.
Das "105°-Aufdruck = LowESR" Märchen hilft da wenig, auch MUSS ein 
LowESR-Elko unmittelbar (=wenige Millimeter) an den VersorgungsPins des 
SIM-Moduls sitzen, ergänzt durch weitere C.

ALL das geht auch EXAKT und UNZWEIDEUTIG aus der Hardware-Spec. der 
Module hervor, was in China auch nicht jeder begriffen hat: Auf deren 
Fertig-Modulen habe ich teils Elkos angetroffen, die nicht-im-Traum 
funktionieren können, Austausch hat da Wunder bewirkt.

Seither layoute ich PCB mit SIM-Modulen selbst, einseitig popelig, würde 
bei einigen Pseudo-Experten hier Shitstorms auslösen...
NUR: Klappt (bisher) immer und zuverlässig. (Was aber für Shitstorms ja 
keine Rolle spielt)

Auch das (kleinere) SIM900 ist händisch einlötbar, PWR, RX, TX sind (bei 
mir) die einzigen Leitungen zum AVR, NETIO, PWR, RING habe ich immer 
auch als LED auf der PCB, direkt an den SIM-Outputs über 5K6, den 
PWR/RESET-Kram per Transistor kann man sich m.E. sparen, das kann ein 
AVR auch ohne Transistor.

Geht an Labor-NT und auch mit einer 18650er Zelle über 
China-Powerpack-USB-Platine MIT LowESR-Elko+Ker+Tantal direkt an den Vcc 
Pins des Moduls.
OHNE LowESR-Elko geht es NIE zuverlässig.

Aber das habe ich alles nur geträumt, weil es ja nicht sein kann:
> (kann also nicht das Stromproblem sein) ...

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
Wir hatten das gleiche Thema neulich auch bei einem WLAN Modul. Auch da 
musste der betroffene zur Kenntnis nehmen, dass Steckbretter nicht zur 
Stromversorgung taugen.

von A. H. (dernetteeddie1978)


Bewertung
0 lesenswert
nicht lesenswert
Naja, dann werd ich heute Abend mal bei Onkel Conrad vorbeischauen und 
die Kondensatoren besorgen.
Werd das Modul mal auf ne Lochrasterplatine löten und die C`s dann 
direkt neben das Modul. Dann werd ich Kabel anlöten und mit verlöteten 
Bananensteckern ins Netzteil stecken.
Mal schauen wieweit das weiter hilft.

Was meint ihr zu den Transistoren für das Levelshifting? Hab grad 
normale BC547C drin. Das Datenblatt gibt ja Typen an, die sind aber SMD 
und bei meiner Filiale nicht verfügbar.

Aber die BC547 haben ja je nach Stromverstärkung ne Grenzfrequenz zw. 
375-750kHz. Das sollte f. ne serielle Übertragung doch reichen, oder?

LG

: Bearbeitet durch User
von Jim Beam (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Also, ich pers. mache bei meinen SIM800/900 Modulen überhaupt kein 
explizites Level-Shifting, nur ein Clipping.

SIM läuft an 4V
AVR läuft an 5V

AVR-RX geht direkt an SIM-TX
AVR-TX geht über Widerstand an SIM-RX und von dort per 3,3VZenerdiode an 
GND

Läuft schon ewig tadelllos @19200Baud, mehr habe ich nie getestet, ich 
wüsste auch keinen Grund warum ich die paar CMD/Daten-Bytes schneller 
senden sollte.

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
Mindestens bis 115200 Baud kann man einfach Spannungsteiler verwenden 
mit Widerständen im Bereich zwischen 1 und 3 kΩ.

von A. H. (dernetteeddie1978)


Bewertung
0 lesenswert
nicht lesenswert
Hi Leute,

also vielen Dank an alle. Hab die Spannungsversorgung nun so aufgebaut 
wie im Manual beschrieben und - simsalabim - die SMS ist rausgegangen.

Yieppiieee :)

LG

von A. H. (dernetteeddie1978)


Bewertung
0 lesenswert
nicht lesenswert
Hm, ok ganz gehts doch noch nicht. Die SMS gehen raus, aber die 
Kommunikation scheint nicht sauber zu sein. Ich kann über den seriellen 
Monitor noch nicht kommunizieren.

Lg

von A. H. (dernetteeddie1978)


Bewertung
0 lesenswert
nicht lesenswert
Ok, hier nochmal die Rückmeldung. Irgendwie gehts nun doch, ich glaub 
ich hab einfach nicht lange genug gewartet nach Eingabe der Befehle und 
zu schnell den nächsten gegeben. Ist grad etwas diffus.

Was auf jeden Fall nicht geht ist das SMS-Read Beispiel aus der Library.

Über den oben angehängten Code jedoch kann ich die SMS per seriellem 
Monitor auslesen.

Im Netz hab ich mal was gelesen dass die Nutzung von Strings nicht 
richtig geht. Daher ließt der obige Code das in eine char Variable um.

Damit gehts deutlich besser, die erste Version des Codes war nämlich 
auch mit Strings gemacht und hat gar nicht funktioniert.

Naja ist etwas schwammig. Bin da auch nicht tief genug drin ums wirklich 
zu verstehen.

LG

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.