Mit Bezug auf Beitrag "Re: DABPi - FM/DAB Empfänger mit Si4688 für Raspberry Pi" starte ich mal eine neue Diskussion um den dortigen Thread nicht weiter Themenfremd zu füllen. Zur Einführung: Ich habe vor längerer Zeit eine kleine Platine für DAB+/FM Radioempfang inklusive Audiocodec/Verstärker entwickelt. Diese Platine braucht ein paar Korrekturen und im Zuge dessen habe ich mir gedacht das daran vielleicht größeres Interesse besteht und es Sinn macht die neue Platine eventuell in einem breiter nutzbaren Format zu Entwickeln. Der Grundgedanke der Platine ist: ein Si4688 DAB+/FM Radio IC der seine Audiodaten per I2S an den Max98089 übergibt. Dieser Max98089 gibt dann die Audiodaten in Stereo entweder per analogem Line-Out oder per integriertem Class-D Verstärker aus. (ca 2.9W@4Ohm pro Kanal) Zusätzlich kann ein Mikrocontroller über den 2. I2S Port des Max98089 ein eigenes Signal einspeisen. (Z.B. um MP3s oder Streams abzuspielen) Theoretisch könnte der Max98089 auch die Audiodaten vom Radio zum Mikrocontroller leiten. (Zum Aufnehmen...) Ich habe mir die letzten Tagen mal die verschiedenen Formate: Arduino Uno, Arduino MKR, Arduino Nano sowie Teensy angeschaut. Leider ist es so sich sogar die Arduinos untereinander stark unterscheiden. Am liebsten würde ich eine Platine entwickeln, die mit möglichst verschiedenen Formaten direkt zurechtkommt und man einfach Aufstecken kann, wobei ich mir gar nicht sicher bin, ob es bei dem Arduino MKR oder dem Teensy überhaupt sinnvoll ist, die Zielgruppe von den Boards ist ja eine andere als die vom Arduino Uno. Die Grundfläche der Boards zwischen den Pins ist außerdem zu klein. Wenn ich den Arduino Uno als Basis nehme, die Platine allerdings nur halb so breit, also so das nur links und rechts jeweils der obere Steckverbinder genutzt wird (Links Spannung, rechts I2C), dann wäre das eigentlich schon wieder zu viel Platz, die Boards werden teurer, man könnte dann aber noch mehr aufs Board packen, zB. ein SD-Karten Halter. Letzteres wäre auch für den Teensy sinnvoll. Beim Arduino Uno Format kämen der Zero, und der Mega vermutlich in Frage, ist dafür der Interessentenkreis überhaupt groß genug, dass ich das lohnt? Was meint Ihr?
:
Verschoben durch Moderator
So, ich habe jetzt nochmal ein bischen gespielt. Dabei bin ich bei einer Platine mit etwa 55x35mm Außenmaß angelangt. Nach diesem Entwurfsversuch wäre es möglich: Die Platine auf einen Arduino Mega 2560, einen Arduino Zero oder auch einen Arduino Duo Quer draufzustecken. Der größte Teil der Pins bleibt dabei ungenutzt. Für I2S müsste man bei diesen Arduinos dann ein paar Jumpwires anbringen. Ansonsten wird mir die Platine zu groß. In Längsrichtung könnte man einen Arduino MKR Zero oder einen Arduino MKR Wifi 1010 aufstecken. Zwei Schrauben wäre nutzbar. I2S würde ich über Lötbrücke (Widerstandarray) Jumperbar machen. Die anderen MKRS gehen vermutlich auch, habe da jetzt aber I2S nicht explizit geprüft, on es so sinnsoll ist LoRaWan damit zu kombinieren sei aber mal dahingestellt. Außerdem würde in Längsrichtung auch ein Teensy V3.2 oder V4.0 gehen. (Quasi die kurzen Modelle) I2S wieder über Widerstandarray jumperbar. (USB Stecker wäre in dem Bild dann Links, wie auch beim MKR) Als Extra könnte ich noch einen kurzen MicroSD Slot drauf bringen, der wäre dann per SPI angebunden. Ich wollte eigentlich nur einseitig Bestücken, aber bei den Widerstandsarrays zum Jumpern könnte ich mir vorstellen das die auf der Rückseite plaziert einfacher lötbar wären, muss man dann nicht auf die Nachbarbauteile aufpassen und die würden ja eh erst im Nachgang bestückt werden.
Ich würde dir vermutlich einen ESP32 empfehlen hier. Unabhängig davon ob man jetzt mal die WiFi funktion nutzt. Hier gibt es durchaus gute Tutorials wie man bidirektional I2S rein und rausfahren kann. Dann kannst du sogar DSP auf dem ESP32 noch machen z.B., gleichzeitig noch per I2C/SPI den chip kontrollieren und bidirektional Musik rein und rausstreamen (wenn man Lust hat das zu implementieren). Hänge dich nicht auf dem Arduino auf. Da wird es schwierig mit I2S. Außerdem verlangt der SI4688 eine externe Audio-Clock. Die muss erstmal erzeugt werden. ESP32 kann das alles.
STM32 wäre auch eine gute Idee. Die haben auch einen nativen I2S und mit der HAL library sehr einfach zu bedienen. Ich habe auf beiden uC's schon Audio Projekte implementiert.
ESP32 hätte den Vorteil, dass man auch ein Webradio einbauenkönnte.
Engineer schrieb: > Ich würde dir vermutlich einen ESP32 empfehlen hier. Unabhängig davon ob > man jetzt mal die WiFi funktion nutzt. Es geht hier nicht um ein spezifisches Projekt für mich. Es geht hier um ein allgemein verwendbares Erweiterungsboard ("Shield"), dass man mit den üblich verfügbaren Entwicklerkits benutzen kann. Ich dachte das wäre in meinem Eingangspost klar geworden, anscheinend nicht. Natürlich kann man auch einen ESP32 verwenden. Gibt es den bei den ESP32 ein verbreiteteres Format für fertige Steckmodule? Engineer schrieb: > Hier gibt es durchaus gute Tutorials wie man bidirektional I2S rein und > rausfahren kann. Dann kannst du sogar DSP auf dem ESP32 noch machen Ich denke, das so ziemlich alle Microcontroller die I2S haben, das auch bidirektional können. Was wäre den der Anwendungsfall für DSP Funktionen beim Radiohören? Falls Du es nicht gelesen hast, auf der Erweiterungsplatine ist ein MA98089, der hat einen eingebauten DSP und kann mit seinem frei parametrierbarem 5-Band EQ und diversen anderen Funktionen eigentlich alles was man meiner Meinung nach so für ein Radio braucht. Engineer schrieb: > Hänge dich nicht auf dem Arduino auf. Da wird es schwierig mit I2S. > Außerdem verlangt der SI4688 eine externe Audio-Clock. Die muss erstmal > erzeugt werden. ESP32 kann das alles. Der Takt fürs I2S des SI4688 wird vom Max98089 erzeugt dazu braucht der keinen Mikrocontroller. Das einzige was der Mikro bei meiner Erweiterungsplatine machen muss ist ein bischen I2C um den Si4688 und den Max98089 anzusteuern. Mehr nicht. I2S über den Mikro ist eine Zusatzfunktion, z.B. um Musik abzuspielen oder Aufzunehmen. Was wird beim Arduino MKR schwierig mit I2S? Die haben alle mindestens einen SAM21D und der kann das ebenfalls wie der ESP32 in Hardware. Es gibt z.B. auch einen Arduino MKR Vidor, da ist zusätzlich zum SAM21D, einem Wifi Modul auch noch ein Cyclone 10 (Altera Max 10) FPGA drauf. Dem kann ein bischen I2S und Audio DSP nur ein müdes Lächeln entlocken. Arduino heist nicht unbedingt "kann nichts" Engineer schrieb: > STM32 wäre auch eine gute Idee. Die haben auch einen nativen I2S und mit > der HAL library sehr einfach zu bedienen. Thomas G. schrieb: > ESP32 hätte den Vorteil, dass man auch ein Webradio einbauenkönnte. Es gibt heutzutage massenweise Mikrocontroller die I2S können, und auch viele Boards die Wifi haben.
Ich habe inzwischen mal verschiedene Informationen zusammengesammelt und auch den Schaltplan grob fertig und bin jetzt an einer Stelle wo ich nochmal drüber nachdenken muss. Bisher habe ich auf dem Schield Steckverbinder für Arduino UNO, Arduino MKR und den Teensy vorgesehen. Dazu noch einen SD-Kartensockel. Diese ganzen Steckverbinder brauchen natürlich viel Platz und machen die Platzierung/Routing nicht unbedingt einfacher. Deswegen eventuell nochmal einen Schritt zurück. Bei den Arudino MKR ist mir aufgefallen das die meisten davon ja nur einen 48 Mhz Cortex-M0+ drauf haben. Ich vermute mal das der mit MP3 dekodieren eh an seine Grenzen kommt, d.h. für den machen SD-Karte und I2S nicht wirklich Sinn. Der Arduino MKR Wifi 1010 (Der würde noch am ehesten Sinn machen) hat zwar noch einen ESP32 drauf, aber der kommt nicht vernünftig an die IO-Leiste. Der Arduino Potenta hat wiederum die I2S Signale gar nicht auf der Stiftleiste, dafür Power ohne Ende. Der Teensy hätte genug Power, für den müsste man aber diverse IO Pins auf weitere Steckerleisten rausführen damit man da ohne ein zusätzliches Board überhaupt noch was anschließen kann. Am meisten Sinn macht für mich da noch der Verbinder für Arduino Uno/Due. Da gibt es dann zwar nur I2C zum steuern, aber I2S kann der eh nicht, womit dann die SD-Karte auch keinen Sinn macht und ich die dann ganz weglassen könnte. Ich denke ich werde auf dem Shield nur die Steckverbinder für den Arduino Uno/Due vorsehen. (Halbe Shield Breite) und das I2S und I2C einfach an den Rand des Shield auf einen weiteren Pinheader führen. Die SD-Karte lasse ich weg, die ist besser direkt am Mikrocontroller aufgehoben. Der Schield wäre dann so dass man ihn direkt auf einem Arduino Uno/Due aufstecken und dann als Radio nutzen kann (inklusive Verstärker) und für die anderen wäre dann etwas Handarbeit notwendig. Zusätzlich gäbe es die Option über I2S eigenen Ton ausgeben zu können.
Aus dem Entsprechenden Thread hast du schon entnommen das du ein Firmware Problem hast. Die steht unter NDA. Legal werden da nur wenige an deinen Projekt teilhaben können.
Die FW-Blobs kann sich jeder beim Support holen! Habe da keine Probleme gehabt. Die DAB+ FW gibt es kostenlos ohne NDA, FM, wahrscheinlich wegen dem HDRadio-Anteil darin nur gegen Unterschrift auf NDA.
:
Bearbeitet durch User
Marco H. schrieb: > Aus dem Entsprechenden Thread hast du schon entnommen das du ein > Firmware Problem hast. Die steht unter NDA. Legal werden da nur wenige > an deinen Projekt teilhaben können. Nö hab ich nicht. Da ich alle Firmwaren ohne NDA bekommen habe könnte ich diese problemlos verbreiten. Aber selbst das wäre kein Problem. Es gibt ja einen Shield bei dem die Firmware als Bestandteil eines Programms mitgeliefert wird, also anscheinend möglich sehr wohl die Firmware auszuliefern. Ich würde die einfach auf dem Flash auf dem Shield schreiben, fertig. Der Si4688 bootet direkt von dem eh am schnellsten.
Inzwischen bin ich mit dem Projekt etwas vorangekommen. Der Header für den Arduino MKR ist runtergeflogen, mechanisch passt das nicht gut und auch von den Fähigkeiten fügt sich der MKR nicht wirklich ein, heißt der hat zu wenig Rechenpower um merkliche Vorteile gegenüber dem Arduino Uno/Due zu haben. Das Ergebnis ist jetzt eine kleine Platine - die als Shield auf einen Arduino Uno/Due aufgesteckt werden kann (Halbe Breite)oder - auf die ein Teensy 3.2 oder 4.0 gesteckt werden kann oder - Mit eigenem CPU Board genutzt werden kann. (Dazu habe ich versucht die notwendigen Stiftleisten möglichst am Rand anzuordnen) Das Board kann optional mit einer Klinkenbuchse für Kopfhörerbetrieb, einer Schraubklemme für Lautsprecher und einem MicroSD Slot bestückt werden. Ein KiCad Rendering hängt an. Schaltplan hier: https://gitlab.com/amesser-group/electronic-devices/si4688-radio/-/tree/master/doc/hardware/shield Im selben Repository findet sich auch das vollständige KiCad Projekt: https://gitlab.com/amesser-group/electronic-devices/si4688-radio/-/tree/master/hardware/shield Ich werde dann demnächst mal ein paar Platinen in Auftrag geben.
So, die Platinen von Aisler sind nun schon eine Weile da und die Erste ist auch bestückt. Parallel dazu habe ich einen Arduino-Sketch zu Demo und Testzwecken angefangen. Funktional sieht es zumindest als Arduino Shield soweit gut aus, LineOut/Kopfhörer und Class-D Verstärker tun was sie sollen. Der Arduino Sketch wird einfach über die Serielle Schnittstelle des Arduino gesteuert und ist mit bis jetzt 9kB erstaunlich klein, DAB wird aber noch etwas Platz brauchen. Quellcode & Resourcen liegen in o.g. Git Repo.
Hi I read your forum with the help of google translator. Unfortunately, I don't know German. But I really like your project. I'd love to do this for myself. I would like to share with you my ideas: 1. It would be very good to derive the S / PDIF signal from radio. Then you can send the digital signal directly to your DAC or audio amplifier. I'm sure that for HiFi fans MAX98089 quality is not enoug. 2. If there is firmware NDA problem in Si4688, maby it is good idea to change to Si4684? The difference is that Si4684 does not have FMHD. I heard that FMHD is the source of NDA. Si4688 and Si4684 have the same sockets, pinouts and API. We don't have FMHD in Europe, so we don't need it. Thak You for your work :-). Best regards!
Hi, thanks for your interest. First of all, I forgot to post the new GIT url, the project has been moved to: https://gitlab.com/amesser-group/electronic-devices/radio-shield Dugi schrieb: > Hi > I read your forum with the help of google translator. Unfortunately, I > don't know German. > But I really like your project. I'd love to do this for myself. > > I would like to share with you my ideas: > 1. It would be very good to derive the S / PDIF signal from radio. Then > you can send the digital signal directly to your DAC or audio amplifier. > I'm sure that for HiFi fans MAX98089 quality is not enoug. You can get the digital audio from the MAX98089. Actually the MAX98089 has two Digital Port. I have connected one of them with the SI and the other one to one of the Pin-Headers. The MAX98089 can be configured to forward the received digital audio data from the SI port to the other digital port. > 2. If there is firmware NDA problem in Si4688, maby it is good idea to > change to Si4684? The difference is that Si4684 does not have FMHD. I > heard that FMHD is the source of NDA. > Si4688 and Si4684 have the same sockets, pinouts and API. > We don't have FMHD in Europe, so we don't need it. I don't know if there is a FM only (without HD) firmware. I think that the firmware for all of these Si468x variants are identical. So if the Si4684 is cable of FM only, then it is kind of hardware bound "permission", not firmware limitation. Btw, I'm currently working on an ESP32 based Radio Clock using this board for Radio/Audio. But will take its time...
Inzwischen bin ich bei diesem Projekt auch einige Schritte weiter gekommen. Noch im letzten Jahr hatte ich den Shield auch mit einem aufgesteckten Teensy 3.2 in Betrieb genommen und das I2S Interface zwischen Mikrocontroller und MAX98089 erfolgreich testen können. Der Teensy hat USB Soundkarte gespielt und der MAX98089 hat schön brav das I2S vom Radio mit dem I2S vom Teensy/PC gemixt und rausgetrötet. Musik aus der Büchse klappt also. Seit dem habe ich mich mal in ESP32 eingearbeitet und mein schon vorhandenes Projekt umstrukturiert so dass ich jetzt nicht nur Firmwaren für meine alten DAB Platinen mit bare-metal ATSAM4S bekomme sondern auch für den ESP32 mit FreeRTOS und Grafik-LCD. Mit dem Shield bekomme ich hier im Rhein-Main jetzt ganze 70 DAB Sender rein, der MAX98089 hängt an zwei alten Grundig Regalboxen, das Klangvolumen ist für den kleinen Hüpfer erstaunlich gut. Versorgt wird alles über das USB Kabel. Der ESP32 soll ein Radiowecker werden, das Gehäuse ist schon in Vorbereitung. Dazu habe ich mir gedacht ein Arduino kompatibles ESP32 oder ESP32-C3 Trägerboard zu machen. Der ESP32-C3 ist zwar wieder eine andere Architektur, aber ein RISCV würde mich schon reizen.
:
Bearbeitet durch User
Und wie zufrieden bist du mit dem ESP32 IDF? Das hab ich noch nicht probiert aber der Eindruck, der durch lesen entsteht, ist nicht so toll.
An den ESP32 bin ich zuerst so rangegangen wie an die meisten anderen Mikrocontroller. Das war etwas naiv, da der BootProzess des ESP32 ja etwas spezieller ist, vorallendingen das Thema mit dem externen Flash Mapping, den ganzen Caches usw. Letzlich habe ich dann um vor allem aus Zeitgründen dafür entschieden das ESP-IDF zu nutzen und nicht meinen eigenen Buildflow zu implementieren, wie ich das normalerweise mache. Wenn ich mal zuviel Zeit haben sollte, versuche ich das vielleicht nochmal tiefer zu durchdringen, eigentlich möchte ich schon verstehen was da genau beim booten passiert. Ab im Moment muss es erstmal vorwärts gehen. Mit dem ESP-IDF ansich habe ich eigentlich keine Probleme gehabt. Allerdings nutze ich im Moment auch nur GPIO, SPI und I2C. Und diese drei habe ich nach der Dokumentation her anprogrammiert und es hat beim ersten Schuss direkt alles funktioniert, ich finde die Doku nicht so schlecht, Atmels Doku zu deren eigener ATSAM4S HAL/Peripheriebibliothek ist da wesentlich schlechter. Die meiste Zeit hat es mich gekostet in meinem Projekt das Benutzerinterface in Modell und Visualisierung aufzuteilen, also so dass ich auf der einen Seite unabhängig von der Zielplatform die Menüstruktur und das Bedienverhalten definieren kann und auf der anderen Seite die eigentliche Visualisierung Display spezifisch umsetzen kann. Also für Textdisplays eine Zeichenbasierte Darstellung inklusive korrektem Abbilden der Zeichen über die spezifische Display-Zeichentabelle. Und für Grafikdisplays dann mit allem was man bei echter Grafik so machen kann. Textdarstellung dann mit vorgerenderten Bitmap Schriftarten. Zurzeit mittels "Ultimate Bitmap Font Generator" erstellt, bin aber noch nicht glücklich über die Darstellung, da passen manchmal die Abstände nicht.
Danke für die Meinung zum IDF. Da du "nur" GPIO, SPI und I2C nutzt, scheinen da auch keine größeren Probleme zu sein. Bluetooth und WLAN wird spannernder. WLAN wird wohl auch recht problemlos sein. Zum Display: Hast nur nicht eine fertige Bibliothek für UCs mit Bitmap-Grafik genutzt? Da gibt es doch ein paar (u8g2 o.ä.). Sogar einige, die nicht Arduino vroaussetzen ;) Da das Rad neu zu erfinden hätte ich wenig Lust :) Nur wenn die Libs Probleme machen und mich eher nerven. PS. Bei deinem Board funktioniert übrigens auch das SD-Card I/F mit dem Teensy, ich habe es kurz lesend und schreiben getestet mit der Teensy Library. Für I2C habe ich die Teensy Library i2c_t3 verwendet. Man muss dort nur die Defines für die Buffergrößen entsprechend anpassen, dann gehen auch lange Transfers. Der SI4688 scheint keine I2C Restart zu handeln, sonst hätte ich bei langen Transfers erwartet, dass man das nutzen kann. Funktioniert aber nicht. Hab mit dem Logicanalyzer den Bus angesehen, war alles richtig aber der SI war zickig. :)
900ss D. schrieb: > Zum Display: Hast nur nicht eine fertige Bibliothek für UCs mit > Bitmap-Grafik genutzt? Da gibt es doch ein paar (u8g2 o.ä.). Sogar > einige, die nicht Arduino vroaussetzen ;) Ich habe ehrlich gesagt nicht danach gesucht. Da ich ja schon was für Textdisplays hatte, habe ich das genommen und erweitert. 900ss D. schrieb: > PS. Bei deinem Board funktioniert übrigens auch das SD-Card I/F mit dem > Teensy, ich habe es kurz lesend und schreiben getestet mit der Teensy > Library. Gut zu wissen das es funktioniert, ich konnte es selbst noch nicht antesten. 900ss D. schrieb: > lange Transfers. Der SI4688 scheint keine I2C Restart zu handeln, sonst > hätte ich bei langen Transfers erwartet, dass man das nutzen kann. > Funktioniert aber nicht. Hab mit dem Logicanalyzer den Bus angesehen, Ja, das I2C Interface des SI4688 hat ein paar Macken. Ich kann mich erinnern, als ich vor einigen Jahren zum ersten mal damit gespielt habe, hat es auch eine ganze Weile gedauert bis ich bzw. damals noch wir das hinbekommen haben. Es ist auch unschön, das der Chip während des Reset den Bus komplett blockiert, aber deswegen hab ich ja den I2C abtrennbar gemacht.
So, der letzte Beitrag ist nun schon wieder eine ganze Weile her. Der Radiowecker auf Basis des Radio-Shield ist nun so gut wie fertig, noch ein paar Kleinigkeiten am Gehäuse fehlen noch. Fotos gibt es dann demnächst auch. Es hat sich jetzt ergeben, das nochmal Bedarf an einigen dieser Shields besteht. D.h. ich werde in den nächsten ein-zwei Monaten nochmal ein paar dieser Platinen bestellen und bestücken. Der Si4688 ist jetzt bei Mouser auch wieder auf Lager. Wenn jemand auch so einen Shield möchte, dann gäbe es jetzt die Möglichkeit mitzubestellen. Die Platine alleine kostet etwa 10€, die Bauteile etwa 35€. Einen komplett bestückten (Stiftleisten nur beigelegt) und vor-getesteten Shield würde ich für 55€ abgeben. Dazu kommt dann noch Verpackung und Versand
So, ein paar Bestellungen sind jetzt schon eingegangen. Am Mittwochabend würde ich dann denn Deckel zumachen und das Material bestellen - Zur Zeit ist noch alles Lieferbar ich will aber nicht drauf wetten - der Si4688 war Anfang Mai bei Mouser nicht mehr auf Lager.
Hier war zwar schon lange nichts mehr los, aber untätig war ich nicht. Inzwischen hat ein Radiowecker auf Basis des Shields einen ganz brauchbaren Zustand erreicht. Funktionsumfang wird Stück für Stück nach Bedarf erweitert. Ein paar Bilder sind angehangen.
Moin, ich wollte das Kapitel SI4688 DAB Empfänger schon abschliessen und finde nun diesen Artikel. Ich dachte, die Chips von SI haben keine Firmaware, ohne die man mit denen nicht kommunizieren kann. Aber du scheinst das Problem gelöst zu haben Andreas !?. Kannst du mir Tipps geben wie? Herzliche Grüße Manfred
Manfred S. schrieb: > Ich dachte, die Chips von SI haben keine Firmaware, ohne die man mit > denen nicht kommunizieren kann. Das ist weiterhin so. Die Lizenz der Firmware lässt eine "freie" Verbreitung leider nicht zu. Es gibt Projekte mit diesem Chip, wo du eine kleine Platine kaufst, dort ist ein SPI-Flash enthalten, welches die Firmware schon enthält. DABShield heißt es wenn ich nicht irre. Früher gab es die Firmware mit Glück über den Silabs Support. Aber Silabs hat diese Entwicklung scheinbar an Skyworks verkauft.
Du darfst mir gerne eine PN mit Deiner E-Mail schreiben. Dann können wir alles weitere klären.
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.