Forum: Mikrocontroller und Digitale Elektronik AT Befehle zwischen Arduino und Sim800 abfangen und aulesen


von Nils (n382)


Lesenswert?

Moin zusammen,

ich habe eine Frage und bin mir nicht sicher ob ich das so lösen kann.

Ich habe ein SIM 800 Modem an einen Mikrocontroller. Verbunden ist das 
über die RX TX Leitugen.

Das Modul sendet Temperaturwerte an einen Server.

Es müsste doch möglich sein die Kommunikation zwischen dem Sim 800 Modul 
und dem Mikrocontroller mitzuloggen um zu sehen mit welchen AT Befehlen 
das SIM Modul angesprochen wird.

Geht das mit einem Logic Analyzer ? bzw. kann eine Software die AT 
Befehle darstellen?

Oder kann ich einen Arduino z.B. paralel draufklemmen und der loggt das 
mit?
(Paralel dürfte ja eigentlich nicht gehen)
Oder gibt es einen Sketch der einfach nur auf den TX und RX Leitungen 
"lauscht" ?

Hat jemand so was schon mal gemacht ?

VG
n382

von Rahul D. (rahul)


Lesenswert?

Nils schrieb:
> Es müsste doch möglich sein die Kommunikation zwischen dem Sim 800 Modul
> und dem Mikrocontroller mitzuloggen um zu sehen mit welchen AT Befehlen
> das SIM Modul angesprochen wird.
Ja.
>
> Geht das mit einem Logic Analyzer ? bzw. kann eine Software die AT
> Befehle darstellen?

Mit einem Logik-Analyzer kann man zumindest die Datenströme sehen / 
ausmessen
Ob der auch das Protokoll decodieren kann, ist ein Software-Problem.

Du kannst auch einen PC mit zwei seriellen Schnittstellen (vermutlich 
TTL-Pegel) derart anschließen, dass du nur die RX-Leitungen des PCs und 
zwei Instanzen eines Termnialprogramms verwendest.
Dazu musst du noch die Baudrate und Übertragungsparameter wissen / 
herausfinden. Auch hier benötigst du zum Decodieren Hirnschmalz oder 
eine Software.

Die Steuerbefehle des SIM800 sind sicherlich nicht geheim...

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


Lesenswert?

Das ist eine normale RS232-Kommunikation mit 5V oder 3,3V. Die 
Geschwindigkeit kann variieren, das SIM800 kann sich automatisch auf 
eine Baudrate einstellen. Für das SIM800 gibt es alle Informationen im 
Netz, ich habe mit dem Ding eine Alarmanlage gebaut, war kein Problem.

: Bearbeitet durch User
von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Ben B. schrieb:
> Das ist eine normale RS232-Kommunikation mit 5V oder 3,3V.

Ganz sicher nicht!
UART, ja, RS232C nein.

Pegel stehen im Datenblatt
Entsprechen dem LiPo Spannungsbereich also keine 5V nur bis 4,2V oder 
so.

Nils schrieb:
> Hat jemand so was schon mal gemacht ?

Warum sollte man das denn tun, der Arduino Code liegt doch sicherlich im 
Quellcode vor.

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


Lesenswert?

Hör doch mal auf rumzustänkern. Du weißt, was ich meine.

Das Datenformat ist mit RS-232 identisch (glaube 8N1 beim SIM800, aber 
wahrscheinlich kann das auch mehr) und ich habe drangeschrieben, daß es 
keine RS-232-konformen Spannungspegel sind. Da es sonst aber das Gleiche 
ist, mit Ausnahme des Weglassens der Pegelwandler, beschreibe ich diese 
Form der Kommunikation weiterhin mit RS-232. U(S)ART kann noch so vieles 
mehr sein.

Das SIM800 verwendet wenn ich mich recht erinnere 3,3V bis 4,2V 
Betriebsspannung. Der in meiner Alarmanlage verwendete ATMega1284 
verwendet 5V und ich kann mich dran erinnern, daß ich deswegen 
Pegelwandler eingesetzt habe. Diese sind glaube ich auch im Datenblatt 
des SIM800 beschrieben. In dieser Schaltung kann man die 
Datenkommunikation einmal mit 5V messen und einmal mit 3,3V bzw. mit der 
Betriebsspannung des SIM800, je nachdem an welcher Seite man misst.

Schönen Tag noch!

von Stephan S. (uxdx)


Lesenswert?

Nils schrieb:
> Ich habe ein SIM 800 Modem an einen Mikrocontroller.

Ich erlaube mir hier den Hinweis, dass das SIM800 nur G2 (GSM) kann. Das 
ist nach G3 (UMTS) eine aussterbende Technik.

https://www.teltarif.de/mobilfunk/gsm/abschaltung.html?page=all

von Flunder (flunder)


Lesenswert?

