Forum: Mikrocontroller und Digitale Elektronik AVR an Handy C35


von Mogi (Gast)


Lesenswert?

Hallo zusammen,

mein Problem besteht darin, dass ich ein Handy an einen Atmel AVR L8535
Microcontroller anschießen möchte. Dazu verwende ich zur Zeit noch das
STK200 und BASCOM zur Programmierung. Später soll es dann ein eigenes
Board werden. Ich möchte verschiedene SMSen an das Handy schicken und
darauf soll der Controller dann reagieren.
Hat sich jemand schonmal mit sowas beschäftigt? Wäre klasse wenn ich
wüßte wie ich das Datenkabel anschließen muß und was ich in BASCOM
einstellen bzw. welche Befehle ich da verwenden soll.
Hab mich noch nie mit der seriellen Schnittstelle bzw. UART
beschäftigt. Evtl. weiß auch jemand ne gute Seite zum nachschauen.

Danke schon mal im voraus.

von Jens Renner (Gast)


Lesenswert?

Gib mal bei der Suche dieses Forums "Handy Siemens" ein, das dürfte
einige Ergebnisse liefern.

von Mogi (Gast)


Lesenswert?

Danke!

Hab da schon echt viel gefunden. Hatte den ganzen Tag damit zu tun.
Jedoch hab ich nichts darüber gefunden wie man konkret in Bascom einen
AT Befehl ans Handy schickt oder mit dem AVR einen empfängt. Kann mir
also jemand sagen was ich für Konfigurationen in den Kopf schreiben
soll und vor allem wie liest man vom Handy über UART in den AVR und
dann auch noch bitte mit BASCOM.

von Timo (Gast)


Lesenswert?

Hi.

mit Bacom kenn ich mich aus. Aber du brauchst doch einfach aus der
STDOUT einen Befehlt senden. Bei C geht das mit "printf".

Wichtig ist das du die Übertragung auf 9600Baut stellst.
An der Rückmeldung hänge ich noch. Habe bisher es noch nicht
hinbekommen die Rückmeldung auf dem Display dazustellen.

Wenn das senden eines Befehls nicht klappen sollte, schau dir das
Handykabel an. Wir haben hier 1-2Wochen nach einem Programmierfehler
gesucht. Zu guter letzt war es das Kabel das an bestimmten PINs noch
5V+ Spannung gebraucht hat. Lieferte das Experementierboard nicht.

Timo

von Mogi (Gast)


Lesenswert?

Danke!

Bist du sicher, dass ich 9600Baud einstellen muß? Hab bisher immer
19200 eingestellt. Im HyperTerminal Programm hats so zumindest dann
funktioniert.

Hab das mit der Spannungsversorgung aus dem Forum auch gelesen.
Anscheinend ist im Datenkabel ne Elektronik drin die noch versorgt
werden will. Werd ich mal probieren und ne Spannung anlegen.
Hab bisher das Datenkabel einfach eins zu eins an das STK200
angeschlossen. Hoffe das ist richtig so.

OK, das mit der Standartausgabe leuchtet mir ein, bloß wie stelle ich
die STDOUT auf die serielle Schnittstelle das Controllers. Da muß man
doch bestimmt irgendwelche Definitionen im Kopf des Programms
vornehmen.

Der Befehl um etwas auf die STDOUT zu geben heisst in BASCOM vermutlich
PRINT('at+c....'). Kann mir das jemand bestätigen.

Mogi

von Timo (Gast)


Angehängte Dateien:

Lesenswert?

Hi.

Also probiere es mit 19.xxx baut erst einmal aus. Mein Kumpel mit dem
ich das zusammen mache hat sein Siemens irgendwie umgestellt von 9 auf
19... Baut. Standardmäßig ist 9600. Wichtig ist halt nur das du das
dieses als Fehlerquelle ausschließt falls es nicht auf anhieb klappt.

Also in C ist die Standardausgabe automatisch auf dem Serialport, da
musst du nix einstellen.

Nach jedem AT Befehl musst du ein "Newline" als Abschluss setzen.
Unter C ist das \n\r.

P.S. Schau dir mal den Anhang an, vielleicht ist der ja interessant für
dich ;-)

Grüße,
Timo

von Mogi (Gast)


Lesenswert?

Riesigen Dank für den Anhang!!
Genau sowas hab ich gesucht.

