Sprache mit dem RFM12 übertragen?

Gast #2439989
Lesenswert?

Hallo,

habe ein Projekt vor und benötige Hilfe bei der Umsetzung.
Ist es möglich mit einem RFM12 Sprache in annehmbarer Qualität (GSM) zu 
übertragen und was brauche ich noch dazu?

Momentan ist folgender Sachstand:

An einem Rekorder wird momentan ein Elektretmikrofon angeschlossen und 
aufgezeichnet. In dem Rekorder ist alles Verbaut was benötigt wird 
(Verstärker etc..). Die Steckverbindung zwichen Mikro und Recorder ist 
eine IP40.

Jetzt will ich statt dem Elektretmikrofon einen RFM12 Sender/Empfänger 
an den Rekorder anschliesen, welcher sein Signal von einem weiteren 
RFM12 erhält an dem wiederum ein Elektretmikrofon angeschlossen ist.

Die zu überbrückende Stecke ist max. 7 - 10 Meter.

Geht sowas bwz. hat jemand Ansätz oder ein ähnliches Projekt?

Vielen Dank im Voraus und Gruß an Alle....
#2441641
Lesenswert?

Ja, reicht aus. Beim Windows Audio Recorder z.B. kann man 8 Bit / 8 kHz 
aufnehmen. Das reicht für Sprache problemlos. Soweit ich weiss, reichen 
auch 4 Bit noch aus und unter gewissen Umständen kann man bis auf 1 Bit 
runter gehen um trotzdem noch etwas zu verstehen.

Das sind 64 Kbit/s, die Funkmodule schaffen soweit ich weiss 115.2 
Kbis/s. Solche Aufnahmen sind noch dazu gut komprimierbar.
#2443518
Lesenswert?

Hallo,

die 8 Bit sind erstmal garkein Problem, damit geht auch mehr als nur 
Sprache, alle die den Amiga noch kennen, werden mir das bestätigen.
Die 8kHz Samplerate sind für Sprache auch kein Problem, da ist es 
entscheidend, daß wirklich ein guter Tiefpass vor dem ADC hängt.
Es dürfen eben keine Signalanteile über 4kHz zum ADC gelangen.
Ein aktiver TP mit Grenzfrequenz 3,5kHz sollte es schon sein.

Das Problem sehe ich eher beim RFM12. Mit entsprechend höherer Datenrate 
in festen Paketgrößen übertragen und im Empfänger entsprechend puffern 
und dann ausgeben könnte gehen. Direkt kontinuierlich wird nicht gehen, 
woher sollte die Bytesyncronisation kommen?

Gruß aus Berlin
Michael
Gast #2443523
Lesenswert?

Michael U. schrieb:
> die 8 Bit sind erstmal garkein Problem, damit geht auch mehr als nur
> Sprache, alle die den Amiga noch kennen, werden mir das bestätigen.
> Die 8kHz Samplerate sind für Sprache auch kein Problem, da ist es
> entscheidend, daß wirklich ein guter Tiefpass vor dem ADC hängt.
> Es dürfen eben keine Signalanteile über 4kHz zum ADC gelangen.
> Ein aktiver TP mit Grenzfrequenz 3,5kHz sollte es schon sein.

Für soetwas gibts fertige Codecs aus dem Telefonumfeld. Mache machen 
auch ADPCM zusätzlich zu PCM, da geht die Datenrate noch mal runter. 
Filter sind da häufig schon drin.

MfG Klaus
#2445726
Lesenswert?

Also was mit einem ATMega noch zu schaffen ist (ausser einer AD-Wandlung 
A-Law-Lookup) ist CVSD, eine ganz einfache Deltamodulation.

http://en.wikipedia.org/wiki/Continuously_variable_slope_delta_modulation

