Forum: Mikrocontroller und Digitale Elektronik Digitale Sprachübertragung


von meisteralex (Gast)


Lesenswert?

Hi Leute,
wollte mal fragen über welchen aufwand es möglich ist sprache digital 
über funkmodule zu übertragen (die conrad-standarddinger von aurel).
Ist das leicht, also gibts dafür fertige ics oder ist das ein heiden 
aufwand ?
meiner meinung nach bräuchte man ja nur nen a/d wandler und etwas was 
den datenstrom in seriell änderd , oder ?

von Magnus Müller (Gast)


Lesenswert?

Wie hoch ist den die Übertragungsgeschwindigkeit der Module in 
kBit/Sekunde? Wahrscheinlich scheitert das Ganze ausschliesslich an 
einem zu geringen Datendurchsatz der Funkstrecke.

Gruß,
Magnetus

von meisteralex (Gast)


Lesenswert?

die Datendurchsatzrate liegbt bei 19200 b/s also ca 20 kbits = 2,5 KByte
Sprache benötigt eine Bandbreite von mind. 3000 hz, das heißt man könnte 
eine abtastfrequenz von 6 mal die Sekunde ansteuert (hört sich das an 
??)
was ist wenn man ne lauflängenkodierung zwischenschaltet ?, dafür müsste 
es doch einfachste bausteine geben oder ?

von Magnus Müller (Gast)


Lesenswert?

meisteralex wrote:
> die Datendurchsatzrate liegbt bei 19200 b/s also ca 20 kbits = 2,5 KByte
> Sprache benötigt eine Bandbreite von mind. 3000 hz, das heißt man könnte
> eine abtastfrequenz von 6 mal die Sekunde ansteuert (hört sich das an
> ??)

Definitiv falsch gerechnet.

19200 b/s = 19200 BITs pro Sekunde

Angenommen, du samplest das Audiosignal mit 8Bit und überträgst es der 
Einfachheit halber wie mit einer RS232 (1 Startbit, 8 Datenbit, 1 
Stopbit), dann benötigst du für 1 Sample bereits 10Bit.

Rechnung:

   19200 Baud / 10 Bit = 1920 Byte/s

Das macht dann heoretisch eine maximal übertragbare Frequenz von 
910Hz.

Klingt nicht gerade gut, oder?

Gruß,
Magnetus

von meisteralex (Gast)


Lesenswert?

wie kommst du von 1920 Byte/s auf 910 Hz ?

von Magnus Müller (Gast)


Lesenswert?

1920 / 2 = äääääh.... 960 (!)

Sorry ;)

von Rahul D. (rahul)


Lesenswert?

>wie kommst du von 1920 Byte/s auf 960 Hz ?

Shannon-Theorem
http://de.wikipedia.org/wiki/Claude_Elwood_Shannon

Klingt dann wirklich wie "Eimer"...

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Nun, wenn man die Audiodaten unkomprimiert überträgt, dann genügt die 
Bandbreite nicht. Hat man aber auf beiden Seiten der Übertragungsstrecke 
ausreichend Rechenleistung zur Verfügung stehen, kann man die Audiodaten 
komprimieren und so die Bandbreite erheblich besser ausnutzen. Die von 
GSM-Telephonen verwendete Kompression (GSM 6.10) kommt mit einer 
Übertragungsrate von etwa 1 kByte/sec aus. Und wie gut die klingen kann, 
ist jedem "Händie"-Nutzer wohlvertraut.

Weitere Informationen gibts hier 
http://kbs.cs.tu-berlin.de/~jutta/toast.html - ob die dort angebotenen 
Sourcen auf einen der üblichen µCs portierbar sind und ob dessen 
Rechenleistung genügt, das muss jetzt jemand anderes herausfinden.

Viel Spaß dabei.

von meisteralex (Gast)


Lesenswert?


von Beurteiler (Gast)


Lesenswert?

Eigentlich brauchts "nur" das gsm_encode.c und das gsm_decode.c.
Wäre ein Versuch wert, dass auf einen AVR zu portieren...

von Beurteiler (Gast)


Lesenswert?