Hab nun mal mit dem Oszi gemessen ob am Stecker der ins Handy geht auch
was ankommt. Also das tuts. Allerdings hab ich kein Speicheroszi und
kann nicht beurteilen ob das sowas wie ein Paket ist. Es ist also
vermutlich so, dass hier auch als STDOUT die serielle Schnittstelle
angesprochen wird. Glaub aber nicht dass ich "newline" machen muß,
weil ja was angekommen ist.
Vermute also, dass es ne einstellungssache ist.

Muß man evtl. das Handy erst irgendwie aktivieren, dass es serielle
Daten empfängt?

von Christian (Gast)


Lesenswert?

schau mal hier: nobbi.com
Ich habe das gleiche vor, ich warte nur noch auf mein Datenkabel :-(

von Timo (Gast)


Lesenswert?

Hi,

kein Problem. Habe noch ein paar PDFs das sind aber gute 10MB. Für
andere Handytypen.

Also das newline gibt an, wann der befehl zuende ist. Also nicht ganz
unwichtig ;-) Er sendet ja Zeichenweise.

Grüße,
Timo

von Mogi (Gast)


Lesenswert?

Hast recht ich glaub ich muß "newline" machen. Hab das in nem Beispiel
gefunden. Mittlerweile hab ich das STK200 per Hyperterm angeschlossen
und mein UART vom Controller schickt mir die richtigen Daten zum PC.
Jetzt auch noch mit carriage return.

Print "atd+491710815;"   // wählt ne Nummer
Print Chr(13) ; Chr(10); // macht carriage return

Soweit so gut. Handy macht aber trotzdem nix. Hab jetzt auch noch ne
Spannung von 10V am Pin 4 des Datenkabels angeschlossen. Stand im
Forum. Handy macht nixxx. So ein Mist!!!!

von Timo (Gast)


Lesenswert?

10V???

boah... alsooo ist das nicht ein wenig  viel? Hau die bloss nicht das
Handy kaputt. Kannst du in Pascal auch direkt Hexzeichen eingeben?

Benutzt du das Experimentiertboard von Microkontroller? Da habe ich
drei  PINs auf +5V gelegt. Aber nie direkt immmer mit Diode und
Widerstand.

Macht das ";" nicht schon ein newline??

Timo

von Mogi (Gast)


Lesenswert?

10V ist schon OK.
Klar kann ich Hexzeichen eingeben. Die Progrommiersprache heißt aber
BASCOM. Ist meiner Meinung nach viel einfacher als Pascal oder C,
obwohl ich sonst C lieber mag. Experimentierboard ist glaub ich von
ATMEL steht zumindest drauf. Heißt STK200 und ist ziemlich verbreitet.
Ich glaub das STK500 hat noch ein paar mehr Möglichkeiten, aber mir
reichts.

Komm aber immer noch nicht weiter. Hab grad überlegt mit dem Controller
mal einen Befehl vom PC Hyperterm aufzunehemen. Weiß aber nicht wie ich
den im Controller abspeichern soll.

Bitte helft mir!

von Timo (Gast)


Lesenswert?

Hi,

ahh nun bin ich auch schlauer.

Also die Zusätzliche Spannung legst du ja wegen dem im Kabel vorhanden
Pegelwandler an. (max232) Weil die Betriebsspannung meist nicht
anliegt. So war es zumindest bei mir.

Da nützt dir das Anschließen vom Computer nichts. Du kannst aber die
generelle Comunikation einmal testen. Also Board über ein
Nullmodemkabel an den Rechner. Terminalprogramm auf. Flusskontrolle auf
None stellen. Da sieht du ja dann was er an den Rechner sendet. Selbst
das eingeben vom Terminal und auf dem Display Anzeigen. Muss aber nicht
am Handy laufen, halt zwecks der Betriebsspannung des MAX.

Warum programmierst du dann das nicht in C?

Grüße,
Timo

von Mogi (Gast)


Lesenswert?

Habs nun getestet. Das mit der Aufzeichnung eines Befehls vom PC im
Controller mein ich. Hat auch gleich geklappt. Finds halt komisch, dass
es in allen Richtungen geht, d.h. vom Controller zum PC, vom PC zum
Controller und ja noch vom PC zum Handy.
Nur so wie ichs brauch vom Controller zum Handy gehts nicht.
Kann es sein, dass ich die Spannung falsch angschlossen hab???

Warum nicht in C? Weils für meine Diplomarbeit ist und ich das mal in
BASCOM machen wollte.

