ESP32 Audio Kit (ESP32-A1S)

So, ich habe das jetzt mal integriert. In der main.cpp musste ich noch ganz oben die Instanzierung bei I2C in einer Zeile anpassen.
Testet das mal so, ob es jetzt passt.

Das habe ich jetzt auch drin.

Das ebenfalls.

Mono/stereo habe ich etwas erweitert, so dass es auch ein Handling für Kopfhörer gibt.

1 „Gefällt mir“

@biologist @Wolle
Habe eben den neuen Code von gestern installiert , die Musikwiedergabe ruckelt , es liegt an der letzten Version der ESP32-audioI2S #da73371 , die Versionen davor funktionieren noch einwandfrei . Ich verwende den Lolin D32 Pro
VG

Mir ist noch etwas aufgefallen was aber bei vorherigen Versionen auch schon war .Wenn #define PLAY_LAST_RFID_AFTER_REBOOT aktiviert ist läßt sich Bluetooth nicht mehr aktivieren , weder per IR noch mit RFID

Zwar Off Topic hier, aber ich hatte ja das Feature eingebaut, dass wenn eine Karte aufgelegt wird, der Bluetooth Modus verlassen wird. Ohne jetzt explizit in den Code zu sehen, wird das der Grund sein, da ja dann „virtuell“ die letzte Karte nach dem Neustart aufgelegt wird.

Ja , so ist es , aus der Schleife kommt man aber nicht mehr raus , außer flashen .

Ok, das schaue ich mir später genauer an und fixe es.
Ich glaube, dass es den Check, ob die letzte Rfid-Karte eine Modkarte war, beim Recall gar nicht braucht. Denn das Abspeichern wird innerhalb der Funktion trackQueueDispatcher() gemacht und an der Stelle kann es eh schon keine Modkarte mehr sein.

@compactflash
das mit dem Ruckeln ist mir heute auch aufgefallen. Manchmal haben Änderungen an einer Stelle ganz woanders Auswirkungen. Das sollte jetzt besser laufen. Und es geht jetzt das Abspielen der FLAC Dateien von einem Server.

Also ich kann bestätigen, dass es mit der neuesten Version wieder sauber abspielt. Flac-Support habe ich integriert und auch (endlich) mal ein Handling, das auf audio.isRunning() aufsetzt. D.h. wenn Wolles Lib einen Fehler erkennt und stoppt, dann rafft der ESPuino das jetzt auch und geht zurück in den Modus NO_PLAYLIST (statt hängen zu bleiben).

Habe mal ein File zum Testen für den Webstream hochgeladen: https://espuino.de/samples/sample1.flac
Mit einem ESP32-WROVER oder ESP32-A1S sollte das laufen.

Hi, wieder alles prompt erledigt , Danke .
Dein sample1.flac bringt sehr selten
info : slow stream, dropouts are possible
und setzt kurz aus , weiß nicht woran das liegt . Grundsätzlich läuft es .

Noch eine Idee : Ich benutze ja parallel verschiedene Systeme und komme schonmal mit den Softwareversionen durcheinander . Deshalb trage ich schon seit einiger Zeit das Datum der Version
Serial.println(F(" Rfid-controlled musicplayer 31_03_2021\n"));
in dem Logo ein .
Könntest du die Zeile evtl. mit Versionsnummer oder so ergänzen , Datum ist auch ok ?
VG

Jo, kann ich machen.

@compactflash

Dein sample1.flac bringt sehr selten
info : slow stream, dropouts are possible
und setzt kurz aus , weiß nicht woran das liegt . Grundsätzlich läuft es .

Das hatte ich auch. Wir haben es bei FLAC allgemein mit größeren Blöcken als bei AAC oder MP3 zu tun. Ich hatte als Ausgabe 4096 zu 16bits und 2 Kanälen = 16K vorgesehen und in einem Rutsch geschrieben, was offensichtlich zuviel Zeit kostet. Das habe ich jetzt in mehrere Dürchläufe unterteilt, so hat der ESP zwischendurch Zeit zum „Luft holen“ . Wenn die Verbindung gut ist wird sample1.flac jetzt tadellos abgespielt. Übrigens habe ich genau die gleiche Datei zum Testen benutzt :smiley:
VG

Tatsächlich habe ich nicht ein File aus flac da. Da musste ich mir halt was suchen🤣.

Ich habe heute mal die Ströme gemessen, die das ESP32-A1S-Board (V2.2) unter verschiedenen Bedingungen von der Batterie zieht. Ergebnis: Im vollen Betrieb sind es ca. 135 mA, im Deep Sleep (mit allen verbundenen Komponenten) immerhin noch ca. 40 mA. Trennt man alle Komponenten (Drehencoder, RFID Reader, Neopixel), so sind es immer noch ca. 20 mA. Das Auslöten der LED D3 (die rote LED, die konstant leuchtet) bringt fast nichts. Im Ergebnis kommt man wohl nicht um einen (physischen) Schalter herum, der die Batterie vom Board trennt (falls man die Box netzunabhängig betreiben will).

Anbei die Tabelle mit meinen Notizen.

