Hinweis
Mit dem Wechsel auf ESP32-Arduino2 als Framework, haben zahlreiche Verbesserungen in ESPuino Einzug erhalten. Jedoch ist ESPuino als Ganzes inzwischen zu speicherintensiv, um auf einem ESP32 ohne PSRAM sicher zu laufen. Insofern ist sicherzustellen, dass ein ESP32-WROVER verwendet wird, da dieser dem ESP32 PSRAM zur Seite stellt. Leider scheiden damit die meisten im Internet verfügbaren Develboards aus, da üblicherweise ESP32-WROOM verwendet wird (was für die meisten Projekte auch reicht).
Allgemeines zu ESP32-Develboards
Wer sich scheut, selbst SMD zu löten, der benutzt einfach ein sog. Develboard. Diese sind praktisch, denn für wenig Geld kriegt man Boards, die verschiedene Features bereitstellen:
- USB zu seriell-Adapter, so dass man via USB den ESP32 programmieren kann.
- Festspannungsregler: USB liefert 5V, der ESP32 verträgt jedoch nur 3.3V
- Freie GPIOs als Pinheader rausgeführt
- (optional) Integrierte Ladeelekronik für Akkus
- (optional) uSD-Karten-Slot
- (optional) Weitere Peripherie wie z.B. Klinkenstecker, Verstärker, Mikrophoneingang…
Also kurzum: Die Auswahl ist groß. Grundsätzlich haben alle Boards gemeinsam, dass auf ihnen ein ESP32 werkelt, weswegen sie (zumindest potentiell) alle mit ESPuino laufen sollten. Welches Board man letztlich verwendet, ist primär davon abhängig, welche Interessen man verfolgt. Möchte man z.B. Batteriebetrieb, so kann es Sinn machen, ein Develboard zu wählen, welches eine integrierte Ladeelekronik besitzt. Sicher, man kommt auch mit jedem anderen Board ans Ziel, indem man extern z.B. eine Powerbank anschließt. Man muss halt nur wissen, dass Boards wie z.B. die klassischen „ESP32 NodeMCU“ bzw. „Devkit C“ auch dann noch >10 mA fressen, wenn der ESP32 im Deepsleep ist. Umgehen kann man das natürlich, indem man an seinen ESPuino einen Schalter baut, der die Spannungsversorgung physikalisch trennt.
Ein weiterer und sehr wichtiger Punkt ist, wieviele GPIOs nach außen geführt werden, da ESPuino viele GPIOs benötigt. Auf der sicheren Seite ist man, wenn es möglichst viele sind, da dies mehr Flexibilität bietet.
Hier mal einige Kriterien, über die man sich aus meiner Sicht Gedanken machen sollte:
- Führt das ESP32-Develboard meiner Wahl ausreichend viele GPIOs nach außen, so dass mein Vorhaben machbar ist?
- Möchte ich Batteriebetrieb? Wenn ja: Ist ein Akkuanschluss vorhanden und bietet das Board ggf. eine integrierte Ladeelekronik? Ist der Strombedarf im Deepsleep überschaubar?
- Batteriebetrieb: Gibt es bereits eine integrierte Möglichkeit, um die Spannung des angeschlossenen Akkus zu überwachen? Dies ist z.B. bei Lolin D32 oder Lolin D32 pro der Fall. (Hinweis: Bei Lolin32 nicht, aber man kann es sich natürlich über einen Spannungsteiler natürlich einfach selbst bauen.)
- Kann man auch im eingebauten Zustand, ohne drücken einer Taste, flashen? Bei den o.g. NodeMCU ist das Drücken einer Taste notwendig, damit der ESP32 in den Flashmodus geht; bei den genannten Lolin-Boards nicht. Das muss jeder selbst für sich entscheiden, ob dieses Feature notwendig ist.
- Wie teuer ist das Board? Die o.g. NodeMCU sind, auch in Deutschland, vergleichsweise günstig. Das gilt für die Lolin-Boards nicht. Bestellt man jedoch in China, dann relativiert sich das; man muss allerdings auch eine Weile warten, bis die Sachen da sind.
- Möchte ich das OTA-Feature nutzen, so benötigst man mindestens 8 MB Speicher. Üblicherweise wird man dann zu einem Develboard mit einem ESP32-WROVER mit 16 MB greifen, weil dieses auch PSRAM besitzt. Es gibt auch ESP32-WROOMs mit 16 MB, aber diese habe ich auf einem Develboard noch nie verbaut gesehen.
Ein paar nützliche Links zu Videos von Andreas „the guy with the swiss accent“ Spiess:
Nachfolgend mal ein paar Develboards aus meiner Sicht.
Wemos Lolin32
Ehemals recht günstig zu bekommen, lohnt sich der Kauf inzwischen (2022) nur noch bedingt.
PRO:
- Führt sämtliche GPIOs nach außen
- Recht niedrige Stromaufnahme im Deepsleep
- Besitzt eine integrierte Ladelektronik für LiPo
- Man muss zum Flashen keine Taste drücken
CON:
- Hat keinen Spannungsteiler zur Spannungsmessung integriert. Muss man sich dazubauen, ist aber kein großes Problem.
- Verwendet einen ESP32-WROOM statt eines ESP32-WROVER
- Unterstützt wegen nur 4 MB Flash kein OTA-Update
Wemos Lolin D32
Ist der Nachfolger des Lolin32.
PRO:
- Führt sämtliche GPIOs nach außen
- Recht niedrige Stromaufnahme im Deepsleep
- Besitzt eine integrierte Ladelektronik für LiPo
- Hat einen Spannungsteiler zur Spannungsmessung integriert
- Man muss zum Flashen keine Taste drücken
CON:
- Verwendet einen ESP32-WROOM statt eines ESP32-WROVER
- In Deutschland relativ teuer
- In China manchmal nicht verfügbar
- Unterstützt wegen nur 4 MB Flash kein OTA-Update
Wemos Lolin D32 pro
Ist der große Lolin D32 gewissermaßen
PRO:
- Führt sämtliche GPIOs nach außen
- Recht niedrige Stromaufnahme im Deepsleep
- Besitzt eine integrierte Ladelektronik für LiPo
- Hat einen Spannungsteiler zur Spannungsmessung integriert
- Man muss zum Flashen keine Taste drücken
- Verwendet einen ESP32-WROVER
- SD-Slot integriert
- Unterstützt in der 16 MB Flash-Variante auch OTA-Updates
CON:
- GPIOs 16+17 sind nicht nutzbar, da sie vom ESP32-WROVER für interne Zwecke (PSRAM) benötigt werden. Da kann das Board allerdings nix für; das ist einfach so bei ESP32-WROVER.
- In Deutschland relativ teuer
- SD-Slot ist nicht mit SD_MMC kompatibel (benutzt andere GPIOs)
- Verhält sich manchmal etwas zickig und sollte daher mit 100 µF-Kondensator extern stabilisiert werden.
D32 pro FePo
Basiert auf dem Lolin D32 pro und ist eine Eigenentwicklung von mir. Unterstützt im Gegensatz zu allen anderen Boards, die ich so kenne, LiFePO4 (anstelle LiPo) und hat einen USB-C-Anschluss.
PRO:
- Führt sämtliche GPIOs nach außen
- Recht niedrige Stromaufnahme im Deepsleep
- Besitzt eine integrierte Ladelektronik für LiFePO4 mit bis zu 1 A Ladestrom
- USB-C-Anschluss
- Hat einen stromsparenden Spannungsteiler zur Spannungsmessung integriert
- Man muss zum Flashen keine Taste drücken
- Verwendet einen ESP32-WROVER-E mit 16 MB Flash
- SD-Slot integriert
- Unterstützt in der 16 MB Flash-Variante auch OTA-Updates
CON:
- GPIOs 16+17 sind nicht nutzbar, da sie vom ESP32-WROVER für interne Zwecke (PSRAM) benötigt werden. Da kann das Board allerdings nix für; das ist einfach so bei ESP32-WROVER.
- Bislang nur in Kleinserie erhältlich
LILYGO TTGO T8 V1.7
PRO:
- Führt sämtliche GPIOs nach außen
- Besitzt eine integrierte Ladelektronik für LiPo
- Verwendet einen ESP32-WROVER
- SD-Slot integriert, der auch SD_MMC unterstützt
- In Deutschland mit 12eur nicht fürchterlich teuer.
- Hat (gemäß Schaltplan) einen Spannungsteiler zur Spannungsmessung integriert (wie bei Wemos Lolin auf GPIO35)
CON:
- GPIOs 16+17 sind nicht nutzbar, da sie vom ESP32-WROVER für interne Zwecke (PSRAM) benötigt werden. Da kann das Board allerdings nix für; das ist einfach so bei ESP32-WROVER.
- Relativ hoher Stromverbrauch im Deepsleep (3,5 mA)
- Unterstützt wegen nur 4 MB Flash kein OTA-Update (obwohl er ein WROVER ist)
ESP32 NodeMCU (aka DevKit C)
Das Standardboard. Für die meisten Leute vermutlich der Einstieg in die ESP32-Welt. Achtung: Es gibt welche mit 30 Pins und welche mit 38 Pins. Auf jeden Fall das Größere nehmen.
PRO:
- Führt sämtliche GPIOs nach außen. (Auch solche, die man nicht wirklich nutzen kann.)
- In Deutschland recht günstig
CON:
- Hat keinen Spannungsteiler zur Spannungsmessung integriert
- Recht hohe Stromaufnahme im Deepsleep (für Batteriebetrieb wichtig, ohne Batteriebetrieb aber egal)
- Besitzt in der Regel keine integrierte Ladelektronik für Akkus
- Verwendet einen ESP32-WROOM
- Man muss zum Flashen eine Taste drücken (manchmal geht’s auch ohne, warum auch immer!?)
- Unterstützt wegen nur 4 MB Flash kein OTA-Update
Welcher ESP32-Chip?
Am besten das hier lesen: 📗 Welche Vorteile bietet ein ESP32-WROVER gegenüber einem ESP32-WROOM (bei ESPuino)?.
RFID: RC522 oder PN5180?
RC522
PRO:
- Ist der Quasi-Standard
- Günstig zu haben
- Braucht nur vier GPIOs
CON:
- Reichweite
Fazit: Wenn du mit der Reichweite kein Probem hast, dann bleibe am besten einfach beim RC522.
Hinweis: Die Verstärkung (Gain) kann man einstellen in settings.h
via rfidGain
. Mögliche Werte sind nachfolgend beschrieben:
Hier gibt es auch noch ein paar Infos: Kompatible NFC Tags
PN5180
PRO:
- Erheblich bessere Reichweite (6cm und mehr). Wird noch besser, wenn man ISO-15693-RFID-Tags verwenden, diese sind jedoch teurer.
- Kann ab Firmware 4.1 (die man aber selbst flashen muss) auch den ESPuino aus dem Deepsleep aufwecken
- Kann auch andere RFID-Kartentypen lesen. Mit Passwort z.B. auch T*nies. Und da ESPuino immer nur lesend auf RFIDs zugreift, wird auch nix überschrieben/kaputt gemacht.
CON:
- Teurer als RC522
- Gibt es fast nur in China
- Benötigt mehr GPIOs: 6. Zur Nutzung des Deepsleep-Features sogar 7.
Fazit: Lohnt sich vor allem dann, wenn man Probleme mit der Sensitivität des RC522 hat. Ich für den PN5180 aber definitiv empfehlen! Hinweis: Vereinzelt wurden mit diesem Reader auch Probleme beschrieben: RFID Sticker (mit PN5180).
3.3 V oder 5 V?
Viele Develboards führen 3.3 V und 5 V nach außen; ungeachtet dessen, dass der ESP32 intern immer mit 3.3 V läuft. Das ist erstmal gut, weil dann kann man sich die jeweils passende Spannung für die Peripherie aussuchen. Problem: Betreibt man die Lolin-Boards ausschließlich mit einem LiPo-Akku, so gibt es keine 5 V mehr, da der LiPo-Akku selbst nur maximal 4.2 V führt. Hier hat man keine Wahl: Die Peripherie kann nur mit 3.3 V versorgt werden. Alternativ kann man natürlich auch eine Powerbank verwenden; diese liefert immer 5 V und wird extern angeschlossen. Auch möglich ist eine externe Ladeelektronik und ggf. ein Regler, der aus den maximal 4.2 V eben 5 V macht. Nur muss sich jeder selbst überlegen, ob es Sinn macht, die Spannung anzuheben, damit sie im Anschluss vom Festspannungsregler des Develboards wieder zu 3.3 V wird (und die überschüssigen 1.7 V schlicht verbraten werden).
Auf der anderen Seite kann es aber auch Nachteile haben, nur 3.3 V zur Verfügung zu haben. Die Neopixel sind beispielsweise für 5 V spezifizert; sie laufen jedoch mit 3.3 V ebenso. Weiterhin hat der MAX98357a bei 3.3 V weniger Leistung als bei 5 V. Mir persönlich macht das nichts, er ist aus meiner Sicht für meine Kinder mehr als laut genug.
Wichtig: Verwendet man 3.3 V so sollte man sich gut überlegen, welches SD-Board man verwendet. Es gibt viele, die beide Spannungen unterstützen. Schlecht ist es, wenn es dafür nur einen Anschluss gibt. Denn das bedeutet, dass die Spannung immer über einen internen Spannungsregler läuft. Das ist deswegen ein Problem, weil der Spannungsregler von den 3.3 V ein bisschen was abzwackt, so dass es dahinter mit der noch zur Verfügung stehenden Spannung eng werden kann. Sind 3.3 V geplant, so bin ich persönlich ein großer Fan dieses SD-Boards. Das ist so ziemlich das Billigste von allen, aber da es keinen Festspannungsregler besitzt, funktioniert es SICHER an 3.3 V auch astrein. Wichtig: Es kann KEIN 5 V!
SPI oder SD_MMC?
SPI
PRO:
- Ist der Quasi-Standard.
CON:
- Langsamer als SD_MMC
- Braucht 4 GPIOs (statt 3 bei SD_MMC)
- Es gibt einen Bug, der dazu führt, dass der Schreibvorgang größerer Dateien spontan abbricht.
SD_MMC
PRO:
- Erheblich schneller als SPI
- Benötigt nur 3 GPIOs
CON:
- GPIOs (15, 14, 2) sind fest und können nicht geändert werden.
- Einer der GPIOs ist 2. Wird dieser GPIO beim Start des ESP32 auf HIGH gezogen, so kriegt man den ESP32 nicht in den Flash-Modus. Das bedeutet, dass man SD-Board ein etwaiger PullUp-Widerstand entfernt werden muss. Siehe z.B. hier bei diesem SD-Board.
Fazit: SD_MMC lohnt sich auf jeden Fall. Hier noch ein paar Durchsatzraten bei einem Dateitransfer von 70,7 MiB.
SD_MMC:
FTP (up): 3:57min => 298 kiB/s
FTP (down): 3:45 => 314 kiB/s
HTTP: 3:10min => 362 kiB/s
SPI:
FTP (up): 6:38 => 178 kiB/s
FTP (down): 5:38 => 208 kiB/s
HTTP: 6:24min => 184 kiB/s
Akku: LiPo oder LiFePO4?
Das lasse ich am besten denjenigen ausführen, der sich damit gut auskennt: EREMIT LiIon - der richtige Akku.
Jumperwires oder Stecker?
Auf jeden Fall Stecker (oder anlöten)!! Jumperwires sind zum Testen mitunter schon kritisch, aber auf lange Sicht definitiv problematisch. Guter oder schlechter Kontakt scheint sowas wie Tagesform-abhängig zu sein Klar, zum Testen wird man erstmal mit Jumperwires experimentieren wollen. Aber man wird damit nicht glücklich.
Welcher Port-Expander?
Die Antwort ist einfach: Es wird nur PCA9555 unterstützt