Hallo Forum, ich steuere ein kleines RDA5807-Radio mit Arduino Pro Mini. Im Code sind die Libraries "radio.h" und "RDA5807M.h" eingebunden. Eigentlich funktioniert alles recht gut, nur die Scan-Funktion ist zu empfindlich! Der Suchlauf stoppt praktisch bei jedem Müll-Signal, nicht nur bei sauberen Sendern. Meistens ist das dann nur dreckiges Rauschen. So ist es etwas mühselig bis zum nächsten sauberen Sender weiter zu klicken. Ich finde in den Libraries nichts, was wie eine Schwelle für die Empfindlichkeit aussieht, die man einstellen könnte. Kennt jemand die Libraries oder hat irgendwelche Ideen? Danke Uwe
OT: Wäre cooler gewesen das Zahnrad mit einem Encoder zu verbinden für den Sendersuchlauf. Das Gehäuse füllern und lackieren. Schleifen schadet auch nichts. Uwe G. schrieb: > dreckiges Rauschen Meinst du nicht rosa Rauschen?
:
Bearbeitet durch User
Uwe G. schrieb: > ich steuere ein kleines RDA5807-Radio mit Arduino Pro Mini. Im Code sind > die Libraries "radio.h" und "RDA5807M.h" eingebunden. Wieso postest du nicht einfach deinen ganzen Code hier, dann kann man dir vielleicht auch helfen. Woher sollen wir wissen was in radio.h definiert ist oder was für eine RDA5807M.h Datei du genutzt hast oder was in ihr drin steht?
Mee schrieb: > Wieso postest du nicht einfach deinen ganzen Code hier, dann kann man > dir vielleicht auch helfen. Woher sollen wir wissen was in radio.h > definiert ist oder was für eine RDA5807M.h Datei du genutzt hast oder > was in ihr drin steht? Offensichtlich war mein Ausgangspost missverständlich daher hier noch mal die Essenz Uwe G. schrieb: > Ich finde in den Libraries nichts, was wie eine Schwelle für die > Empfindlichkeit aussieht, die man einstellen könnte. > Kennt jemand die Libraries oder hat irgendwelche Ideen? Wenn ich meinen eigenen Code poste (siehe angehängte Zip), weiß trotzdem niemand, was in den beiden dort eingebundenen Libraries steht, oder? Bevor das wieder missverstanden wird: Ich suche KEINE Hilfe für die Optimierung meines eigenen Codes, sondern Jemanden der Erfahrungen mit "radio.h" und/oder "RDA5807M.h" hat. Die Hauptfrage ist: Gibt es irgendwo eine einstellbare "Signal-Schwelle" bei der der Scan stoppt? Gruß Uwe
Du könntest eine URL zu der jeweiligen Library posten. Dann ist wenigstens sichergestellt, dass man über die gleichen Libs redet. Tipp am Rande: Wenn man ein Radio und einen µC un unmittelbarer Nähe betreibt, und sich etwas ungeschickt dabei anstellt, dann ist das Störsignal u.U. stärker als so mancher Sender. Dann ist das Verhalten total verständlich.
Arduino Fanboy D. schrieb: > Du könntest eine URL zu der jeweiligen Library posten. > Dann ist wenigstens sichergestellt, dass man über die gleichen Libs > redet. Dann könnte man aber auch gleich die Doku zur Lib lesen und die Antworten dort suchen.
Arduino Fanboy D. schrieb: > Wenn man ein Radio und einen µC un unmittelbarer Nähe betreibt, und sich > etwas ungeschickt dabei anstellt, dann ist das Störsignal u.U. stärker > als so mancher Sender. OK, interessant. Danke!
Ich sehe gleich eine Diskussion bezüglich Entprellung. Der Link zur lib fehlt nach wie vor.
Hier der Link zur "radio.h" https://github.com/mathertel/Radio/blob/master/src/radio.h und zur "RDA5807M.h" https://github.com/mathertel/Radio/blob/master/src/RDA5807M.h
Du kannst die AdaFruit lib brauchen und dann das wie folgt lösen:
1 | for (uint16_t f = 8750; f < 10800; f += 10) { |
2 | radio.readTuneMeasure(f); |
3 | radio.readTuneStatus(); |
4 | uint16_t noiseLevel = radio.currNoiseLevel; |
5 | if (noiseLevel < lowestNoiseLevel) |
6 | {
|
7 | lowestNoiseLevel = noiseLevel; |
8 | lowestNoiseFrequency = f; |
9 | }
|
10 | }
|
Lässt das in einem loop vorher laufen und sortierst Dir nur die Sender raus mit dem kleinsten Noiselevel. Das Noiselevel kannst selber definieren.
:
Bearbeitet durch User
Hier gibt es ein lesbares Datenblatt zum RDA5807 https://github.com/SeeedDocument/Grove-I2C_FM_Receiver_v1.1/raw/master/res/RDA5807%20Datasheet.pdf Im Register 5, das Register welches auch die Volume Einstellung vornimmt, gibt es noch die Bits 11:8 die eine "Seek SNR threshold value" Einstellung ermöglichen. Diese Bits werden in RDA5807M::init() auf einen fixen Wert gesetzt. Vielleicht probierst du hier mal verschiedene Werte aus, und schaust, ob du eine Verbesserung erreichen kannst. Zeile 112: registers[RADIO_REG_VOL] = 0x9081; // 0x81D1; // 0x82D1 / INT_MODE, SEEKTH=0110,????, Volume=1 Achtung: Der Kommentar in der Zeile ist seltsam, passt nicht zum Wert.
Volker schrieb: > Diese Bits werden in RDA5807M::init() auf einen fixen Wert gesetzt. > Vielleicht probierst du hier mal verschiedene Werte aus, und schaust, ob > du eine Verbesserung erreichen kannst. Oh prima, Danke! Das hört sich interessant an. Gruß Uwe
Volker schrieb: > Zeile 112: > registers[RADIO_REG_VOL] = 0x9081; // 0x81D1; // 0x82D1 / INT_MODE, > SEEKTH=0110,????, Volume=1 Ganau da lag das Problem! Der Wert 0x9081 ist zwar in der Lib (RDA5807M.cpp) voreingestellt, setzt aber die Threshold-Bits (11:8) auf "0000". Das ist offensichtlich das Minimum. Das Datenblatt nennt "1000" als Default-Wert. Nachdem ich versuchsweise "0x9F81" (1111 für Bits 11:8) ins Register geschrieben habe, wurden nur noch die absolut stärksten Sender gefangen. Bei "0x9881", also dem Default von "1000" funktioniert die "Seek" Funktion jetzt perfekt. Danke nochmals für den sehr guten Hinweis! Gruß Uwe
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.