1 „Gefällt mir“

Hallo, irgendwie kriege ich es ums verrecken nicht zum laufen. Die SW Version von November/Dezember funktioniert bei mir. Leider mit der aktuellen SW funktioniert der RFID nicht. MFRC522 verbunden über SPI parallel zu SD. CS scheint zu Funktionieren. CLK nicht. Irgendeine Idee? VG

Hi. Ich habe ein pololu mini Schalter nach der Induktivität L2 angeschlossen. Im ausgeschaltenem Zustand werden 2 mA von der Batterie gezogen. 3,3V Spannungswandler ist aktiv. DO des uC auf HIGH schaltet das System ab. Nur ein Tip.

Mein Problem hatte ich oben beschrieben: Ich hatte einen der Pins, den ich oben in der settings-*.h für SPI definiert hatte, „weiter unten“ dann für einen anderen Zweck nochmal genutzt (oder eher: noch nicht angepasst). Bei mir war es

#define DREHENCODER_CLK              5

Da war mein strikt sequenzielles Vorgehen („ich passe die settings von oben nach unten an, und schaue nach jedem Block, den ich geändert haben, ob alles läuft“) nicht zielführend.

Danke Dir für den Hinweis! Ich kenne den pololu mini Schalter nicht, aber das hört sich nach einer guten Lösung an. Ich werde den gleich mal bestellen. Kannst Du mir da noch mehr Details geben? Insbesondere die Umbauten am A1S Board würden mich interessieren. Hier wäre eine Skizze oder ein Foto für mich hilfreich.
PS: Du meinst den hier? Pololu Mini Pushbutton Power Switch with Reverse Voltage Protection,

ja, den gleichen habe ich verwendet. Spannungsteiler ist notwendig, weil sonnst ist der Ausgang IO19 >1V.

2 „Gefällt mir“

Hallo an alle A1S-User , vor allem @Wolle und @kkloesener .

Ich habe mal ein ein Board erstellt als Vorstufe für ein ESP32_complete.


Alles funktioniert wie erhofft , jedoch gibt es mit Audio ein Problem . Sowohl Kopfhörer als auch Line_Out sind sehr leise . Als Endstufe nutze ich zum Testen ein Fertigmodul mit PAM8403 . Da sich alles im ESP32-Modul selbst abspielt und das Geheimnis von AIThinker ist, bin ich etwas ratlos . Wie ist das mit dem fertigen Board ? Für mich sieht es so aus als würde Torstens Code nicht die volle Lautstärke das AC101 ausnutzen . Ich bin aber schlecht in Code und Libraries , habe schon lebhaft geforscht , weiß aber nicht weiter . Ich habe auch diese beiden Werte
uint8_t maxVolume = 21;
uint8_t maxVolumeSpeaker = 21; erhöht .
Geht aber trotzdem nur bis 21 weil wahrscheinlich noch irgendwo eine Abfrage ist, finde ich aber nicht .@Wolle , ich habe in deiner ESP32_A1S.ino diese Zeilen gefunden
static AC101 ac;
int volume = 40; // 0…100
Hat das etwas damit zu tun ?

Ansonsten habe ich folgendes auf dem Board implementiert .
SD_MMC , Ladecontroller für LiPo , LDO , Akkuspannungsmessung , Autoflash .
Flashen nur mit diesem genialen Teil und FTDI232 , welches ich auch für Arduino Mini Pro nutze .
Sowas gibt es auch in etwas kleiner bei Thingiverse . Ich baue voll auf die Zukunft , sprich OTA .
Der Laderegler kann etwa 1A und kann laut Hersteller Texas Inst. charge and system load at the same time . Damit können wieder ein paar Bauteile ( Mosfet , Schottky-Diode ) entfallen .
Der Ruhestrom des Boards ist mit Spannungsteiler für Ackuspannungsmessung knapp 50 µA . Damit bin ich zufrieden und ist deutlich besser als (fast) alle China-Teile.

VG

3 „Gefällt mir“

Das wird wohl tatsächlich daran liegen. Als ich das eben zum ersten Mal gesehen habe, habe ich mich noch darüber gewundert, weil ich war mir eigentlich ziemlich sicher, dass ich das getestet und eingebaut hatte. Und tatsächlich ist das auch der Fall - jedoch in meiner alten Implementierung, die ich extra für den ESP32-A1S angepasst hatte. Das habe ich demletzt halt alles mal gelöscht, da ich ziemlich „alt“ war.

In meinen Master-Branch wurde das später von @kkloesener integriert.

Inzwischen lebt die Erkennung jedoch hier:

Glaube es ist am einfachsten, wenn man ac-volume auf 100 belässt und halt nur die Volume von Wolles Lib anpasst. Aber das ist jetzt nur eine Vermutung; muss man testen.

@compactflash Kannst ja mal hinter der Stelle, wo ac instanziert wird, einfach mal statisch den Wert auf 100 setzen. Dann müsste es lauter werden. Also du kannst hier zwei Werte ändern: Die AC-Lautstärke und dann auch nochmal die Lautstärke von Wolles Lib.