erstellt 03.08.2009
|
|||
Mit Atmega 8 L ein Handy ansteuern - 1. Erweiterung |
|||
Im
vorigen Projekt wurde ein Siemens Handy S45 von einem Microkontroller (
Atmega8L ) angesteuert und bei einem Alarm wurde vom Handy aus ein Anruf
abgesetzt. Diese Schaltung soll nun weiterentwickelt werden, so das ich eine Meldung am Microkontroller bekomme wenn am Handy ein Anruf eingeht. |
|||
Also
erst einmal das Handy vom PC aus direkt über das Original ( Siemens
Handy Datenkabel) mittels Terminal Programm anschließen um zu sehen was
passiert eigentlich wenn ein Anruf eingeht. Nach dem anschließen hab ich erst einmal das Handy angerufen und konnte am Terminal sehen das folgender Text vom Handy zum PC gesendet wurde " RING". Also gibt das Handy einen Textstring aus wenn es angerufen wird. Nun kann das Handy wieder am Microkontroller angeschlossen werden und es gilt jetzt den Textstring auszuwerten . Der Text braucht aber nicht Expliziet ausgewertet werden, sondern uns interessiert ja nur ob überhaupt ein Anruf gekommen ist , also nur ob irgend etwas an Text vorhanden ist. Dazu wurde im vorigem Programm einige Programm-Zeilen hinzugefügt ( Im Programm unten grün unterlegt) |
|||
Dazu
muss erst einmal eine zusätzliche Datenleitung angeschlossen werden,
und zwar die Datenleitung die vom Handy ausgehend Daten zum Atmega sendet ( hier Rot eingezeichnet). Als weiteres wurde noch ein Blaue Led zugefügt , sie soll anzeigen wenn am Handy ein Anruf eingeht. |
|||
Funktion |
|||
Die
Betriebsspannung erfolgt durch 2 Stk. Akkus (Mignon AAA). Wird der Kontakt (Jumper an Pin 5) geöffnet oder der Kontakt ( Jumper an Pin 5) geschlossen wird eine zuvor gespeicherte Telefon Nr. angerufen und nach mehrmaligem Klingel wird wieder aufgelegt, so das keine Kosten entstehen wenn am anderen Ende nicht abgenommen wird. Umgekehrt kann die Alarmanlage auch angerufen werden , in diesem Fall leuchtet die Blaue Led. |
|||
Programm |
|||
Zeile |
Programm |
Beschreibung |
|
1. | $regfile "m8def.dat" | 'Definiert den Atmega als Atmega 8 | |
2. | $baud = 19200 | ' Datenübertragungsrate für RS232 Datenkabel | |
3. | $crystal = 1000000 | 'Taktfrequenz angeben | |
4. | Ddrd = &B00000100 | ' Port D.2 als Ausgang setzen | |
5. | Portd=&B00011000 | 'Pull Up setzen für PinD.3 und D.4 | |
6 | Ddrb = &B00000001 | ' PortB.0 als Ausgang setzen | |
7 | Config Lcd = 16 * 2 | 'definiert das LCD Display in Art und Größe | |
8 | Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.3 , Db6 = Portb.2 , Db7 = Portb.1 , Rs = Portc.5 , E = Portb.5 | ' Definition der Display-Anschlüsse | |
9. | DIM inaktiv As Byte | Variable setzen | |
10. | DIM Anrufzeit As Byte | Variable setzen | |
11 | Dim Empfang As String * 1 | ||
12. | Inaktiv=60 | Vorgabezeit in Variable ablegen | |
13. | Anrufzeit=19 | Vorgabezeit in Variable ablegen | |
14. | Wait 4 | 'Pause von 4 Sekunden | |
15. | Cls | 'Display löschen | |
16. | Portd.2=0 | ||
17. | Do | ||
18. | Portd.2=1 | ||
19. | if PinD.3=1 ThenWaitms 20 | ||
20. | if PinD3=1 Then Gosub Alarm | ||
21. | if PinD.4=0 Then Waitms 20 | ||
22. | if PinD.4=0 Then Gosub Alarm | ||
23. | Waitms 300 | ||
24. | PortD.2=0 | ||
25 | Empfang = Inkey() | ||
26 | If Empfang <> Chr(0) Then | ||
27 | Portb.0 = 1 | ||
28 | Else | ||
29 | Portb.0 = 0 | ||
30 | End If | ||
31. | Loop | ||
32. | End | ||
33. | :Alarm | ||
34. | LCD"ATDP+49XXXXXXXX;" | Nummer wählen und abnehmen | |
35. | Print"ATDP0XXXXXXXX" | Anzeige der Nummer auf Display | |
36. | Wait Anrufzeit | ||
37. | Print "AT+CHUP" | Hörer wieder auflegen | |
38. | Wait Inaktiv | ||
39 | Return | ||
40 | End | ||
Programm als Bascom Datei hier laden | |||
Aktualisiert 30.06.2019 |
|||
Copyright by Ms 2009 |
|||