Forum: Mikrocontroller und Digitale Elektronik ESP32 Radio spielt manchmal


von Flo S. (flos6323)


Lesenswert?

Ich habe mir ein TEA5767 Radiomodul gekauft 
(https://www.amazon.de/Thingnovation-Tea5767-Programable-Potencia-m%C3%B3dulo/dp/B01FW24WXG/ref=sr_1_8?ie=UTF8&qid=1538141946&sr=8-8&keywords=tea5767).

Ich habe dieses mit einem ESP32 
(https://www.amazon.de/AZDelivery-NodeMCU-Development-Nachfolgermodell-ESP8266/dp/B071P98VTG/ref=sr_1_1_sspa?ie=UTF8&qid=1538142122&sr=8-1-spons&keywords=esp32&psc=1) 
verbunden:

TEA5767---------ESP32

GND-------------GND
VCC-------------3.3V
SDA-------------PIN 21
SCL-------------PIN 22
BUSMODE---------GND



ANTENNE---------HAUSANTENNE
L---------------VERSTÄRKER
R---------------VERSTÄRKER
GND-------------VERSTÄRKER

R/W-------------N.C.
MPXO------------N.C.


Ich habe mehrere Bibliotheken getestet:

https://github.com/mathertel/Radio
https://github.com/andykarpov/TEA5767
https://github.com/big12boy/TEA5767
https://github.com/mroger/TEA5767

Bei allen habe ich das Problem, dass das Radio nicht vernünftig spielt.
Wenn ich einen Testsketch mit der Arduino ide 1.8.6 auf den ESP32 
hochlade, funktioniert er einmal
für ca. 10 Sekunden.
Dann hört das Radio auf zu spielen und rauscht nur noch.
Wenn ich dann den Strom aus und dann wieder einschalte, kommt kein Ton 
(auch kein Rauschen) aus dem Verstärker (am Verstärker liegt es nicht; 
Andere Audioqwellen gehen). Wenn ich das Radio eine Stunde aus lasse, 
geht es wieder für 10 Sekunden.

Meine Lötstellen Habe ich schon kontrolliert.

: Bearbeitet durch User
von Marc (Gast)


Lesenswert?

Hier gibt es noch Code-Beispiele:
Beitrag "Webradio basteln"

von Flo S. (flos6323)


Lesenswert?

Marc schrieb:
> Hier gibt es noch Code-Beispiele:
> Beitrag "Webradio basteln"

Es Geht aber um einen TEA5767. Das ist ein FM-Radio.

von Flo S. (flos6323)


Lesenswert?

1
 Serial.println(Wire.endTransmission()) ;
Gibt eine 5 aus.

von Rainer (Gast)


Lesenswert?

Klingt als wenn sich der I2C verklemmt.

von Michael U. (amiga)


Lesenswert?

Hallo,

wie groß sind Deine PullUp Widerstände am I2C? Die internen des ESP32 
sind zu hochohmig falls sie die I2c-Lib des ESP32 überhaupt einschaltet.

Gruß aus Berlin
Michael

von Flo S. (flos6323)


Lesenswert?

Rainer schrieb:
> Klingt als wenn sich der I2C verklemmt

Was meinst du damit?

von Flo S. (flos6323)


Lesenswert?

Michael U. schrieb:
> wie groß sind Deine PullUp Widerstände am I2C?

2,2kΩ

von Michael U. (amiga)


Lesenswert?

Hallo,

ok, 2,2k klingt gut. Viel fällt mir gerade nicht mehr ein. Ich hatte 
bisher am ESP32 am I2C nur mal Display, die liefen aber ohne Probleme.

Ich habe gerade versucht, herauszufinden, ob I2C am ESP32 auch mit 
100kHz gestartet wird, falls nicht schon drin pack mal ein
Wire.setClock(100000);
rein.

Ich hatte hier nur mal ein RDA5807 Modul an einem ATTiny als 
Puppenstubenradio, da war die Initialisierung im Beipiel im Netz 
fehlerhft und er entwicklete auch ein ziemliches Eigenleben bis es ging.

Das er den Sender verliert könnte daran liegen, daß er vom Takt an der 
Grenze der PLL liegt und die ausrastet. Warum er dann nach PowerOn nicht 
mehr startet? Keine Ahnung, vielleicht initialisiert der Treiber den 
Chip doch nicht 100% richtig.

Oder das Modul ist defekt...

Wenn Du einen AVR zur Hand hast, häng ihn doch mal daran.

Gruß aus Berlin
Michael

von Flo S. (flos6323)


Lesenswert?

Du hattest recht.
Es ist besser geworden, als ich selber die Ansteuerung geschriben habe.
Leider funktioniert mein Code auch nicht komplett richtig. wenn ich die 
Frequenz auf 106,70MHz einstelle, empfange ich eien Sender, der Normal 
auf 106.2MHz liegt.
Das ist die funktion, die ich zum Einstellen benutze:
1
 Serial.begin(115200);
2
 Wire.begin(21, 22, 100000);
3
4
5
unsigned int frequencyB = 4 * (106.70* 1000000 - 225000) / 32768; 
6
byte frequencyH = frequencyB >> 8;
7
byte frequencyL = frequencyB & 0XFF;
8
Wire.beginTransmission(_address); 
9
Wire.write(frequencyH);
10
Wire.write(frequencyL);
11
Wire.write(0xB0);
12
Wire.write(0x10);
13
Wire.write(0x00);
14
Serial.println(Wire.endTransmission());
15
delay(100);

Jetzt kommt nach dem Neustarten der Sender wider.

: Bearbeitet durch User
von Michael U. (amiga)


Lesenswert?

Hallo,

hmmm, ich biete
  unsigned int frequencyB = 4 * (newF * 10000L + FILTER) / QUARTZ;
also + 225000 statt -

Frequenz war hier in kHz übergeben, deshalb nur * 10000
Könnte Deine rund 500kHz Ablage erklären.

https://github.com/mathertel/Radio

Die hatte ich damal für den RDA5807, da ist der TEA5767 auch drin.
Ist aber wie oben schon erwähnt auch nicht unbedingt fehlerfrei...

Gruß aus Berlin
Michael

: Bearbeitet durch User
von Flo S. (flos6323)


Lesenswert?

Michael U. schrieb:
> also + 225000 statt -

Jetzt spielen beide Sender gleichzeitig und ziemlich verrauscht.

von Flo S. (flos6323)


Lesenswert?

Flo S. schrieb:
> Du hattest recht.
> Es ist besser geworden, als ich selber die Ansteuerung geschriben habe.
> Leider funktioniert mein Code auch nicht komplett richtig. wenn ich die
> Frequenz auf 106,70MHz einstelle, empfange ich eien Sender, der Normal
> auf 106.2MHz liegt.
> Das ist die funktion, die ich zum Einstellen benutze:
>
>  Serial.begin(115200);
>  Wire.begin(21, 22, 100000);
>
> unsigned int frequencyB = 4 * (106.70* 1000000 - 225000) / 32768;
> byte frequencyH = frequencyB >> 8;
> byte frequencyL = frequencyB & 0XFF;
> Wire.beginTransmission(_address);
> Wire.write(frequencyH);
> Wire.write(frequencyL);
> Wire.write(0xB0);
> Wire.write(0x10);
> Wire.write(0x00);
> Serial.println(Wire.endTransmission());
> delay(100);
>
> Jetzt kommt nach dem Neustarten der Sender wider.


?
Das war wohl nur Zufall.
Jetztgeht es wieder nicht...

von Michael U. (amiga)


Lesenswert?

Hallo,

Flo S. schrieb:
> Jetzt spielen beide Sender gleichzeitig und ziemlich verrauscht.

kann eben jeder seins hören. ;)
Naja, war ja nur ein Schnellschuß aus der Radio-Lib.

ok, das hängt offenbar von Bit 4 im dritten Byte abm Hiside/LowSide 
Injection.
Da schickst Du ja 0, also LowSide, dann dürften das + richtig sein.

Gruß aus Berlin
Michael

: Bearbeitet durch User
von Flo S. (flos6323)


Lesenswert?

Michael U. schrieb:
> Wenn Du einen AVR zur Hand hast, häng ihn doch mal daran.

Einen Avr Mikrocontroller habe ich leider nicht.

Ich werden jetzt mal testen, wass passiert, wenn ich die Datenkabel 
verkürzen.

von Flo S. (flos6323)


Lesenswert?

Flo S. schrieb:
> Michael U. schrieb:
>> Wenn Du einen AVR zur Hand hast, häng ihn doch mal daran.
>
> Einen Avr Mikrocontroller habe ich leider nicht.
>
> Ich werden jetzt mal testen, wass passiert, wenn ich die Datenkabel
> verkürzen.

Leider das selbe Ergebnis.

von Flo S. (flos6323)


Lesenswert?

Das Problem hat sich mit einem update vom ESp32 Plugin gelöst.
Jetzt funktioniren alle oben geannten Bibliotheken.
Vielen dank an alle, die probiert habe eine Lösung zu finden.

Viele Grüße Flo S

von Michael U. (amiga)


Lesenswert?

Hallo,

Flo S. schrieb:
> Das Problem hat sich mit einem update vom ESP32 Plugin gelöst.

der ESP32 ist eben auch weiterhin für Überraschungen gut.
Bei bluetooth gab es auch diverse Änderungen im IDF, im Arduino-Paket 
fehlt dazu aber ohnehin noch einiges.

Gruß aus Berlin
Michael

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.