Forum: Mikrocontroller und Digitale Elektronik AT Kommando per RS232 zu GSM Modul


von Thomas H. (datatom)


Lesenswert?

Hallo zusammen,

Ich versuche von meinem ATMega2561 per RS232 -Schnittstelle AT Kommandos 
zu einem GSM Modul von Telit zu senden. Das klappt leider nicht. Wenn 
ich das Kommando vom Mikrocontroller zum Laptop HTerm sende kommt das 
Kommando richtig an, inkl. CR. Beispiel HTerm empfängt AT\r.

Sende ich das Kommando von HTerm zum GSM Modul kommt das Signal an und 
ein OK kommt zurück.

Wieso klappt das vom Mikrocontroller nicht?

Vielen Dank im Voraus.

Gruß

Datatom

von Jim M. (turboj)


Lesenswert?

Probiere es mal mit "\r\n". Ansonsten: Taktquelle? Signale mit Oszi 
geprüft?

von Thomas H. (datatom)


Lesenswert?

Jim M. schrieb:
> Probiere es mal mit "\r\n". Ansonsten: Taktquelle? Signale mit Oszi
> geprüft?
\r\n hab ich schon versucht, klappt leider auch nicht. Einen Oszi hab 
ich leider nicht. Aber die Signale kommen zum Laptop ja an.

von guest (Gast)


Lesenswert?

Welches Telit Modul isses denn? Und wie verbindest Du die drei Teile 
miteinander, also:
PC <=> Telit
PC <=> ATmega
Telit <=> ATmega
?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Thomas H. schrieb:
> Wieso klappt das vom Mikrocontroller nicht?

Verdrahtungsfehler? Pegelfehler?

von Kurt (Gast)


Lesenswert?

Thomas H. schrieb:

> Sende ich das Kommando von HTerm zum GSM Modul kommt das Signal an und
> ein OK kommt zurück.
>
> Wieso klappt das vom Mikrocontroller nicht?

Hast du auch das richtige Format?
Heisst: Pegelwandler TTL > RS232 am Mikrokontroller?

 Kurt

von Thomas H. (datatom)


Lesenswert?

Kurt schrieb:
> Thomas H. schrieb:
>
>> Sende ich das Kommando von HTerm zum GSM Modul kommt das Signal an und
>> ein OK kommt zurück.
>>
>> Wieso klappt das vom Mikrocontroller nicht?
>
> Hast du auch das richtige Format?
> Heisst: Pegelwandler TTL > RS232 am Mikrokontroller?
>
>  Kurt

Wenn ich den RS232-Stecker am Laptop anschließe, wird der Wert vom 
Mikrocontroller richtig angezeigt. Ziehe ich den RS232-Stecker vom 
Laptop ab, und schließe ihn an das GSM-Modul an, passiert nichts.

Von daher müsste ja im richtigen Format übertragen werden.

Ich übertrage mit folgendem Befehl:

printf("AT+CPIN=0000\r");

Darstellung in HTerm: AT+CPIN=0000<\r>
<\r> stellen das verkleinerte \r da.

von Kurt (Gast)


Lesenswert?

Thomas H. schrieb:

> Wenn ich den RS232-Stecker am Laptop anschließe, wird der Wert vom
> Mikrocontroller richtig angezeigt.

Der Stecker ist Teil des Mikrocontrollers?

Am Laptop wird das angezeigt was der Mikro ausgibt?

Der Mikro ist also, aus Sicht des Laptop, der Slave.

> Ziehe ich den RS232-Stecker vom
> Laptop ab, und schließe ihn an das GSM-Modul an, passiert nichts.

Klaro, du hast zwei Slaves zusammengeschaltet.


Dreh mal Stift 2 und 3 am Mikro, dadurch wird der Mikro zum Master.
(die Kommunikation mit dem Laptop darf/kann dann nicht mehr 
funktionieren)

(Da der Laptop sich als Master verhält kann er mit dem GSM reden)

Es kann sein dass du noch eine Steuerleitung am GSM-Modul beaufschlagen 
musst.


 Kurt

von Kurt (Gast)


Lesenswert?

