Forum: Mikrocontroller und Digitale Elektronik Empfangen einer SMS auf einen Microcontroller


von Fabian S. (m3x)


Lesenswert?

Ich hab eine Frage: Ich möchte gerne eine SMS auf meinem Microcontroller
auswerten. Ich habe dazu schon ein Programm in C geschribeen mit dem es
ohne Probleme möglich ist AT-Befehle an das Handy zu schicken, welches
es auch ohne Fehler ausführt (Nach einem Interrupt ruft es irgendwo
an). Jetzt schicke ich dem Handy den Befehl das mir die ungelesenden
SMSs ausgibt. Hierzu musste ich allerdings die RTS-Leitung auf High
(+5V)setzen.
jetzt habe ich eine Funktion programmiert die solange Zeichen über die
Serielle schnitstelle empfängt, bis ich ein "K" enthalte (Als letzte
zeichen bekmme ich ein "OK", da in dem String den ich vom handy
bekomme kann ich das als Marke zum abbrechen der Abfrage benutzen.).
Probier ich das jetzt Manuel am Hyperterminal (also ich simuliere eine
empfangende SMS), funktioniert es. Nur sobalt ich das Handy anschließe
geht es nicht...
Jetzt die Frage: Braucht das Handy irgendwelche Acknolleges die über
die aerielle Schnitstelle sende (Also so etwas wie mit dem RTS...),
oder ist der Controller zu langsam getacktet (8Mhz), was ich mir
allerdings weniger vorstellen kann.

Besten Dank für Antworten.

Aufbau: Das Handy (C35 ist mit einem Datenkabel an den Controller
angeschlossen).

von Micha-78 (Gast)


Lesenswert?

hi,

1. mit deiner Abbruchbedingung habe ich ein Problem. Ein "K" kann ja
auch als erster Buchstabe in der SMS ankommen! Also brichst du gleich
ab bei: "Komme heute nicht nach Hause!"  Oder?

2. Was braucht das blöde Handy und das Datenkabel für eine Uart
Verbindung? Handshake ja/nein, Software oder Hardware Handshake.
Funktioniert die Uart zwischen µC und HyperTerminal über RS232 und den
selben Einstellungen (Echo senden!)? Probier dies mal aus.

Vielleicht löst das dein Problem und es liegt hieran.


michael

von Christian Büch (Gast)


Lesenswert?

Schau dir mal die Codierung für SMS an (PDU heißt die glaube ich.
Zeichen sind 7Bit Codiert soweit ich mich erinnere).

Welches Handy benutzt du?

von Christian Büch (Gast)


Lesenswert?

hier noch ein nützlicher Link.

http://www.nobbi.com/sms_pdu.htm

von Fabian S. (m3x)


Lesenswert?

@micha:
Das C35 unterstützt kein Textformat. Es kommt der 7BitCodierte PDU
zurück. Da in einem PDU kein "K" vorkommt kann ich es auch so als
abbruchbedingung verwenden ;). Die Software Seite habe ich jetzt über
Hyperterminal schon soweit getestet und Funktioniert fehlerfrei.

Das Problem liegt wohl darin das im Microcontroller und im Datenkabel
ein MAX232 ist der die Spannung anpasst. Desweiteren Arbeitet das Handy
mit einem HighPegel von 3V und der Controller mit einem HighPegel von 5V
... ich denke mal das es zum größten teil daran liegen wird.

Hat vlt. jemand eine Ahnung wie das Handy Datenkabel aufgebaut ist. Ich
habe bisslang nur eine einfache Schaltung gefunden.
http://pinouts.ru/data/siemens_cable_pinout.shtml

Nach dem ich allerdings ein altes Datenkabel geschlachtet hatte viel
mir auf, dass der RTS und CTS Pin zusammenglötet sind. Der DSR Pin wird
auch noch für irgendwas gebraucht...

von SeppK (Gast)


Lesenswert?

Noch ´ne andere Fehlermöglichkeit:

Betreibst du deinen Controller mit dem internen Taktgenerator? (dachte
ich mir wg den 8 MHz)
Der interne Taktgenerator sollte nicht verwendet werden, da zu ungenau.

Kann funktionieren, muss aber nicht.
Führt zu den Effekten, dass es mit manchen Geräten funktioniert mit
machen aber wiederum nicht.

von Fabian S. (m3x)


Lesenswert?

Also ich verwende halt zur Taktgenerierung den Ozilator mit nem 11,059
Mhz Quarz um auf die Boundrate von 19,2 kBd zu kommen ;)

von Micha-78 (Gast)


Lesenswert?

Hi,

ok deine Abbruchbedingung scheint ok zu sein. Wuste ich nicht! ;-)

Ich vermute auch das dein Controller mit den 3V nicht zurecht kommt.
Schau der mal das ElectricalSheet vom Controller an, darin steht,
welche schwellenspannung deine Uart braucht. Ich vermute mal min.
4,3-4,5V um definitiv einen High Pegel zu lokalisieren.

Am internen Oszi glaube wirds nicht liegen. Jedenfalls habe ich beim TI
MSP430 noch keine Probleme gehabt, selbst bei einem Temp-Unterschied von
20Kelvin. Gut sie sind ungenauer, aber .... schwamm drüber.

Probier mit nem Transistor mal die Spannung anzuheben auf 5V. für
deinen Controller. Was benutzt du eigentlich für einen?

von Fabian S. (m3x)


Lesenswert?