Vorteil dabei ist, du kannst die 1-Bit-Sample-Daten auf der 
Empfaegerseite direkt ueber ein Pin als eine Art PWM-Signal ausgeben, 
etwas analoge Nachbereitung ist noch erforderlich, Gleichspannungsanteil 
filtern und ein RC-Tiefpass dahinter.
Gast #2445949
Lesenswert?

Gehen nicht auch kleine Fm modulatoren. NF signal über Mic auf 
Trägerwell modulieren und am Empfänger ein einefachen demodulator. Alles 
schön analog. wie beim guten alten Radio. So ein "testsende" hat doch 
ejder mal in der ausbildung gebastelt. Als empfänger macht es (je nach 
schwingkreisfrequenz) auch ein Radio. Das ist aber nicht so gern 
gesehen.
Gast #2447155
Lesenswert?

Naja wenn es einfach sein soll, ein FM-Modulator. Die kleinen 
"Testsender" baupläne gibt es ja noch. Ich erinner mich da an eine 
kleine schaltung bestehen aus Transitor zum mischen und verstärken und 
LC schwingkreis. L waren 4 windungen Luftspule und C war eine 
Trim-kapazität. Mit 4 Windungen wra man im Radiosignal. Mit 3 oder 
weniger sollte man in höhere Frequenzen kommen. Man sollte jedoch vorher 
den LC-Kreis berechnen. Sowas habe ich sogar noch in meiner Grabblbox 
liegen. geht sogar noch mit 12V als Betriebsspannung. :-D
Moderator Persönliche Seite #2447208
Lesenswert?

Basti schrieb:
> Ich erinner mich da an eine
> kleine schaltung bestehen aus Transitor zum mischen und verstärken und
> LC schwingkreis.

Vergiss es!  Damit wirst du die Forderungen der EN 300 220 nie im
Leben einhalten.  Allein 100 ppm maximaler Frequenzfehler (gegenüber
der Nennfrequenz) kannst du bei 434 MHz knicken mit einem einfachen
LC-Kreis (selbst dann, wenn du den Kreis auf einer niedrigeren
Frequenz aufbaust und dann vervielfachst), und um die maximal 250 nW
spurious emissions einzuhalten, wirst du wohl die ganze Apparatur
komplett in ein Weißblechgehäuse löten dürfen (mitsamt Antenne
natürlich ;-).

Begreif' doch mal, dass es Leute gibt, die nicht nur eine Bastellösung
haben wollen, sondern die die Vorschriften zumindest einzuhalten
versuchen.
Gast #2447215
Lesenswert?

Na dann brauch man auch nicht nach selbstbaulösungen suche. Ab zum 
Händelr und was vernüftiges kaufen. Sprachfunksystem gibt es ja zu 
kaufen. nicht ganz billig wenn es was gutes sein soll, aber dafür werden 
alle richtlinien eingehalten.
Gast #2447235
Lesenswert?

Ja gut, das geht. Bei beiden wird halt ein µC verwendet. Aber das muss 
der Threaterstellr entscheiden ob das gut so ist. Ich habe halt meine 
Ideen geschildert, weil die ohne µC auskommen. Ich gebe dir recht, dass 
man da auserhalb der Normen liegt, aber der Erfahrungsgewinn beim 
Senderbau ist doch gegeben.

Aber wie du schon sagtest, es geht um das einhalten der Werte und dann 
pflichte ich dir bei.
Gast #2451296
Lesenswert?

Hallo,

das geht sogar relativ einfach mit einem RFM12, ohne das man da 
irgendwas großartig codieren müsste. Und das ganze auch kontinuierlich. 
Zum einen muss man aber den FIFO des RFM auch voll nutzen, zum anderen 
ggf. mit kurzen Aussetzern rechnen falls bei der Übertragung 
irgendwelche Störungen auftreten.

Auf der Senderseite wird ganz einfach über den µC internen ADC 
gesamplet, natürlich mit Tiefpassfilter vor dem Eingang sowie hinzufügen 
eines DC Offset (der ADC macht ja nur im Bereich 0V bis Vref, also muss 
die "Nullinie" auf Vref/2 liegen). Das lässt sich ganz simpel mit einem 
Zweifach OpAmp erledigen.

