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…

6 „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“

Hi, ich habe keine Funktion der PM gefunden, frage mal hier :wink: Ich würde es sehr gerne für meien Tochter bauen, leider bin aktuell nicht ganz zurechtgekommen, womit ich anfangen soll und welche PCB sein soll?
Würdest du etwas bestimmtes empfehlen?
Interessant wäre mit Kopfhörer Anschlüss, gibt es evtl. ferige Platinen oder mit SMD gelötet, ich kann zwar löten, aber smd wirklich ungern.

Danke schon mal im Voraus.

Lies am besten mal hier:

Ne Kopfhörerplatine habe ich leider in fertig hier nicht rumliegen. Aber vielleicht muss ich doch mal schauen, ob man das irgendwie von JLCPCB gefertigt bekommt. Weil danach fragen doch ziemlich viele Leute.

Ich persönlich würde dir entweder Lolin32 mit SD (SD_MMC) und PN5180 als RFID-Leser oder Lolin32 D32 pro mit RC522 als RFID-Leser empfehlen. Liligy T8 geht auch, allerdings habe ich davon noch keine neuen PCBs hier. Vermutlich muss ich mich mit den ganzen Sachen wieder eindecken, da jetzt langsam der Herbst kommt und damit die Bastelzeit losgeht :slight_smile:

Zur PM: Wenn du auf das Bild eines Benutzers klickst, gibt es dort die Möglichkeit, eine Nachricht zu senden. Das ist eine PM.

Für neue Nutzer ist diese Funktion nicht freigeschaltet. Um persönliche Nachrichten zu schreiben brauchst du Level 1. Dafür musst du 10 Minuten gelesen haben und dabei mind. 5 Themen und 30 Beiträge angeschaut haben. (Zumindest wenn @biologist die Werte nicht verändert hat)

Ok, habe schon Stunden hier verbracht, aber natürlich ohne Anmeldung :grinning_face_with_smiling_eyes:

Dann warten wir mal

Dann muss ich später nach der Einstellung mal suchen. Habe jetzt leider keine Zeit dafür.

So, hab’s umgestellt. Müsste jetzt gehen. Hoffen wir mal, dass es nicht von irgendwem missbraucht wird. Wenn doch, dann stelle ich es wieder um.

Hallo,
Ich habe auch noch einen lilygo ttgo t8 rumliegen und wollte diese für einen espuino nutzen. Ich finde hier aber nirgends in dem Thread einen Link zu den Kicad Files. @biologist kannst du die vielleicht noch hochladen?

Muss ich mir mal anschauen. Da war beim letzten Mal noch ein Fehler drin (es hatte eine GND-Brücke gefehlt). Und danach habe ich es irgendwie nicht mehr weiter verfolgt. Deswegen steht hier auch noch Vorankündigung.

So, ich habe den Fehler entfernt und die Platine in weiten Teilen auch neu geroutet. Zusätzlich einen 10k-Widerstand durch einen 100k ersetzt. So sieht das jetzt aus:


Jetzt kommt der Haken: Den PCB muss jemand testen (und mir Rückmeldung geben) :joy:. Mein T8 funktioniert leider nicht mehr richtig, so dass das jmd. anderes übernehmen muss.
Aus diesem Grund lade ich das Gerberfile erstmal nur hier hoch: gerber_v2.zip (100,9 KB).

Nachdem ich beim letzten Mal vergessen hatte, die KiCad-Files hochzuladen (sorry an dieser Stelle), hole ich das hiermit nach.
ESPuino ttgo t8_1.7.zip (1,8 MB)