ESP32 Audio Kit (ESP32-A1S)

WIe krieg ich denn in PlatformIO den ES8388.h auf meinen buildpath? Unter libs wird da nichts gefunden, wenn ich nach ES8388 suche…

Hier ist ein Beispiel von @Wolle:

Und da steht auch eine URL dabei: GitHub - maditnerd/es8388: None working attempt to make 8388 audio codecs works with Arduino
Das muss entsprechend in die platformio.ini rein.

Die Platine ist übrigens schon ne Weile hier und ich habe sie auch schon gelötet und montiert. Nur zum Testen war ich bisher zu faul. Sieht man auch auf den Bildern: Liegt schon Staub drauf :rofl:.


3 „Gefällt mir“

So, ich hab Sound, aber die Musik ist durchgehend abgehackt. Wenn ich auf Pause schalte, klackert es die ganze Zeit. Hat wer nen Tipp für mich? :slight_smile:

Hab die fehlenden src-files runtergeladen und in das Projekt geworfen :slight_smile:

Meine Changes:

#if (HAL == 2)
    //#include "AC101.h"
    
    static TwoWire i2cBusOne = TwoWire(0);
    //static AC101 ac(&i2cBusOne);
    #include "ES8388.h"
    #include "Audio.h"
    
    static ES8388 dac;
    Audio audio;

#endif
Led_Init();

    #if (HAL == 2)

        Serial.printf("Connect to DAC codec... ");
        while (not dac.begin(IIC_DATA, IIC_CLK))
        {
            Serial.printf("Failed!\n");
            delay(1000);
        }
        Serial.printf("OK\n");

        // Enable amplifier
        pinMode(GPIO_PA_EN, OUTPUT);
        digitalWrite(GPIO_PA_EN, HIGH);

        // set I2S_MasterClock
        audio.i2s_mclk_pin_select(I2S_MCLK);

    audio.setPinout(I2S_BCLK, I2S_LRC, I2S_DSIN);
    audio.setVolume(10); // 0...21

  

    #endif

// I2S (DAC)
    //#define I2S_DOUT                        25          // Digital out (I2S)
    //#define I2S_BCLK                        27          // BCLK (I2S)
    //#define I2S_LRC                         26          // LRC (I2S)

    // I2C GPIOs
    #define IIC_CLK                         32          // internal
    #define IIC_DATA                        33          // internal

    #define I2S_DSIN 26
    #define I2S_BCLK 27
    #define I2S_LRC 25
    #define I2S_MCLK 0
    #define I2S_DOUT 35

Ich will auch son HAT haben :smiley:

Ich denke eher nicht, hehe.
Der Port-Expander (PE) wird leider nicht erkannt. Warum weiß ich nicht. Aber mir sind auch sonst zwei dicke Patzer passiert:
RE.DT habe ich auf 15 gelegt; das wird für SD gebraucht
PE.Interrupt habe ich auf 14 gelegt; das wird auch für SD gebraucht

Weiß der Geier, warum mir das nicht aufgefallen ist.

Zu deiner anderen Frage:
Mit dem ES8388 habe ich noch nix gemacht. Läuft denn das Minimalbeispiel von Wolle?

Ich werde das Minimalbeispiel mal ausprobieren, guter Tipp. :slightly_smiling_face:
Ich hoffe das mit dem HAT klappt noch irgendwann :slight_smile:

Bei mir hat das mit dem ES8388 funktioniert, was den Audio-Teil angeht. Das war denke ich genau dieses Beispiel. Ich habe aber das Olimex Board… :person_shrugging:

1 „Gefällt mir“

So, ich habe den Übeltäter gefunden. In der main.cpp gibt es zwei Stellen mit nem:

    #ifdef PN5180_ENABLE_LPCD
        Rfid_Init();
    #endif

Einmal ganz oben im setup()

