Letzte Aktualisierung: 04.03.2019
Die SOC der Firma Espressif gibt es nun schon seit einigen Jahren. Eigentlich wurden aber bis anhin nur zwei Typen ESP-SOCs hergestellt. Was genau ESP ist, findest Du in diesem Artikel https://shopofthings.ch/was-ist-eigentlich-esp8266/. Die zwei Chips sind ESP8266 und ESP32 wobei es vom Chip ESP32 in der Zwischenzeit zwei Varianten, Dual-Core und Single-Core, gibt.
Verschiedene Hersteller, darunter auch Espressif selber, vertreiben Module, welche einer dieser beiden SOCs benutzen. War die Auswahl bei ESP8266 noch relativ übersichtlich, scheint diese bei den neunen ESP32 schier unbegrenzt.
Wir werden versuchen, hier eine Entscheidungshilfe zu geben, damit Du das richtige Modul auswählen kannst.
Entscheidungskriterien
Im nachfolgenden die verschiedenen Kriterien die Du Dir überlegen musst, damit Du das für Dich richtige Modul auswählen kannst.
Ausbaustufe
Als erstes musst Du Dir überlegen, welche Ausbaustufe Du für das Modul möchtest. Wir teilen die Ausbaustufen in sechs Kategorien:
Beispiel | Ausbaustufe | Anwedung | Beispiele |
SOC | – Entwicklung eigener PCB Boards | – diverse Kickstarter Projekte | |
Breakout Board | – Entwicklung eigener PCB Boards – kleiner Platzbedarf – Strombedarfsoptimierung – Stufe nach Prototyping, “Endprodukt” | – ESP01 – ESP-WROOM32 – ESP8266-12F | |
Entwicklungsboards | – Einsteigerboards mit Elektronikkentnisse – flexible Projekte. Gleiches Modul kann für mehrere Projekte hintereinander verwendet werden – klassisches Prototyping mit Breadboards und/oder Jumperkabel | – ESP8266 Dev Kit – ESP32 Dev Kit | |
Entwicklungsboard mit Addons | – Einsteigerboards mit Elektronikkentnissen und Fokus auf Softwareentwicklung – Mögliche Beispiele von Addons: OLED Bildschirm, LoRa, Batterieconnector, LEDs, Photosensor, Audio Chip, SD-Kartenslot, Mikrofon, 3.5mm Audio-Jack, Kamera | – mit LoRa – Audioboard – mit OLED | |
Modulare Entwicklungskits | – Anfänger ohne grosse Elektronikkentnisse – Fokus auf Softwareentwicklung, kein gebastel mit Hardware – Schulprojekte | – M5Stack – Wemos Lolin D1 Mini | |
Endkundenprodukte auf Basis ESP8266 oder ESP32 | – Maker, die fertige Produkte umprogrammieren wollen – Achtung, Geräte dürfen in der Schweiz/EU von gestzeswegen nicht betrieben werden da nicht CE Zertifiziert | Sonoff |
ESP8266 oder ESP32 SOC
Eine der Grundentscheidungen ist sicher die Art des Chips. Soll das Modul einen ESP32 oder einen ESP8266 Chip haben? Wenn Du mit der nachfolgenden Tabelle überfordert bist, dann lies einfach weiter, auf die einzelnen Unterscheide wird noch eingehend eingegangen.
Preis
Eines der wichtigsten Kriterien ist bei vielen Projekten der Preis. Gerade wenn man noch Anfänger ist oder schwierige Mods und Lötarbeiten am Modul vornehmen will ist es ärgerlich, wenn das viel zu teure Modul hopps geht. Das günstigste Modul ist das ESP8266-01 Board. Es hat keinen USB Anschluss und braucht einen Adapter um mit Software bespielt zu werden.
Dann gibt es die weiteren Module mit mehreren Schnittstellen als das ESP-01 Modul, jedoch ohne USB Anschluss. Die ohne USB Anschluss sind meist auch günstiger als diese mit USB Anschlüsse, welche oft als Development Board angepriesen werden und leicht teurer sind, da sie via USB-Anschluss mit dem Computer direkt verbindbar sind und zusätzlich auch Stromkonverter von 5V auf 3.3V zur Verfügung stellen. Für alle anderen Module braucht man einen Serial-Adapter, z.B diesen hier.
ESP32 Module sind momentan ca. 40-50% teurer als die “gleichen” Module mit ESP8266 Chip. Diese Lücke wird aber wohl in den kommenden Jahren allmählich schmäler, da das ESP32 immer beliebter wird und somit wohl auch die Produktion gesteigert werden wird.
Ein grosser Preisunterschied gibt es auch zwischen den No-Name Produkten und den Markenprodukten. Eine der berühmtesten Marken ist SparkFun. Sie stellen eigene Module mit ESP-Chips her. Diese kosten im Vergleich zu No-Name Produkten rund das doppelte. Vorteile von diesen Modulen konnten wir bisher keine erkennen ausser das die Produkte auf der Webseite im Vergleich zu anderen Webseiten relativ gut dokumentiert sind. Dem Versuchen wir aber auf unserem Shopofthings-Blog entgegen zu treten. In der Qualität der Module sollte es keine Unterscheide geben.
Geschwindigkeit
Spielt der Preis nicht eine grosse Rolle, dann vielleicht die Geschwindigkeit. Hier ist es schon übersichtlicher, da die Geschwindigkeit hauptsächlich durch den SOC bestimmt wird. Der ESP32 Chip ist dabei ca. doppelt so schnell wie der ESP8266 Chip. Ausserdem hat der ESP32 Chip zwei Prozessorenkerne, während der ESP8266 nur einen hat. Für viele einfache Mess- und Steuerungsanwendungen reicht die Geschwindigkeit des ESP8266 längstens aus. Musst Du hingegen viele Berechnungen im Sekundentakt machen, oder Grafiken über einen Bildschirm ausgeben, dann könnte der ESP32 interessant sein. Die Geschwindigkeit ist in jedem Fall Modul- und Herstellerunabhängig.
Eine Neuigkeit in Sachen Geschwindigkeit bietet ESP32 zum Thema Kryptographie. Der Prozessor des ESP32 unterstützt nun Kryptographische Hardwarebeschleunigung (Cryptographic Hardware Acceleration). Es werden AES, SHA-2, RSA, ECC und , RNG (Zufallsgenerator) unterstützt.
Grösse / Formfaktor
Bei Technik ist oft kleiner besser. Dies gilt in diesem Fall nicht. Diese Module sind schon bei den Grossen sehr klein. Gerade beim tüfteln und testen ist es meist besser, wenn man ein grosses Modul hat. Mittels Jumper-Kabel kann man die Pins schnell miteinander verbinden und auswechseln ohne löten zu müssen. Es ist fast immer sinnvoll, für den ganzen Entwicklungsprozess ein Entwicklungsboard zu nehmen und erst für das Endprodukt ein “schlankes” Modul zu wählen.
Wählt man ein Modul mit Pins aus, muss man sich überlegen, wie man das Modul verwenden will. Man hat die Möglichkeit Jumper-Kabel, ein Breadboard oder eine Mischung aus den beiden zu verwenden. Die Entwicklungsboards haben den selben Pinabstand wie das Standardbreadboard und passen genau darauf. Achtung bei der V3 des ESP8266-12F Moduls. Um sinnvoll auf einem Breadboard verwendet zu werden braucht man gleich zwei davon. Einfacher geht es mit der V2 (siehe auch unser Artikel darüber).
Module, die nicht einreihige Pins haben können mittels Breadboard-Adapter oder Jumper-Kabel mit dem Breadboard verbunden werden.
Nicht nur die Grösse in der Ebene ist aber wichtig, sondern auch die Höhe eines Modules. Oft möchte man das Modul noch in das Gehäuse dazwischenschieben können. Dabei sollte man ein Modul nehmen, welche keine Pins hat, oder diese noch nicht angelötet hat. Man kann die Pins natürlich auch jederzeit wieder weglöten, was aber je nach Anzahl Pins sehr schwierig, aufwändig und unschön ist. Gerade aber das kleinste Modul, das ESP01, kommt immer mit Pins, aufgrund der geringen Anzahl Pins, sind diese aber relativ einfach zu entfernen.
Was noch zu erwähnen ist, ist, dass alle Module immer mit flacher Unterseite kommen. Sie können also allesamt auf einer Fläche angebracht werden, bzw. auf ein eigens PCB-Board gelötet werden.
Benutzerfreundlichkeit / Community
Als Anfänger gibt es hier einen klaren Gewinner. ESP8266-Module sind schon Jahre länger auf dem Markt, und es gibt entsprechend viel mehr Tutorials und Anwender die einem weiter helfen können.
Seitdem man ESP32 Module gleich einfach in der Arduino IDE installieren kann wie ESP8266 Module, gibt es innerhalb der Arduino IDE keinen Favoriten mehr.
Ist man in der Entwicklung, sollte man sicher immer ein Entwicklungsboard zur Hand haben. Die Zeitersparnis ist enorm und Fehler können schneller gefunden und behoben werden. Die Software lässt sich meist einfach über wenige Parameter anpassen, damit diese dann später auch auf einem nicht-Entwicklungsboard läuft.
Anschlüsse
Wenn Du bloss einen Temperatursensor an Dein Modul anhängst, dann interessiert Dich dieser Punkt nicht. Brauchst Du aber viele oder spezielle Anschlüsse, dann kann es wichtig werden, welches Board Du auswählst. Der SOC gibt zwar vor, welche Schnittstellen es gibt, aber diese werden bei weitem nicht von jedem Board angesteuert. Am besten sieht man dies beim ESP-01 Modul. Es hat gerade mal 6 Schnittstellen wovon nur zwei als IO-Schnittstellen verwendet werden können. Theoretisch kann man nun hingehen und an die SOC-Pins mit sehr ruhigen Händen und dem Vergrösserungsglas beliebig etwas dranlöten. Einfacher geht es aber, wenn diese Anschlüsse bereits vergrössert wurden. Die nicht-Entwicklungsboards bieten dazu einfache Lötstellen.
Die Entwicklungsboards bieten in der Regel Pins an die auch mit Female-Jumperkabel verbunden werden können. Dies ist vor allem dann praktisch, wenn man auf dem Breadboard entwickelt. Bei einigen Modulen kommen die Pins separat. Man kann sie dann ganz, teilweise oder gar nicht benutzen.
Nicht nur die Anzahl Schnittstellen ist aber wichtig sondern auch die Art. im Nachfolgenden sind die Schnittstellen beschrieben, die sich beim ESP8266 und ESP32 unterscheiden. Achtung, nicht bei allen Modulen werden auch alle zur Verfügung stehenden Schnittstellen unterstützt.
PWM: Pulse-width modulation (PWM), auch LED PWM und Motor PWM genannt, gibt es bei ESP in zwei Versionen. Die Software Modulation und die Hardware Modulation. ESP8266 unterstützt nur die Software-Variante, ESP32 auch die Hardware-Variante.
Für was braucht man PWM? Stell Dir PWM als analogen Output vor. Normalerweise kannst Du an einem ESP-Pin nur 0 oder 1 ausgeben, oder high und low etc. Mittels PWM kannst Du ein analoges Signal mittels high und low emulieren. Anwendungsbeispiele sind eine LED zu dimmen, ein Audiosignal zu generieren (via Buzzer), einen Motor langsam oder schneller laufen zu lassen oder ein Signal mittels Infrarot zu senden. Der Vorteil der Hardware-Variante liegt darin, dass er nicht durch den Rest der Software gestört wird, denn diese kann Störungen auf das Signal übertragen. Wie PWM in Arduino IDE verwendet wird, findest Du hier.
SPI: Serial Peripheral Interface. Diesen Anschluss brauchst Du, um Displays anzuschliessen. Das können LCD Displays, OLED-Displays, e-Ink-Displays aber auch LED-Matrix-Displays sein. Du brauchst pro Bildschirm einen SPI-Anschluss.
I2C: Der I2C Bus kannst Du für verschiedene Dinge benutzen. Vor allem langsame Geräte können damit einfach, sicher und stabil angebunden werden. Beispiele sind der digitale LM75 Temperatur-Sensor zur Temperaturmessung oder ein ADS1115 Energiemonitor. Brauchst Du mehr als einen Anschluss, dann wähle ESP32.
CAN: Controller Area Network. Brauchst Du CAN? Dann brauchst Du ein Modul mit ESP32 Chip. Brauch ich CAN? Hier ein Anwendungsbeispiel.
Touchsensor: Willst Du Touchsensoren bedienen, wähle ein Modul mit ESP32 Chip. Anwendungsbeispiele findest Du hier oder hier und hier.
Strom
Der Stromverbrauch gibt es hauptsächlich zwei Kriterien: Entwicklungsmodul/nicht-Entwicklungsmodul und ESP32/ESP8266.
Wenn Du ein Entwicklungsmodul hast, wird der Strom via USB mit 5V zur Verfügung gestellt. Dieser muss auf 3.3V konvertiert werden. Bei der Konvertierung geht ein Teil des Stromes flöten. Effizienter geht es zum Beispiel, wenn Du ein Modul direkt mit einer Batterie mit 3.2V versorgst. Dafür brauchst Du keinen Konverter und es geht kein Strom für die Konvertierung verloren. Ein USB-Adapter macht also nicht immer Sinn. Gerade für Offgrid Anwendungen via Solar oder Batterie-Strom macht ein nicht-Entwicklerboard mehr Sinn.
Für alle anderen Dinge ist wieder mal der Chip für den Stromverbrauch massgebend. Dabei ist nicht unbedingt der Stromverbrauch selber massgebend sondern die Möglichkeiten des Stromsparens. Im Betrieb braucht der ESP32 Chip nämlich nur 30mA Strom mehr als sein Alter ESP8266. Dafür bietet der ESP32 mehr Möglichkeiten, Strom zu sparen.
Gerade im Deep-Sleep modus gibt es grosse Unterschiede. Das ESP8266 hat nur einen PIN, welcher im DeepSleep Modus angesteuert werden kann. Dieser kann entweder mit GPIO16 verbunden werden und per Software-Timer auf maximum 71 Minuten gesetzt werden, oder über einen Sensor, z.B. einen Bewegungsmelder aktiviert werden.
Beim ESP32 gibt es da viel mehr Möglichkeiten. Eine gute Übersicht bieter der folgende Artikel: https://www.hackster.io/nickthegreek82/esp32-deep-sleep-tutorial-4398a7
Bluetooth
Benötigt Dein Projekt Bluetooth, dann brauchst Du ein Modul mit ESP32, da das ESP8266 kein Bluetooth anbietet. Jedes ESP32 Modul hat Bluetooth im Chip drin, es gibt also keine weitere Einschränkung.
Flash-Speicher
Der Speicherplatz auf den verschiedenen ESP-Boards ist in der Zwischenzeit fast bei allen gleich.
ESP8266 und ESP32 haben beide einen maximalen Speicher von 16 MBytes. Dieser wird von allen neuen Modulen ausgenutzt. Einzig bei älteren Modulen (z.B: das Blaue ESP-01 Modul) hatte nur 4 MBytes Flash-Speicher. Achtung: Viele Hersteller versuchen mittels unterschiedlichen Speichereinheiten einen grösseren Speicher anzupreisen. Das kann sehr irreführend sein! Siehe dazu unseren Artikel Was eigentlich ist ESP8266?
Addons
Hier befindet sich wohl eine der grössten Vielfalten. Viele Boardhersteller versuchen sich mittels bereits eingebauten/aufgebauten Komponenten von der Konkurrenz abzuheben. Besonders beliebt sind Module mit aufgebautem Bildschirm oder bereits angebrachten Sensoren, Akku-Pack oder SD-Card Slot.
Die Meinung darüber teilen sich natürlich. Ist es doch bei vielen ESP-lern Ehrensache, die Bauteile selber auszuwählen und zusammenzubauen. Wo genau die Grenze liegt des “vorgebauten” Modules muss jeder für sich selber entscheiden. Der Lerneffekt ist aber in jedem Fall grösser, wenn man sich den Bildschirm separat kauft und ihn selber anschliesst und zum laufen bringt. Oder den Temperatursensor. Will man aber vielleicht jemand anders für das Hobbie gewinnen bei dem die Einstiegshürde etwas grösser ist, macht des durchaus Sinn, wenn man mit so einem Modul beginnt. Es kann schon frustrierend sein, wenn man einen halben Tag braucht, bis der Bildschirm endlich das ausgibt, was man will. Und das kann einem Neuling der Einstieg schnell verderben.
Anzumerken ist, dass ESP32 einen eingebauten Temperatursensor hat. Wenn Du nun aber damit die Umgebungstemperatur messen willst, wirst Du enttäuscht sein. Da der Sensor im Chip integriert ist, kannst Du damit bloss die Temperatur des Chips lesen – und diese ist wohl meistens weit über der Raumtemperatur. Dafür kannst Du den Hall-Sensor (“Magnetfeld”-Sensor) schon eher gebrauchen, der ebenfalls onboard ist beim ESP32. Ein Beispiel findest Du hier.