Oder wäre es nicht einfacher mit ADPCM zu komprimieren? Das töt 
weinigstens brauchbar und braucht nicht so viel Rechenleistung.

von meisteralex (Gast)


Lesenswert?

wie geh ich denn an die sache ran ? also erstmal nen a/d wandler und 
dann ???

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Ein ARM dürfte wegen der geforderten 32-Bit-Arithmetik wohl geeigneter 
sein:

> Our implementation [is] destined to be compiled and used
> on a Unix-like environment with at least 32-bit-integers,
> but others have ported it to VMS and a MS-DOS 16-bit-environment.

Na schön, 16-Bit-CPUs gehen wohl auch, aber der AVR kann nunmal nur 
reine 8-Bit-Arithmetik. Alles andere ist entsprechend aufwendig in 
Software nachzubilden.

> GSM 06.10 is faster than code-book lookup algorithms such as
> CELP, but by no means cheap; to use it for real-time
> communication, you will need at least a medium-scale workstation.

Gut, eine "medium-scale workstation" von 1992 ist heute nicht mehr 
ehrfurchtgebierend. Zu der Zeit waren 386er mit 33 MHz "top notch", und 
da es wohl nicht auf FP-Arithmetik ankommt, sollte dessen Performance 
mit einem aktuellen ARM7-µC (Atmel SAM7xx oder Philips/NXP LPC2xxx) zu 
erreichen sein.

Viel Spaß.


von Nachdenklicher .. (dms)


Lesenswert?

Servus Alex,
was ist denn das Ziel - die Nutzanwendung - welche Qualität wird 
gewünscht?

Ahoi D.

von Marius S. (lupin) Benutzerseite


Lesenswert?

Warum überträgst du das Signal nicht analog? Die module sind an sich für 
analoge übertragungen ausgelegt (deshalb auch die Angabe der 
Bandbreite).

Versuch doch einfach mal ein verstärktes Mikrofonsignal an den sender an 
zu schließen und den empfängerausgang einfach mit line in deines PCs 
verbinden.

von meisteralex (Gast)


Lesenswert?

Anwendungsfall ist einfach eine sichere Sprachübertragung zu 
gewährleisten.
Die Module von Conrad können meiner meinung nach nicht direkt mit NF 
moduliert werden, wie soll das funktionieren, wenn der Eingang digital 
ist ?

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Wenn es nur darum geht die Sprache halbwegs verstehen zu können, dann 
sollte sich mit ~20 kbit/s schon etwas hinbekommen lassen, auch ohne 
dass man schwere Geschütze wie GSM-Codecs auffahren muss. Nimm dir mal 
Matlab oder Scilab her und probier verschiedene einfache 
Komprimierungsverfahren durch. Vielleicht reicht es ja schon, einfach 
nur mit 2 Bit pro Sample zu quantisieren. Ansonsten: DPCM, 
logarithmische Quantisierung mit 2-4 Bit, ... auf einem AVR kein 
Problem.

von Benedikt K. (benedikt)


Lesenswert?

Ale Komprimierungsverfahren haben aber einen Nachteil: Bei einem 
Übertragungsfehler werden je nach Verfahren mehr oder weniger viel 
Samples zerstört. Vor allem wenn ein Datenblock auf dem vorhergehenden 
aufbaut. Schön ist das z.B. bei einem mpeg oder DivX Film zu sehen: Ein 
Fehler ist bis zur nächsten Keyframe sichtbar, und das kann schonmal für 
>10s sein.

Wenn man etwas mit Übertragungstechnik experimentieren will, ohne eine 
große Bandbreitenbeschränkung zu haben: Mit einem Videosender kann man 
problemlos auch UART Daten bis >1MBit/s übertragen: Das Sendesignal über 
einen 330Ohm Widerstand auf den Sender geben, und am Empfänger das 
Signal über einen Komparator mit 0,5V Schwelle wieder auf 5V Pegel 
bringen.

Damit kann man dann wunderbar Audio in CD Qualität (16bit, Stereo, 
44kS/s) übertragen. Nur ab etwa 20m Entfernung fangen dann die Fehler 
an. Irgendeine einfache Fehlerkorrektur oder Erkennung sollte man also 
einbauen.

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.