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....
Thron schrieb:
> was brauche ich noch dazu?
Einen µC mit ADC und DAC und Software und noch ein paar Kleinigkeiten.
Einfacher:
Du baus ein Funkkopfhörersystem um.
Um Sprache digital mit GSM zu codieren/decodieren brauchst
du die Rechenleistung eines DSP, ein µC ist damit hoffnungslos
ueberfordert.
Warum nicht einfach ein Funkmikrofon einsetzen ?
Axel, er wollte das doch nicht mit GSM codieren, sondern nur in mit
GSM vergleichbarer (also recht miserabler ;-) Qualität übertragen.
Keine Ahnung, ob dafür ein RFM12 ausreicht, vermuten würde ich es
schon.
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.
P. M. schrieb:> nter gewissen Umständen kann man bis auf 1 Bit> runter gehen
Aber nicht mehr bei 8 kHz Abtastfrequenz. ;-)
ISDN hat auch 8 kHz und 8 Bit Auflösung, allerdings mit einer
Mapping-Tabelle names µ-law, sodass es effektiv 12 bit sind. Aber
zwischen ISDN und GSM liegen in der Qualität ja schon Welten
dazwischen.
hallo....
okay...alles recht interessant aber bis jetzt noch nichts handfestes!?
Hat keiner eine Idee?
Und ja...will nur in "misserabler Qualität" (8 bit) aufzeichnen...*gg*
gruß..
martin schrieb:> Und ja...will nur in "misserabler Qualität" (8 bit) aufzeichnen...*gg*
Dann ist das Problem nicht der RFM12 (die Datenrate ist ausreichend für
einfache Sprachqualität), sondern wie Du das Signal vom Mikrofon
bandbegrenzst, abtastest, quantisierst, codierst, und auf der
Empfängerseite das gleiche entsprechend andersherum.
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
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
Verstehe ich nicht ganz schrieb:>> Ist es möglich, das Dingen ohne µC zum Dauersenden zu bringen?
Kurze Antwort: Nein (RFM12 muss mind. initialisiert werden)
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.
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.
Basti schrieb:> Das ist aber nicht so gern> gesehen.
Oder genauer gesagt: in dieser Form nicht zulässig. Der TE hatte
aber indirekt nach einer Variante gefragt, die im entsprechenden
Rahmen rechtlich zulässig ist. Davon sollte man ihn nun nicht
unbedingt abzubringen versuchen.
Wie wäre es, das trägersignal in das "frei Band" zu legen. Ich meine
mich zu erinnern das es bei 420MHz<f<480MHz liegt. oder liege ich
daneben?
Wenn ja, empfänger anpassen geht eigendlich
Basti schrieb:> Wie wäre es, das trägersignal in das "frei Band" zu legen.
Wie modulierst du es?
Dergleichen gab's früher als sogenannte LPD-Walkie-Talkies. Wenn man
davon noch ein Paar bekommt, kann man diese natürlich gleich umbauen
für den Zweck.
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
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.
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.
Basti schrieb:> Na dann brauch man auch nicht nach selbstbaulösungen suche.
Doch, wie weiter oben schon geschrieben war, sollte man es mit
einem RFM12 in der Tat schaffen, ein standardkonformes Gerät
hinzubekommen, das Sprache überträgt. Ich würde für meinen Teil
allerdings wohl eher ein Zigbit benutzen.
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.
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