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.
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
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
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
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
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!
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
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:
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
@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:> 0xab08Thomas 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.
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.
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
staticAC101ac;
17
18
staticuint8_tvolume=63;
19
constuint8_tvolume_step=2;
20
21
voidsetup()
22
{
23
Serial.begin(115200);
24
25
Serial.printf("Connect to AC101 codec... ");
26
while(notac.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.
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
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
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.
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
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 */
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/AC101https://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.
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.
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.
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.
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 :-)
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.
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
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 ....
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...
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-audioI2Shttps://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
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
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.
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
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
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
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.
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
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
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
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
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.
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 ...
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 )
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).
"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...
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.
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.
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%
}
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).
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.
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.
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.
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
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