Danke übrigens, für die schnellen Anworten.
Hoffe wir finden das Problemchen noch. Kann eigentlich gar nichts
großes sein.

von Timo (Gast)


Angehängte Dateien:

Lesenswert?

Hi,

ein kumpel macht das auch gerade für seinen Techniker. Ich nur just
for
fun.

Das Problem wird dann an deinem Kabel liegen. Er hat bestimmt 1-2
Wochen probiert bis er auf den Fehler gekommen ist.

Nimm das Kabel auseinander... schau mal, eigentlich müsste ein max2323
eingebaut sein.

Ich hänge Dir einmal das Datenblatt an, dann kannst du sehen wo er die
Betriebsspannungen haben will.

So, nun gehts ab zur Abendschule... bin ab 22h wieder online ;-)

Timo

von Semme (Gast)


Lesenswert?

Hi,

warum schließt du das Handy eigentlich nicht direkt an den µC an?
Bei mir klapp folgende Schaltung einwandfrei und sicher:
http://www.semlabs.com/avr_siemenshandy.gif
Den benötigten Lumberg-Stecker bekommst du ganz einfach, indem du dir
eine billig Freisprecheinrichtung ("Knopf im Ohr") besorgst und diese
ausschlachtest.

Ganz wichtig: Nach jedem Befehl hexadezimal A und D (bzw. dezimal 10
und 13) senden, sonst funktioniert es nicht. Das Hyperterminal macht
dies automatisch, darum funktioniert es damit aber mit dem µC nicht.

Folgende Links helfen dir vielleicht noch weiter:
http://www.nobbi.com bzw. http://www.nobbi.com/phones.htm
http://www.ct.heise.de/mobil/artikel/2002/06/17/datenkabel/

von Mogi (Gast)


Lesenswert?

Hi Timo,
Bestimmt ist da ein MAX232 drin, bloß wie kann ich die Steckerbelegung
rausbekommen. Hab Angst, dass ich da was falsch anleg und es dann
raucht. Der Stecker ist dummerweise eingeschweißt und gehört mir
nicht.

Hi Semme,
danke für die Links. Hab da auch schon vorher viel gefunden. Denke
auch, dass das am Kabel liegen muß. Werd mir dann mal einen Stecker
besorgen und deinen Vorschlag ausprobieren. Das mit mit dem 10 und 13
senden ist meiner Meinung nach auch sehr wichtig. Hab da nämlich beim
Senden vom Controller zum PC gemerkt, dass dadurch ein RETURN ausgeöst
wird. Also sehr wichtig.

von Mogi (Gast)


Lesenswert?

Hi Leute,

habs endlich hinbekommen. Man muß also den Stecker vom Handydatenkabel
und STK200 1 zu 1 auflegen, dabei aber PIN 2 und 3 vertauschen. Das ist
deswegen so, damit man das STK200 direkt am PC mit einem 1 zu 1 Kabel
anschließen kann.
Dann kommt aber noch der Knackpunkt. Man muß am Pin 4 des Handykabels
+5V anschließen (am Besten nur am Handykabel, also Verbindung zum
STK200 kappen) und von dieser Spannung GND am PIN 5 (hab die Verbinung
von STK200 und Handykabel drin gelassen).
Dann funktionierts auch mit dem Nachbarn (ähm Handykabel mein ich).

Dann schreibt man noch in BASCOM dieses kleine Progrämmchen und wird
einfach angerufen.



$baud = 19200        'Baudrate für C35i
$crystal = 4000000   'AT90L8535

Enable Interrupts

Config Serialin = Buffered , Size = 20
Config Serialout = Buffered , Size = 20


Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 ,
Db7 = Portc.3 , E = Portc.7 , Rs = Portc.6  'da hab ich mein LCD dran
Config Lcd = 16 * 2    '16Zeichen 2Spalten

Dim Name As String * 32

Name = "atd+49171(eure Telefonnummer);" 'kann auch direkt nach PRINT
kommen; siehe unten!

Cls
Do
 Lcd Name                   'Anzeige im LCD des AT-Befehls
 Wait 1
 Print Name                 'Ausgabe des Stings an die STDOUT
 Print Chr(13) ; Chr(10);   ' Macht das absolut nötige RETURN
 Wait 1
Loop

End



So einfach ist das!!

Danke Leute für die Unterstützung!!!!!!!!1

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.