Kurt schrieb:


> Der Stecker ist Teil des Mikrocontrollers?


Korrektur!

Der Stecker ist Teil des GSM-Moduls?


 Kurt

von Thomas H. (datatom)


Lesenswert?

Kurt schrieb:
> Kurt schrieb:
>
>> Der Stecker ist Teil des Mikrocontrollers?
>
> Korrektur!
>
> Der Stecker ist Teil des GSM-Moduls?
>
>  Kurt

Das GSM-Modul

http://www.telic.de/Load/Telemetry/M2M_Terminals/GT864_E/EN_UserManual_GT864-E.pdf

hat einen eingebauten RS232-Anschluss. Ich verbinde den Mikrocontroller 
und den Laptop bzw. das GSM-Modul mit einem RS232-Kabel. Zum Testen 
wechsel ich den Stecker zwischen dem Laptop und dem GSM-Modul. Auf dem 
Mikrocontroller bleibt der Stecker immer drauf.

Ich habe das Ausgangssignal vom Mikrocontroller debugged. Die Werte 
werden beim Debugger in HEX angezeigt. Alles stimmt. Und auf dem Laptop 
werden sie ja auch richtig angezeigt.

Alles seltsam.

von Kurt (Gast)


Lesenswert?

Thomas H. schrieb:
> Kurt schrieb:
>> Kurt schrieb:
>>
>>> Der Stecker ist Teil des Mikrocontrollers?
>>
>> Korrektur!
>>
>> Der Stecker ist Teil des GSM-Moduls?
>>
>>  Kurt
>
> Das GSM-Modul
>
> http://www.telic.de/Load/Telemetry/M2M_Terminals/G...
>
> hat einen eingebauten RS232-Anschluss. Ich verbinde den Mikrocontroller
> und den Laptop bzw. das GSM-Modul mit einem RS232-Kabel. Zum Testen
> wechsel ich den Stecker zwischen dem Laptop und dem GSM-Modul. Auf dem
> Mikrocontroller bleibt der Stecker immer drauf.
>
> Ich habe das Ausgangssignal vom Mikrocontroller debugged. Die Werte
> werden beim Debugger in HEX angezeigt. Alles stimmt. Und auf dem Laptop
> werden sie ja auch richtig angezeigt.
>
> Alles seltsam.

Ist es nicht.

"
> Ich habe das Ausgangssignal vom Mikrocontroller debugged. Die Werte
> werden beim Debugger in HEX angezeigt. Alles stimmt."


Der Debugger ist im Laptop, richtig?
Der Laptop verhält sich wie ein Master, wie ein "Sender".

Also verhält sich dein Mikro wie ein Slave, das muss so sein denn sonst 
könnten sie nicht miteinander reden.
Master/Slave im Sinne von:
Auf Pin2 geht meine "Sendesignal" raus, auf Pin2 empfängt es der Mikro
Und auch:
Auf Pin2 geht meine "Sendesignal" raus, auf Pin2 empfängt es der GSM


Auf Pin3 kommt die Antwort rein, die "Antwort" die dein Mikro "sendet"
Auf Pin3 kommt die Antwort rein, die Antwort die dein GSM-Modul "sendet"

Der Laptop und GSM unterhalten sich also dadurch dass der Laptop (auf 
Pin2)
den "Befehl" ausgibt und das GSM-Modul auf Pin3 antwortet.

Das gleiche Prozedere muss nun dein Mikro auch veranstalten, er muss auf 
Pin2 seinen Befehl raussenden und auf Pin3 die Antwort abwarten.

Da du aber mit deinem Laptop deinen Mikro "lesen" kannst ist dieser im 
"Slave-Modus", heisst: er verhält sich so wie dein GSM-Modul.
Das kann natürlich nicht gutgehen.

Bringe deinen Mikro in den Mastermodus, heisst: gib dessen Anweisungen 
auf Pin2 aus und erwarte die Antwort von deinem Sklaven, dem GSM-Modul, 
auf Pin3.

Versuchs mal, drehe Pin2 und Pin3 bei deinem Mikro um.


 Kurt

von Kurt (Gast)


Lesenswert?

