Vorankündigung: Lilygo TTGO T8 v1.7 mit SD_MMC und PN5180/RC522 als RFID-Leser

Hervorgegangen aus ESPuino for dummies habe ich einen PCB entwickelt, den ich hier beschreiben möchte. Er ist allerdings erst bestellt und muss erstmal eintreffen + getestet werden.

Features

  • Passend für Lilygo TTGO T8 v1.7
  • Die Außenmaße sind 55 x 91mm
  • Drei Buttons + Drehencoder
  • Es werden JST-PH 2.0-Konnektoren für Taster, Drehencoder, Neopixel, RFID und Batterieanschluss verwendet. Wichtig: Es handelt sich hier um 2mm-Abstand und NICHT das klassische 2,54mm-Lochraster!
  • Der Anschluss für MAX98357a besitzt dagegen einen normalen Lochrasterabstand, so dass das Ganze zum Breadboard passt. Achte drauf, die Pinleiste auf die richtige Seite zu löten, so dass Pin-Kompatibilität gewährt ist.
  • Ein Mosfet-Schaltkreis schaltet die Spannung von MAX98357a, Kopfhörerplatine (optional), RFID, Neopixel und µSD-Board ab, um Strom zu sparen, wenn der ESP32 im Deepsleep ist.
  • Sämtliche Peripherie wird mit 3.3 V betrieben! Bedenke das bei der Auswahl des µSD-Baords. Den Neopixel betreibt man damit streng genommen außerhalb seiner Spezifikation, aber er funktioniert dennoch.
  • Falls die Kopfhörerplatine verwendet wird, so wird der MAX98357a auf lautlos gestellt, wenn ein Kopfhörer eingesteckt ist und umgekehrt.
  • Falls HEADPHONE_ADJUST_ENABLE einkompiliert wurde, erkennt der ESPuino das Einstecken und kann, sofern über die WebGUI entsprechend konfiguriert, die Lautstärke begrenzen. Dies macht deshalb Sinn, da der als Verstärker verwendete TDA1308 die Musik auf dem Kopfhörer recht laut machen kann.
  • Auch ein Reset-Pinheader vorhanden. An diesen kann man z.B. einen Mikroschalter anschließen, den man (mehr oder weniger versteckt) am ESPuino-Gehäuse anbringt. So kann man den ESPuino auch im eingebauten Zustand resetten, was insbesondere dann von Bedeutung ist, wenn man ihn im Batteriebetrieb hat.

Besonderheiten

  • Auf dem T8 werkelt ein ESP32-WROVER, welcher den Vorteil besitzt, dass er internen PSRAM besitzt. Als Nachteil besitzt er jedoch zwei GPIOs weniger ggü. seinem „kleinen Bruder“ WROOM.
  • Alle Features (PN5180, Headphone-Detect, drei Buttons, Drehencoder, Aufwachen aus Deepsleep per PN5180) waren parallel mit zwei GPIOs weniger nicht zu bewerkstelligen. Um jedoch alle potentiell bereitstellen zu können, kann man sich gewünschte Einstellungen jumpern.
  • Beim rechten Jumper kann man einstellen, ob der RFID-Reader dauerhaft mit Spannung versorgt werden soll oder per Mosfet abgeschaltet wird. Dauerhaft Spannung benötigt man nur, wenn man mittels PN5180 den ESPuino aus dem Deepsleep aufwecken möchte. Das geht auch nur dann, wenn die aktuelle Firmware auf den PN5180 aufgespielt wird und zudem PN5180_ENABLE_LPCD einkompiliert wurde. Mit RC522 macht das keinen Sinn.
  • Mit dem linken Jumper kann man einstellen, ob man auf GPIO 13 die Erkennung möchte, ob ein Kopfhörer eingesteckt ist (Headphone detect) oder ob RFID.IRQ ausgewertet wird. RFID.IRQ wird für das zuvor genannte Feature benötigt, wenn man mittels PN5180 den ESPuino aufwecken möchte.
  • Anders gesagt: Man muss sich entscheiden, ob man Headphone detect oder das Deepsleep-Feature möchte. Für das Deepsleep-Feature jumpert man jeweils die beiden oberen Pins zusammen. Für das Headphone detect-Feature jeweils die beiden unteren.
  • Der JST-PH-Stecker für RFID ist von der Pin-Reihenfolge auf den PN5180 angepasst. Es ist jedoch auch kein Problem, dort einen RC522 anzuschließen. Die Anschlüsse für RST, BUSY und IRQ kann man sich jedoch sparen.

Vorraussetzungen

  • Ist keine Kopfhörerplatine angeschlossen, so muss HEADPHONE_ADJUST_ENABLE deaktiviert werden.
  • Zum Messen der Batteriespannung muss MEASURE_BATTERY_VOLTAGE aktiviert sein. Zusätzlich ist ein Spannungsteiler notwendig, da die Spannung von max. 4,2 V für den ESP32 sonst zu hoch wäre. Ich habe zwei 130 kOhm-Widerstände benutzt, die das Multimeter mit jeweils 129 kOhm vermessen hat. Diese Werte werden in der Develboard-spezifischen Konfiguration als Rdiv1 und und Rdiv2 konfiguriert.
  • In settings.hmuss HAL=6 gesetzt sein (kommt erst noch, gibt es aktuell noch nicht).
  • Aktiviere SD_MMC_1BIT_MODE.
  • Aktiviere RFID_READER_TYPE_PN5180 oder RFID_READER_TYPE_MFRC522_SPI.

