Hallo zusammen.
Ich versuche für mein Masterprojekt unter anderem ein GSM Modul für den
SMS Versand zu nutzen. Ich habe schon im verschiedenen Foren diverse
Beiträge zu diesem Thema gelesen und nun versucht die Anfänge mit meinem
Sony Xperia Tipo zu machen.
Den Anfang habe ich mit Tera Term (ähnlich Hyper Terminal) gemacht und
dort die Befehle zur Ansteuerung des Modems eingegeben. Dies
funktionierte Tadellos. Ich konnte SMS versenden, Anrufe tätigen und
auch andere unterstütze Befehle funktionierten. Heißt also die
Comporteinstellungen waren in Ordnung.
Nun versuchte ich eine kleine Schaltung in Proteus aufzubauen um den
Code den ich hier und da gefunden habe zu testen. Es gibt ja viele
Projekte dieser Art im Internet. Doch leider funktioniert das nicht ganz
so richtig.
Hier die Funktion die einen Anruf tätigen soll:
1
voidDO_SOMETHING(){
2
delay_ms(200);
3
fprintf(GSM,"ATD0351");//Call 0531
4
//fprintf(GSM,"\r\n");
5
fputc(CR,GSM);
6
//fputc(0x1A, GSM);
7
}
(Kompletter Code am Ende)
Manchmal funktioniert es teilweise, meistens aber eher nicht. Mit
teilweise meine ich das, dass Telefon einen Anruf tätigt aber nicht die
komplette Nummer wählt. Meist nur 0 und seltenst 05.
Ich überwache die Kommunikation mit dem Programm Free-Serial_Analyser.
Mir ist aufgefallen das beim Senden von Proteus aus, das Echo (vom
Telefon soweit ich informiert bin) garnicht oder unvollständig
zurückkommt. Also eben nur mit 0 oder 05 und dann ein OK darunter. Ich
gehe also davon aus, dass der Code richtig ist aber eine Einstellung des
Com Ports falsch ist. Bei meinen Recherchen habe ich herausgefunden,
dass man das Echo mit "ATE0" ausschalten sollte. Leider wird dieser
Befehl nicht vom Modem unterstützt. Ich habe auch schon in einem
Dokument von Sony mit den AT-Commands nachgeschaut. Es gibt leider
keinen anderen Befehl soweit ich herausgefunden habe.
Die Kommunikation wird über Bluetooth hergestellt. Die Einstellungen
findet Ihr im Anhang.
Natürlich besteht auch die Möglichkeit das, dass Telefon dafür
ungeeignet ist, da vergleichbare Projekte ein Nokia nutzen. Da ich für
mein Projekt am Ende ja ein GSM Modul nutzen möchte und kein
Mobiltelefon, wäre ich auch über eine Empfehlung eines günstigen
Einsteiger-GSM-Modems mit Sim-Karte dankbar.
Kurzzusammenfassung
Sony Xperia Tipo ST21i --- Bluetooth --- COM3 im Laptop --- Proteus
Kommunikation mit Tera Term erfolgreich getestet.
Ansprechen über Proteus funktioniert nur teilweise (Nummer wird
unvollständig gewählt). Meistens keine Reaktion des Telefons.
Befehl ATE0 zum Ausschalten des Echos wird nicht unterstützt.
Software und Controller
- Windows 7
- ISIS Proteus
- MPlab X
- CCS Compiler
- PIC16F877
- Tera Term
- Free Serial Analyser
So. Ich hoffe ich habe jetzt alles wichtige drin. Falls etwas fehlt
bitte einfach fragen. Vielen Dank an alle Helfer im Voraus.
Mit freundlichen Grüßen
Mario
1
#include<16F877.h>
2
#device ADC=16
3
4
#FUSES NOWDT //No Watch Dog Timer
5
#FUSES NOBROWNOUT //No brownout reset
6
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
Hallo,
Wenn es mit einem Terminalprogramm geht, dann muss es mit den selben
Schnittstelleneinstellungen auch von einem anderen Device (Proteus)
gehen.
Das Echo vom GSM stört erst mal nicht, es sei denn du willst/must das
was das GSM-Modul zurückgibt auswerten,dann ist die Auswertung ohne Echo
natürlich einfacher. Andererseits kann man das Echo natürlich auch
verwenden um zu zu überprüfen ob am GSM-M. alles angekommen ist.
Überwache doch mit dem Serialportmonitor erst mal die Daten IN Richtung
GSM-M.
Wie sieht die Verbindung vom Proteus, Laptop und Bluetooth genau aus?
Bluethooth wird Seriell/per USB am Laptop angechlossen - oder Bluetooth
intern? Proteus wie am Laptop angeschlossen Seriell/USB?
Sascha
Mario Sachse schrieb:> Den Anfang habe ich mit Tera Term (ähnlich Hyper Terminal) gemacht und> dort die Befehle zur Ansteuerung des Modems eingegeben. Dies> funktionierte Tadellos. Ich konnte SMS versenden, Anrufe tätigen und> auch andere unterstütze Befehle funktionierten. Heißt also die> Comporteinstellungen waren in Ordnung.>> Nun versuchte ich eine kleine Schaltung in Proteus aufzubauen um den> Code den ich hier und da gefunden habe zu testen. Es gibt ja viele> Projekte dieser Art im Internet. Doch leider funktioniert das nicht ganz> so richtig.
Ein weiterer wesentlicher Unterschied zwischen dir am Terminalprogramm
und dem von dir geschriebenem Programm besteht darin, dass du nur
begrenzt schnell tippen kannst. Das hat so erst mal nichts mit der
Baudrate zu tun, sondern besagt erst mal nur, dass wenn du "ATD0351" ins
Terminal eintippst, du nach jedem Buchstaben automatisch und ohne es
verhindern zu können, eine kleine Pause einlegst, während dein Programm
zwischen den Zeichen 0 Pause macht.
Hast du schon mal die Handshake Leitungen beobachtet, ob dir (bzw.
deinem Programm) das Modem signalisiert, mal kurz mit weiteren Zeichen
zu warten weil es erst mal das gerade übertragene Zeichen verarbeiten
muss?
Als erstes Danke für die Beteiligung an meinem Problem.
@ Sascha
Ja da handelt es sich um einen Zahlendreher, aber das ist glaube nicht
so wichtig ;-)
Die gesendeten Daten von Proteus habe ich schon beobachtet. Die sehen
genau so aus wie die von Tera Term. Ich kann ja mal ein paar Bilder
hochladen.
Das Bluetooth-Modul ist im Laptop integriert. Beim herstellen der
Verbindung zwischen Handy und Laptop wurde COM3 und COM4 aktiviert oder
eben von Windows zur Kommunikation festgelegt. Die benötigten Treiber
installierte Win7 selbstständig. Den Proteus Schaltplan hatte ich nicht
hochgeladen. Ich nutze aber den "COMPIM" Baustein. Der greift auf die
COM-Ports des Computers zu.
@ Karl Heinz
Das Terminalprogramm nutzt ein separates Fenster zum eingeben der
Befehle. Wenn man damit fertig ist, muss man OK drücken, dann werden die
Befehle alle auf einmal geschrieben. Auf die COM-Leitung nehmen ich an.
Mit den Handshake-Leitungen muss ich mal schauen ob ich das selbe denke
wie du meinst. Werde gleich mal Bilder hochladen. Vielleicht sind ja die
Leitungen dabei die du meintest.
So. Habe mal ein paar Screenshots gemacht von beiden Wegen der
Kommunikation. Also per Terminal Programm und per Proteus.
Die Befehle die auf den COM geschrieben werden sehen für mich identisch
aus.
Habe es noch mehrmals per Proteus "Klick auf Button" im Schaltplan
probiert. Meist wird nur "ATD" übermittelt. Einmal hat es allerdings
auch geklappt das 0351 gewählt wurde.
Weiss ja nicht ob man im Proteus noch Stopbits einstellen muss, bei dem
COMPIN Baustein (Virtueller COM-Port Proteus)
Hoffe das hilft euch weiter beim Tipps geben. Ich weiss gerade nicht wo
ich noch nachschrauben muss ;-)
Und das mit dem Zahlendreher war für Sebastian. Hatte mich verlesen beim
Namen. Tschuldigung ;-)
Hi Mohamd,
dieses Programm sieht aus wie ein Analyseprogramm oder unlocktool,
soweit ich gerade im Netz schnell finden konnte. Was genau soll ich
deiner Meinung nach mit dem Programm machen? Das Modem im Handy
funktioniert ja prinzipiell, nur mit Proteus eben nicht so wie es soll.
Vielleicht kannst du ja noch ein oder zwei Zeilen schreiben.
Danke.
Mfg Mario