Forum: Mikrocontroller und Digitale Elektronik wie Daten übers Telefon transportieren?


von Egon M. (kpc)


Lesenswert?

Hallo,
ich habe da einige Meßwerte, die würde ich gern einem Anrufer mitteilen.

Ich hatte daran gedacht, daß die Schaltung den Anruf detektiert, abhebt, 
die Daten akustisch über die Leitung gibt und dann wieder auflegt und 
auf den nächsten Anruf wartet.

Schaltung und Programm für die Meßwertaufbereitung funktionieren, aber 
an der Anbindung an das Telefon habe ich seit sehr langer Zeit nichts 
mehr gemacht.
Damals war das Telefon noch analog, jetzt habe ich eine Fritzbox 
zwischen mir und der Außenwelt.

Früher war das mit den div. Spannungen auf der analogen Telefonleitung 
etwas umständlich. Ich vermute, man nimmt heute einfach ein Handy, das 
permanent mit der Ladestation verbunden ist.
Aber welches Handy bzw. welche Schnittstelle zum Controller (bei mir 
ATMega16), wie wird das Handy angesprochen usw. usf.

Hat jemand ein paar Literaturhinweise oder direkte Tips, wie man das 
heute managt?
Vielen Dank schon mal
Viele Grüße
Egon


von Sab (Gast)


Lesenswert?

Die Frage ist zuerst, ob der Angerufene eine Person oder ein Rechner 
ist. Beim Ersteren wuerde man eine Sprachausgebae machen, beim Zweiten 
waere ein SMS, oder GPRS besser geeignet.

von Jochen S. (jochen_s)


Lesenswert?