Man sampled das Signal kontinuierlich und schreibt es in einen 
Zwischenbuffer. Sobald genug Bytes vorhanden sind um den RFM FIFO zu 
füllen schickt man ihm die Daten. Natürlich samplet man dabei immer im 
Hintergrund weiter. Also zwei IRQ Routinen: Einen Timer-IRQ zum Samplen, 
einen SPI IRQ um die Datenpakete zu schicken.

Auf der Empfängerseite braucht man wiederum einen Buffer, zwei Timer, 
PWM und den SPI. Ganz am Anfang wartet man auf ein Paket. Ist eines 
angekommen, wird dies in den Buffer geschrieben und ein Timer gestartet. 
Nun wartet man auf das nächste Paket. Ist das angekommen, liest man den 
Timer aus um so herauszufinden wie der Intervall zwischen den Paketen 
ist. Jetzt wird der zweite Timer gestartet um die Daten per PWM 
auszugeben. Dieser zweite Timer wird benutzt um in festen Abständen den 
PWM mit einem neuen Wert zu aktualisieren, ich gehe hier davon aus das 
das PWM in hardware erzeugt wird.

Am PWM Ausgang natürlich auch wieder ein Tiefpassfilter. PWM Frequenz 
sollte mindestens das vierfache der Samplingfrequenz betragen um eine 
annehmbare Qualität zu erhalten.

Die Interval-Zeit des zweiten Timers ergibt sich aus der Intervalzeit 
der Datenpakete, die durch den ersten Timer ermittelt wird, geteilt 
durch die Anzahl der Bytes pro Paket. Natürlich muss der erste Timer 
auch weiterhin benutzt und ausgewertet werden, da ja die Sende- als auch 
die Empfangsseite geringe Schwankungen haben durch Temepraturdrift der 
Oszillatoren.

Man sollte auch überprüfen ob die Paket-Intervallzeit plausibel ist. 
Kommt in der erforderlichen Zeit kein neues Paket, einfach das zuletzt 
empfangene Byte weiter ausgeben, bis neue Daten da sind. In jedem Fall 
empfiehlt es sich eine Einfachst-Checksum mit zu senden, z.B. indem man 
ganz einfach alle Bytes zusammenaddiert, wobei das Ergebnis auch wieder 
ein Byte ist das dann ganz einfach "Überläuft". Z.B. check = check + 
databyte, wenn check 0xFE ist, und databyte ist 0x10, ist das Ergebnis 
dann eben 0x0E. Das passiert ja automatisch wenn man kontinuierlich auf 
ein Byte aufaddiert. Als Ausgangswert muss natürlich immer der gleiche 
Wert pro Paketstart genommen werden. Auf der Empfangsseite prüft man das 
dann, und wenn es nicht stimmt verwirft man das Paket. Dadurch würden 
dann die Anfangs erwähnten Aussetzer entstehen.

Die Datenrate des RFM12 ist ausreichend für diese Methode. Man kann ihn 
auch mittels externem Filter mit 256 kBit betreiben, soweit ich das noch 
in Erinnerung habe. Macht man das, so kann man im Falle einer Störung 
das letzte Paket erneut übertragen lassen. Das erreicht man indem der 
Empfänger jedes Paket positiv quittiert (ACK), oder halt einen fehler 
erkennt und negativ quittiert (NACK), woraufhin dann der Sender das 
Paket erneut schickt. Bei so kurzer Entfernung ist die 
Übertragungsqualität aber eigentlich in den meisten Fällen ausreichend.

Irgendwo habe ich auch passenden Code dafür rumfliegen, weil ich genau 
das vor ca. 2 1/2 Jahren mal gemacht habe, vielleicht finde ich den ja 
auf itgendeiner Backup-Platte wieder, dann stelle ich ihn hier rein.

Grüße,

Chris

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren