Forum: Mikrocontroller und Digitale Elektronik SIM900A MINI V4.0 << WILL NICHT SO :(


von Timo (Gast)


Lesenswert?

Guten Abend,
ich habe mir o.g. Modul gekauft. Nach einigen rumlesen, habe ich 
festgestellt dass die Version "A" wohl für den Asiatischen Markt ist. 
Nun das sollte kein Problem sein, im Netz findet man div. Anleitungen 
die Firmware zu flashen.

...und nun fängt der Stress meiner letzten Nächte an.

Ich kann das Modul über einen Arduino UNO via Softserial und AT Befehlen 
ansprechen z.B. Firmwarestand auslesen.

Um das Modul nun zu flashen muss ich es kurz direkt an den PC via 
TTL/USB Converter anschließen. Das ganze funktioniert aber nicht und ich 
weiss nicht mehr weiter. Das Modul reagiert einfach nicht auf AT Befehle 
wenn diese direkt vom PC kommen.

Ich habe folgende ausprobiert:

- Div. Serial-Tools probiert.
- TTL Wandler über UNO (GND/Reset) und ein anderes Modul probiert.
- div. TTL Pegel probiert 5v/3v
- Das SIM900 mit einer anderen Stromquelle betrieben wegen der 
Stromaufnahme.
- Kabel alle getauscht.

Ich bin echt am verweifeln. Warum reagiert das Ding auf mein Arduino 
Code/Programm und nicht auf die AT-Befehle, die ich vom PC schicke.

Danke,
Timo

von guest (Gast)


Lesenswert?

Timo schrieb:
> Ich bin echt am verweifeln. Warum reagiert das Ding auf mein Arduino
> Code/Programm und nicht auf die AT-Befehle, die ich vom PC schicke.

Falsche Baudrate?
Verkehrte Zeilenenden?
Handshaking/flow control?

von Jim Beam (Gast)


Lesenswert?

Weil es den Arduino-Legostein-Bastlern hier ständig passiert:
Masse vom USB/TTL-Wandler auch mit SIM+ARDUINO verbunden?

Mit verschiedenen, auch geringen Baudrates probiert?
Oder wie es bei den Legostein-Bauern ja unerklärlicherweise üblich ist,
als ERSTES gleich mit ABSURD-HOHEN Baudrates gearbeitet.

Für das AUTO-BAUDRATE soll(ten) als erstes die im Datenblatt definierten 
Kontrollzeichen gesendet werden, das macht bisher sicher deine "LIB" und 
Du merkst das garnicht.

Wenn Du aber manuell per PC arbeitest ist dies DEINE Aufgabe.

Dir ist AUCH klar, dass das SIM900 zum Firmware-Flashen einen 
ZUSÄTZLICHEN TX/RX-Port hat?

Ansonsten wie schon geschrieben Handshake/Baudrate/Zeilenende prüfen:
"CR/LF" ist etwas anderes als nur "CR"

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Ich kenne nur das SIM800L, was ich auf meiner AlarmSau verwendet habe, 
aber vielleicht ist das beim SIM900 (sollte der Vorläufer sein) ähnlich.

Probier mal 9600 8N1 und nur "AT" senden, bis das Modul mit "OK" 
antwortet. Auch dem Modul nach dem Start/Reset so 10 Sekunden Zeit 
lassen, damit die Firmware läuft bevor Du mit dem Ding kommunizieren 
willst. Die 9600bps sind vollkommen ausreichend, hohe Datenraten machen 
nur Sinn, wenn Du mit dem Ding ins Internet willst und von dort wirklich 
größere Dateien holst.

Außerdem ist das SIM800L nicht 5V-tolerant. In manchen Datenblättern und 
vor allem Tutorials im Internet finden sich Angaben, wonach das Modul 
direkt an die 5V des Arduino/ATMega drangeklatscht wird und meistens 
funktioniert das auch, es besteht aber ein Restrisiko, das Modul damit 
zu schrotten. Auf meiner AlarmSau (ATMega 1284P) habe ich deswegen die 
im Datenblatt empfohlenen Pegelwandler nachgebaut.

von Timo (Gast)


Lesenswert?

Moin,
erst einmal vielen liebe Dank für die ersten Antworten.

Zu den Fragen

- Masse liegt vom Stromanschluss auf dem SIM900 und
von dem Uno Board.

- Der Softwareserial ist auf 9600 geschaltet und so habe
ich den TTL Adapter bzw. Treiber auch konfiguriert. Ansonsten
auf Standard gelassen.

- Auf diesen AT-Befehl reagiert das BOARD aber nur über
meinen Programmcode im Arduino:

mySerial.println("AT+GMR");

Wie ist das mit dem 800er Chip, ist das wirklich der Nachfolger? Ich
hatte extra den 900er gekauft. Der 800L hat auch GPS auf dem Board, 
oder?

Ich bin echt schon am verzweifeln...

Das SIM900 hat ja drei Serialanschlüsse, TTL 3, 5 und ich vermute einen
12V Pegel? Kann ich das Board nicht über alle flashen? Aber wie gesagt
bislang komme ich nicht einmal dahin, dass es auf einen AT Befehl
reagiert.

Grüße,
Timo

von Jim Beam (Gast)


Lesenswert?

Timo schrieb:
> - Der Softwareserial ist auf 9600 geschaltet und so habe
> ich den TTL Adapter bzw. Treiber auch konfiguriert. Ansonsten
> auf Standard gelassen.

Und IST der Standard auch "8N1"?

> mySerial.println("AT+GMR");

Sendest Du denn "zu Fuss per PC" dann auch das Carriage-Return?

> ich vermute einen 12V Pegel?

NEIN! Ganz normale 3,3V-Pegel!
Ich habe etliche SIM900 verbaut, die Entwicklung lief unter
HyperTerminal am PC, also genau wie Du es vorhast.
Klappte einwandfrei, vom ersten Moment an.

von Timo (Gast)


Lesenswert?

Hi,
ich habe es gerade noch einmal probiert.

Ich habe vier verschiedene Terminal Programme probiert. Vom Arduino, 
Putty etc. Die Entwicklungsumgebung natürlich geschlossen!

Angeschlossen ist das ganze wie über meinen Programmcode über den VT5
Anschluss. Wobei ich schon alle drei Anschlüsse probiert habe.

9600/8/P:keine/1/f:keine

Ich habe schon mit \r\n den AT Befehl abgeschlossen in sämtlichen
Kombinationen. Im Arduino Serial Monitor kann ich ja sogar entsprechende
Einstellung vornehmen -> ohne Erfolg.

Wahrscheinlich ist es nur eine Kleinigkeit aber ich finde Sie
einfach nicht :-((

Grüße,
Timo

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Nicht alle SIM800 haben ein GPS onboard, die billigen kleinen Boards 
haben keines.

Warum willst Du das Board eigentlich flashen? Geht das bei dem Ding 
überhaupt mit dem USART? Irgendwo beim SIM800L Datenblatt habe ich was 
gelesen, wonach das nur nach irgendwelchen speziellen Prozeduren geht 
und nicht einfach so über den USART. Kann beim SIM900 aber anders sein, 
weiß ich nicht.

Das SIM800L unterstützt Autobauding, das stellt sich durch den 
"AT"-String auf die Baudrate des Senders sein. AT+GMR ist ja schon ein 
richtiges Kommando, das funktioniert beim SIM800L nicht (oder nicht 
zuverlässig) solange das Autobauding nicht abgeschlossen ist.

Edit:
Wenn Du

mySerial.println("AT");
delay_ms(1000); oder wie immer die delay-Funktion genau heißt

als Schleife ausführst, antwortet das SIM900 dann irgendwann mit "OK"?

: Bearbeitet durch User
von Timo (Gast)


Lesenswert?

Ich habe nicht das 800er sondern das 900er siehe:

https://www.amazon.de/gp/product/B07912732P/ref=oh_aui_detailpage_o02_s01?ie=UTF8&psc=1

Mich hat nur interessiert welches der neuere Chip ist?

Grüße,
Timo

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Timo schrieb:
> Ich habe schon mit \r\n den AT Befehl abgeschlossen

Hast Du das als vier einzelne Zeichen so von Hand in Dein 
Terminalprogramm (welches?) eingegeben?

Dann kann das so nicht funktionieren.

"\r" ist, genauso wie "\n", die in C-artigen Programmiersprachen übliche 
Darstellung von Steuerzeichen, d.h. als Text nicht sichtbaren Zeichen. 
Das eine heißt "CR" (carriage return, von "Wagenrücklauf") und das 
andere "LF" (line feed, von "Zeilenvorschub").
Der Zeichencode ist 0x0d (für "\r") und 0x0a (für "\n").


In einem richtigen Terminalprogramm wie z.B. Teraterm kann man das mit 
der Tastenkombination Ctrl-M (für "\r") und Ctrl-J (für "\n") eingeben, 
man kann aber auch einfach die Returntaste verwenden, und im 
Terminalprogramm einstellen, welche Steuerzeichenkombination es dann zu 
senden hat.

von Jim Beam (Gast)


Lesenswert?

Probier doch mal das was BEN B. schrieb.
Schleife: NUR "AT"+CR und reichlich warten.

Schliess doch den PC über usb/ttl-Wandler mal an den Arduino an,
dann weisst Du wenigstens, ob PC-seitig alles klappt!
Man muss den Fehler Schritt-für-Schritt eingrenzen!

Was mir mal passierte wg. Brett-vor-dem-Kopp:
RX / TX vertauscht...
RX muss an TX und TX an RX!

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?


von Timo (Gast)


Lesenswert?

Moin,

ich glaube es vermitscht sich hier im Laufe der Antworten etwas.

- Ich bentuze eine 900A
- Über den Arduino kann ich das Modul normal ansprechen.
- Über einen TTL Wandler und Terminal reagiert es nicht.
  Das Modul muss ein Firmware Flash bekommen weil sonst meine DE
  SIM nicht funktioniert (hier gibt es auch einen Artikel)

Die RX/TX Tausche ich standmäßig jetzt einmal ;-)

Vielen Lieben Danke für die Tipps.

Timo

von Jim Beam (Gast)


Lesenswert?

Was ich gerade in meinen Notizen zur damaligen Entwicklung fand und 
erinnerte:

Unsere SIM900 waren bei der 3,3 Grenze recht zickig.
Wir betreiben die immer an 5V mit einer dicken Diode in Reihe, durch den 
Spannungsabfall liegt Vcc dann im guten Bereich. "Dicke" Diode wegen der 
hohen Peek-Ströme.

NACH der Diode und direkt (Abstand) am Modul ein 1000mFD LO-ESR Elko, 
der ESSENTIELL WICHTIG IST.
LO-ESR ist ebenso ESSENTIELL.

SIM-RX liegt über Widerstand am 5V-Host mit 3,9V Zenerdiode SIM-seitig 
an GND.
SIM-TX geht direkt zum Host.
Klappt seit Jahren auch mit 57KBaud einwandfrei bei >25 Modulen.

von Timo (Gast)


Lesenswert?

Aktuell verbinde ich das Modul wieder über den UNO als TTL
konfiguriert:

Anschluss wie folgt:

PC -> USB Kabel -> Arduino UNO
UNO Board Reset -> GND
GND UNO -> GND SIM900
TX/RX PIN0/1 -> 5VT/5VR

Gibt das UNO Board am Serial PIN0/1 nicht die 5V aus?

Grüße

von Jim Beam (Gast)


Lesenswert?

Timo schrieb:
> Gibt das UNO Board am Serial PIN0/1 nicht die 5V aus?

Hä? Wer sind denn "DIE 5V"?

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.