Hallo, du schreibst einmal von einer Fritzbox und dann von GSM wie 
willst du arbeiten langt dir festnetz??? dann würde ich ein altes 
Telefon und ein altes analoges Modem nehmen das ganze parallel an einen 
analogen Port der Fritzbox. Nun kannst du mit dem Modem über dern 
AT-Befehlssatz eine Nummer wählen (serielle Schnittstelle des µC mit 
Max232. Dann kannst du über ein Relais den Hörer abheben und hast nun 
die Anschlüsse für Mikrofon und Hörer und kannst die Daten zum Beispiel 
nach Packet Radio Methode (1er und 0er haben bestimmte Töne) übertragen. 
Ein Modem hat auch einen sogenannten RI (Ringindicator=> Gibt ein Signal 
aus wenns Telefon klingelt). Du könntest zum Beispiel für diese 
Übertragung eine eigene MSN (nachdem du von Fritzbox schreibst denke ich 
du hast ISDN) nehmen sodass Fehlanrufe ausgeschlossen sind. Man könnte 
die Daten eventuell auch direkt übers Modem übertragen, das habe ich 
jedoch noch nicht probiert bin aber an einem ähnlichen Projekt 
(Telefonanbindung des Hausbuses). Welche Baudrate willst du nutzen 
beschreib dein Problem doch bitte etwas näher.

Jochen

von Egon M. (kpc)


Lesenswert?

Hi, Sab

Sab wrote:
> Die Frage ist zuerst, ob der Angerufene eine Person oder ein Rechner
> ist. Beim Ersteren wuerde man eine Sprachausgebae machen, beim Zweiten
> waere ein SMS, oder GPRS besser geeignet.

Es ist eine Person!
Und die Sprachausgabe funktioniert schon.
mfg
Egon

von Jochen S. (jochen_s)


Lesenswert?

AXo na dann!!

Dann würde ich es machen wie oben beschrieben nur noch etwas 
vereinfachen. Ich bleibe jedoch dabei das ganze an einem analogPort 
bleiben ist einfacher. Es gibt schaltungen die ein klingeln erkennen 
allerdings was kostet heute noch ein analoges modem oder beim telefon 
irgenwie das klingeln am Lautsprecher detektieren dann über Relais den 
Gabelkontakt betätigen und die Mikrofonkapsel ausbauen und daran die 
Sprachausgabe anschliessen (grosser widerstand dazwischen sonst 
übersteuerts wegen dem Mikrofonvorverstärker.)

Jochen

von Jochen S. (jochen_s)


Lesenswert?

Mal was anderes wie hast du die Sprachausgabe realisiert???


Jochen

von Egon M. (kpc)


Lesenswert?

Hi Jochen,
meinen Hinweis auf die Fritzbox hatte ich in der Vermutung gemacht, daß 
es da vielleicht einfache Verbindungen zu externen Microcontrollern 
geben könnte, da doch schon mal MCU-unfreundlichen Zustände auf der 
Telefonleitung in der Fritzbox in MCU-gerechte Zustände umgewandelt 
sind.

Etwas ganz anderes wäre ein Handy, dazu braucht man natürlich keine 
Fritzbox. Ich vermute, da gibt es sicher schon unzählige Lösung.

Leider weiß ich nicht, was einfacher ist. Möglich wäre bei mir beides; 
es handelt sich um eine ortsfeste Anlage mit Telefon und ohne Funkloch.

mgf
Egon

von Jochen S. (jochen_s)


Lesenswert?

Bliebe die Frage nach den kosten. Die Ansteuerung des handys lässt sich 
(je nach Handytyp) auch mit dem AT-Befehlssatz realisieren. Die sollten 
eigentlich auch einen At-String rausschicken, wenn ein Anruf ankommt. 
Würde aber im Leitungsgebunden Bereich bleiben wenn mobilität keine 
Anforderung wäre so blieben schon mal die Kosten für Handy, Vertrag usw. 
aussen vor.

Hast du analogports frei an deiner Anlage?? ein altes analoges Telefon 
das du zerflücken kannst?? Oder ein ISDN-Telefon das du zerflücken 
kannst das bleibt sich hier dann gleich. (analoges Telefon kosten bei 
Pollin 7€, ISDN schon ne ganze Ecke mehr) da greifst du das Signal vom 
Lautsprecher ab und bereitest es zu einem Digitalen Schaltsignal Klingel 
um, welches deinem µC sagt "es klingelt geh ran" dann eben das Relais 
oder eine Transistorschaltung welche den Gabelkontakt (der Kontakt des 
Hörers ob aufgelegt oder nicht) betätigt und speisst dann über den 
Mikrofoneingang dein Sprachsiganal ein. Wie oben beschrieben wegen 
Mikrofonvorverstärker (alternativ eine OP-Schaltung mit Verstärkung 
kleiner 1).

Jochen

von Egon M. (kpc)


Lesenswert?

Jochen S. wrote:
> Mal was anderes wie hast du die Sprachausgabe realisiert???
>
>
> Jochen

Ich habe in einen Sprachbaustein (ISD 2560 glaube ich, heißt das Ding, 
ich müßte nachsehen) die einzelnen Ziffern und Dimnsionen (z.B. "Grad 
Celsius") gespeichert, dann die Meßwerte in Ziffern zerlegt und 
schließlich die entsprechende Speicherstelle des Sprachbausteins 
angewählt zwecks akustischer Ausgabe der Ziffern.

Der MC wartet solange, bis ihm ein Anruf signalisiert wird, dann führt 
er sein Meßprogramm aus (waren damal 4-5 Meßwerte, die er "vorliest") 
und bewirkt das Auflegen des Telefons. Hat damals gelegentlich 
funktioniert, aber der Baustein, den ich dafür hatte, war ziemlich 
kapriziös, deshalb habe ich auf bessere Zeiten gehofft - die nun längst 
angebrochen sind.

Vielleicht erinnerst Du Dich an die Sendereihe "Computerclub" im WDR? 
Dort gab es mal das Projekt "Lallus", das hat mich angeregt, allerdings 
habe ich dann einen anderen Prozessor genommen (68HC12 von 
Motorola/Freescale) und das Programm ist auch ganz anders geworden, aber 
die Bauteile habe ich größtenteils benutzt.

Leider habe ich den Umstieg auf ein normales Modem seinerzeit aus 
Zeitgründen unterlassen, außerdem hatte ich nirgends Einzelheiten 
gefunden, wie anschließen und wie ansteuern.

Viele Grüße
Egon

von Jochen S. (jochen_s)


Lesenswert?

klar Lallus sagt mir was, war jedoch vor meiner aktiven Zeit ;-)

Danke für die Info mit dem Sparchbaustein ist mir bekannt, dachte es gäb 
vielleicht fetig besprochene ICs denen man einfach die Zahlen per uart 
rüberschickt und der das "vorliest"

Jochen

von yalu (Gast)


Lesenswert?

Ein weiterer möglicher Ansatz unter Verwendung der Fritzbox, wenn auch
noch sehr unausgegoren:

Die Fritzboxen sind highly hackable, zumindest waren sie es bis vor
einiger Zeit. Der zentrale Baustein dieser Fritzboxen ist der AR7 von
TI, der einen MIPS-Prozessor, einen DSP, Ethernet- und USB-Device-
Schnittstelle und etliche weitere I/O-Funktionen enthält. Wesentliche
Teile der Firmware für den MIPS-Prozessor sind Opensource, das Ganze
läuft unter Linux.

Ich selber habe ein DSL-Router/Modem von D-Link, das praktisch die
gleichen Innereien enthält, allerdings keinen Telefonanschluss für
VOIP. Die Konfigurationssoftware ist D-Link-spezifisch, aber die
Basics (Linux-Kernel, Shell, HTTP-Server usw.) kommen von TI bzw.
Montavista und sind praktisch für alle auf dem AR7 basierenden Geräte
(auch diejenigen von Netgear, Linksys usw.) gleich. Das D-Link-Gerät
hat intern eine über eine Stiftleiste zugängliche RS-232-Schnittstelle
(3,3 V), mehrere digitale Ein- und Ausgänge, die teilweise durch LEDs
und den Factory-Reset-Knopf belegt sind und (vermutlich) eine
JTAG-Schnittstelle.

Ich habe schon seit längerem vor, damit eine über das Internet
zugängliche Steuerzentrale für verschiedenene Hausfunktionen (Rolläden
öffnen/schließen, Raumüberwachung, Blumengießen usw.) zu realisieren,
habe aber das Projekt aus Zeitmangel eingefroren.

Ein paar wenige Dinge, die ich schon hingekriegt habe, zeigen aber,
dass der Plan realistisch ist: Ich kann

- C-Programme auf einem PC mit dem MIPS-GCC kompilieren, per FTP ins
  RAM des Routers laden und dort ausführen,

- einen zweiten HTTP-Server starten, der eigene Webseiten im Internet
  verfügbar macht,

- das System so umkonfigurieren, dass meisten der LEDs und der
  Factory-Reset-Knopf ihre ursprüngliche Funktion verlieren und durch
  eigene Software ansprechbar und damit als digitale I/O-Leitungen
  genutzt werden können,

- die serielle Schnittstelle ansprechen und

- das im Flash-Speicher befindliche Filesystem-Image modifizieren, um
  neue Funktionalitäten permanent verfügbar zu machen.

Damit ist es bspw. möglich, einen µC anzuschließen, Messdaten über den
HTTP-Server ins Internet zu stellen und über das Internet Aktionen auf
dem µC auszulösen.

Für deine Anwendung müsste man zusätzlich herausfinden, wie das
Telefoniemodul angesprochen wird. Es gibt im Netz Foren, in denen die
Fritzbox regelrecht zerpflückt wird, vielleicht wirst du da fündig.

Noch ein Hinweis, bevor du loslegst: Der Hersteller AVM sieht solche
Aktionen wohl nicht so gerne und gewährt aus verständlichen Gründen
keine Garantie auf "zerflashte" Geräte mehr. Es ist wahrscheinlich
(hab's noch nicht probiert :)) möglich, den Bootloader im Flash zu
überschreiben, so dass der Originalzustand nur mit geeigneten Tools
über die JTAG-Schnittstelle wiederhergestellt werden kann. Jedoch kann
man sehr viele Dinge ausprobieren, ohne das System neu zu flashen.
Wenn dann etwas abstürzt, hilft immer noch Aus- und Einstecken  des
Netzteils.

von Michael U. (Gast)


Lesenswert?

Hallo,

wenn es ein einmaliges Gerät und analog werden soll:

Modem mit Telefonfunktion vom Flohmarkt besorgen, per RS232 an den AVR, 
wenn RING gemeldet wird, eben mit AT-Kommando abnehmen, 
Telefonmode-setzen und die Ausgabe in den Mokrofon-Anschluß des Modems 
einspielen.

Modem ist vermutlich recht schnell zu finden, die AT-Kommandos sollten 
bei den Linuxern in deren Sourcen zu finden sein, wenn man sonst keine 
Unterlagen zum Modem im Internet findet.

Selberbauen analog: Kondensator ca. 0,47µ 250V, Widerstand 2k + 
Optokoppler mit Diode in Gegenrichtung parallel für die Anruferkennung, 
Relais und ein Übertrager 1:1...10:1 für die NF.
Wenn der Anruf erkannt wird, mit dem Relais den Übertrager an die 
Leitung schalten und die Ausgabe da einspielen.

Sind ein paar Teile aus der Bastelkiste...

PS: natürlich darf das nicht am öffentlichen Telefonnetz betrieben 
werden..........

Gruß aus Berlin
Michael

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Externe Voicemodems gibt es sogar noch heute zu kaufen, kürzlich bei 
Angelika welche gekauft (wenn auch für einen anderen Zweck). Heißt da 
"MODEM 56K", knapp 23 EUR.

von Egon M. (kpc)


Lesenswert?

Hallo,

Michael U. wrote:
> Hallo,
>
> wenn es ein einmaliges Gerät und analog werden soll:
>
> Modem mit Telefonfunktion vom Flohmarkt besorgen, per RS232 an den AVR,
> wenn RING gemeldet wird, eben mit AT-Kommando abnehmen,
> Telefonmode-setzen und die Ausgabe in den Mokrofon-Anschluß des Modems
> einspielen.
>
> Modem ist vermutlich recht schnell zu finden, die AT-Kommandos sollten
> bei den Linuxern in deren Sourcen zu finden sein, wenn man sonst keine
> Unterlagen zum Modem im Internet findet.
>
ich glaube, das ist nach meinem Geschmack.  Einige Modems habe ich da 
noch herumliegen (von Elsa).

Ich fürchte, die Suche nach MC-gerechten Anschluß-Unterlagen und 
Methoden, AT-Codes zu empfangen und zu senden, wird etwas mühselig 
werden.
Ich erinnere mich an frustierende Suchergebnisse vor vielen Jahren. Aber 
vielleicht hat die inzwischen wieder abgeebbte Welle der analogen Modems 
genügend Informationen hinterlassen.

mfg
Egon

von Jochen S. (jochen_s)


Lesenswert?

Also,

Wenn dein Modem das unterstütz:

Häng das Modem an den Pc Nimm Hyperterminal oder so was und probiere 
das:

AT+FCLASS=?

Dies zeigt die Modi an die das Modem unterstützt hier sollte nun die 8 
dabei stehen das bedeutet das es voll Voice fähig ist.

Dann AT+FCLASS=8
damit setzt du es in den Voice Modus nun schlies ein Mikro an und 
schlies die telefonleitung an und schreib

ATD(deine Handynummer)

dann sollte dein Handy Klingeln und du solltest sprechen können.

Dann sollte das Modem einem RI haben ist ein PIN in der rs232 
Standartschnittstelle: Hier solltest du einen Anruf erkennen können.

Gruss Jochen

von Egon M. (kpc)


Lesenswert?

Jochen S. wrote:
> Also,
>
> Wenn dein Modem das unterstütz:
> Häng das Modem an den Pc Nimm Hyperterminal oder so was und probiere
> das:
> AT+FCLASS=?
> Dies zeigt die Modi an die das Modem unterstützt hier sollte nun die 8
> dabei stehen das bedeutet das es voll Voice fähig ist.
> Dann AT+FCLASS=8
> damit setzt du es in den Voice Modus nun schlies ein Mikro an und
> schlies die telefonleitung an und schreib
> ATD(deine Handynummer)
> dann sollte dein Handy Klingeln und du solltest sprechen können.
> Dann sollte das Modem einem RI haben ist ein PIN in der rs232
> Standartschnittstelle: Hier solltest du einen Anruf erkennen können.
> Gruss Jochen


Tatsächlich, das funktioniert!
(abgesehen vom Auflegen, aber das finde ich sicher noch heraus)

Heißt das also, man muß den RI-PIN des Modems herausfinden, den PIN zum 
Abheben, die Mikro-Leitungen und noch irgendeinen Reset-PIN zum 
Auflegen?
Und dann das MC-Programm auf RI warten lassen, wenn das kommt, Abheben, 
die Messung und akustische Ausgabe ausführen und anschließend wieder 
auflegen lassen - und das war es dann?
Wäre schön einfach!

Aber vielleicht kommen noch einige Probleme hinzu für die Pegelanpassung 
des Sprachbausteins. Die Schnittstellen-PINs der RS232 kann man doch 
wohl direkt an die I/O-Ports anschließen?

mfg

Egon

von Ralf W. (Gast)


Lesenswert?

Wie Jochen schon schrieb, RI ist ein Pin der RS232 Schnittstelle.
Das Modem sollte hier ein Signal anlegen wenn es klingelt.
Alternativ geben die Modems aber auch Statusinformationen ganz normal
über die RS232 aus. Google mal nach AT Befehle. Hab auch mal bei 
Wikipedia gesucht. Da findet sich auch was.

Auflegen kannst du zB. wenn du ATH1 ans Modem sendest.
AT bereitet das Modem für den Empfang eines Befehls vor. (Auf AT ohne
    Parameter antworten die meisten Modems mit OK).
Hn Disconnect (Hang up)
    1 (eins) If on-hook, the modem will go off-hook and enter command 
mode.

Abheben tust du dann auch in dem du einen entsprechenden AT Befehl ans 
Modem
sendest.
Das kannst du alles wie schon vorgeschlagen mit Hyperterminal probieren
bevor du das mit dem Controller umsetzt.

Das das Modem mit dem 5V Pegel des Controllers funktioniert glaube ich 
nicht.
Dafü gibt es Pegelwandler (zB. MAX232).

gruss ralf

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Der Pin RI muss übrigens nicht unbedingt ausgewertet werden, das Modem 
sendet über die Datenleitung den Text "RING", wenn's klingelt. Ein 
Portpin gespart.

Afaik geht das Auflegen auch mit ATH<CR> (was ATH0 entspricht).

Abheben funktioniert mit ATA<CR> oder aber vollautomatisch, wenn 
ATS0=1<CR> gesetzt ist. Die Anzahl der Rufzeichen kann mit dem 
numerischen Wert festgelegt werden, hier 1.

von Michael U. (Gast)


Lesenswert?

Hallo,

den normalerweise nötigen Hardware-Hanshake kann man vermutlich auch 
einsparen, wenn man die Quittungsleitungen für das Modem passend 
verbindet.
Es sollen ja nur wenige Daten gesendet und empfangen werden.

Der µC muß dann nur sicher die längste Antwortsequence des Modems 
puffern können und beim Senden der Kommandos auf den Modembuffer 
verlassen. Ausprobieren, sonst eben zwischen den Zeichen passende Pausen 
lassen.

Das kann man alles vorher in Ruhe mit einem Terminal-Programm testen, 
passendes RS232-Kabel löten, Terminal auf no Handshake und probieren...

Ich weiß jetzt nur nicht mehr, wer mit wem gebrückt werden mußte, um den 
Hanshake auszutricksen.

Gruß aus Berlin
Michael

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Habs mal aus Spaß bei meinem Modem probiert, scheint zu gehen :)
Aber mein Modem meldet kein RING wenns klinglt und auch das 
Statusregister für die Anzahl eingegangener Klingelzeichen ist immer 000 
:(
Weiß jemand wodran das liegen könnte?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Dein Modem meldet kein "RING"? Das kann daran liegen, daß es stattdessen 
eine numerische Codierung verwendet; mit einem AT-Befehl kann zwischen 
dieser und der Klartext-Variante umgeschaltet werden. Weiß allerdings 
gerade nicht, wie die heißt.

Die unangenehmere Alternative wäre die, daß Dein Modem das Klingeln 
nicht erkennt, weil es eine andere Rufwechselspannung erwartet o.ä. 
(sowas soll bei nicht-für-den-deutschen-Markt gebauten Modems vorkommen 
können, in natura habe ich das mal bei einem PCMCIA-Modem für Spanien 
erlebt).

Mit "Statusregister für die Anzahl..." meinst Du aber nicht S0? Das 
nämlich ist kein Statusregister, sondern ein Konfigurationsregister, in 
das Du die Anzahl der Rufzeichen eintragen sollst, nach denen das 
Modem automatisch abhebt.

Was'n das für'n Modem?

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Naja wenns klingelt kommt einfach NIX auf vom Modem ans Terminal (wählen 
etc geht, abheben hab ich jezt nicht probiert) Das ganze ist ein V.90 
Modem von Creatix glaub ich.
Angeschlossen ist das ganze an der Splitterdose.

von Rahul D. (rahul)


Lesenswert?

Hast du mal die Spannung am RING-Pin gemessen?
Dann solltest du mal das Abheben probieren.

von Andreas K. (oldcoolman)


Lesenswert?

@ Zimmi...

glaubst du mit stalking kommst du weiter?

montiere lieber einen lasermesser aufm drehteller und mach deine
versuche anstatt hier über andere zu schimpfen.

Gruß
Andreas

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.