Moin oder auch Guten Morgen. Ich habe hier ein ESP32 AI Thinker Modul ais China . Wie fange ich damit an? Zunächst möchte ich es als Wifi Server laufen lassen so das ich es im meinem Wifi Netz anmelden kann und dann eine eine kommunikation herstellle um Daten zu verarbeiten. Da mein Englisch nicht so gut ist frage ich hier mal. Da gibt es doch bestimmt ein EVAL System für den WIN7 Rechner . Auf der seriellen kommt schon mal ein Boot meldung. Wer Lust hat kann mir ja ein Link zusenden. Gruss Salvus.
Salvus M. schrieb: > Da mein Englisch nicht so gut ist frage ich hier mal. Salvus M. schrieb: > Wer Lust hat kann mir ja ein Link zusenden. https://www.ils.de/fernkurse/fremdsprachen/englisch/technisches-englisch/ Ja, ich weiß, es ist nicht das, was du suchst, aber in der Welt der Programmierung und Elektronik kommst du um englisch eigentlich nicht umher. Alle Datenblätter siond auf Englisch. Viele Dokumentationen, Programme,... sind auf Englisch. Ansonsten gibt es Webseiten, die einem automatisiert Links zu bestimmten Themen in einer bestimmten Sprache liefern, wenn man sie mit ein paar Suchbegriffen füttert. Nicht exakt Suchmaschine, aber ganz weit vorne liegt z.B. "Google". Wenn man dort in die Suchzeile z.B. "ESP32 Tutorial Deutsch" eingibt, findet man sehr viele Ergebnisse.
Beitrag #5844438 wurde von einem Moderator gelöscht.
Salvus M. schrieb im Beitrag #5844438: > ? schlecht geschlafen !! > frust mit der freundin ? > langeweile ? So ähnlich :D Eigentlich gehen mir nur Fragen auf den Keks, die nicht alle Angaben machen, um die Frage korrekt und umfassend zu beantworten. Es ist zum Beispiel nicht hilfreich, wenn Fragensteller eine Programmier-Aufgabe lösen möchten und dabei nicht angeben, welche Programmierkenntnisse sie haben und in welcher Programmiersprache sie ihr Problem lösen möchten. Da bleibt eigentlich nur Hilfe zur Selbsthilfe. Und es ist dann schade, wenn der Fragensteller eingeschnappt ist, weil man ihm keine Musterlösung präsentiert, sondern im sagt, wie und wo man Informationen finden kann. Es gibt z.B. Programmier-Umgebungen und Ökosysteme, bei denen alle Tools dabei sind und sogar schon Beispiel-Programme gegeben sind, die genau die vom Fragensteller geforderte Antwort liefern. Allerdings weiß ich nicht, ob es sinnvoll ist, darauf zu verweisen, da der Fragensteller verschweigt, in welcher Programmierumgebung er es lösen möchte. Naja. Aber ansonsten ist alles gut. Danke der Nachfrage :D
Hallo, Salvus M. schrieb: > Ich habe hier ein ESP32 AI Thinker Modul ais China ich habe nur 1 oder 2 Angebote gefunden, wo es das ESP32 A1S Eval überhaupt gibt. Der Preis war merklich über meiner "China-Grenze", also habe ich es nicht weiter verfolgt. Ich hatte es nur interessant gefunden, weil I2S-Dac, Verstärker, SD-Slot usw. drauf sind. Letztlich ist ja nur ein ESP32 drauf mit einigem Drumrum. Also ArduinoIDE, Unterlagen zum Board suchen oder/und Demosourcen, IC-Datenblätter, was da drauf ist usw. usw. und dann eben loslegen. Wenn man erstmal nur einen Webserver raufwerfen will, reicht ja schon die IDE und die Examples, die dabei sind. Da muß man über den Rest ja noch nichts wissen. Wie kommt man ausgerechnet an solch ein Modul, offenbar mit wenig Ahnung, was man da hat? gruß aus Berlin Michael
Hallo, irgendwie interessant. Der benutzt I2S-Chip AC101 von X-Powers sieht interessant aus, bei github findet man https://github.com/phkehl/esp32-a1s-audio_hal zumindest grundsätzlich Unterlagen. Arduino-Libs für den AC101 gibt es noch keine, aber das ist erstmal nebensächlich. Mal schauen, ob ich das Teil irgendwo bezahl- und beschaffbar finde... Nachtrag: ich habe das Teil aus Neugier jetzt mal bestellt... Könnte noch bis zum Wochenende hier sein. Gruß aus Berlin Michael
:
Bearbeitet durch User
Hallo, falls es doch jemanden interessiert: Mein Board ist heute angekommen. Netterweise (oder auch nicht) wurd mir die neue Version v2.2 geliefert. Layout geringfügig anders, es gibt mittig jetzt einen 5-fach DIP-Schalter, der ist beschriftet, aber der Zweck ist mir nich völlig unklar... Ansonsten meldet es sich seriell, aktiviert BT als Speaker. Win7 connected den auch problemlos und spielt Musik darüber ab. SD-Karte mit MP3 wird erkannt, Files werden seriell gelistet, aber zum Abspielen habe ich das noch nicht bekommen. Suche im Netz ergab zu dieser Version bisher keine sinnvollen Infos. Gruß aus Berlin Michael
:
Bearbeitet durch User
hallo, hat sich hier denn mitlerweile was getan? habe das board auch und bin gerade fleißig am infos sammeln und dabei auf diesen thread hier gestoßen...
Hallo, naja, ich habe das Board gerade am letzten Wochenende wieder vorgekramt, dazwischen nicht wirklich was gemacht bzw. erreicht. Es gibt eine Arduino-Lib für den Codec AC101: https://github.com/Yveaux/AC101 Das Example läuft auf dem Board, komme im Moment aber nicht dazu, weiter zu machen. Da ich die ESP8266Audio-Lib ganz gern benutze, will ich da eigentlich zusammen mit der Codec-Lib mal weitermachen, erstmal MP3 Play von SD und Streamplay für meinen IceCast-Stream. Mit ESP32 Wrover und ext. I2S-DAC habe ich das hier ja am Laufen. Gruß aus Berlin Michael
danke für das feedback. ich wollte mich mal hierdran probieren: https://github.com/schreibfaul1/ESP32-audioI2S gucken, ob man das zum laufen bekommt...
Hallo, naja, das wäre ja eine völlig andere Baustelle. Er benutzt einen normalen ESP32 und einen externen I2S Decoder. Auf dem Board hier ist ja ein ESP32A1S, also ein ESP32 Modul, daß bereits einen AC101 Audio-Codec enthält. Und genau mit dem besagten AC101 muß man ja erstmal klarkommen... Er hat da eine eigene Audio-Lib für die Play- und Streamfunktionen gebaut, ich benutze dafür die ESP8266Audio-Lib, das dürfte aber Ansichtssache sein. Für das ESP32 A1S Board ist dieses Projekt relativ nutzlos. Gruß aus Berlin Michael
Salvus M. schrieb: > Ich habe hier ein ESP32 AI Thinker Modul ais China . Wo hast du das Board in China bestellt?
Hallo, da die Preise alle ähnlich sind entweder bei Amazon, dauert eben auch 3-4 Wochen oder https://www.banggood.com/de/ESP32-Aduio-Kit-WiFi-bluetooth-Module-ESP32-Serial-to-WiFi-Audio-Development-Board-with-ESP32-A1S-p-1449256.html?rmmds=search&cur_warehouse=CN da ist der Preis im Moment aber eher ungünstiger. Dauert auch 3-4 Wochen. Meins hatte ich damals für rund 22€ bei Amazon Prime gefunden, das war in wenigen Tagen da. Ist aber nicht mehr im Angebot. Gruß aus Berlin Michael
Michael U. schrieb: > Hallo, > > da die Preise alle ähnlich sind entweder bei Amazon, dauert eben auch > 3-4 Wochen oder > https://www.banggood.com/de/ESP32-Aduio-Kit-WiFi-bluetooth-Module-ESP32-Serial-to-WiFi-Audio-Development-Board-with-ESP32-A1S-p-1449256.html?rmmds=search&cur_warehouse=CN > > da ist der Preis im Moment aber eher ungünstiger. Dauert auch 3-4 > Wochen. > Meins hatte ich damals für rund 22€ bei Amazon Prime gefunden, das war > in wenigen Tagen da. Ist aber nicht mehr im Angebot. > > Gruß aus Berlin > Michael Danke
Michael U. schrieb: > Auf dem Board hier ist ja ein ESP32A1S, also ein ESP32 Modul, daß > bereits einen AC101 Audio-Codec enthält. > Und genau mit dem besagten AC101 muß man ja erstmal klarkommen... siehste - ich hab mir das board noch nicht genau angeguckt. dachte, da wäre der decoder auch über i2s angebunden. danke für die aufklärung!
Das Board gibt es hier für 21.96 € bei einem vernünftigen Händler aus Deutschland. https://www.exp-tech.de/plattformen/esp32/9181/esp32-a1s-wi-fi-bt-audio-development-kit
Hallo, Sven K. schrieb: > siehste - ich hab mir das board noch nicht genau angeguckt. dachte, da > wäre der decoder auch über i2s angebunden. danke für die aufklärung! der Decoder (hier AC101) ist innerhaöb des ESP32A1S über I2S angebunden. Allerdings mußt Du eben dem AC101 noch beibringen, daß er ein vom ESP32 kommendes I2S-Signal nach analog wandelt und ausgibt. Der AC101 kann nämlich noch einiges mehr und macht das nur, wenn man ihm das richtig sagt. Und genau da hänge ich z.Z. noch etwas fest... Gruß aus Berlin Michael
Hallo, so, vorhin etwas Zeit gehabt und das Audio-Kit vorgekramt. Nach dem Sortieren der benutzten Pins und der DIP-Schalter läuft meine Webplayersoftware aus einem anderen Projekt und spielt artig über den ESP32A1S den Stream ab. Benutzt habe ich die AC101-Lib: https://github.com/Yveaux/AC101 Außerdem die ESP8266Audio-Lib: https://github.com/earlephilhower/ESP8266Audio Gruß aus Berlin Michael
schön zu hören! ich hab die beiden projekte jetzt mal kurz überflogen..
1 | ESP8266Audio
|
benötigt ein ausgabegerät. da dann "einfach" den
1 | AudioOutputI2S
|
aus dem
1 | AC101
|
projekt nehmen? magst du deine erkenntnisse über die pins teilen?
Beitrag #6132740 wurde vom Autor gelöscht.
Hallo, alles so richtig wie Du es schreibst. Da ich mir die ESP32-audioI2S-Lib sowieso mal genauer anschauen wollte: https://github.com/schreibfaul1/ESP32-audioI2S habe ich jetzt mal den AC101 in seinen Beispielcode gepackt. Lief auf Anhieb. Ich hänge den Sketch hier mal an, die Pinbelegung ist da mit drin. Mal schauen, was ich da jetzt drumrum baue. Gruß aus Berlin Michael
hab vielen dank. schau ich mir heute abend mal in ruhe an! was mir bei einem deiner kommentare aufgefallen ist: ein taster liegt auf dem cs pin für die sd karte? das wäre dann ziemlich dämlich entworfen, oder? "wenn ihr was von der karte lest, drückt dabei bitte nicht den taster"
Hallo, bei meiner Version mit DIP-Schaltern kann man das damit auswählen. Da das aber keine Umschalter sind, kann man natürlich beides einschalten... Meine Anmerkung ist mehr als Hinweis, daß man Key2 nicht zur Verfügung hat, wenn man eine SD-Karte benutzt. Beschreibungen zu ESP32-Boards sind doch ohnehin immer etwas Glücksache, einen passenden Schaltplan der V2.2 suche ich sowieso immernoch. JTAG ist bei dem Board ja auch extra rausgeführt und beißt sich dann mit anderen Belegungen, nutze ich aber ohnehin nicht. Die Tasten sind mit Widerständen codiert, die bestückt/nicht bestückt sind, Wertangaben fehlen da natürlich... Key1 dürfte bei mir an GPIO36 sein. Man könnte auch so bestücken, daß alle Tasten als Spannungsteiler geschaltet werden und mit dem ADC an GPIO36 abgefragt werden könnten. Gruß aus Berlin Michael
Ich habe vor ein paar Tagen ein Projekt veröffentlicht, welches rein von der Idee ein Tonuino ist. Es basiert jedoch auf einer komplett eigenen Code-Basis. Ich erwähne es deshalb, weil es einerseits einen ESP32 verwendet, andererseits einen breiten Tonuino-Funktionsumfang umsetzt, den Audio-Output jedoch via I2S macht. Tatsächlich setze ich die bereits von euch referenzierte Lib https://github.com/schreibfaul1/ESP32-audioI2S. Ich finde es ja interessant, dass die AC101 quasi genauso aussieht und wüsste gerne mal, wer da von wem abgekupfert hat, hehe. Wie auch immer, mein Code liegt hier: https://github.com/biologist79/Tonuino-ESP32-I2S Wichtig ist an dieser Stelle zu erwähnen, dass es noch "im Fluss" ist und sich täglich an der Codebasis was ändern kann. Was bereits funktioniert ist auf Github auf jeden Fall beschrieben und wird auch noch erweitert. Es fehlt noch der Webserver, über den man verschiedene Parameter konfigurieren kann und über den auch den RFIDs Aktionen zugewiesen werden. Aktuell sind noch zwei Webserver-Libs eingebunden, aber das werde ich komplett auf ESPAsyncWebServer umstellen. Da Webdesign nicht so meins ist, schiebe ich diesen Part irgendwie ein wenig vor mir her, hehe. Im Optimalfall schwebt mir eine GUI mit Treeview der Struktur der SD-Karte auf Basis von Bootstrap oder Angular vor. Und zwar optimalerweise so, dass Unterverzeichnisse dynamisch nachgeladen werden, wenn man draufklickt, weil dieser Prozess rekursiv für / halt ein bisschen dauern kann, wenn da viele Files am Start sind. Aber ob ich das so hinkriege und die Muße dafür habe, weiß ich noch nicht. Werde wohl erstmal mit der einfachen /-Variante starten. Der Code liegt auf jeden Fall hier: https://github.com/biologist79/Tonuino-ESP32-I2S War viel Arbeit (auch wenn ich Spaß dran hatte), das auf eine eigene Code-Basis zu stellen. Vielleicht hilft es euch ja, für das Board, so dass ihr das Rad nicht neu erfinden müsst. GPIOs wird man auf jeden Fall anpassen müssen und ggf. kann man den Drehencoder auch nicht nutzen, weil die Anzahl der rausgeführten GPIOs nicht reicht. Aber das war nur mein erster Eindruck; mit der chinesischen Doku tue ich mir etwas schwer :-)
Hallo, Ich hatte das ESP32A1S-Kit nur zum Spaß bestellt, außer dem https://github.com/phkehl/esp32-a1s-audio_hal war da wenig zu finden. Da ich keine wirkliche Lust hatte, mich durch das IDF zu wühlen, lag alles erstmal rum. Der AC101 ist ja recht komplex mit seinen Funktionen, das werde ich mir auf jeden Fall noch genauer anschauen. Die AC101 Lib hatte ich dann mehr durch zufall gefunden. Da ich mich meist in der ArduinoIDE rumtreibe, sparte das einfach Arbeit. Über die ESP32-audioI2S bin ich auch nur zufällig gestolpert. Eigentlich gibt es hier 2 Streamplayer, einer in eine alte Sony-Centerbox eingebau und einer in einem Pollin-BT-Lautsprecher. Die speilen beim Einschalten einfach meinen provaten IceCast-Strem hier von einem RasPi. Ansonsten noch ein Dauerprojekt mit LCD-Touch, Streamplay mehrerer Streams und Play von SD-Card. Ansätze für Uhr und Wecker sind drin, keine Ahnung, ob das je was fertiges wird... Das alles basiert auf der ESP8266Audio-Lib und verschiedenen I2S-DACs dran, auch die MAX98357 waren da schon dran. Über das Tonuino war ich schon gestolpert, da fehlte noch eine Verwendung bei mir. Ansich ist der AC101 ja kein Hexenwerk, sind letztlich ja erstmal viel defines und ein paar Grundfunktionen. Aufwand machen ja die Feinheiten, das Zusammenspiel der internen Komponenten usw. Da ist aber mehr Datenblattstudium angesagt. Da werde ich aber nur ins Detail gehen, wo mir eine ganz konrete Anwendung einfällt. Gruß aus Berlin Michael
Wir sind uns ja, in verschiedenen Foren, jetzt schon öfter über den Weg gelaufen. Die Welt ist klein :-) Die ESP8266Audio-Lib hatte ich auch schon in Verwendung. Was mir daran gut gefällt ist der modular zuschaltbare Puffer. Was mir nicht so gefällt ist die Lautstärkeregelung mit float-Werten von 0 bis 4. Das gefällt mir in der "Schraubfaul-Lib" besser. Gut, über ein Array könnte ich mir natürlich float auf int mappen, das wäre jetzt kein Showstopper. Ich fand die Tonuino-Idee einfach gut und da ich kleine Kinder habe, hat das auch gepasst. Mir ist allerdings noch ein Teilprojekt dazu in den Sinn gekommen. Und zwar habe ich im Keller kein WLAN (dafür aber Ethernet), weil ich es an für sich nicht brauche. Wohl aber ne Anlage und manchmal würde ich beim Schrauben/Basteln da unten gerne Webradio hören. Ich werde mir also einen Tonuino bauen, allerdings mit Ethernet, Line-Ausgang und (außer Drehencoder für laut/leise/aus/an) keine Tasten. Den stecke ich dann einfach ein und lege mir nen Satz RFID-Karten für meine Webradios hin. Also im Grunde mein o.g. Projekt in reduziert, aber Ethernet statt Wifi.
Hallo, ja, die Welt ist klein. :-) Ich muß mir die ESP32-audioI2S unbedingt mal genauer anschauen. Das Ding spielt hier jetzt schon den ganzen Tag ohne Aussetzer. Hier sorgt eigentlich die WLAN-Auslastung auch durch viele Nachbarn immer mal für einen Reconnect und damit ist relativ viel Buffer für die Streamdaten nötig. Irgendwie hat er das in seiner Lib besser gelöst als die ESP8266Audio. Einen Abkömmling des Tonuino wird es hier wohl auch geben, bei mir dann mittlerweile für die Urenkel... Bei Deinem Kellerproblem würde es bei mir wohl eher bei einem alten Router oder sonstigen AP enden, der dort ein lokales WLAN aufspannt. Macht dann das nächste ESP-Modul z.B. als Sensor auch einfacher. ;-) Ähnliches macht ja mein Pollin-Teil: https://www.pollin.de/p/portabler-designlautsprecher-schwarz-641081 inzwischen für 3,99€... Das hat Original eine USB-Soundkarte drin und einen LineIn. Am LineIn hängt der ESP32+I2S-Decoder. Prinzipiell hätte der Audiochip da drin selbst I2S in, passte aber alles nicht so richtig zusammen. Batteriefach ist für 4xAAA, also gelich ein USB-Netzteil ran, die Batterien sind nach wenigen Stunden leer. Eigentlich wäre das auch was für den Tonuino, jmuß ich mir mal durch den Kopf gehen lssen und notfalls noch welche bei Pollin bestellen, bevor die alle sind. Gruß aus Berlin Michael
Hallo, auf diesem Thread bin ich durch Zufall gestossen nachdem einige Besucher meies Github Repositorys https://github.com/schreibfaul1/ESP32-audioI2S von diesem Forum verlinkt wurden. Ich wusste gar nicht, dass der ESP32-A1S überhaupt so angesteuert werden kann wie ein normaler DAC. Danke an Michael für seine gute Arbeit!. Nun habe ich zwei A1S Audioboards von AI Thinker zum testen bestellt die nach 3 Wochen Wartezeit aus China geliefert wurden. Die AC101_I2S_Audiolib-Test.ino von Michael lief sofort. Zwei Lautsprecher lassen sich über die eingebauten Verstärker (je 3W) problemlos ansteuern. Ein TFT-Display lässt sich jedoch nicht so einfach anbinden. Die GPIOs 5,13,18,19 und 23 sind zwar über die Stiftleiste herausgeführt aber alle mit einem Kondensator (gemessen: 100nF) nach Masse geblockt. Das soll sicher ein Prellschutz für die Tasten sein ist aber für höherfrequente Signale vollkommen schädlich. Nachdem ich die Kondensatoren C57-C61 ausgelötet habe sind die GPIOs nutzbar. Schade, dass GPIO2 (MISO) nicht zugänglich ist. Auch ein 5V-Pin wäre wünschenswert. Hier die Schaltung meines Audioboards (hab die V2.2) https://github.com/schreibfaul1/ESP32-audioI2S/blob/master/examples/ESP32-A1S/A1S.pdf vG Wolle
Hallo, Wolle schrieb: > Ich wusste gar nicht, dass der ESP32-A1S überhaupt so angesteuert werden > kann wie ein normaler DAC. Danke an Michael für seine gute Arbeit!. Danke zurück für die Lib von mir. Mein Audioboard 8auch die V2.2) liegt leider jetzt schon länger etwas raum... Ich habe auch eingegriffen und etwas umgelötet, ich schau mal nach, wie genau... Card Select from SD-Slot aufgetrennt, brauch ich real nicht. Ich will da eigentlich noch einen RFID-Reader per SPI ranhängen, passt prinzipiell mit dem HTAG-Anschluß (nutze ich nicht), CS und evtl. Reset für den Cardreader muß ich noch sinnvoll zuordnen. Letztlich soll es für einen tonduino-Abkömmling dienen, das Audioboard als Testplattform. Ich hatte inzwischen ein paar nackte ESP32-A1S aus China bestellt, einer läuft hier im Test als reiner Streamplayer meines internen IceCast-Streams mit einem Pollin-Lautsprecher: https://www.pollin.de/p/portabler-designlautsprecher-schwarz-641081 Da wird das ESP32-A1S-Modul dann direkt eingebaut, als "Klo-Lautsprecher" o.ä. Ein BEkannter hat sich da gleich 10 Stück jeweils bestellt und "beschallt" sein halbes Haus schon damit, MQTT und Webserver zur Steuerung jeweils mit drauf, da bastelt er noch dran rum. Ich komme im Moment etwas selten dazu, da weiterzumachen, Rentner haben eben niemals Zeit... ;-) Gruß aus Berlin Michael
Hallo Michael, IO2 (MISO) der SD-Karte habe ich nun auf eine Stiftleiste gelegt. Somit kann das vorhandene SPI auch extern benutzt werden, ohne einen SPI2 aufzumachen. Desweitern auch mit IO4 und +5V. Die Stiftleiste habe ich einfach mit Sekundenkleber auf das Board wo noch Platz war geklebt. Die Vebindungen sind Fädeldraht. Ein TFT Display mit ILI9341 läuft mit dem Board super. Zwei Brüllwürfel sorgen für den notwendigen Krach :-) Mit einem ordentlichen Gehäuse könnte das ein gutes Zweitradio (mit MP3 Player) werden. Hab sogar noch zwei GPIOs für Erweiterungen frei. vG Wolle
Hallo, auch ich hab mir das AI-Thinker V2.2 Board bestellt und damit ein wenig probiert. Als Basis nutze ich das A1S example von Wolle ( Vielen Dank!!). Mir ist aufgefallen, dass mein Board vor allem bei Sprache erkennbare Verzerrungen produziert. Als Grund vermute ich ein Problem beim clocking des AC101. Wenn ich das richtig verstehe, gibt der ESP32 das MCLK-Signal nicht aus. In der AC101.cpp wird aber MCLK als Clock source gesetzt. Wenn ich also in der ACA101.cpp unter AC01::begin folgendes ändere:
1 | // Clocking system
|
2 | //ok &= WriteReg(SYSCLK_CTRL, 0x8b08); // 1000 1011 0000 1000
|
3 | ok &= WriteReg(SYSCLK_CTRL, 0xab08); // 1010 1011 0000 1000 |
verbessert sich der Klang (bei mir) deutlich. Die Änderung stellt die PLL-Quelle auf BCLK. Grüße Thomas
Wolfgang F. schrieb: > Hallo Michael, > IO2 (MISO) der SD-Karte habe ich nun auf eine Stiftleiste gelegt. Somit > kann das vorhandene SPI auch extern benutzt werden, ohne einen SPI2 > aufzumachen. Desweitern auch mit IO4 und +5V. Die Stiftleiste habe ich > einfach mit Sekundenkleber auf das Board wo noch Platz war geklebt. Die > Vebindungen sind Fädeldraht. Ein TFT Display mit ILI9341 läuft mit dem > Board super. Zwei Brüllwürfel sorgen für den notwendigen Krach :-) > Mit einem ordentlichen Gehäuse könnte das ein gutes Zweitradio (mit MP3 > Player) werden. Hab sogar noch zwei GPIOs für Erweiterungen frei. > > vG > Wolle Darf ich da nochmal kurz nachhaken? Ich hatte in einem Nachbarthread einen SPI2 aufgemacht und den Clock für den RC5222 stark reduzieren müssen (Beitrag "ESP32 Esp32-Audio-Kit A1S v2.2 + RC522") ich vermute das liegt an den Kondensatoren, dass man dort keine höher frequenten Signale anlegen kann? Meine Frage nun: Wie hast du genau den SPI-Bus der SD-Card für den RC5222 zugänglich gemacht? Ich sehe du hast zwei Drähte an den SD-Card Slot gelötet? Welche Ports sind das genau? Für was benötigst du die +5V? Bei mir läuft der RC5222 mit 3.3V? Grüße Chris
Hallo Chris, ich brauche die +5V für ein RPI Display (320x480px), 3,3V reichen leider nicht aus. Um IOs zu sparen benutze ich nur einen SPI Bus (für TFT, Tochpad und SD gemeinsam). Dazu habe ich MISO der SD Karte auf eine extra Stiftleiste gelegt. Wenn du die IOs der Taster benutzen möchtest empfielt es sich die Kondensatoren C56...C61 die parallel zu den Tastern liegen auszulöten. vG Wolle
Wolfgang F. schrieb: > Hallo Chris, > ich brauche die +5V für ein RPI Display (320x480px), 3,3V reichen leider > nicht aus. Um IOs zu sparen benutze ich nur einen SPI Bus (für TFT, > Tochpad und SD gemeinsam). Dazu habe ich MISO der SD Karte auf eine > extra Stiftleiste gelegt. Wenn du die IOs der Taster benutzen möchtest > empfielt es sich die Kondensatoren C56...C61 die parallel zu den Tastern > liegen auszulöten. > > vG > Wolle Achso dann hab ich das falsch verstanden. Dachte du hast auch mit den RC5222 experimentiert und an den SD-Card SDMMC angeschlossen. Aber das müsste doch ebenfalls funktionieren, oder? Für den RC5222 benötige ich einen MISO, MOSI, CLK, CS und einen RST. Meinst du man kann die beiden kaskadieren oder sollte man eher auf eine Sternverbindung zurück greifen? Bevor ich dort anfange an den Pins zu löten wollte ich erstmal auf Nummer sicher gehen dass das theoretisch funktionieren könnte :-)
Wolfgang F. schrieb: > Hallo Chris, > ich brauche die +5V für ein RPI Display (320x480px), 3,3V reichen leider > nicht aus. Um IOs zu sparen benutze ich nur einen SPI Bus (für TFT, > Tochpad und SD gemeinsam). Dazu habe ich MISO der SD Karte auf eine > extra Stiftleiste gelegt. Wenn du die IOs der Taster benutzen möchtest > empfielt es sich die Kondensatoren C56...C61 die parallel zu den Tastern > liegen auszulöten. > > vG > Wolle Ich hab mir jetzt ein zweites Board geholt und wollte an den SPI Bus der SD Card ran. Ich sehe dass du zwei Kabel an zwei Ports der SD-Card angelötet hast? Im Text beschreibst du aber, dass du nur den MISO Port benötigst. Wieso dann zwei Kabel? Ist das obere oder das untere der MISO Port? Vielen lieben Dank für deine Hilfe Chris
Ja, das ist richtig. Ich habe noch GPIO4 für eventuelle Erweiterungen herausgeführt. GPIO4 wird bezüglich der SD-Card nicht benutzt, ist also für den SPI-Bus nicht notwendig. vG Wolle
Vielen Dank für deine Hilfe. OK, so ganz verstehe ich leider immernoch nicht wie du neben der SD-Card noch einen weiteren Slave auf diesem SPI-Bus verwenden kannst, da du nur Zugang zu dem MISO Port hast? Liege ich richtig, dass du eine SPI-Sternverbindung verwendest? (https://de.wikipedia.org/wiki/Serial_Peripheral_Interface) Dann hätten wir jetzt über I02 den gemeinsamen/geteilten MISO-Port. Jetzt benötigen wir doch noch einen gemeinsamen SCLK/SCK Port und einen gemeinsamen MOSI-Port. Über getrennte Chip Select Leitungen können wir dann die Slaves ansprechen/auslesen? Kommt man an diese Ports über die richtige DIP-Schalterstellung und andere Ausgänge auf dem Board heran, oder wie löst du dieses Problem? Es tut mir leid, dass ich dir solche Löcher in den Bauch frage, aber bevor ich mit meinen Lötfähigkeiten anfange auf dem Board rumzubasteln, würde ich lieber genau vorher Bescheid wissen. Grüße Chris
Ich habe den SPI-Bus nicht geteilt. Alle Slaves liegen parallel auf dem SPI. Über CS wird der Slave ausgewählt, dazu benötigt jeder eie eigene Leitung, so wie auf diesem Bild: https://obrazki.elektroda.pl/2824647100_1536587694.png . CLK (GPIO14) und MOSI (GPIO15) liegen bereits auf einer Stiftleiste und heißen dort MTMS und MTDO. Hier der Schaltplan von dem Board: https://github.com/schreibfaul1/ESP32-audioI2S/blob/master/examples/ESP32-A1S/A1S.pdf Die Schalter sind 1-off und 2...5-on. Hoffe, das hilft weiter. vG Wolle
Perfekt, vielen Dank. Das bestärkt mein Vorhaben den SPI-Bus der SD-Card zu verwenden. Mal sehen ob ich das vernünftig praktisch umsetzen kann :-)
@Michael: Hattest du eigentlich Erfolg dabei, einen RFID-Reader am genannten Board zum Laufen zu bringen? @Wolle: Sind die von dir genannten 100 nF-Caps auf deinem Board namentlich eingezeichnet? Weil bei mir sind sie es nicht (v2.2) und ich bin mir gar nicht so sicher, wo genau die liegen. Das Einzige, was ich sehe, ist R66 bis R70 und jeweils zwischen diesen Widerständen und den Keys 2 bis 5 ist dann jeweils ein weiteres Bauteil eingelötet, welches jedoch nicht beschriftet ist.
Ich habe (wie andere auch) ein solches Board V2.2 und würde es gern zusammen mit einem RFID zum Leben als Musiktruhe (Projekt Tonuino) erwecken. Neben der Software (hier kümmert sich Gast Torsten darum) geht es um den möglichst "schmerzfreien" Anschluss eines RFIDs. Daneben habe ich die eine und andere Unsicherheit / Frage wahrgenommen, weswegen ich meine bisherigen Erkenntnisse zum Board zur Diskussion / Bestätigung stellen möchte (siehe auch Foto): 1. Die Keys 1..6 können analog über IO36 erfasst werden und benötigen keine einzelnen IOs. 2. Ergänzend zu 1. können die orange-umrandeten Widerstände R66..70 ( je 0 Ohm, also Drahtbrücken) „durchgeknipst“ werden, womit IO5, IO18, IO23, IO19 frei werden und an P2 zur freien Nutzung (ohne parallele Kondensatoren) verfügbar sind. IO13 hängt damit zwar auch nicht mehr an Key2, wird aber für den SD weiter als CS benötigt. 3. Mäuseklavier S1: Wird der SD benutzt, generiert IO13 den CS dafür (also S1.1 = OFF, S1.2 = ON, S1.4 = OFF) und IO15 den MOSI (also S1.3 = ON, S1.5 = OFF). Setzt man zusätzlich S1.4 und S1.5 = ON, so liegt wahrscheinlich IO15 / MOSI auf P1.1 und IO13 / CS auf P1.2. 4. JTAG / P1: Die Belegung mit IO15, IO13, IO12, IO14 bringt einen Teil des SPI (MOSI, CS_SD, frei, CLK) an Pfosten, leider aber nicht MISO / IO2. Den freien IO12 kann man wohl als CS_ExternalDevice (z.B. CS_RFID) einsetzen. --> Vermutung: Setzt man S1.4 = OFF, so liegt CS_SD nicht am P1.2 an und man hätte einen freien Pfosten, um MISO / IO2 darauf zu „verdrahten“. Als Ergebnis wäre P1 ein kompletter Pfosten für ein RFID (bis auf GND / V3.3, was es aber wenigstens auf P3.1 / P3.6 gibt). 5. P2 / P3: Neben 2x GND und 2x V3.3 stehen 6 IOs zur Verfügung. P2.1 / IO21 ist als Output mit dem Ein-Aus-Schalten der beiden Endstufen 3W belegt. P2.2 / IO22 ist als Output mit dem Ein-Aus-Schalten der LED4 belegt, was aber kein Hemmnis für eine Benutzung als Ausgang sein muss. Knipst man R14 (neben D4) durch, so ist der Pin frei und auch als Eingang zu verwenden. P2.3 / IO19 ist als Output mit dem Ein-Aus-Schalten der LED5 belegt, was aber kein Hemmnis für eine Benutzung als Ausgang sein muss. Knipst man R76 (neben D5) durch, so ist der Pin frei und auch als Eingang zu verwenden. P2.4 / IO23, P2.5 / IO18, P2.6 / IO5 sind bei Beachtung von 2. Frei und können in beide Richtungen verwendet werden. 6. J1 Earphones Headphone: IO39 / HP_Detect (ESP32 SENSOR_VN) kann als Input benutzt warden, um das Einstecken der Phones zu detektieren. --> Problem: Im Schaltplan ist hier ohne Bezug zu einer Leitung der IO12 erwähnt, der an SD1 anliegt und im SPI-Modus für SD frei ist. Ich vermute einen Fehler im Schaltplan. 7. Ohne Stecker / Pfosten: Wenn der SD im SPI-Modus gefahren wird, ist der IO4 (DATA1) unbenutzt und steht intern an SD1.8 als Output bzw. Input mit 10K Pullup zur Verfügung. Für den Anschluss eines RFIDS (über SPI) ist Löten wohl nicht zu umgehen. Entsprechend meinem Punkt 4 wäre der kleinste Eingriff wohl ein Draht von SD1.7 auf P1.2 für MISO / IO2. Oder – Frage an die Runde – kann man den IO2 / MISO irgendwie auf einen anderen, freien IO „duplizieren“, ohne die Bibliothek für den SPI / SD ändern zu müssen? Das würde den Draht ersetzen können.
Thomas G. schrieb: > 0xab08 Thomas G. schrieb: > Wenn ich also in der ACA101.cpp unter AC01::begin folgendes ändere:// > Clocking system > //ok &= WriteReg(SYSCLK_CTRL, 0x8b08); // 1000 1011 0000 1000 > ok &= WriteReg(SYSCLK_CTRL, 0xab08); // 1010 1011 0000 1000 Das kann ich übrigens bestätigen. Ich habe das gefühl das es weniger "klirrt"
Hallo ich bin neu hier und danke für die vielen wertvollen Informationen. Kann mir noch jemand verraten, welchen ESP Controller ich unter Arduino einstellen muss? Der ESP32-A1S ist ja noch nicht vertreten.
Das sind meine Einstellungen in Eclipse. In der Arduino-IDE kann das 1:1 übernommen werden.
Hallo ich habe die Einstellungen für Arduino übernommen und die Libs ins Projektverzeichnis eingestellt (siehe Anlage 1). Trotzdem bekomme ich noch Fehlermeldungen (Anlage 2,3)? Wird die Datei dummy.h benötigt ?
Die Libs werden als *.zip von GitHub heruntergeladen und mit der Adruino-IDE installiert (Bibliothek einbinden/ZIP-Bibliothek hinzufügen...) Es müssen keine Dateien ins Projektverzeichnis kopiert werden.
Meinen Tonuino-Fork (https://github.com/biologist79/Tonuino-ESP32-I2S) habe ich gestern zum Laufen gebracht auf diesem Board. Kurz zur Beschreibung: Man steuert mittels RFID letztlich, was gespielt werden soll. Also RFID-Tags sind immer mit Aktionen verknüpft so alà "Spiele Verzeichnis x im Modus Hörspiel". Man legt sie also auf und dann gehts los. Also für Kinder einfach bedienbar. Weiterhin gibt es drei Tasten: vor, Pause/Play, zurück und einen Drehencoder, mit dem man lauter/leiser und aus/einschalten kann. Es gibt eine GUI, über die man diverse Parameter konfigurieren kann (z.B. neue RFID-Tags anlernen), einen Neopixel, der verschiedene Dinge signalisiert und einen FTP-Server, über den man Files auf die SD-Karte kopieren kann. Steuerbar ist das Ganze auch per MQTT. Verwendet wird die Lib von Wolfgang zum Dekodieren von mp3s. Webstreams werden entsprechend auch unterstützt. Zum Board: Es besitzt Keys 1-6, die jedoch auch entsprechend viele GPIOs belegen. Durch Auslöten der Widerstände R66, 67, 68, 69 und 70 habe ich die Tasten erstmal von den GPIOs abgekoppelt, so dass auch keine Kondensatoren auf den GPIOs "lasten" und diese damit für andere Dinge nutzbar werden. Der Schaltplan sieht vor, dass man alternativ die Taster auch analog via GPIO36 über Spannungsteiler auslesen kann. Die dazu notwendigen Widerstände 55/60, 56/61, 57/62, 58/63, 59/64 muss man jedoch selbst bestimmen und dann auch einlöten. Bauform ist (glaube ich; habe keine Erfahrung mit SMD) SMD0603. Habe ich auf jeden Fall noch nicht gemacht; ist nur eine Idee. Ausgelötet habe ich zudem den Widerstand für D4, so dass diese LED nicht mehr leuchtet. SPI läuft via: CS (SD): 13 (erreichbar via Pin-Header) CS (RFID): 12 (erreichbar via JT_MTDI) MOSI: 15 (erreichbar via JT_MTDO) MISO: 2 (muss man an Pin7 des SD-Slots anlöten) SCK: 14 (erreichbar via JT_MTMS) RFID an GPIOs, die nicht dem SPI-Default entsprechen, unterstützt die originale Lib (https://github.com/miguelbalboa/rfid/) nicht. Habe daher eine Angepasste verwendet: https://github.com/madias123/STM32duino-RFID-Mp3-Player/tree/master/3d%20party%20libraries%20(modified)/MFRC522. RFID.RST habe ich mit GPIO 35 initialisiert. Spielt keine Rolle, man benötigt ihn nicht und muss den Pin gar nicht anschließen. An freien GPIOs bleiben jetzt noch: 4 (muss man sich von SD.8 holen (anlöten); Drehencoder.Button würde ich bei mir drauflegen, da man GPIO4 zum Aufwecken des ESP verwenden kann) 5 (Drehencoder.CLK) 18 (Drehencoder.DT) 19 (ggf Power. D.h. da hänge ich eine Mosfet-Schaltung dran, die zum Stromsparen externe Peripherie ein/abschaltet, wenn der ESP im Deepsleep ist.) 22 frei 23 (Neopixel) Dip-Schalter: off on on / off /on Bei 22 kann man sich jetzt überlegen, ob man dort zB extern Buttons dranhängt und via Spannungsteiler analog ausliest. Habe ich noch nicht gemacht, aber wäre eine Option. Ohne RFID zieht das Board im Deepsleep ca. 30 mA, was halt schon recht viel ist, wenn man es mit Akku betreiben will. Akkubetrieb habe ich nicht getestet. 105 mA sind es mit WiFi im Idle-Modus. Ansonsten kann man GPIO39 benutzen, um zu detektieren, ob ein Kopfhörer eingesteckt ist. Ist das der Fall, so ist der Zustand "low" und man kann entsprechend die Lautsprecher abschalten (und umgekehrt beim Ausstecken). Beim Testen fiel mir auf, dass das gar nicht so trivial ist mit dem Einstecken. Denn andererseits prellen low/high hier 4-5 mal und andererseits ist mir das Board mitunter beim Einstecken auch mal abgestürzt. Habe mir das Ganze jetzt gewissermaßen in Kooperation mit Peter B. erarbeitet; er hat mir das Board zur Verfügung gestellt. Er fand die Idee interessant, dass man quasi alles schon fertig hat und ich wollte mal sehen, ob ich darauf meine Software zum Laufen bringw. Man muss allerdings schon auch ein paar Dinge löten, insofern ist es auch kein Selbstläufer. Den Code findet man hier: https://github.com/biologist79/Tonuino-ESP32-I2S/tree/master/Hardware-Plaforms/ESP32-A1S-Audiokit. Wobei ich sagen muss, dass mein eigentlicher Fokus bei einem Lolin32 in Verbindung mit MA98357A als Amp und einer Custom-Kopfhörer-Platine liegen wird.
Servus, Ich bin unglücklicherweise an 2 esp32-a1s gekommen Version 2.2 ai thinker. Hab leider noch nicht mit platformio gearbeitet und bin leicht überfordert den build von biologist79 damit aufzuspielen. Wäre es möglich, dass mir wer davon eine bin erzeugt oder ein Arduino Projekt? Gruß Sascha
Sry für Doppelpost. Hab heute mit der Arduino ide einen Beispielcode wie im Thread schon erwähnt aufgespielt. Nun läuft zumindest 1 webstream. Board ist also i.O.. Würde gerne den Fork von biologist79 aufspielen. Was muss man in PlatformIO löschen bzw verschieben, damit er alles compiliert und dies für das Audio Kit passt?
Auf dem ESP32 A1S Kit ist bei Lieferung ein Bluetooth-Player geladen. Weiß jemand zufällig, wo ich den Code dazu finde? Ich möchte ihn mit Web-Radio und mp3-Player kombinieren.
Hallo, kannst ja hiermit anfangen: https://github.com/pschatzmann/ESP32-A2DP Gruß aus Berlin Michael
Michael U. schrieb: > Hallo, > > kannst ja hiermit anfangen: > https://github.com/pschatzmann/ESP32-A2DP > > Gruß aus Berlin > Michael Herzlichen Dank - schaut gut aus !!
Nach dem Upload ( Leaving..., Hard resetting via RTS pin...) bekomme ich oft die folgende Fehlermeldung: "Ungültige Bibliothek D:\Dok\Arduino\libraries\AC101-master in Missing 'paragraph' from library gefunden" obwohl alles funktioniert. Was läuft falsch?
Michael U. schrieb: > Lief auf > Anhieb. Stimmt. Ich hab deinen Sketch vor ein paar Tagen mal ausprobiert. Es war direkt unheimlich. Das hab ich ja noch nie erlebt: Quellen übersetzen, Board flashen, geht! Merci. Was mich allerdings bei diesem Board wundert ist, warum die Entwickler von AI-thinker für die Taster so viele GPIOs verplempert haben. Funktioniert denn die alternative Schaltung mit dem Analog-Eingang nicht so gut? Irgendwie ist alles vorbereitet worden, aber man hat trotzdem die andere Variante vorgezogen. Grüße vom Bodensee Andreas
Hallo in die Runde! Ich habe auch ein paar Gehversuche mit dem ESP32 Audio Kit v2.2 unternommen. Der AC101 macht definitiv erhebliche Probleme. Gut finde ich, dass man die SD Karte mit 4pin SD_MMC betreiben kann (DIP 2,3 auf ON, alle anderen auf OFF). Allerdings erzeugt der AC101 Verzerrungen und Klirren. Ich vermute auch, dass irgendwie die PLL oder irgendwas anderes noch richtig eingestellt werden muss. Im 24Bit Modus werden die Effekte noch schlimmer (den habe ich ohne AudioOutputI2S, nur mit eigener I2S Konfiguration getestet). Die Tage zuvor hatte ich einen ESP32 DOIT mit einem PCM 5102a DAC getestet. Hier gibt es absolut keine Probleme, weder mit 16 oder 32 Bit. === hier mal der code zum Bild ===
1 | #include "AudioOutputI2S.h" |
2 | #include "AC101.h" |
3 | |
4 | AudioOutputI2S *out; |
5 | |
6 | #define IIS_SCLK 27
|
7 | #define IIS_LCLK 26
|
8 | #define IIS_DSIN 25
|
9 | |
10 | #define IIC_CLK 32
|
11 | #define IIC_DATA 33
|
12 | |
13 | #define GPIO_PA_EN GPIO_NUM_21
|
14 | #define GPIO_SEL_PA_EN GPIO_SEL_21
|
15 | |
16 | static AC101 ac; |
17 | |
18 | static uint8_t volume = 63; |
19 | const uint8_t volume_step = 2; |
20 | |
21 | void setup() |
22 | {
|
23 | Serial.begin(115200); |
24 | |
25 | Serial.printf("Connect to AC101 codec... "); |
26 | while (not ac.begin(IIC_DATA, IIC_CLK)) |
27 | {
|
28 | Serial.printf("Failed!\n"); |
29 | delay(1000); |
30 | }
|
31 | Serial.printf("OK\n"); |
32 | |
33 | ac.SetMode(AC101::MODE_ADC_DAC); |
34 | |
35 | ac.SetVolumeSpeaker(volume); |
36 | ac.SetVolumeHeadphone(volume); |
37 | // ac.DumpRegisters();
|
38 | |
39 | // Enable amplifier
|
40 | pinMode(GPIO_PA_EN, OUTPUT); |
41 | digitalWrite(GPIO_PA_EN, HIGH); |
42 | |
43 | // Configure keys on ESP32 Audio Kit board
|
44 | pinMode(PIN_PLAY, INPUT_PULLUP); |
45 | pinMode(PIN_VOL_UP, INPUT_PULLUP); |
46 | pinMode(PIN_VOL_DOWN, INPUT_PULLUP); |
47 | |
48 | // Create audio source from progmem, enable I2S output,
|
49 | // configure I2S pins to matchn the board and create ringtone generator.
|
50 | file = new AudioFileSourcePROGMEM( song, strlen_P(song) ); |
51 | out = new AudioOutputI2S(); |
52 | out->SetPinout(IIS_SCLK /*bclkPin*/, IIS_LCLK /*wclkPin*/, IIS_DSIN /*doutPin*/); |
53 | out->begin(true); |
54 | |
55 | Serial.printf("Generating test signal...\n"); |
56 | }
|
57 | |
58 | static int16_t sample[2] = {0,0}; |
59 | |
60 | void loop() |
61 | {
|
62 | while (!out->ConsumeSample(sample)) |
63 | {
|
64 | /* wait */
|
65 | }
|
66 | |
67 | sample[0] -= 1; |
68 | sample[1] += 1; |
69 | }
|
Ich konnte das Problem mit der Verzerrung lösen, man muss tatsächlich die PLL richtig einstellen. Mit der Einstellung steht und fällt die Klangqualität. In der Spec. steht, dass die I2S1CLK auf den Wert SampleRate * 512 gestellt werden muss. Demnach wäre das bei 44,k eine I2S1CLK von 22.5792M Als Source können wir die BCLK nehmen (es ließe sich vermutlich aber auch die MCLK nehmen. Verbunden ist diese, und lässt mit ledcSetup, ledcAttachPin, ledcWrite einstellen). Die BCLK ist bei 2 Känalen und 16Bit Wortbreite: 16 2 44.1k -> 1411,2k Gemäß der Formel FOUT = (FIN * N) / (M * (2K + 1)) erhalten wir mit K = 1, M = 1 für N den Wert 48 Folglich erhalten wir dann für AC101::begin
1 | ok &= WriteReg(PLL_CTRL1, 0x0141); |
2 | |
3 | uint16_t N = 48<<4; /* 512 / (M * (2*K+1)) / (CHANNELS * WORD_SIZE) -> 512 / 3 * (2 * 16) */ |
4 | uint16_t PLL_EN = 1<<15; |
5 | uint16_t N_f = 0<<0; /* 0.2 N */ |
6 | ok &= WriteReg(PLL_CTRL2, N | PLL_EN | N_f); |
7 | |
8 | // Clocking system
|
9 | uint16_t PLLCLK_ENA = 1<<15; /* 0: Disable, 1: Enable */ |
10 | #if 1
|
11 | uint16_t PLL_CLK = 0x2 << 12; /*bclk1 */ |
12 | #else
|
13 | uint16_t PLL_CLK = 0x0 << 12; /*MCLK1 */ |
14 | #endif
|
15 | uint16_t I2S1CLK_ENA = 1<<11; /* 0: Disable, 1: Enable */ |
16 | #if 1
|
17 | uint16_t I2S1CLK_SRC = 0x3<<8; /* PLL */ |
18 | #else
|
19 | uint16_t I2S1CLK_SRC = 0x0<<8; /* MLCK1 */ |
20 | #endif
|
21 | uint16_t SYSCLK_ENA = 1<<3; |
22 | |
23 | ok &= WriteReg(SYSCLK_CTRL, PLLCLK_ENA|PLL_CLK| I2S1CLK_ENA|I2S1CLK_SRC|SYSCLK_ENA/*0x8b08*/); /* I2S1CLK Enabled, Src: pll, sysclk enab */ |
Der Rest bleibt wie gehabt. Bei anderer Sampling Rate oder Word_size müsste man die Werte neu berechnen. Hier wäre sicherlich eine Überarbeitung vom Treiber sinnvoll. Folgendes sollte auf jeden Fall noch sichergestellt werden:
1 | ac.SetI2sSampleRate(AC101::SAMPLE_RATE_44100); |
2 | /*
|
3 | * I2S1CLK/BCLK1 -> 512 * 44100 / 44100*2*16
|
4 | * BCLK1/LRCK -> 44100*2*16 / 44100 Obacht ... ein clock cycle goes high and low
|
5 | * means 32 when 32 bits are in a LR word channel * word_size
|
6 | */
|
7 | ac.SetI2sClock(AC101::BCLK_DIV_16, false, AC101::LRCK_DIV_32, false); |
8 | ac.SetI2sMode(AC101::MODE_SLAVE); |
9 | ac.SetI2sWordSize(AC101::WORD_SIZE_16_BITS); |
10 | ac.SetI2sFormat(AC101::DATA_FORMAT_I2S); |
Und falls jemand die MCLK austesten möchte, da hilft dieser Code:
1 | // Put a signal out on pin
|
2 | uint32_t freq = SAMPLE_RATE*512; /* The maximal frequency is 80000000 / 2^bit_num */ |
3 | Serial.printf("Output frequency: %d\n", freq); |
4 | ledcSetup(MCLK_CH, freq, PWM_BIT); |
5 | ledcAttachPin(OUTPUT_PIN, MCLK_CH); |
6 | ledcWrite(MCLK_CH, 1<<(PWM_BIT-1)); /* 50% duty -> The available duty levels are (2^bit_num)-1, where bit_num can be 1-15. */ |
Ist doch schön, dass wieder jemand den Wert des guten alten RTFM zu schätzen gelernt hat... :)
Hallo zusammen, hab auch so ein kit. Wollte erst mal einen passthru mit Frequenzanalyse programmieren. Häng da aber irgendwie fest. Die Arduino FFT library macht auch irgend was, aber die Ergebnisse sind für mich sehr unplausibel. Laut Ausgabe liegt meine Stimmfrequenz bei 8 - 16 kHz. Mir war nicht bewusst das ich so eine hohe Stimme hab. Hab leider keinen Signalgenerator als Testmöglichkeit. Als Anhang hab ich das Programm gehängt. Ist ein PlatformIO project. Sollte sich aber auch mit anderen IDEs kompilieren lassen. Als Ausgabe hab ich ein ILI9341 Display drangehängt. Die Verkabelung ist in der platformio.ini hinterlegt sowie benötigten libraries(werden aber von PlatformIO automatisch nachgeladen). Passthru(Mic nach Kopfhörer) und Wellenform-Ausgabe auf Display funktionieren, nur leider die Analyse nicht(Ausgabe schon, aber meiner Meinung falsch).
ich könnte dir als Ersatz für den fehlenden Signalgenerator diese Software empfehlen: SweepGen - An Audio Sweep Generator - David J Taylor SweepGen turns a PC into an Audio Oscillator and Sweep Generator which can be used for testing audio or educational purposes. In conjunction with audio test instruments, you can make frequency response plots.
:
Bearbeitet durch User
Vielen dank für den Tipp. Werde mir die Tage das Programm mal anschauen. Dann kann ich wenigstens mal sehen, was die Frequenzanalyse macht.
David J Taylor SweepGen ist echt ein super Programm. Nochmal danke für den Tipp. Mit der Samplingroutine stimmt was nicht, habe irgendwelche Störsignale drauf. Hätte ich ohne das Programm bestimmt nicht so schnell herausbekommen. Dadurch natürlich keine anständige Frequenzanalyse. Muss mir dem post von Marcel mal genauer anschauen. Ich glaube bei mir ist auch eine falsche PLL eingestellt.
Hattest du das Mikrofonsignal denn an den LineOut mal in der Software durchgeschliffen und angehört? Dort würde eine falsche Einstellung recht schnell hörbar. Ansonsten kann man auch einfach einen Sinus erzeugen und sich einmal anhören. Wenn der nicht 100%ig sauber ist, könnte es die PLL sein.
Liegt bestimmt an der PLL. Nachdem ich die Frequenz manuell eingestellt habe(SAMPLE_RATE*512), ist der linke Kanal sauber, aber der rechte knackt. Hab bestimmt bei der Kanaltrennung des streams irgendwo einen Fehler.
Ich habe leider auch so einen Effekt mit Line In oder Mikrofon als Eingang. Zudem ist die ganze Zeit so ein fieses Knistern auf dem einem Kanal (ADCL) zu hören, sobald das Mikrofon oder LineIn ein Signal bekommt. Das Signal ist an der Quelle in Ordnung. Direkt reinhören kann man, wenn man den Eingang an den Ausgang routet: ok &= WriteReg(DAC_MXR_SRC, 0x1100); /* ADCL and ADCR as source */ Vermutlich funktioniert mit der I2S Umwandlung etwas nicht richtig
:
Bearbeitet durch User
Marcel L. schrieb: > Vermutlich funktioniert mit der I2S Umwandlung etwas nicht richtig Es war wieder die PLL Interessanter Weise war die PLL zu hoch eingestellt
1 | #if 0
|
2 | /* this code was originally used for a clean output only */
|
3 | uint16_t N = 48 << 4; /* 512 / (M * (2*K+1)) / (CHANNELS * WORD_SIZE) -> 512 / 3 * (2 * 16) */
|
4 | #else
|
5 | /* this works without audio problems using line in or mic input */
|
6 | uint16_t N = 24 << 4; /* 512 / (M * (2*K+1)) / (CHANNELS * WORD_SIZE) -> 512 / 3 * (2 * 16) */ |
7 | #endif
|
In diesem Fall funktionierte die obere Variante nicht. Die Untere dagegen läuft sauber.
Habe eine andere Möglichkeit gefunden(https://github.com/garygru/yummyDSP/blob/master/examples/yummyAudioKit/yummyAudioKit.ino). Ausgangssignal über DSP sieht sauber aus(Eingang SweepGen). Nur leider immer noch keine vernünftige Frequenzanalyse.
Ich versuche jetzt seit zwei Tagen Audio über den AC101 Codec zu erhalten - aber egal was ich mache - die Funktion ac.begin(IIC_DATA, IIC_CLK) liefert false in der while loop der setup() Funktion zurück. "Failure!" Ich versuche die AC101 Library via Arduino auf dem Board (V2.2) zum laufen zu bringen. Verwendete Library: https://github.com/marcel-licence/AC101 https://github.com/earlephilhower/ESP8266Audio ist ebenfalls installiert DIP Switches sind 1OFF 2ON 3ON 4OFF 5OFF Daneben ist ESP32Dev als Board in der Arduino IDE gewählt. 23:18:27.503 -> ets Jun 8 2016 00:22:57 23:18:27.503 -> 23:18:27.503 -> rst:0x1 (POWERON_RESET),boot:0x1f (SPI_FAST_FLASH_BOOT) 23:18:27.503 -> configsip: 0, SPIWP:0xee 23:18:27.503 -> clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00 23:18:27.503 -> mode:DIO, clock div:1 23:18:27.503 -> load:0x3fff0018,len:4 23:18:27.503 -> load:0x3fff001c,len:1216 23:18:27.503 -> ho 0 tail 12 room 4 23:18:27.503 -> load:0x40078000,len:10944 23:18:27.503 -> load:0x40080400,len:6388 23:18:27.503 -> entry 0x400806b4 23:18:27.691 -> Connect to AC101 codec... Failed! 23:18:29.097 -> Failed! 23:18:30.315 -> Failed! 23:18:31.534 -> Failed! Kann mir jemand weiterhelfen - was ich falsch mache? Die ESP32 Basisfunktionen bis Wifi funktionieren...
Hmm das ist wirklich merkwürdig. Sowas sollte eigentlich gar nicht möglich sein. Passen die defines? #define IIC_CLK 32 #define IIC_DATA 33 Das ac.bein dürfte ruhig das erste in der Setup routine sein, nach dem Serial.begin. Bei dem ac.begin wird ja eigentlich nur die i2c Verbindung zum codec aufgebaut.
:
Bearbeitet durch User
Ich verwende das Example von der Library - das Board kam neu und ist unmodifiziert. Ich dachte evtl an einen Anfängerfehler ? Frequenzeinstellung o.ä. ? Eine Lib linken muss man ja nicht direkt - die Informationen holt er sich aus den cpp files.
Stimmt auch wieder. Welches Beispiel ist es denn? Die Einstellungen sehen sonst so weit in Ordnung aus. PSRAM wird bei einigen Sachen benötigt. Allerdings wäre das Fehlerbild dann auch anders. Hier scheint es ja nur das i2c nicht zu gehen. Die defines müssten auch in dem Beispielprogram auftauchen. Die gehören nicht zur Bibliothek.
https://github.com/marcel-licence/AC101/blob/master/examples/ESP32AudioKit/ESP32AudioKit.ino Ich habe auch versucht, die Header von ESP8266Audio zusätzlich einzufügen. Nach dem Upload hänge ich dann wieder in der Setup() while Schleife.
Okay, die vielen Include Zeilen hatten mich gewundert. In der ac101.cpp wird in begin zum einen i2c geöffnet und register vom AC101 geschrieben. Da nach einem Fehler zu suchen wäre sicherlich nicht so toll. Ich habe das Beispiel auch gerade noch einmal erfolgreich getestet. Ich befürchte, dass entweder eine Änderung vom Beispiel oder ein Hardwaredefekt vorliegen könnte. Vielleicht gibt es noch andere Erfahrungen. Ich hatte ein Board letztens erhalten, dort waren pins vom ESP32 A1S mit Lötzinn miteinander verbunden (da musste ich leider dann nacharbeiten). Vielleicht lohnt sich hier noch einmal ein genauer Blick.
Pins wurden durchgepiept: ESP32A1S und Platine sind konnektiert - nebeneinander gibt es keine verbundenen Pins - sieht eigentlich gut aus. Gibt es für die Arduino IDE und das AI Thinker A1S ESP32 Audiokit ein "Setup Guide". Ich hatte zuerst versucht diverse Toolchains zu installieren - was sich als deutlich aufwändiger als die Arduino IDE gestaltet hat. Die fehlende Doku ist hier für C++Entwickler/Maker etwas abschreckend.
:
Bearbeitet durch User
Puh ich wüsste da nichts. Habe jetzt die letzte Zeit durch die Synthesizer projekte alles selbst versucht heraus zu finden. Der AC101 sitzt ja auch eigentlich im ESP A1S drin. Eigentlich sollte da ja nichts schief gehen können. Ich würde auch mal drauf spekulieren, dass es nicht an Arduino oder so liegt. Vielleicht lohnt es sich einmal ein blink.ino zu testen. led's sind ja einige da. Schaltplan hatte ich hier gefunden: https://docs.ai-thinker.com/_media/esp32-audio-kit_v2.2_sch.pdf Mit dem Codec gab es sonst auch keine Probleme (wenn nur falsch konfiguriert). Aber, dass es gar nicht geht .. Die buttons kann man (wenn das board läuft) ggf. modifizieren: https://www.youtube.com/watch?v=r0af0DB1R68 Das wäre für SPI oder I2C auf dem pin header ganz interessant. Hier (ESP A1S datasheet) findet man aber auch nicht so wirklich was. (Link lässt sich nicht posten, ist aber per google leicht zu finden)
Blinken funktioniert, wifi auch, sogar streamen via http - nur Audio schaffe ich nicht via I²C zu initialisieren. Ich probier nochmal die "Libs" neu zu installieren. Dank Dir auf alle Fälle.
:
Bearbeitet durch User
Ich habe jetzt auf einem zweiten Rechner folgende Schritte ausgeführt, um das AI Thinker ESP32 AudioKit in Betrieb zu nehmen. 1. Aktuelle Arduino IDE 1.8.15 herunterladen 2. Boardverwalter URL https://dl.espressif.com/dl/package_esp32_index.json hinzufügen und ESP32-Dev auswählen 3. AC101 lib hinzugefügt https://github.com/marcel-licence/AC101 4. ESP8266Audio lib hinzugefügt https://github.com/earlephilhower/ESP8266Audio 5. AC101 Sketchbook Beispiel geöffnet, kompiliert und hochgeladen #define IIC_CLK 32 #define IIC_DATA 33 Sind die Default Werte für den I²C des AC101 am AI Thinker Audiokit ? Da immer noch Failed! aus der setup() Funktion ausgegeben wird scheint die Verbindung zum AC101 Codec defekt - oder mache ich hier noch grundsätzlich etwas falsch? Werde das Board umtauschen - Die kurze Anleitung oben hätte mir wohl stundenlange Tests mit der Espressif Toolchain erspart :-)
:
Bearbeitet durch User
Man könnte vielleicht den I2C scanner probieren. Allerdings müsste man mal gegen checken, was das Ergebnis wäre, wenn der Scanner den I2C findet. Ich habe da keine Erfahrug mit. Mit Arduino kann man eigentlich echt viel machen. Kompliziert ist da zum Glück nicht unbedingt notwendig =)
Hallo, Friedemann W. schrieb: > Blinken funktioniert, wifi auch, sogar streamen via http - nur Audio > schaffe ich nicht via I²C zu initialisieren. Ich probier nochmal die > "Libs" neu zu installieren. lange her, daß ich mit dem Kit rumgespielt habe... Was heißt "sogar streamen via http"? Geht, also spielt den Stream richtig ab? Dann ist erstmal alles ok, das wird ja auch über den AC101 ausgegeben. Du hast die Version mit den 5 DIP-Schaltern? Welche DIP-Schalter-Stellungen hast Du eingestellt? Gruß aus Berlin Michael
Die Idee mit dem I²C Scanner ist echt gut. Folgende Ausgabe als endlos Schleife. Scanning... No I²C devices found Version 2.2 mit den 5 DIP Schaltern, 2 + 3 ON alle anderen auf OFF. Die ESP32 Funktionalität inkl WIFI funktioniert - nur der Zugriff auf den AC101 wird verweigert.
:
Bearbeitet durch User
Wire.begin() muss ersetzt werden durch: Wire.begin(33, 32); Ansonsten nimmt er die falschen Pins. Wenn es klappt würde dann folgendes angezeigt: 15:20:29.945 -> Scanning... 15:20:29.945 -> I2C device found at address 0x1A ! 15:20:29.979 -> done
Hallo, Friedemann W. schrieb: > Version 2.2 mit den 5 DIP Schaltern, 2 + 3 ON alle anderen auf OFF. habe ich hier in einem alten Sketch auch so vermerkt. Auf die I2C-Pins wurde ja schon hingewiesen. Der AC101 ist ja direkter Bestandteil des ESP32A1S und intern verbunden. Ich habe auch schon nackt ES32A1S vernaut, ein Bekanter auch mehrere, wäre so zumindest der erste defekte... Gruß aus Berlin Michael
:
Bearbeitet durch User
Ich habe das ESP-Audio-Kit 2.2 und habe das gleiche Problem wie Friedemann: - Ich habe 3 verschiedene Boards getestet - alle haben das gleiche Problem - Upload und Wifi funktioniert gut - Ich habe alle Bibliotheken für das AC101 ausprobiert: es lässt sich immer nicht initialisieren - Der I2C Scanner erkennt das AC101 nicht - Ich habe alle Schaltereinstellungen getestet, die ich finden konnte Gruss aus Belgien Jean-Luc ps sorry, wenn mein Deutsch nicht korrekt ist, ich schreibe dies auf Englisch und benutze DeepL um zu übersetzen ....
Darf ich fragen, woher die Boards kommen? Das wäre schon ärgerlich nach 4 Wochen warten defekte Hardware zu bekommen. Thanks for your effort =)
Das Board das ich verwende stammt von https://www.ebay.de/itm/203245868170 Seriennummer unter den DIP Schaltern steht bei mir ESP32 Audio Kit V2.2 2957 Ausgabe der MacID (ChipID) ESP32 Chip model = ESP32-D0WDQ5 Rev 1 ESP32 Chip ID = 582B75ACCD98 This chip has 2 cores Muss Power Supply ebenfalls verbunden sein, damit der A1S arbeitet - oder reicht der serielle USB Anschluss. Reichen die 5 obigen Installationsschritte für die Arduino IDE? Die Installation des Espressif IDF macht dann der Board Manager? Ein explizites ADF (Audio Development Framework) benötigt man ja auch nicht - das macht ja die ESP8266 Audio Klasse in Verbindung mit der AC101...
:
Bearbeitet durch User
Hallo, habe mal mein Audiokit rausgekramt... Gleiche Boardrevision, gleiche CPU-ID. Ich habe mal einen alten Testsketch angepasst, WLAN-Daten müssen eingetragen werden. Er streat einen Antenne Bayern Stream, wo der Link gerade noch drinstand. Lautsprecher und Kopfhörer sind auf mittlerer Lautstärke. Benutzt wird die ESP32-audioI2S lib von schreibfaul1 und die AC101 von Yveaux. https://github.com/schreibfaul1/ESP32-audioI2S https://github.com/Yveaux/AC101 Board ESP32 Dev-Module, IDE 1.8.15, ESP32 1.0.6 unter Win10/64 PS-Ram ja oder gleich den ESP32 Wrover auswählen. Spielt hier aber keine Rolle, die Lib nutzt keinen PS-Ram.
1 | #include "Arduino.h" |
2 | #include "WiFi.h" |
3 | #include "Audio.h" |
4 | #include "AC101.h" |
5 | |
6 | // I2S GPIOs die Pinnamen beziehen sich auf den AC101 |
7 | #define I2S_DSIN 25 |
8 | #define I2S_BCLK 27 |
9 | #define I2S_LRC 26 |
10 | #define I2S_MCLK 0 |
11 | #define I2S_DOUT 35 |
12 | |
13 | // I2C GPIOs |
14 | #define IIC_CLK 32 |
15 | #define IIC_DATA 33 |
16 | |
17 | #define GPIO_PA_EN 21 |
18 | |
19 | int8_t volume = 40; |
20 | |
21 | String ssid = "xxxxxxxxx"; |
22 | String password = "xxxxxxxxx"; |
23 | |
24 | bool wifi_flag = false; |
25 | |
26 | static AC101 ac; |
27 | |
28 | Audio audio; |
29 | |
30 | //##################################################################### |
31 | |
32 | void setup() |
33 | { |
34 | Serial.begin(115200); |
35 | Serial.println("\r\nReset"); |
36 | Serial.printf_P(PSTR("Free mem=%d\n"), ESP.getFreeHeap()); |
37 | |
38 | Serial.printf("Total heap: %d \r\n", ESP.getHeapSize()); |
39 | Serial.printf("Free heap: %d \r\n", ESP.getFreeHeap()); |
40 | Serial.printf("Total PSRAM: %d \r\n", ESP.getPsramSize()); |
41 | Serial.printf("Free PSRAM: %d \r\n", ESP.getFreePsram()); |
42 | |
43 | // Start WiFi |
44 | WiFi.mode(WIFI_STA); |
45 | WiFi.begin(ssid.c_str(), password.c_str()); |
46 | |
47 | while (WiFi.status() != WL_CONNECTED) |
48 | { |
49 | Serial.print("."); |
50 | delay(100); |
51 | } |
52 | wifi_flag = true; |
53 | |
54 | Serial.printf_P(PSTR("Connected\r\nRSSI: ")); |
55 | Serial.print(WiFi.RSSI()); |
56 | Serial.print(" IP: "); |
57 | Serial.println(WiFi.localIP()); |
58 | |
59 | // Start AC101 |
60 | Serial.printf("Connect to AC101 codec... "); |
61 | while (not ac.begin(IIC_DATA, IIC_CLK)) |
62 | { |
63 | Serial.printf("Failed!\n"); |
64 | delay(1000); |
65 | } |
66 | Serial.printf("OK\n"); |
67 | |
68 | ac.SetVolumeSpeaker(volume); |
69 | ac.SetVolumeHeadphone(volume); |
70 | // ac.DumpRegisters(); |
71 | |
72 | // Enable amplifier |
73 | pinMode(GPIO_PA_EN, OUTPUT); |
74 | digitalWrite(GPIO_PA_EN, HIGH); |
75 | |
76 | // Start I2S Aduio |
77 | audio.setPinout(I2S_BCLK, I2S_LRC, I2S_DSIN); |
78 | audio.setVolume(10); // 0...21 |
79 | |
80 | audio.connecttohost("http://mp3channels.webradio.antenne.de:80/oldies-but-goldies"); |
81 | |
82 | } |
83 | |
84 | //------------------------------------------------------------------ |
85 | |
86 | void loop() |
87 | { |
88 | if (WiFi.status() != WL_CONNECTED) |
89 | { |
90 | WiFi.reconnect(); |
91 | Serial.println("WiFi verloren..."); |
92 | while (WiFi.status() != WL_CONNECTED) |
93 | { |
94 | Serial.print("."); |
95 | delay(100); |
96 | } |
97 | } |
98 | |
99 | audio.loop(); |
100 | } |
101 | |
102 | //################################################################ |
103 | //---------------------- Audio Tools ----------------------------- |
104 | //################################################################ |
105 | |
106 | void audio_showstreamtitle(const char *info) |
107 | { |
108 | Serial.println(info); |
109 | } |
110 | |
111 | //------------------------------------------------------------------ |
Dudelt hier jetzt so vor sich hin. Gruß aus Berlin Michael
:
Bearbeitet durch User
Ich habe einen in Bangood gekauft: https://www.banggood.com/ESP32-Aduio-Kit-WiFi+-bluetooth-Modul-ESP32-Serial-to-WiFi-Audio-Development-Board-mit-ESP32-A1S-p-1449256.html?cur_warehouse=CN und zwei weitere bei Aliexpress : https://www.aliexpress.com/item/1005002660692468.html?spm=a2g0s.9042311.0.0.27424c4d1yZnPH ESP32 Chip model = ESP32-D0WDQ5 Rev 1 ESP32 Chip ID = EC2E75ACCD98 This chip has 2 cores Seriennummer unter den DIP Schaltern steht bei mir ESP32 Audio Kit V2.2 2957
Auch bei amiga`s sketch antwortet er nach Aufbau der Wifi Verbindung wie erwartet mit "Failed!" beim Versuch I2C zu AC101 aufzubauen. (Getestet ohne Speaker, ohne µSD-Karte und ohne zusätzliche Stromversorgung via USB) Ich habe jetzt noch eine weitere Platine bei eBay geordert, mal sehen was ein Test mit einer weiteren Platine ergibt... Kann man die betroffenen A1S Chips eventuell klassifizieren: Betroffen wären dann folgende CPUIDs/Mac Adressen? -> ***E75ACCD98
:
Bearbeitet durch User
Hallo, langsam wird es wirklich seltsam... CPUID ist unique, da hat also jeder Chip eine andere. MAC beginnt mit 24:0A:C4 das ist die Vendor Kennung von Espressif Inc. Mir ist so, als ob die Kits im Lieferzustand eine Software drauf, die irgendein MP3 aus dem Flash spielte und per Tastendruch auf BT-Audio Gerät umschalten konnte. Ich meine zumindest, daß ich mit dem Board im Lieferzustand was machen konnte. Gruß aus Berlin Michael
Vom AI Thinker support wurde mir gestern mitgeteilt, dass dort ein ESP8388 verbaut ist... ("the audio decoder chip used in our new development board is esp8388"). Das entspräche dann ungefähr dem LyraT 4.3 - sobald ich das neue Board erhalte werde ich die initiale Software testen.
Hallo, jetzt wird es lustig... Der Chip heißt ES8388 nicht ESP8388. Ich habe mir gersde mal das Datenblatt gezogen. Passt aber eigentlich nicht zum Board, der ESP32A1S hat den Codec (AC101) intern, bei Espressif finde ich da auch keine Hinweise auf eine Änderung. Die Kombi ES8388 wäre dann mit einem ESP32Wroom oder ESP32Wrover und der ES8388 wäre extern bestückt. Kann ich noch nicht richtig glauben, zumindest wenn die Blechbüchse weiter mit ESP32-A1S AI-Thinker beschriftet ist. Gruß aus Berlin Michael
Vielleicht weiss AI Thinker gar nicht mehr, dass es die Audio Kit boards noch gibt. Online sind ja alle Informationen verschwunden und Teils nur per Web Archive auffindbar. Der A1S scheint aber auch mit dem WROOM32 compatibel zu sein. Jedenfalls hatte ich mal zu Anfang versehentlich mit der DOIT ESP32 DEVKIT V1 board option den Chip betrieben. Wobei der WROVER müsste (wegen PSRAM) vermutlich besser passen.
:
Bearbeitet durch User
Hallo, naja, viel verschwinden kann ja da nicht, gab immer nur Fragmente. Ist aber noch da: https://github.com/Ai-Thinker-Open/ESP32-A1S-AudioKit Bei Banggood habe ich deren Archive auch noch vorgefunden: https://www.banggood.com/ESP32-Aduio-Kit-WiFi+-bluetooth-Module-ESP32-Serial-to-WiFi-Audio-Development-Board-with-ESP32-A1S-p-1449256.html?cur_warehouse=CN&rmmds=search In der Übersicht etwas unten sind 2 Links zum Downloaden. Da ist auch die Auslieferfirmware dabei, allerdings fehlen da die Partitionangaben für den ESP32. Der A1S ist ein ESP32 + 4MB Flash (ESP32-Wroom) und zusätzliche 4MB PSRAM (ESP32 Wroover) und einem AC101 Codec in eine gemeinsame Blechbüchse gesperrt. So gesehen sind sogar identisch. ESP32 Dev-Kit und PSRAM enabled kommt auf das gleiche raus. Gruß aus Berlin Michael
Nachdem ich die auf der Espressif 3.3.1 basierende AIThinker Version der ADF Toolchain zum laufen gebracht habe - kann der Fehler dort ebenfalls bestätigt werden. "AC101_DRIVER: reset failed!". Was für eine Challenge... Wahrscheinlich müsste man unter das Blech schauen und auf dem A1S nach einem Fehler suchen...
Jean-Luc, allez-vous retourner les planches - ou jeter un coup d'œil sous la tôle ? La connexion entre l'AC101 et l'ESP32 est probablement défectueuse. Il serait intéressant de savoir où se situe exactement le problème... - La puce AC101 est-elle manquante - Le joint de soudure est défectueux - Court-circuit sur AC101
Ist der Wifi-Antennenanschluss auf euren ESP32 A1S Boards vorhanden? Es gibt noch mehr aktuelle Posts auf anderen Boards - ich befürchte fast, dass alle aktuell verkauften AI Thinker A1S Audiokits "defekt" sind. Das wäre ein ganz schöner Hammer. Beispiel: https://forums.slimdevices.com/showthread.php?112697-ANNOUNCE-Squeezelite-ESP32-(dedicated-thread)&p=1026858&viewfull=1#post1026858
Hallo, Friedemann W. schrieb: > Ist der Wifi-Antennenanschluss auf euren ESP32 A1S Boards vorhanden? ja, ist er. Der Aufruck ist aner anders, er entspricht dem aus dem Post weiter oben: Beitrag "Re: ESP32 A1S Eval" Deine Variante ist mir bisher noch nicht begegnet. Gruß aus Berlin Michael
Ich habe die Abdeckung entfernt: keine Spur vom AC101, aber es gibt einen Chip mit der Bezeichnung 8388 !
Ich habe einige Fortschritte gemacht, dank dieser Seite : https://pcbartists.com/products/es8388-module/esp32-es8388-audio-codec-interfacing/ Jetzt kann ich das Gerät mit dem I2C-Scanner sehen : Wire.begin(18,23); Scannen... I2C-Gerät an Adresse 0x10 gefunden ! fertig Weiter : Treiber für die Arduino-Welt finden !
Hallo, es bleibt spannend... Ich habe bei AI Thinker ein Datenblatt gefunden wo diese Kombi für den ESP32A1S angegeben ist. Das datiert auf 2017, also früher als mir die ESP32A1S begegnet sind. Allerdings müßte sich auch dieser am I2C melden, Adresse habe ich jetzt nicht nachgeschaut. 2019 war offenbar der AC101 im ADF von Espressif noch nichtmal erwähnt. https://github.com/Edzelf/ESP32-Radio/issues/223 Da hat wohl jemand ESP32A1S billig bekommen und auf die Audiokits gelötet. Getestet wird vermutlich ohnehin nicht... Gruß aus Berlin Michael
Ich habe ebenfalls ein "ESP32 Audio Kit v2.2 2957" erwischt, und bekomme die Fehlermeldung
1 | E (1026) AC101: reset failed! |
2 | E (1026) AUDIO_HAL: codec init failed! |
mit allen bisher ausprobierten Examples von https://github.com/Ai-Thinker-Open/ESP32-A1S-AudioKit . Ich nach langer Suche folgendes Dokument gefunden: https://docs.ai-thinker.com/_media/esp32-a1s/esp32-a1s_es8388%25E6%259B%25BF%25E6%258D%25A2ac101%25E7%259A%2584%25E5%258C%25BA%25E5%2588%25AB.pdf&usg=ALkJrhit93-Dd2cFLAkYswHqCNjb_50ntg welches sich auf ein v2.3 zu beziehen scheint. Leider kann ich kein Chinesisch - konnte also lediglich ausprobieren was in den Screenshots zu sehen ist. Die Umstellung des "Audio Boards" auf Lyrat v4.3 hatte positive Effekte (keine Codec-Init-Fehler mehr, und kaum hörbares Audio), die Änderung der I2C und I2S-Pins führt jedoch nur zu anderen Fehlermeldungen. Lg, Michael
Bei dem Dokument werden allerdings Pins 32, 33 erwähnt. Vielleicht gibt es noch ein weiteres Dokument zum dem ESP32 A1S!? Vielleicht wissen die bei der Herstellung vom Audio Kit V2.2 gar nichts von der Änderung des A1S
Danke Jean-Luc, so etwas hatte ich schon fast vermutet - scheinbar gibt es mehrere unterschiedliche HW Varianten des A1S ESP32 Audio Kit Ver 2.2 - bzw. der sich darauf befindlichen A1S Platine. Hier mal auf die schnelle ein Arduino File um die Boards zu unterscheiden... Beim AC101 brennt LED4 - beim ES8388 brennt LED5 (hinter der Kopfhörerbuchse). Important note: There are different A1S HW variants. These are installed onto the A1S Audio Kit There is a version using AC101 for audio others use the ES8388. Attached is an Arduino file you can use to differ between both boards.
:
Bearbeitet durch User
Hallo, ich habe obiges pdf mal durch ein online-Tool geschickt. https://www.onlinedoctranslator.com/de/translationform Zum neuen A1S gehört Boardrev. 2.3 Ob der auf einer rev. 2.2 spielt wäre also zu testen. Es gibt Unterschiede bei den R/L Ausgängen und bei MIC1/2. Müßte ich mal mit dem rev. 2.2 Schaltplan vergleichen. I2C bleibt auf 32/33. I2S habe ich mal versucht zu sortieren: // I2S GPIOs AC101 ES8388 #define I2S_DSIN 25 // 25 #define I2S_BCLK 27 // 27 #define I2S_LRC 26 // 25 #define I2S_MCLK 0 #define I2S_DOUT 35 // 26 müßte ich aber noch mit dem Datenblatt des ES8288 vergleichen wegen verschiedener Benennungen der Pins. Vermutlich bin ich aber hier erstmal etwas raus weil: - ich habe kein Kit mit dem ES8388 A1S - die ES8388 Treiber sind wohl noch nicht ins Arduino-Framework als Lib verfügbar. Ich habe kein aktuelles IDF/ADF hier auf dem Rechner. Man kann zwar die ADF-Funktionen auch aus der ArduinoIDE nutzen, macht aber wenig Sinn wenn man keine Hardware zum Testen dazu hat. Gruß aus Berlin Michael
https://docs.ai-thinker.com/_media/esp32-audio-kit_v2.2_sch.pdf hier sind 18 und 23 auch am GPIO header verfügbar. Hat jemand den Schaltplan mit dem ES8388 entdeckt? Zudem wäre ein Datasheet vom ESP32 A1S interessant. Es scheint so, dass der ESP32 A1S (der eigentlich auf dem Audio Kit V2.2) verbaut sein sollte eine blanke Antenne hat (Kupferfarben). Der andere Chip heisst laut Google ESP32-LyraT und ist von Expressif und nicht von AI. Bei dem scheint die Antenne schwarz lackiert zu sein. Hier ist eine schöne Übersicht: https://smc2020torino.it/adminupload/file/SMCCIM_2020_paper_74.pdf Sieht aber dann fast so aus, als seien falsche Deckel auf den Chips gelandet -> der A1S ist dann in Wirklichkeit ein LyraT (erkennbar an der Antennenfarbe)
Ich habe die im Dokument beschriebene Änderung von esp-adf/components/audio_board/lyrat_v4_3/board_pins_config.c auf GPIO_NUM_33/GPIO_NUM_32 ausprobiert, leider initialisiert der Codec damit nicht:
1 | I (26) boot: ESP-IDF v4.4-dev-1849-g8e3e65a47 2nd stage bootloader |
2 | I (27) boot: compile time 10:29:06 |
3 | I (27) boot: chip revision: 1 |
4 | I (31) boot_comm: chip revision: 1, min. bootloader chip revision: 0 |
5 | I (38) boot.esp32: SPI Speed : 40MHz |
6 | I (43) boot.esp32: SPI Mode : DIO |
7 | I (47) boot.esp32: SPI Flash Size : 4MB |
8 | I (52) boot: Enabling RNG early entropy source... |
9 | I (57) boot: Partition Table: |
10 | I (61) boot: ## Label Usage Type ST Offset Length |
11 | I (68) boot: 0 nvs WiFi data 01 02 00009000 00006000 |
12 | I (75) boot: 1 phy_init RF data 01 01 0000f000 00001000 |
13 | I (83) boot: 2 factory factory app 00 00 00010000 00100000 |
14 | I (90) boot: End of partition table |
15 | I (95) boot_comm: chip revision: 1, min. application chip revision: 0 |
16 | I (102) esp_image: segment 0: paddr=00010020 vaddr=3f400020 size=885c8h (558536) map |
17 | I (312) esp_image: segment 1: paddr=000985f0 vaddr=3ffb0000 size=02460h ( 9312) load |
18 | I (316) esp_image: segment 2: paddr=0009aa58 vaddr=40080000 size=055c0h ( 21952) load |
19 | I (327) esp_image: segment 3: paddr=000a0020 vaddr=400d0020 size=2a6b0h (173744) map |
20 | I (390) esp_image: segment 4: paddr=000ca6d8 vaddr=400855c0 size=083b4h ( 33716) load |
21 | I (405) esp_image: segment 5: paddr=000d2a94 vaddr=50000000 size=00010h ( 16) load |
22 | I (411) boot: Loaded app from partition at offset 0x10000 |
23 | I (412) boot: Disabling RNG early entropy source... |
24 | I (425) cpu_start: Pro cpu up. |
25 | I (425) cpu_start: Starting app cpu, entry point is 0x40081280 |
26 | 0x40081280: call_start_cpu1 at /home/hamradio/esp/esp-idf/components/esp_system/port/cpu_start.c:150 |
27 | |
28 | I (0) cpu_start: App cpu up. |
29 | I (439) cpu_start: Pro cpu start user code |
30 | I (439) cpu_start: cpu freq: 160000000 |
31 | I (439) cpu_start: Application information: |
32 | I (444) cpu_start: Project name: play_mp3_control |
33 | I (449) cpu_start: App version: v2.3-14-g76f1a1a-dirty |
34 | I (455) cpu_start: Compile time: Jul 10 2021 15:07:21 |
35 | I (462) cpu_start: ELF file SHA256: d63225ec5dce1e0c... |
36 | I (468) cpu_start: ESP-IDF: v4.4-dev-1849-g8e3e65a47 |
37 | I (474) heap_init: Initializing. RAM available for dynamic allocation: |
38 | I (481) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM |
39 | I (487) heap_init: At 3FFB2EF0 len 0002D110 (180 KiB): DRAM |
40 | I (494) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM |
41 | I (500) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM |
42 | I (506) heap_init: At 4008D974 len 0001268C (73 KiB): IRAM |
43 | I (514) spi_flash: detected chip: generic |
44 | I (517) spi_flash: flash io: dio |
45 | I (522) sleep: Configure to isolate all GPIO pins in sleep state |
46 | I (528) sleep: Enable automatic switching of GPIO sleep configuration |
47 | I (535) cpu_start: Starting scheduler on PRO CPU. |
48 | I (0) cpu_start: Starting scheduler on APP CPU. |
49 | I (546) PLAY_FLASH_MP3_CONTROL: [ 1 ] Start audio codec chip |
50 | E (556) I2C_BUS: /home/hamradio/esp/esp-adf/components/esp_peripherals/driver/i2c_bus/i2c_bus.c:101 (i2c_bus_write_bytes):I2C Bus WriteReg Error |
51 | E (566) I2C_BUS: /home/hamradio/esp/esp-adf/components/esp_peripherals/driver/i2c_bus/i2c_bus.c:101 (i2c_bus_write_bytes):I2C Bus WriteReg Error |
52 | E (576) I2C_BUS: /home/hamradio/esp/esp-adf/components/esp_peripherals/driver/i2c_bus/i2c_bus.c:101 (i2c_bus_write_bytes):I2C Bus WriteReg Error |
53 | E (596) I2C_BUS: /home/hamradio/esp/esp-adf/components/esp_peripherals/driver/i2c_bus/i2c_bus.c:101 (i2c_bus_write_bytes):I2C Bus WriteReg Error |
54 | E (606) I2C_BUS: /home/hamradio/esp/esp-adf/components/esp_peripherals/driver/i2c_bus/i2c_bus.c:101 (i2c_bus_write_bytes):I2C Bus WriteReg Error |
55 | E (616) I2C_BUS: /home/hamradio/esp/esp-adf/components/esp_peripherals/driver/i2c_bus/i2c_bus.c:101 (i2c_bus_write_bytes):I2C Bus WriteReg Error |
56 | E (636) I2C_BUS: /home/hamradio/esp/esp-adf/components/esp_peripherals/driver/i2c_bus/i2c_bus.c:101 (i2c_bus_write_bytes):I2C Bus WriteReg Error |
57 | E (646) I2C_BUS: /home/hamradio/esp/esp-adf/components/esp_peripherals/driver/i2c_bus/i2c_bus.c:101 (i2c_bus_write_bytes):I2C Bus WriteReg Error |
58 | E (666) I2C_BUS: /home/hamradio/esp/esp-adf/components/esp_peripherals/driver/i2c_bus/i2c_bus.c:101 (i2c_bus_write_bytes):I2C Bus WriteReg Error |
59 | E (676) I2C_BUS: /home/hamradio/esp/esp-adf/components/esp_peripherals/driver/i2c_bus/i2c_bus.c:101 (i2c_bus_write_bytes):I2C Bus WriteReg Error |
60 | E (686) I2C_BUS: /home/hamradio/esp/esp-adf/components/esp_peripherals/driver/i2c_bus/i2c_bus.c:101 (i2c_bus_write_bytes):I2C Bus WriteReg Error |
61 | E (706) I2C_BUS: /home/hamradio/esp/esp-adf/components/esp_peripherals/driver/i2c_bus/i2c_bus.c:101 (i2c_bus_write_bytes):I2C Bus WriteReg Error |
62 | E (716) I2C_BUS: /home/hamradio/esp/esp-adf/components/esp_peripherals/driver/i2c_bus/i2c_bus.c:101 (i2c_bus_write_bytes):I2C Bus WriteReg Error |
63 | E (726) I2C_BUS: /home/hamradio/esp/esp-adf/components/esp_peripherals/driver/i2c_bus/i2c_bus.c:101 (i2c_bus_write_bytes):I2C Bus WriteReg Error |
64 | E (746) I2C_BUS: /home/hamradio/esp/esp-adf/components/esp_peripherals/driver/i2c_bus/i2c_bus.c:101 (i2c_bus_write_bytes):I2C Bus WriteReg Error |
65 | E (756) I2C_BUS: /home/hamradio/esp/esp-adf/components/esp_peripherals/driver/i2c_bus/i2c_bus.c:101 (i2c_bus_write_bytes):I2C Bus WriteReg Error |
66 | E (766) I2C_BUS: /home/hamradio/esp/esp-adf/components/esp_peripherals/driver/i2c_bus/i2c_bus.c:101 (i2c_bus_write_bytes):I2C Bus WriteReg Error |
67 | E (786) I2C_BUS: /home/hamradio/esp/esp-adf/components/esp_peripherals/driver/i2c_bus/i2c_bus.c:101 (i2c_bus_write_bytes):I2C Bus WriteReg Error |
68 | E (796) I2C_BUS: /home/hamradio/esp/esp-adf/components/esp_peripherals/driver/i2c_bus/i2c_bus.c:101 (i2c_bus_write_bytes):I2C Bus WriteReg Error |
69 | E (816) I2C_BUS: /home/hamradio/esp/esp-adf/components/esp_peripherals/driver/i2c_bus/i2c_bus.c:101 (i2c_bus_write_bytes):I2C Bus WriteReg Error |
70 | E (826) I2C_BUS: /home/hamradio/esp/esp-adf/components/esp_peripherals/driver/i2c_bus/i2c_bus.c:101 (i2c_bus_write_bytes):I2C Bus WriteReg Error |
71 | E (836) I2C_BUS: /home/hamradio/esp/esp-adf/components/esp_peripherals/driver/i2c_bus/i2c_bus.c:101 (i2c_bus_write_bytes):I2C Bus WriteReg Error |
72 | E (856) I2C_BUS: /home/hamradio/esp/esp-adf/components/esp_peripherals/driver/i2c_bus/i2c_bus.c:101 (i2c_bus_write_bytes):I2C Bus WriteReg Error |
73 | E (866) I2C_BUS: /home/hamradio/esp/esp-adf/components/esp_peripherals/driver/i2c_bus/i2c_bus.c:101 (i2c_bus_write_bytes):I2C Bus WriteReg Error |
74 | E (876) I2C_BUS: /home/hamradio/esp/esp-adf/components/esp_peripherals/driver/i2c_bus/i2c_bus.c:101 (i2c_bus_write_bytes):I2C Bus WriteReg Error |
75 | E (896) I2C_BUS: /home/hamradio/esp/esp-adf/components/esp_peripherals/driver/i2c_bus/i2c_bus.c:101 (i2c_bus_write_bytes):I2C Bus WriteReg Error |
76 | E (906) I2C_BUS: /home/hamradio/esp/esp-adf/components/esp_peripherals/driver/i2c_bus/i2c_bus.c:101 (i2c_bus_write_bytes):I2C Bus WriteReg Error |
77 | E (916) I2C_BUS: /home/hamradio/esp/esp-adf/components/esp_peripherals/driver/i2c_bus/i2c_bus.c:101 (i2c_bus_write_bytes):I2C Bus WriteReg Error |
78 | E (936) AUDIO_HAL: codec init failed! |
79 | E (936) AUDIO_BOARD: /home/hamradio/esp/esp-adf/components/audio_board/lyrat_v4_3/board.c:55 (audio_board_codec_init): Got NULL Pointer |
80 | E (956) AUDIO_HAL: audio_hal handle is null |
81 | E (956) AUDIO_HAL: audio_hal handle is null |
mit den default-Werten
1 | i2c_config->sda_io_num = GPIO_NUM_18; |
2 | i2c_config->scl_io_num = GPIO_NUM_23; |
started der Codec:
1 | I (0) cpu_start: App cpu up. |
2 | I (439) cpu_start: Pro cpu start user code |
3 | I (439) cpu_start: cpu freq: 160000000 |
4 | I (439) cpu_start: Application information: |
5 | I (443) cpu_start: Project name: play_mp3_control |
6 | I (449) cpu_start: App version: v2.3-14-g76f1a1a-dirty |
7 | I (455) cpu_start: Compile time: Jul 10 2021 15:07:21 |
8 | I (462) cpu_start: ELF file SHA256: a559d6454791ae1a... |
9 | I (468) cpu_start: ESP-IDF: v4.4-dev-1849-g8e3e65a47 |
10 | I (474) heap_init: Initializing. RAM available for dynamic allocation: |
11 | I (481) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM |
12 | I (487) heap_init: At 3FFB2EF0 len 0002D110 (180 KiB): DRAM |
13 | I (493) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM |
14 | I (500) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM |
15 | I (506) heap_init: At 4008D974 len 0001268C (73 KiB): IRAM |
16 | I (514) spi_flash: detected chip: generic |
17 | I (517) spi_flash: flash io: dio |
18 | I (522) sleep: Configure to isolate all GPIO pins in sleep state |
19 | I (528) sleep: Enable automatic switching of GPIO sleep configuration |
20 | I (535) cpu_start: Starting scheduler on PRO CPU. |
21 | I (0) cpu_start: Starting scheduler on APP CPU. |
22 | I (546) PLAY_FLASH_MP3_CONTROL: [ 1 ] Start audio codec chip |
23 | I (576) PLAY_FLASH_MP3_CONTROL: [ 2 ] Create audio pipeline, add all elements to pipeline, and subscribe pipeline event |
24 | I (576) PLAY_FLASH_MP3_CONTROL: [2.1] Create mp3 decoder to decode mp3 file and set custom read callback |
25 | I (586) PLAY_FLASH_MP3_CONTROL: [2.2] Create i2s stream to write data to codec chip |
26 | I (606) PLAY_FLASH_MP3_CONTROL: [2.3] Register all elements to audio pipeline |
27 | I (606) PLAY_FLASH_MP3_CONTROL: [2.4] Link it together [mp3_music_read_cb]-->mp3_decoder-->i2s_stream-->[codec_chip] |
... so richtig funktionsfähig scheint das Board damit aber nicht zu sein. Beispielsweise hat die Funktion audio_hal_set_volume überhaupt keine Auswirkung. @amiga: Ich würde auch die I2S-Settings testen - sollte es in der Tat 2 mal Pin 25 lauten?
@amiga Michael U. schrieb: > Ich habe bei AI Thinker ein Datenblatt gefunden wo diese Kombi für den > ESP32A1S angegeben ist. Das datiert auf 2017, also früher als mir die > ESP32A1S begegnet sind. Hast du einen Link zu dem Datenblatt? Ich denke auch das auf der A1S Platine ein LyraT sitzt - leider nicht pinkompatibel zu den Espressif LyraT Beispielen...
Hallo, Michael W. schrieb: > @amiga: Ich würde auch die I2S-Settings testen - sollte es in der Tat 2 > mal Pin 25 lauten? natürlich nicht... War aus der chinesischen Änderungsanleitung. bck_io_num 27 (I2S_BCLK) ws_io_num 25 (I2S_LRC) data_out_num 26 (I2S_DOUT) data_in_num 35 (I2S_DSIN) Passt so zumindest zu dem Datenblatt: https://fccid.io/2AHMR-ESP32A1S/User-Manual/User-manual-4883458 Das mit I2C auf 18/23 passt dazu wieder garnicht... Der ES8388 hat keine Differnzialausgänge als Speaker-Out sondern nur LineOut. Müßte man mit der Schaltung des rev. 2.2 Boards nochmal genauer vergleichen ob da was rauskommen kann. KopfhörerOut ist recht identisch. Gruß aus Berlin Michael
Falls jemand das MP3 Playback testen möchte - für den ESP32 mit ES8388 habe ich folgende Seite mit gut erklärten Informationen und Beispielen gefunden: https://pcbartists.com/products/es8388-module/esp32-es8388-audio-codec-interfacing https://pcbartists.com/design/embedded/esp32-mp3-audio-playback-sd-card
I²C GPIO entspricht beim "neuen" A1S mit ES8388 Chip dem LyraT 4.3. Unter Verwendung der Defaultbeispiele hört man einen Kopfhörerkanal - allerdings sehr leise. "\esp-adf\components\audio_hal\board\lyrat_v4_3_board.h" /* I2C gpios */ #define IIC_CLK 23 #define IIC_DATA 18
Friedemann W. schrieb: > I²C GPIO entspricht beim "neuen" A1S mit ES8388 Chip dem LyraT 4.3. > Unter Verwendung der Defaultbeispiele hört man einen Kopfhörerkanal - > allerdings sehr leise. Kann ich bestätigen - an der Lautstärke ändert sich auch nichts, wenn sie mit audio_hal_set_volume versucht zu ändern - egal ob 0 oder 100 (oder etwas dazwischen), es ist gleich leise. Mein naiver Verdacht, der "neue A1S mit ES8388 Chip" wäre somit der selbe wie am LyraT 4.3, aber "versehentlich" auf einem "ESP32 Audio Kit v2.2 gelandet, dürfte sich aber nicht bewahrheiten: Am LyraT 4.3 befindet laut https://docs.espressif.com/projects/esp-adf/en/latest/design-guide/board-esp32-lyrat-v4.3.html ein ESP32 WROVER mit folgendem Datasheet: https://www.espressif.com/sites/default/files/documentation/esp32-wrover_datasheet_en.pdf verglichen mit dem "original" ESP32-A1S http://www.ai-thinker.com/Uploads/file/20190715/20190715141756_57655.pdf sieht man: Selbst RXD0 und TXD0 sitzen auf unterschiedlichen Pins, somit müsste man schon beim Flashen scheitern?
Hallo, das Datenblatt der AI-Thinker-Variante des ESP32A1S mit ES8388 hatte ich verlinkt: https://fccid.io/2AHMR-ESP32A1S/User-Manual/User-manual-4883458 PinOut ist nach Außen nahezu identisch. Die Unterschiede sind in dem China-Dokument aufgeführt. Ich hänge mal die automatisch Übersetzung hier ran. Ich bin mir inzwischen recht sicher, daß da das rev. 2.2 mit den falschen ESP32A1S bestückt wurde. Schaltung eines rev.2.3 ist wohl nicht zu finden, müßte man als mit ES8388 Datenblatt bzw. dem Lyra-Board die Außenbeschaltung speziell der Audioausgänge mit der rev.2.2 Schaltung vergleichen ob das ohne Änderungen am Board überhaupt spielen kann. Beim AudioKit rev 2.2 muß mit GPIO21 auch die PA eingeschaltet werden, ich weiß nicht, ob das im ADF so drin ist. Gruß aus Berlin Michael
@amiga: Das Datenblatt https://fccid.io/2AHMR-ESP32A1S/User-Manual/User-manual-4883458 scheint meiner Meinung nach nicht auf diesen Chip zu passen - zumindest die GPIOs 33/32 für I2C funktionieren hier nicht. Inwieweit somit Rest anwendbar ist, ist halt fraglich. Lg, Michael PS: Thx für den Hinweis mit dem GPIO21 - dem muss ich noch nachgehen - aber ich befürchte das muss bis zum Wochenende warten.
Hallo, @Michael W. (mihovil): ja, I2C irritiert mich auch, mehr habe ich bisher dazu aber nicht gefunden. Ich habe nur keine Lust aus reiner Neugier in China zu bestellen. Einmal sind mir die Lieferzeiten zu lang und, wenn ich Pech habe, kommt dann ein rev.2.2 mit dem "richtigen" A1S an... Ist mir der Spaß dann doch nicht wert. Gruß aus Berlin Michael
Hier ist eine Übersetzung des Upgrade Dokuments von AC101 -> ES8388 Leider werden auch darin die GPIOs 32, 33 des AC101 verwendet, welche eigentlich bereits auf IIC_CLK 23 und IIC_DATA 18 und somit kompatibel zum LyraT 4.3 liegen. D.h. auch dieses PDF von 2021 scheint nicht ganz aktuell zu sein. AI Thinker bietet auch keinen A1S mehr mit AC101 an... https://www.docdroid.net/L6LX9SK/esp32-a1s-esv23zh-cnen-pdf
Der ESP32A1S(8388) kann mp3 Stereo Playback auf den Kopfhörern. Allerdings kann ich die Lautstärke bisher nicht regeln. Das Kopfhörer Verbindungsevent liegt Default auf Key3 (GPIO19) (gedrückt halten - Kopfhörer ist angeschlossen)... Testweiser Wechsel auf GPIO12(falls der stimmt...) hat das Verhalten nicht verändert. Gibt es eine Beschreibung der DIP Schalter?
Hallo, Friedemann W. schrieb: > Gibt es eine Beschreibung der DIP Schalter? Schaltung des AudiKit v2.2 ist im Netz verfügbar: https://docs.ai-thinker.com/en/esp32-audio-kit unten, Beschreibunbg oben ist aber von 2.1, die DIP-Schalter schalten ein paar GPIO-Verbindungen. Man müßte eben die Beschaltung des A1S-ES8388 spzeill bei den Unterschieden vergleichen und das v2.2 modifizieren. Geht sicher mit Kratzen und Brücken zu machen, dürfte auch nicht allzuviel sein. Ich habe die Gschaichte nicht weiter verfolgt, ein solches Board werde ich nicht in sinnvoller Zeit bekommen, ob dann das richtige ankommt, ist auch unsicher, ich brauche es ja auch nicht... Gruß aus Berlin Michael
Hallo, ich habe vom Support den Tipp erhalten das Board auf LyraT 4.3 umzustellen, und in audio_hal/driver/es8388/es8388.c in der Funktion es8388_set_voice_volume(int volume) in die register 26 und 27 'volume' andtatt von '0' zu schreiben. ( https://github.com/Ai-Thinker-Open/ESP32-A1S-AudioKit/blob/12c183311967449cbe30ad405d27b08e49fe5147/components/audio_hal/driver/es8388/es8388.c#L352 ). Damit scheint das Problem der zu leisen/nicht regelbaren Lautstärke behoben zu sein. Lg, Michael
Hast du mit der Einstellung Audio auf den Kopfhörern? Ich habe auf der Platine zwei Lötbrücken auf Grund des Dokuments hinsichtlich Wechsel AC101 -> ES8388 gesetzt. Wenn das auch ohne Löten geht... dann mach ich die wieder weg :-)
Ja (mehr als die Kopfhörer habe ich bisher auch noch nicht getestet). Ich habe uzm testen das get-started/play_mp3/main/play_mp3_example.c um die Zeile audio_hal_set_volume(board_handle->audio_hal, 100) erweitert - seit der obigen Änderung im es8388.c hört man damit etwas.
Werte von Volume > 70 hatten bei mir zu starkem Rauschen geführt - bei dir nicht ? Dann muss ich gleich noch zum Lötkolben greifen :-) Mein Ziel ist es eine Basis zum erstellen von Audioeffekten (DSP) zu kreieren. Mit entsprechender Lötbrücke klingt es sauber - über Aktivierung Register 26 und 27 (LOUT2 / ROUT2) mittels Volume klingt die Wiedergabe bei mir deutlich nach einem Phasenproblem.
:
Bearbeitet durch User
Hi, @friedemann77: Übermäßiges Rauschen habe ich nicht bemerkt (kenne aber auch den Vergleich nicht). Ich stehe gerade bei einem anderen Problem an: hat bereits jemand das example pipeline_a2dp_source_stream erfolgreich zum Laufen gebracht? Ich habe mehr Aussetzer als eigentliches Audio. (geschätzt: <0,5s Musik, gefolgt von > 1s Pause). Das selbe mp3 wird im play_mp3 erfolgreich analog ausgegeben, und ein sink-example hat auch funktioniert. Aber an der A2DP-Source scheitere ich ...
Bei so Problemen macht es evtl Sinn mit einem original LyraT 4.3 zu vergleichen... Ich verwende das aktuellste IDF, ADF + Eclipse IDE (ist im Offline Installer mit drin).
@friedemann77: das war mein Plan - und habe extra dafür auch ein LyraT bestellt - leider hat sich der Händler "geirrt" (?) und mir ein AudioKit v2.2 (diesmal mit AC101) geschickt ... Das pipeline_a2dp_source_stream funktioniert damit leider auch nicht ...
Ist die SD-Karte evtl der Flaschenhals bzw langsam - hast du mal probiert ein 30 Sekunden mp3 aus dem Flash wiederzugeben ?
Hallo, hat jemand einen Register Dump für den ES8388 und die genutzte Frequenz der MCLK? Viele Grüße
Dump ist nicht mehr notwendig. Der ES8388 läuft wohl. Allerdings scheint irgendwas störende Clicks auf dem Ausgang zu erzeugen. Ist dieser Effekt bereits beobachtet worden?
Was machst du denn ? Klingt als liefe der Buffer nicht synchron... I²S stream mit idf - oder per adf ? Hier klickt nichts (noch nicht). Ich denke bei den Algorithmen, mit denen ich arbeite werde ich den Chip auch noch zum austicken bringen...
Das seltsame ist, dass ich ein bereits laufendes Projekt (https://youtu.be/Ml6VrlV3hvk) versucht habe zu portieren. Der I2S Buffer müsste 100%ig stabil sein. Die Effekte kenne ich, wenn der nicht hinter her kommt. Hier ist es aber teils ein richtig fieses teils sogar lautes knacken. Eigentlich hätte ich gedacht, wenn ich über I2C den ES8388 einmal einrichte, I2S und MCLK konfiguriert habe, dass dann eigentlich nichts mehr stören dürfte. Ich hatte zudem das Gefühl, dass SPI auch nicht benutzt werden darf. Bei dem Versuch SPI zu benutzen ist der Ton komplett ausgefallen.
Ja, ohne MCLK wäre kein ton gekommen. Bei der Benutzung vom 2. USB Anschluss mit externer Versorgung sind die Klicks/Knacken nicht mehr da gewesen. Allerdings scheint der ES8388 ein deutliches Grundrauschen zu erzeugen. Beim AC101 kann ich bei meinem kleinen 2.1 Lautsprecher Set absolut kein Rauschen hören (Lautstärke entspricht grob lautem Sprechen, wenn ein Signal kommt). Der ES8388 ist aber auch schon ohne Signal bei dieser Einstellung durch ein Rauschen gut hörbar. Vielleicht gibt es noch ein Register, um das Rauschen los zu werden.
Hallo, eine Frage zum ESP32 A1S Eval (thinker). Ich habe mal mit dem AC101_I2S_Audiolib-Test.ino (Michael U. 05.02.2020) experimentiert: 5 sec. MIC-Samples gespeichert, dann Bufferinhalt 1:1 wieder zum AC101 geschrieben . Dazu - i2s_driver_uninstall, - i2s alles neu installiert - mit pPinConfig->data_out_num = 25 - Verst. eingeschaltet digitalWrite(GPIO_PA_EN, HIGH) - dann Loop über die samples ... i2s_write(I2S_PORT_TX, &tmp, sizeof(tmp), &iWritten,portMAX_DELAY); Funktioniert soweit auch, aber aus dem Speaker kommt für 5 sec. nur so eine Art 'schnarren', zwar mit den Lautstärkeänderungen wie bei MIC-Aufnahme, aber das wars dann. Liege ich richtig mit der Annahme, das man die MIC-Samples die man mit i2s_pop_sample gelesen hat 1:1 mit der gleichen I2S-Konfiguration - nur pPinConfig->data_out_num = 25 - wieder zum AC101 senden können sollte (und die natürlich wieder hörbar sein sollten)? Oder ? Die HW ist Ok. ESP32_A1S.ino aus https://github.com/schreibfaul1/ESP32-audioI2S läuft ohne Problem. Danke schon mal MfG Bernd
@friedemann77 benutzt du nur die Audiowiedergabe oder auch die Aufnahme per ES8388? Die Audioausgabe funktioniert bei mir problemlos. Nur der Audioeingang funktioniert nicht so richtig. Hier entstehen die Clicks. Das durchschleifen (sprich ohne I2S) über den Mixer funktioniert allerdings auch ohne Probleme (hier wird auch kein MCLK benötigt).
Mein Plan ist es eine Basis für Audioeffekte zu schaffen. D.h. Mikrofon -> ADC -> I²S -> DMA_Buffer_lesen -> DSP Audio Effekt -> DMA_Buffer_schreiben -> DAC Kopfhörer Ausgabe. Der Einfachheit halber habe ich die ES8388 Funktionen direkt ins IDF ausgelagert. D.h. mit dem ESP-IDF sollte der angefügte Quellcode bauen. (Ich verwende hier Eclipse mit IDF, aktueller GIT Master Espressif) Für die Implementierung von FFT u.a. Effekten wurde cpp statt c verwendet. Der aktuelle Stand: Man hört über den Kopfhörer den Eingang der Mikrofone, sogar in Stereo. Allerdings bekomme ich es nicht hin einen Kanal Links oder Rechts zu muten, oder einfache Audiomanipulationen durchzuführen... irgendwas passt im Setup noch nicht... eventuell, muss ich auch 2 I²S Treiber verwenden. Bin für alle Tipps dankbar :-)
Danke für den Anhang, ich habe es bereits zum laufen bekommen. Die Anpassung für den ES8388 habe ich bei mir in mein Projekt integriert. Somit wäre dann auch einfache Manipulation möglich. Ich hatte hier das Gefühl, dass Mikrofon und LineIn irgendwie gekoppelt sind. Du kannst einen MixerInput sowie ja auch einen weiteren(I2S) Input wählen. Der Mixer läuft am I2S vorbei und läuft auch ohne MCLK. Vielleicht hast du das Direktsignal auf dem Ausgang oder zusätzlich.
Stimmt - der ADC nach dem PreAmp geht über den Mixer direkt auf den Ausgang. Dann hat man zwar ein prima Signal am Kopfhörer - hat mit I2S aber nicht mehr viel zu tun. -> Das Routing muss ich nochmal ansehen - scheint da gibt es noch Fehler... /* DAC to output route mixer configuration */ res |= es_write_reg(ES8388_ADDR, ES8388_DACCONTROL16, 0x1b); // 0x1b Input ADC after mic preamp Hier wird das Audiosignal nach dem Mic PreAmp direkt auf den Ausgang gelegt.
Weiß jemand beim A1S-ES8388 wo man den Mic PreAmp (Lin2/Rin2) für I²S aktivieren kann? -> Register 9 – ADC Control 1, Default 0000 0000 MicAmp Gain Werte, ES8388_ADCCONTROL1 Das Mic Aufnahmesignal am Kopfhörer ist jedoch relativ leise zu hören - das hätte ich gerne lauter... (Es ist viel lauter, wenn ich das Signal nach Mic PreAmp direkt route... ES8388_DACCONTROL16, 0x1b )
:
Bearbeitet durch User
Wo findet man denn zum ES8388 Informationen zum Aktivieren des Kopfhörer Verstärkers? Bzw. wie lässt sich dieser aktivieren? Für den Mic Preamp gibt es ja ein Register (s.oben) - für den Kopfhörerverstärker habe ich jedoch keine Infos im Datenblatt gefunden.
Ist der Verstärker nicht teil vom Audio Kit? Ich würde jetzt vermuten, dass der ES8388 nur Line Pegel erzeugt. IO21 ist mit CTRL von den Verstärkern auf dem Audio Kit verbunden. Diese sind aber nur mit den beiden Steckverbindern verbunden. Für das Mikrofon kannst du den PGA Gain erhöhen (Register 0x09 "ADCCONTROL1") Um das direkt am Ausgang zu haben das Signal LMIXSEL und RMIXSEL im Reigster 0x26 "DACCONTROL16" auf 0b011 Allerdings wundere ich mich auch, dass man für I2S nur Input1 und Input2 wählen kann im Register 0x0A "ADCCONTROL2". Sieht aber so aus, als müsse man hier z.B. Input2 wählen, damit dieses Signal in den PGA + MIC BOOST geht und dann an den ADC gehen kann. Bezüglich der Lautstärke .. einen Zuwachs kann man wohl feststellen, aber wie bei dem alten Audio Kit ist der Sound nicht. Bei dem alten konnte man den ganzen Raum hören. Bei dem neuen mit dem ES8388 muss man trotzdem ans Mikrofon. Aber vielleicht gibt es hier noch ein Boost Schalter (Bias oder sowas).
:
Bearbeitet durch User
"ES8388 is a high performance, low power and low cost audio CODEC. It consists of 2-ch ADC, 2-ch DAC, microphone amplifier, headphone amplifier, digital sound effects, and analog mixing and gain functions." Mich hat irritiert, das ein Kopfhörer Verstärker explizit im Datenblatt erwähnt wird. MP3 Audio playback konnte ich ebenfalls deutlich lauter hören, als record & playback via Mikrofon. Den PA Verstärker via GPIO21 konnte ich bisher ebenfalls nicht "aktivieren" zumindest habe ich bis dato keinen Unterschied gehört. "Um das direkt am Ausgang zu haben das Signal LMIXSEL und RMIXSEL im Register 0x26 "DACCONTROL16" auf 0x011" -> Wird damit nicht das analoge Audiosignal über den Mixer an den Ausgang geroutet. -> Man hört dann den ganzen Raum, aber dieses Signal läuft nicht über die I²S Buffer. Das Signal in den Buffern, mit dem man per DSP "arbeiten" kann, ist viel leiser. Es muss aber irgendwie gehen, da die mp3 Wiedergabe mit ausreichender Leistung wiedergegeben werden kann...
:
Bearbeitet durch User
Der externe A1S-Verstärker auf GPIO21 funktioniert für die Lautsprecher (am Platinen-Steckverbinder). Testweise habe ich über ein Lookuptable ein Rechtecksignal erzeugt (int16_t +/-20000 je 50 Samples) und in den I²S Buffer kopiert - das ist abartig laut auf dem Kopfhörer, obwohl da noch etwas Luft nach oben ist. -> Wenn ich das richtig sehe liegt das Problem der leisen Aufnahme dann vermutlich am Mikrofon, oder AD Wandler, evtl noch Settings...
Moin, ich habe jetzt mal alle Settings (Volume Pegel und Channels) getestet. Hier habe ich das per MIDI angebunden: https://youtu.be/8UB3fYPjqSk Ich hatte jetzt kleine Funktionen erstellt, welche dann den Kanal wechseln bzw. den Pegel anpassen: https://github.com/marcel-licence/esp32_midi_sampler/blob/main/es8388.ino Der Mixer input ist das, was praktisch ohne ADC/DAC direkt an den Ausgang gegeben werden kann. Dort müsstest du IN2 wählen oder den post PGA (0b11). Der andere input wählt den Eingang für den ADC bzw. eher das Signal für den PGA, welcher dann direkt an den ADC geht. Auffällig ist, dass die Mikrofone tatsächlich nicht sonderlich empfindlich sind, oder es gibt noch eine Bias Einstellung. Allerdings ist auch die Zusammenschaltung von Mikrofon und LineIn etwas unpraktisch. Beim AC101 konnte man hin und her schalten, dort war das sauber getrennt. Im Datenblatt vom ES8388 kann man das auch sehen, dass das zusammen hängt. Datasheet: http://www.everest-semi.com/pdf/ES8388%20DS.pdf User guide: https://dl.radxa.com/rock2/docs/hw/ds/ES8388%20user%20Guide.pdf Viele Grüße Marcel
Hi Marcel, bzgl MicIn auf Input2, der De-Emphasis hilft immens gegen das Quantisierungsrauschen, man kann noch deutlich mehr Verstärkung herausholen, wenn man den PGA (programmable gain amplifier) verwendet, die Aktivierung läuft über das AGC/AGL/ALC (autmatic gain control) Interface. Eventuell kann man dazu noch den volldifferentiellen MicModus verwenden - dann wäre das Maxmimum an SNR Ratio erreicht. Wieso findet man hier nie ein Beispiel... und muss tagelang suchen :-) P.S. Wer denkt sich die ganzen Abkürzungen aus. Da blickt ja keiner mehr durch.
:
Bearbeitet durch User
Hi, danke für den Tipp. Das könnte ich ggf. mal ausprobieren. Den AGC wollte ich bewusst nicht benutzen, damit die Pegel nicht von selbst herum wandern. Volldiff scheint in Stereo nicht zu gehen .. leider.
Lässt sich der gleiche Anteil an A + B verwenden, d.h. Rauschen würde kompensiert. Bsp. MicL - inv(MicR). Mono würde mir reichen, da habe ich bisher noch nicht viel getestet. Die Lautstärke über die Programmierbare Gain Verstärkereinheit (ALC) ist richtig laut, wenn diese aktiviert wird. Es steigt aber auch der Rauschpegel.
:
Bearbeitet durch User
Nach der Aktivierung der ESP-DSP Library habe ich etwas mit FFT/iFFT gespielt. -> Mit zusätzlicher Rechenlast steigt der Rauschpegel. Merkwürdig ist auch, wenn Taster 6 gedrückt wird, wird das Mikro empfindlicher. Bei Druck auf Taster Boot wird das Rauschen weniger... 44.1kHz -> FFT (1024) -> iFFT (via ESP-DSP) -> Audioausgabe ESP32 Stats 05:26:32.833 -> main 205885 16% 05:26:32.833 -> IDLE 1129900 92% 05:26:32.833 -> IDLE 932499 76% 05:26:32.833 -> ipc0 84877 6% 05:26:32.833 -> esp_timer 23 <1% 05:26:32.878 -> ipc1 89925 7% Ich hätte nicht gedacht, dass der A1S ESP32 so ein kleines Rechenmonster ist :-) Wenn nur das Rauschen etwas weniger präsent wäre... aber die Verstärkung für das OnBoard Mikrofon ist auch nahezu am Anschlag, inkl. Automatic Gain Control.
Hast du den ES8388 als codec in Verwendung? Bei dem AC101 ist die Empfindlichkeit eigentlich recht gut (deutlich besser jedenfalls als bei dem ES8388). Aber ja man hört auch da die benachbarten Leitungen schalten. Ich hatte z.B. SD Karten Zugriffe gehört. Ja das Rechenwunder findet kein Ende =) In der Richtung Synthesizer Projekte kann man auch echt viel machen. Wie bist du auf die Stats gekommen?
Die Stats um die Last pro CPU zu bestimmen, kann man im sdkconfig enablen (vTaskGetRunTimeStats). Hab hier mehrere Varianten des ES8388. Mal schauen ob die neuste Revision einen Unterschied macht. if (iCounter == 1000) { // Stats are enabled in sdkconfig freertos static char __stats_buffer[1024]; vTaskGetRunTimeStats(__stats_buffer); printf("%s\n", __stats_buffer); vTaskList(__stats_buffer); printf( "%s\n", __stats_buffer); // main 686679 20% // IDLE 2517502 76% // IDLE 3199903 97% // esp_timer 23 <1% }
:
Bearbeitet durch User
Dankeschön, die Funktionen konnte ich leider nicht nutzen. Ich habe nun jetzt den internen clock cycle benutzt. Das funktioniert auch recht gut. Zudem wäre bei mir vermutlich die Loop immer bei 100%, da hier immer gewartet wird (I2S write mit max. Wartezeit).
Das webradio läuft mit dem A1S eval mit ES8388 :) Code von schreibfaul, der hier: https://github.com/schreibfaul1/ESP32-audioI2S/tree/master/examples/ESP32-ES8388 Notwendige änderungen der pin definitionen: ------------ #define SD_CS 13 // GPIOs for SPI #define SPI_MOSI 15 #define SPI_MISO 2 #define SPI_SCK 14 // I2S GPIOs #define I2S_SDOUT 26 #define I2S_BCLK 27 #define I2S_LRCK 25 #define I2S_MCLK 0 #define I2S_DOUT 35 // I2C GPIOs #define IIC_CLK 32 #define IIC_DATA 33 // Amplifier enable #define GPIO_PA_EN 21 ------------
:
Bearbeitet durch User
Passt aber leider nicht mit allen ES8388 boards. Ich hatte einiges an Feedback bekommen in den letzten Wochen. Mittlerweile scheint es mehrere Versionen zu geben von dem Audio Kit. Hier habe ich ein paar verschiedene Pin Definitionen gesammelt: https://github.com/marcel-licence/ML_SynthTools/tree/main/src/boards Bei dem ES8388 board gibt es auch Variationen. Frohes Neues!
Das rauschen beim mic-in ist mit eingeschalteter ALC extrem. Ist auch klar wenn kein ton kommt und die ALC auf 36db verstärkung geht. Das ALC max limit niedriger einstellen hilft. Für sprache läuft das gut: es.write_reg(ES8388_ADDR, ES8388_ADCCONTROL10,0xE0); Das rauschen ist aber immer noch ... naja ... probiers. Der testsktech liest mic ein und schreibt gleich wieder raus. Man kann über tasten 1..6 das alc limit einstellen. Dipswitch 1 muss dafür auf ON, das ist mit einer taste verbunden. Board verion V2.2, die für $10 von ali.
:
Bearbeitet durch User
Gerade habe ich auf Github ein Synthesizerprojekt mit dem Board entdeckt: https://github.com/marcel-licence/esp32_basic_synth Vielleicht können Codebeispiele für die Treiber daraus nützlich sein.
Hallo in die Runde, hat irgendwer das Board (V2.2) mit dem ES8388 als MP3 Player von SD Karte zum Laufen bekommen?? Display über SPI und WEB Radio geht einwandfrei, aber in Kombination mit der SD Library krieg ich das Bord nicht zum laufen - weder mit noch ohne Display. Würde gern einen Player der entweder SD-MP3 oder WEB Radio spielt, aufbauen.
Beitrag #7102016 wurde von einem Moderator gelöscht.
Wenn ich den Sketch i2cscanner.ino verwende, dann wir sowohl AC101 als auch ES8388 gefunden und beide LEDs leuchten??? Was mache ich falsch?
:
Bearbeitet durch User
Friedemann W. schrieb: > Danke Jean-Luc, > > so etwas hatte ich schon fast vermutet - scheinbar gibt es mehrere > unterschiedliche HW Varianten des A1S ESP32 Audio Kit Ver 2.2 - bzw. der > sich darauf befindlichen A1S Platine. > > Hier mal auf die schnelle ein Arduino File um die Boards zu > unterscheiden... > Beim AC101 brennt LED4 - beim ES8388 brennt LED5 (hinter der > Kopfhörerbuchse). > > > Important note: > > There are different A1S HW variants. > These are installed onto the A1S Audio Kit > > There is a version using AC101 for audio > others use the ES8388. > > Attached is an Arduino file you can use > to differ between both boards. ------------------------------------------------------------------------ ---- Wenn ich den Sketch i2cscanner.ino verwende, dann wir sowohl AC101 als auch ES8388 gefunden und beide LEDs leuchten??? Was mache ich falsch?
Ich bin ein ESP32 Audio Kit Frischling :-) ...und würde gerne ein Projekt verwirklich, wo ich dieses verwenden möchte. Aufgabe: 2 Eingangs-Signale (werden von einem externen Generator erzeugt / Links=Signal01 und Rechts=Signal02) sollen gemixt werden und das gemixte Signal auf beiden Ausgängen (Links / Rechts) ausgegeben werden. Weiters sollen via Bluetooth die Eingänge (Links / Rechts), die Lautstärke, ein Low-Pass-Filter, ein Band-Pass-Filter und ein High-Pass-Filter geregelt werden. Die eingestellten Werte sollen bei Spannungsausfall erhalten bleiben, damit man nicht wieder "justieren" muss. Dieses Projekt habe ich schon mit einem Teensy4.0 + Teensy Audioshield (Teensy Audio Tool = super) und einem Bluetooth-Module verwirklicht. Nun meine Frage an die "Community" - würde das mit dem ESP32 Audio Kit auch funktionieren?
Das Teensy Audioshield ist m.E. qualitativ schlechter als das AudioKit, beim AudioKit gibts mehr Gefummel - dafür deutlich günstiger. Ja geht, C++ Kenntnisse vorausgesetzt. Ich hab für Teensy 4.x mein eigenes Audioshield gebaut. Damit hat man kein Rauschen mehr beim I/O.
Danke Friedemann W., Meine C++ Kenntnis sind sicher nicht die eines Profils. Gibt es einen Sketch oder ähnliches, welchen ich als Grundgerüst verwenden könnte, damit ich nicht bei NULL beginnen muss. Weiters würde mich das "Ich hab für Teensy 4.x mein eigenes Audioshield gebaut" interessieren -> Hintergrund, wie derzeit üblich gibt es immer wieder Lieferschwierigkeiten bei Teensy, Raspberry, Arduino....
Visual Studio Code Projekt aufsetzen, Audio I/O zum laufen bringen. Je nach A1S Chip und Version gibt es Unterschiede. https://www.ebay.de/itm/295044288463 Das sind ES8388 Header & Initialisierung gelistet.
Helmut S. schrieb: > Wenn ich den Sketch i2cscanner.ino verwende, dann wir sowohl AC101 als > auch ES8388 gefunden und beide LEDs leuchten??? > Was mache ich falsch? Bei mir ist das gleiche der Fall. -> ESP32 Audio Kit V2.2 A221 Hast du das gleiche Kit? Wurde das Problem mal aufgelöst? Ich habe die examples von https://github.com/pschatzmann/ testen wollen, bekam jedoch keine Ausgabe auf den Kopfhörerausgang. Wäre cool, wenn sich jemand melden würde, ansonsten tauche ich mal tiefer ein.
Ich brauch den als webradio. Bruchst du code für ES8388 chip?
:
Bearbeitet durch User
Hallo, ich habe auch ein ESP32 Audio Kit mit der Version 2.2 A221. Es leuchten darauf die LEDs 4 und 5. Ich habe dafür das angepasste ADF von https://github.com/zhangtemplar/esp-adf verwendet und wie oben beschrieben den Code für die Lautstärke angepasst (Beitrag "Re: ESP32 A1S Eval"). Dieses ADF hat die Konfiguration für das Audio Kit gleich dabei, man muss keine GPIO-Werte für I2C und I2S ändern, sondern kann einfach in menuconfig das Board "ESP32-AiThinker-audio V2.297" auswählen. Als DIP-Einstellung habe ich 1=ON, 2=OFF, 3=ON, 4=OFF, 5=OFF, damit funktionieren die Tasten 1 und 2, die anderen vier sind leider ohne Funktion (eventuell müsste man dafür doch GPIO-Werte anpassen, das habe ich nicht weiter untersucht). Das Beispiel examples/player/pipeline_sdcard_mp3_control hat damit wie gewünscht die Dateien von der SD-Karte abgespielt.
hallo ich bin total neu hier in diesem forum und habe nur erfahrungen in "Basic" ( angefangen mit Picaxe, dann mm-basic und nun annex)wegen der ESP Cam bin ich auf diese Plattform gestossen...nun die Cam läuft siehe "annex rds" das ist alles für basic ...mit einer einzigen zeile bindest du eine cam in ein display ein... geil.. nun da ich nicht so scharf darauf bin viel zu löten habe ich mir das esp32 AiS board gekauft um mir ein internetradio zu bauen... oben aufgeführter sketch läuft und es ist ein guter klang leider nur mit einem sender - gibt es diesen sketch auch mit einer web platform ? ( es lief einige stunden unter annex basic dann war alles aus und ich sitze s seit 3 tage und probiere ) wie gesagt der sketch läuft nur miit einem sender.( unter einbeziehung der von euch empfohlenen änderungen ). spende auch wenn es hier soetwas gibt :))) liebe grüsse aus der Uckermark Ron
Ronald schrieb: > oben > aufgeführter sketch läuft und es ist ein guter klang leider nur mit > einem sender ah ein Suchspiel, ich mag aber nicht suchen welches "oben" du meinst! hast du das auch überlesen? Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.
Abcd schrieb: > Ich brauch den als webradio. Bruchst du code für ES8388 chip? dieser Beitrag vom 21.12.22 Danke für die Antwort - ja hab ich gelesen :) für einen eigenen Beitrag hab ich zuwenig Ahnung von der Arduino-Programmiersprache nämlich garkeine
Ronald schrieb: > Danke für die Antwort gerne und die Hälfte oder mehr fehlt, nach 3 fehlenden Files mag ich nicht mehr! driver/i2s.h: No such file or directory bin raus
Joachim B. schrieb: > Ronald schrieb: >> Danke für die Antwort > > gerne und die Hälfte oder mehr fehlt, nach 3 fehlenden Files mag ich > nicht mehr! > > driver/i2s.h: No such file or directory > > bin raus ja ok danke
Beitrag #7380785 wurde vom Autor gelöscht.
Joachim B. schrieb: > Ronald schrieb: >> Danke für die Antwort > > gerne und die Hälfte oder mehr fehlt, nach 3 fehlenden Files mag ich > nicht mehr! > > driver/i2s.h: No such file or directory > > bin raus so nochmals vielen Dank für den Versuch mir zu helfen, mittlerweile hat unser "starprogrammierer" es geschaft eine funktion für dieses Board in das annex RDS zu intergrieren und zumindest ( als Anfang) läuft das streaming von Radiosendern wen es interssiert und wer ggf noch nach einfachen bzw überhaupt einer lösung sucht https://cicciocb.com/forum/viewtopic.php?p=3945#p3945 grüsse Ron
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.