Logic Analyzer sollten so was können, dafür werden sie gebaut. Mit so 
einem Teil kannst Du zunächst die Baudrate bestimmen, dann die Anzahl 
Bits pro Wort (vermutlich 8) und dann mit diesen Erkentnissen die 
Datenströme dekodieren lassen. Bei Saleae ist alles dafür benötigte in 
der PC Software dabei.

Klar RTFM hilft auch immer weiter. Kann man aber auch kombinieren. So 
sagt einem das Manual, was die abgefangenen Kommandos bedeuten. Mit den 
abgefangenen Kommandos kann man sehen, was von den Kommandos im Manual 
gebraucht wird.

Wenn dieses Jahr schon wieder kein Logic Analyzer unterm Christbaum 
liegt, kann man sich auch mit einem Arduino behelfen. Möglichst einem 
mit 2 UARTS und passenden Pegeln. Man kann Eingänge parallel hängen, 
wenn man es nicht übertreibt. Von Deinem zusätzlichen Arduino nimmst Du 
also nur freie RxD Pins. Du willst ja nur lauschen, nix senden. Deshalb 
hatte ich Dir ja eben, 2 UARTS empfohlen, einer lauscht auf der Leitung 
zum Modem, der andere auf der Leitung vom Modem. Da darf dann auch der 
auf dem Arduino vorhandene USB auf UART Wandler nicht dazwischen funken. 
Beim Due gibt es dafür eine schräge Open-Drain Beschaltung auf dem 
Arduino. Wobei der genug UARTS hätte, dass Du auch zwei komplett freie 
nehmen kannst. Haken dabei, einen Arduino zu benutzen, ist, dass Du 
Baudrate und Konfiguration erraten bzw. durch Probieren finden musst.

von Harald K. (kirnbichler)


Lesenswert?

Flunder schrieb:
> Wenn dieses Jahr schon wieder kein Logic Analyzer unterm Christbaum
> liegt, kann man sich auch mit einem Arduino behelfen.

Oder man spart sich mühsam das Geld für einen einfachen Saleae-Klon 
zusammen, den bekommt man durchaus schon für unter 12 Euro:

https://www.amazon.de/dp/B01MUFRHQ2

Man muss halt mit den Signalpegeln aufpassen, aber die zwischen Arduino 
und Sim800 verwendeten sollte das Ding einfach so abkönnen.

von Rainer W. (rawi)


Lesenswert?

Rahul D. schrieb:
> Du kannst auch einen PC mit zwei seriellen Schnittstellen (vermutlich
> TTL-Pegel) derart anschließen

Vermutungen führen hier nicht weiter, alleine schon wegen der vom 
Potential inversen Logikpegelzuordnung.
Und wenn die Polarität nicht stimmt, versteht der PC kein einziges Byte 
richtig.

Ben B. schrieb:
> Das Datenformat ist mit RS-232 identisch

... Bis auf die Polarität eben.

: Bearbeitet durch User
von Rahul D. (rahul)


Lesenswert?

Rainer W. schrieb:
> Rahul D. schrieb:
>> Du kannst auch einen PC mit zwei seriellen Schnittstellen (vermutlich
>> TTL-Pegel) derart anschließen
>
> Vermutungen führen hier nicht weiter, alleine schon wegen der vom
> Potential inversen Logikpegelzuordnung.
> Und wenn die Polarität nicht stimmt, versteht der PC kein einziges Byte
> richtig.

Sowas kann und sollte man vorher messen, oder?
Wäre beim reinen Horchen bis auf die Polaritär egal.
Was soll bei einem Arduino schon als Pegel anliegen?
Früher gab es mal die HV-AVR - das war aber eher ein Aprilscherz für 
Leute, die sie mit Netzspannung oder 48V betreiben wollten.

von Rainer W. (rawi)


Lesenswert?

Rahul D. schrieb:
> Was soll bei einem Arduino schon als Pegel anliegen?
> Früher gab es mal die HV-AVR - das war aber eher ein Aprilscherz für
> Leute, die sie mit Netzspannung oder 48V betreiben wollten.

Was kasperst du jetzt mit Netzspannung und 48V rum?
Wenn die Polarität nicht stimmt, kann der UART nicht einmal das 
Start-Bit identifizieren, geschweige denn irgendetwas richtig empfangen.

von Joachim B. (jar)


Lesenswert?

Rahul D. schrieb:
> Sowas kann und sollte man vorher messen, oder?

am AVR oder ESP ist der Ruhepegel high AVR meist 5V am ESP 3,3V

je nach Wandler invertiert 0V bis -12V

: Bearbeitet durch User
Beitrag #7778991 wurde von einem Moderator gelöscht.
von Frank O. (fop)


Lesenswert?

Rainer W. schrieb:
> Wenn die Polarität nicht stimmt, kann der UART nicht einmal das
> Start-Bit identifizieren, geschweige denn irgendetwas richtig empfangen.

Bis auf die auserwählten UARTs, die Config-Bits haben, um Ein- und/oder 
Ausgang zu invertieren...

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.