void setup() {
    Log_Init();
    Queues_Init();

    // Make sure all wakeups can be enabled *before* initializing RFID, which can enter sleep immediately
    Button_Init();  // To preseed internal button-storage with values
    #ifdef PN5180_ENABLE_LPCD
        Rfid_Init();
    #endif

und dann recht weit unten im setup()

    Ftp_Init();
    Mqtt_Init();
    #ifndef PN5180_ENABLE_LPCD
        Rfid_Init();
    #endif

Wenn ich den zweiten Rfid_Init() ausbaue sind die Störgeräusche weg :slight_smile:

Kann mir wer erklären warum das Rfid_Init() zweimal gemacht wird?

LG Wanja

Das wird nicht 2mal gemacht, sondern nur in Abhängigkeit dessen, ob man LPCD benutzt, früher oder halt später.
LPCD ist eine Funktionalität, mit der man den ESPuino nur durch Auflegen einer Karte aufwecken kann. Der führt dann ein paar wenige Checks durch, aber wenn es zu einem Fehler kommt (Karte irrtümlich erkannt), dann geht er direkt wieder pennen. Naja und dann will man halt nicht, dass der alles Mögliche da vorher initialisiert. Deswegen ist die Funktion einmal weit oben angeordnet und ansonsten viel weiter unten.

Generell mit weit oben gab es mit dem RC522 glaube ich Probleme. Unten gab’s die nicht, also ist es da unten.

Was für einen RC522 hast du denn angeschlossen?

Ah OK, ich hab noch Keinen dran, vielleicht gehen die Störgeräusche ja weg, wenn ich einen anklemme :slight_smile:
Danke für die Erklärung :slight_smile:

Das hatte ich irgendwie schon vermutet, hehe.
Ansonsten kannst es auch ohne RFID-Support kompilieren.
ESPuino reagiert auch etwas zäh, wenn der PN5180 einkompiliert, jedoch kein solcher angeschlossen ist. Tja, das sind so unaufgeräumte Ecken… :slight_smile:

Andere Frage:
Ich hab die onboard buttons abgeschnipst und testweise Kabel angelötet. Aber das erscheint mir doch etwas fragil. Gibt es irgendeine tolle Lösung für sowas? Ne Steckerbuchse zum auflöten (evtl. noch mit Kleber ankleben)?
Oder muss ich das Teil in Kleber baden? :slightly_smiling_face:
LG Wanja


Edit: Das Beste was ich bisher gefunden habe, sind so JST Buchsen mit abgewinkelten Pins… der HAT wäre echt deluxe :smile:

Moin, ich hab mal meine RC522 genauso angeschlossen, wie Wolle weiter oben beschrieben hat.

Verwendet habe ich für den MRFC522 die drei SPI Leitungen (MOSI 23, MISO 19, CLK 18) 
und als RFID_CS den Pin 5. Dem RST-PIN habe ich den Wert (-1) zugewiesen 
und mit RST des Boards verbunden (man muss bei dem A1S schliesslich GPIOs sparen)

Leider passiert nichts beim Karte auflegen, aber immerhin ist das Klackern nun weg :smiley:
Hab ich wieder irgendwas überlesen, hat noch wer nen Tipp? :slight_smile:

    // RFID (via SPI; currently not supported!)
    #if defined(RFID_READER_TYPE_MFRC522_SPI)
        #define RST_PIN                         -1//99          // Not necessary but has to be set anyway; so let's use a dummy-number (mit RST auf board verbinden!)
        #define RFID_CS                         5//21          // GPIO for chip select (RFID) CS/SDA
        #define RFID_MOSI                       23          // GPIO for master out slave in (RFID)
        #define RFID_MISO                       19          // GPIO for master in slave out (RFID)
        #define RFID_SCK                        18          // GPIO for clock-signal (RFID) (CLK)
    #endif

LG Wanja

Edit: So hab mir nen I2C Teil bestellt. :stuck_out_tongue:

Bei SPI sind kurze Kabel und gute Verbindungen wichtig. 10Mhz sind glaube ich hier konfiguriert.

Strom und Masse brauchst du sonst auch noch. Hat dein rc522 keine leds?
Die Leuchten normal ständig sobald Vcc anliegt.

Leuchten tut das Teil, die Kabel sind 15cm lang.

Den Reset pin braucht man denke ich nicht unbedingt.
Sonst kannst ja Mal versuchen einen anderen Sketch zu laden der nur den rc522 testet. Der rc522 kann einen selbst Test, man merkt also auch schon ohne Karte ob er richtig verkabelt ist.

Das genannte Problem habe ich bisher nicht gesehen und es werden aktuell auch keine I2C Interrupts verwendet.

Gute Idee mit „sameCardReapplied“ - wie löst Du das mit Modifikations-Karten? Da will man ja evtl. die gleiche mehrfach auflegen.

Da ich bisher keine Modifikationskarten verwende, ist mir das bisher gar nicht aufgefallen. Für diesen Zweck müsste man wissen, ob eine Karte eine Modifikationskarte ist, bzw. die zuletzt ausgelöste Aktion.
Wobei es mit dem Feature PAUSE_WHEN_RFID_REMOVED mir auch nicht so ganz sinnvoll erscheint, oder gibt es eine Karte die zweimal angewendet Sinn ergibt, da zum abspielen des Titels eh wieder die originale Karte aufgelegt werden muss und Titel/Album dann von vorne beginnt.

Aber es sollte natürlich nutzbar sein, wenn das Feature nicht aktiv ist.

@biologist den HAT finde ich übrigens auch super und hätte da Interesse dran.

Dummerweise gibt’s mit dem HAT zwei Probleme.

a) Blöderweise habe ich GPIOs verwendet, die für SD benötigt werden.
b) Aus mir (bisher) unbekannten Gründen, funktioniert i2c und damit der ganze Port-Expander nicht.

Habe es im Anschluss, wenn ich ehrlich bin, aber auch nicht weiter verfolgt. Grundsätzlich wäre so ein Konzept schon wünschenswert.

Hi , gibt es dazu irgendwelche neuen Erkenntnisse?
Ich hatte vor einiger Zeit ein A1S-Breakout-Board erstellt welches als Basis für ein A1S-complete sein sollte. Irgendwann habe ich gemerkt dass der A1S nur 4 MB Flash hat und somit kein OTA möglich ist. Habe es dann verworfen . Heute kamen von Ali Winbond-Chips und jetzt kann der A1S auch 16MB. War einfacher als gedacht . Das Abdeckblech ging easy runter , Chip austauschen, wegen Bauform SOP-8 auch einfach und Deckel wieder drauf. Hat auf Anhieb funktioniert.
Damit ist der A1S wegen des geringen Aufwandes (Kopfhörer ist laut genug mit dem AC101 also nur NS5140 als Endstufe nötig ) für mich wieder interessant. Bei mir läuft auf Lochraster alles bis auf den noch fehlenden Portexpander . Macht es Sinn die zu bestellen ?
Hat jemand den A1S zufriedenstellend am Laufen ? Bevor ich da Zeit investiere wäre ich über eine Antwort dankbar .
LG Willmar