Nachteile?

Ich habe Berichte gelesen, dass das Board im Deepsleep 3,5 mA ziehen soll. Für einen Mikcontroller ist das recht viel. Ob das für dich zu viel ist, musst du selbst entscheiden. Nehmen wir an, wir nutzen einen LiPo-Akku mit 2500 mAh und von diesem sind 2200 mAh nutzbar. Dann wäre dieser Akku nach 2200 mAh / 3,5 mA = 628 h (26 Tage) im Deepsleep leer. Gibt natürlich auch andere Möglichkeiten (Hardware-Schalter am Gehäuse z.B.), um dieses Problem zu umschiffen.

Wo bestellen?

Meldet auch bei mir, wenn ihr gerne ein Exemplar hättet.

Details (Pinout etc pp) werden folgen…

5 „Gefällt mir“

Der T8 kam heute an. Ist auf jeden Fall schön verarbeitet muss man sagen. Ob er was taugt wird man sehen :slight_smile:
Aufgelötet ist ein ESP32-DOWDQ6-V3

Datasheet: Espressif_Systems_01292021_esp32-1991551.pdf (965,5 KB)

Hier noch ein paar Bilder…

Die Anschlussleitung für die Batterie wird mitgeliefert. Ist soweit ich weiß JST-GH (1.25 mm).

2 „Gefällt mir“

bin gespannt … ein Bauteil wenige :slight_smile:

Die PCBs kamen gestern. Beim PCB-Routing ist irgendwie ein Fehler passiert, wobei mir ehrlich gesagt unklar ist warum. Fakt ist, dass alle GND-Pins des Develboards miteinander verbunden sind und auch alle GND-Pins untereinander der Peripherie. Aber es gibt keine Verbindung zwischen GND des Develboards und GND der Peripherie.

Man kann es „fixen“, indem man eine externe Brücke lötet, aber das ist natürlich nicht so schön. Da muss ich wohl den PCB anpassen und neu bestellen.

Ansonsten funktioniert aber alles. Lade das Settings-File jetzt schon mal hoch.

Den Anschluss für JST-GH finde ich etwas fummelig muss ich sagen, aber tut seinen Zweck.

Ich befürchte ich muss, die laut FAQ meist gestellte Frage auch stellen:

Ich bekomme immer einen SD-Karte konnte nicht gemountet werden., hab schon unterschiedliche SD-Karten getestet und diese auch mit dem in der FAQ erwähnten „SD Card Formatter“ formatiert.

An dem Code hab ich bisher keine Änderungen durchgeführt, hochgeladen habe ich so:

Komponenten hab ich bisher noch keine angeschlossen, kann es daran liegen?

Kannst du Mal ein Bild vom Kartenleser hochladen und nutzt du sd_mmc?

1 „Gefällt mir“

Der Kartenleser ist integriert. Aber bei der Frage schließe ich mich an: Hast du sd_mmc einkompiliert? Weil ohne geht es nicht.
Sollte auch jeden Fall auch ohne externe Komponenten laufen.

1 „Gefällt mir“

Das war’s! Vielen Dank euch beiden für die schnelle Antwort!
Macht das Sinn, den integrierten Kartenleser standardmäßig zu aktivieren?

Ich hab mal testweise ein

#ifndef SINGLE_SPI_ENABLE 
    #define SD_MMC_1BIT_MODE
#endif

in der settings-ttgo_t8.h eingefügt. Dann wird der interne Reader aktiviert, wenn nicht explizit einer per SPI angeschlossen wird.

Offtopic: Das Webinterface ist echt mega! Sieht richtig gut aus.

Natürlich! Ich sollte nicht immer von mir auf andere schließen :wink:

Naja, die settings.h ist global und nicht spezifisch für ein Board. Und man kann auch nicht sagen, dass SD_MMC eine besondere Eigenschaft ist, nur weil der SD-Slot onboard ist. Der Lolin D32 pro hat auch einen integrierten SD-Slot und bindet jedoch die SD per SPI an.

Das hat allerdings nur bedingt was miteinander zu tun. Dass man SD per SPI anbindet ist ich sage mal Default. Nur wenn man es mit SD_MMC überschreibt, wird es geändert. SINGLE_SPI bedeutet, dass sich mehrere SPI-Geräte die gleiche SPI-Instanz teilen. D.h. SCK, MOSI und MISO sind gleich - nur benötigt jeder SPI-Teilnehmer ein eigenes CS.

Kurzum: Es ist aktuell nicht vorgesehen, dass SD_MMC per Default aktiviert ist. Ich denke das macht auch Sinn, weil die meisten Leute die SPI-Anbindung für SD nutzen.

1 „Gefällt mir“