> Versuchs mal, drehe Pin2 und Pin3 bei deinem Mikro um.
>


Mach dir ein Zwischenkabel mit einem Stecker und einer Kopplung.

Pin2 kommt auf Pin3
Pin3 kommt auf Pin2

Pin5 kommt auf Pin5


 Kurt

von Thomas H. (datatom)


Lesenswert?

Kurt schrieb:
>> Versuchs mal, drehe Pin2 und Pin3 bei deinem Mikro um.
>>
>
>
> Mach dir ein Zwischenkabel mit einem Stecker und einer Kopplung.
>
> Pin2 kommt auf Pin3
> Pin3 kommt auf Pin2
>
> Pin5 kommt auf Pin5
>
>
>  Kurt

Besten Dank, Kurt. Jetzt läuft es.

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Kurt schrieb:
> Auf Pin2 geht meine "Sendesignal" raus, auf Pin2 empfängt es der Mikro
> Und auch:
> Auf Pin2 geht meine "Sendesignal" raus, auf Pin2 empfängt es der GSM


 Was für ein Blödsinn.

 RxD ist immer Pin2, TxD ist immer Pin3.
 Deswegen werden Pin2 und Pin3 im Kabel gekreuzt.

 Und es gibt keinen Master und keinen Slave beim RS232.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Marc V. schrieb:
> Und es gibt keinen Master und keinen Slave beim RS232.

Es gibt DTE ("data terminal equipment") und DCE ("data communication 
equipment"), und die haben eine unterschiedliche Anschlussbelegung. Sie 
können deshalb mit einem 1:1-Kabel miteinander verbunden werden.

Ein häufiges Kennzeichen ist, daß die eine Sorte Geräte einen Stecker 
(das Ding mit den Stiften) verwendet, während die andere Sorte Geräte 
eine Buchse (das Ding mit den Löchern) verwendet.

Das klassische Beispiel ist das gute alte analoge Modem.

Der PC hat als DTE einen Stecker, das Modem als DCE eine Buchse, und 
verbunden werden beide mit einem 1:1-Kabel.


Man sollte spätestens dann stutzig werden, wenn man zwei Geräte 
miteinander verbinden will, die beide einen Stecker (oder beide eine 
Buchse) haben.

von Dietrich L. (dietrichl)


Lesenswert?

Rufus Τ. F. schrieb:
> Der PC hat als DTE einen Stecker, das Modem als DCE eine Buchse, und
> verbunden werden beide mit einem 1:1-Kabel.
>
> Man sollte spätestens dann stutzig werden, wenn man zwei Geräte
> miteinander verbinden will, die beide einen Stecker (oder beide eine
> Buchse) haben.

Und wenn das noch zu keiner Lösung führt sollte man daran denken, dass 
sich nicht alle an diesen Quasi-Standard "DTE = Stecker, DCE = Buchse" 
halten.

von Axel R. (Gast)


Lesenswert?

Am PC: aus der d_R_ei kommts R_aus, also TX->

von Kurt (Gast)


Lesenswert?

Axel R. schrieb:
> Am PC: aus der d_R_ei kommts R_aus, also TX->

Aus der zwei kommts raus.

 Kurt

von Kurt (Gast)


Lesenswert?

Thomas H. schrieb:
>
> Besten Dank, Kurt. Jetzt läuft es.

Gern geschehen.

 Kurt

von Kurt (Gast)


Lesenswert?

Kurt schrieb:
> Axel R. schrieb:
>> Am PC: aus der d_R_ei kommts R_aus, also TX->
>
> Aus der zwei kommts raus.
>

Damits da keinen "Streit" gibt, hier die Auflösung:

PC:
15 poliger Stecker, Pin 3 >
25 poliger Stecker, Pin 2 >

 Kurt

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Kurt schrieb:
> PC: 15 poliger Stecker

Ganz sicher nicht.

von Kurt (Gast)


Lesenswert?

Rufus Τ. F. schrieb:
> Kurt schrieb:
>> PC: 15 poliger Stecker
>
> Ganz sicher nicht.

Stimmt, er hat nur neun.

 Kurt

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.