also das board ist von unserer schule... ist ein infinion sab 80535.
ich hab mitlerweile folgende vermutung: in dem handykabel ist ja auch
ein pegelwandlerdrin 3V <-> 12V ... under bekommt ja seine spannungs
versorgung über die serielle schnistelle... jetzt hab ich in einem buch
gelesen das die 10volt auf den pin 4 (DTR) legen. hat jemand damit
erfahrungen? eine andere lösung soll sein wenn ich 5volt auf pin 7 lege
...
vielen dank für antworten .

von Micha (Gast)


Lesenswert?

Hallo Fabian,

das Datenkabel wird aus der RS232 versorgt. Prüfe, ob auf DTR auch 10
Volt anliegen!

Gruß Micha

von Fabian S. (m3x)


Lesenswert?

gute idee :D

von Fabian S. (m3x)


Lesenswert?

Also ich habe an PIN4 (DTR) und Pin 7 (RTS) je -11.98 Volt... also
scheinen das die Versorgungsspannungen zu sein!?

von Micha-78 (Gast)


Lesenswert?

hi,

ich misch mich auch noch einmal ein. Pin4 und Pin7 nicht die
Versorgungsleitungen. Diese beiden Pins sind nur für die
Handshakeverfahren wichtig. Haben durch den RS232 Pegel halt diese
Spannung.
Am besten du kaufst dir dann einen MAX232 Pegelwandler und klemmst das
entsprechend an.

µC ->Max232->SubD Buchse/Stecker -> Datenkabel -> Handy

Dann denke ich sollten deine Spannungsprobleme behoben sein. Achte aber
darauf, das du einen Max232 für deine entsprechende µC Spannung hast.
Dann Max232 Chip kannst du vielleicht sogar von deinem Board aus mit
Versorgungsspannung speisen. Der braucht meistens nur 5V. Schau dir
aber da mal das entsprechende Datenblatt an.

Ich könnte mir auch vorstellen, das du keine Steuerleitungen (RTS/DTS)
brauchst, sondern nur RxD und TxD. Also einfach nur die beiden an den
MAX Chip dran und dann entsprechend an die SubD Buchse.

von Fabian S. (m3x)


Lesenswert?

µC ->Max232->SubD Buchse/Stecker -> Datenkabel -> Handy
genau so sieht es im moment aus ;)
das größte prob ist das noch nichtma die siemensleute wissen wie ihre
kabel funktioniern heul ... und in malaisien, china, taiwan und co
rufe ich sicherlich nicht an....
trotzdem mal vielen dank ;)

von Micha-78 (Gast)


Lesenswert?

Also wenn dein Kabel am PC funktioniert sollte es einfach sein.

Standard RS232 SubD 9pol.:

Pin2 ist RxD
Pin3 ist TxD
Pin5 ist GND

der rest bleibt bei dir frei. Achte aber darauf, das TxD vom Controller
auf RxD vom Datenkabel geht!

Info:
+-3V bzw. +-5V sind undefinierte Bereiche bei RS232 du solltest immer
über bzw. unter 5V liegen. Deshalb funktioniert dein Kabel nicht ohne
Pegelwandler!

von mthomas (Gast)


Lesenswert?

Zur Stromversorgung der Pegelwander in vielen Datenkabeln wird DTR
und/oder RTS verwendet. Zumindest die mir bekannten (aelternen)
Mobiltelefone nutzen keine Hardwareflowcontrol. Bei einigen Datenkabeln
erfolgt die Versorgung aus dem Mobiltelefon. Ganz gut laesst sich das
mit dem Bray-Terminal testen: Dort kann man die Statuspins der
Schnittstelle ueber Button schalten und damit ausprobieren, ob die
Versorgung von der seriellen Schnittstelle "abgezweigt" wird oder
ueber den Handystecker kommt.

von Fabian S. (m3x)


Lesenswert?

danke ... sobalt wie das neue kabel da ist werde ich es testen.

von Fabian S. (m3x)


Lesenswert?

also... +5V aufn CTS.. dann gehts ;)
-> Projektarbeit funktioniert... geh jetzt erstma was trinken^^

und nochma danke an alle die mir geholfen haben ;)

von Rahul (Gast)


Lesenswert?

Nur so zur Info angehängt:
Ein Vorschlag zum Testen: Ein 1-zu-1-Kabel zwischen Handy und PC, wo
man die einzelnen Adern auftrennen kann. Wenn es nicht mehr
funktioniert, weiß man welche Ader schuld ist...(bzw. die Schaltung mit
Strom versorgt.)

von Fabian S. (m3x)


Lesenswert?

Nachmals Danke...
Ich habe es so ähnlich am µController später zum Schluss gemacht ;).
Hab halt im Bray-Terminal geschaut welche Leitungen auf High liegen ;)

von mthomas (Gast)


Lesenswert?

> ... +5V aufn CTS...
sicher? CTS ist eigentlich ein Eingang am PC. Wenns funktionoiert, ist
ja gut, aber wundert mich schon etwas. Nicht davon irritieren lassen,
dass im Bray-Terminal beim Klick auf RTS das CTS-"Licht" leuchtet.
Waere moeglich, dass im Kabel eine Bruecke zwischen RTS und CTS
eingebaut ist. Kandidaten fuer Ausgaenge zur "Stromversorgung" waeren
RTS oder DTR (wie oben von mir geschrieben), evtl. auch beide und dann
ueber Dioden zusammengeschaltet fuer "mehr Power" (insert
"hoohoohoo" here).

Martin Thomas

von Fabian S. (m3x)


Lesenswert?

-> es hat kein unterschiedgemacht ob ich ich am dtr oder rts was
getoggelt habe.
auf jedenfall funktionierts jetzt :)

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.