Unterschiede und Gemeinsamkeiten zwischen Arduino und ESP32
- Der Arduino UNO ist ein Mikrocontroller auf Basis eines Atmel Prozessors mit 16 Mhz Taktfrequenz und 32 KB Speicher.
- Der ESP32 kommt aus dem Hause espressif. Der Prozessort taktet mit 160 bzw. 240 MHz. Speicher zwischen 4 und 16 MB sind üblich. Außerdem sind Bluetooth und WiFi verbaut.
- Einfache Programme sind mit Arduino und ESP32 gleich zu programmieren. Bei fortgeschritten Features gibt es Unterschiede im Code.
- Beide Mikrocontroller könne sowohl mit der Arduino IDE als auch mit PlatformIO + VS Code verbunden werden.
Jetzt anmelden
und kostenloses eBook bekommen!Warum wir den Arduino trotzdem lieben!
Ok, wenn ich behaupte, der Arduino kann nix, dann ist das natürlich völlig übertrieben. Nur im Vergleich zu anderen Mikrocontrollern ist der Arduino vergleichsweise teuer geworden. Der weit verbreitete Arduino UNO hat kein WLAN und kein Bluetooth, während zum Beispiel der ESP32 – meine Lieblings-Alternative zum Arduino – mit WLAN und Bluetooth daherkommt.
Man muss dem Arduino UNO aber auch zugestehen, dass er ein paar Tage mehr auf dem Buckel hat, als der ESP32.
Wenn wir ein Arduino Modell zum Vergleich herauspicken, das ähnliche Features wie der ESP32 hat, ist der Preisunterschied allerdings sehr deutlich, wie man in der kleinen Vergleichstabelle unten schön sehen kann.
Bevor wir uns die Geräte anschauen nochmal kurz erläutert, warum wir den Arduino trotzdem lieb haben müssen! Was das Team von Arduino gebaut hat, war einfach ein hervorragendes Komplettpaket. Ein einfacher Mikrocontroller, damals vergleichsweise günstig, zusammen mit einer Entwicklungsumgebung, die einfach zu bedienen ist. Und dazu noch ein Framework, das nicht übermäßig kompliziert ist.
Dieses Gesamtpaket hat schließlich dazu geführt, dass viele Leute auf einmal mit der Mikrocontroller-Programmierung angefangen haben und unter den Hobby-Elektronikern aber auch in der Schule inzwischen völlig normal geworden ist.
Arduino UNO
Hier haben wir einen älteren Arduino UNO. Dieses Modell müsste noch vor dem Model Arduino UNO R3 sein. Aktuell ist der Arduino UNO R4.
Man sieht hier den Prozessor von ATMEL. Über die Pin-Leisten und Kabel werden Sensoren oder LEDs oder andere Bauteile auf dem Breadboard verbunden. Der Arduino UNO R4 hat keinen ATMEL Prozessor mehr. Hier verrichtet nun ein RA4M1 Mikroprozessor von Renesas mit 48 MHz seine Arbeit und es gibt nun 256 KB Flash Speicher. Trotzdem ist der Code mit seinen Vorgängern kompatibel geblieben.
Das Ganze wird über USB mit Strom versorgt. Dieser Arduino UNO hat einen USB Typ-B Stecker zur Verbindung mit dem Computer und zur Stromversorgung. Alternativ kann man das Board auch über ein Netzteil mit Hohlstecker mit Strom versorgen. Oder man kann den Arduino UNO auch über einen bestimmten Pin mit Strom versorgen.
Über alle Möglichkeiten der Stromversorgung von Arduino und ESP32 habe ich einen eigenen Artikel geschrieben:
ESP32 & ESP8266
Im Vergleich dazu haben wir hier einen ESP32 und ESP8266. Man sieht sofort, dass sie wesentlich kleiner sind. Die Bauteile für WLAN, Bluetooth und Mikrocontroller sind unter dem Metalldeckel versteckt – beim ESP8266 ohne Bluetooth.
Durch Stiftleisten kann der ESP auf einem Breadboard verwendet werden. So kann man die Pins des ESPs auch ohne Lötkolben mit Bauteilen verbinden. Das Bauteil mit der eckigen Schlangenlinie an einem Ende ist die WLAN-Antenne.
Diese Boards werden über Micro-USB mit Strom versorgt und mit dem Computer verbunden. Man kann das Board aber auch über den 3 Volt Pin mit Strom versorgen. In einem eigenen Artikel erkläre ich, wie man den ESP mit Batterien betreibt.
Vergleich Arduino UNO vs ESP
Jetzt, wo wir einen Überblick über die Arduino und ESP Hardware haben, werfen wir einen Blick auf die „inneren Werte“.
In der Tabelle habe ich aufgelistet, welche Features die verschiedenen Arduino Boards und ESP8266 und ESP32 haben. Ich habe natürlich nicht alle Arduino Boards aufgeführt, da es inzwischen viele verschiedene gibt. Daher habe ich einfach mal den Klassiker Arduino UNO und Arduino Nano herausgepickt.
Zudem habe ich einen weiteren Arduino hinzugefügt, der von den Features her den ESP Boards nahe kommt: den Arduino MKR WiFi 1010, der ebenfalls WiFi und Bluetooth besitzt.
Schauen wir uns die Werte an.
WiFi und Bluetooth
Hier können wir schnell sehen, das haben nur der Arduino MKR WiFi 1010 und der ESP32. Der ESP8266 hat WiFi, aber kein Bluetooth.
Speicher
Hier wird’s interessant, aber auch kompliziert! Der Speicher ist dann wichtig, wenn es um die maximale Größe des Programms geht, das man auf den Mikrocontroller laden kann. Sobald eure Programme größer werden, ist der Speicher immens wichtig. Prinzipiell ist die Architektur der ESPs anders aufgebaut, als beim Arduino UNO.
Beim Arduino UNO sind der Speicher, in dem das Programm abgelegt wird und der Arbeitsspeicher für Berechnungen und Variablen strikt voneinander getrennt. Bei den ESPs sind die Speicherbereiche nicht strikt getrennt und man kann alles dynamisch einstellen. Deswegen hat man hier nicht den einen festgelegten Wert für Programmspeicher oder Arbeitsspeicher.
Insgesamt kann man aber sagen: die ESPs haben prinzipiell mehr Speicher – sowohl für Programme als auch für den flüchtigen Arbeitsspeicher.
GPIO
Das ist die Anzahl der Pins, die auf jedem Board sind. Hier muss man wissen: Man kann nicht jeden Pin frei verwenden. Manche sind für interne Prozesse blockiert. Manche sind für die Stromversorgung gedacht. Allerdings trifft das auf alle Mikrocontroller Boards zu. Von daher ist die Tendenz schon richtig, dass der ESP32 mehr Pins hat als der ESP8266 oder der Arduino MKR.
CPU
Hier sehen wir, welcher Prozessor die höchste Taktrate hat. Je höher die Taktrate, desto schneller können Berechnungen durchgeführt werden. Besonderheit bei den ESPs: diese haben, je nach Modell, einen Dual Core Prozessor und kann somit zwei Prozesse parallel laufen lassen.
Betriebsspannung
Auch interessant: Das ist nicht die Spannungsversorgung für das Board, sondern quasi wie viel Spannung aus den Pins herauskommt und somit die Sensoren oder LEDs oder andere Bauteile versorgt. Früher war das komplizierter, denn da gab es in der Regel nur 5 Volt kompatible Bauteile und musste dann mit Level Shiftern arbeiten, wenn man dann mal mit einem 3,3 Volt Board gearbeitet hat. Heute ist das kein Problem mehr. Man bekommt die meisten Bauteile für 3,3 Volt Boards.
Preis
Hier sieht man recht schnell: Der ESP32 hat die beste Ausstattung und einen vergleichsweise günstigen Preis im Vergleich zu einem Arduino Board mit einer ähnlichen Ausstattung.
Zwischen-Fazit
Arduino UNO oder Arduino Nano? Eigentlich gibt es keinen Grund den UNO zu verwenden. Der UNO und Nano sind quasi Hardware gleich. Beide können das Gleiche und der Nano ist ein bisschen günstiger. Einzige Ausnahme: wenn man Shields verwenden möchte, die im Arduino UNO Formfaktor gebaut sind, dann passen die natürlich nur auf den Arduino UNO.
Außerdem ist die Arbeit mit dem Nano vermutlich "fummeliger" weil er kleiner als der Arduino UNO ist. An die Pins des UNOs kommt man gut mit Jumper-Kabeln heran.
Und welchen ESP sollte man verwenden? Der ESP32 hat zusätzlich noch Bluetooth, ist ein bisschen schneller und hat schnelleres WLAN. Wenn man auf Nummer sicher gehen will, dann nimmt man halt den ESP32.
Ich persönlich hatte mit den ESP8266 mal Pech: Ich hatte ein 5er-Set gekauft, konnte aber keinen davon verwenden. Beim Hochladen des Codes ist der Vorgang immer abgebrochen – möglicherweise bin ich da auch auf billige Imitate hereingefallen. Von daher bin ich glücklich bei den ESP32 hängen geblieben.
Arduino und ESP32 Praxis-Vergleich
Nach dem Feature-Vergleich machen wir jetzt noch einen kleinen Praxis-Vergleich. Schauen wir uns mal an, wie man die Mikrocontroller anschließt und wie man ein erstes Programm auf den Arduino UNO und den ESP32 lädt. Dazu verwenden wir die Arduino Entwicklungsumgebung, auch Arduino IDE genannt.
Zum Anschließen einfach den USB Typ-B Stecker in das Arduino Board stecken und das USB Typ-A Ende in den Computer. Dann sollten auch schon einige der LEDs auf dem Board blinken.
Wir starten die Arduino IDE. Dort erstellen wir ein neues Sketch und speichern es als Erstes ab. Zum Vergleichen nehmen wir einen simplen Blinky Code – quasi das „Hello World“ der Mikrocontroller.
int LED = 4; void setup() { pinMode(LED, OUTPUT); } void loop() { digitalWrite(LED, HIGH); delay(10); digitalWrite(LED, LOW); delay(250); }
Im Code definieren wir zuerst Pin 4, um damit die LED zu steuern. Unsere LED muss also an Pin 4 angeschlossen werden.
In der setup() Methode sagen wir, dass der Pin 4 nur Strom herausgeben soll. Der Pin soll nicht auf Eingaben achten, wie z.B. bei einem Schalter.
Und in der loop() Methode setzen wir den Strom des Pins 4 abwechselnd auf HIGH und LOW, d.h. die LED wir angemacht und ausgemacht. Zwischen HIGH und LOW setzen wir ein paar Delays, weil wir sonst das an- und ausschalten der LED gar nicht sehen würden.
Der Schalter mit dem Pfeil lädt das Programm schließlich auf den Mikrocontroller. Wenn alles geklappt hat, erscheint am Ende in der Konsole eine entsprechende Nachricht. Unsere LED blinkt jetzt.
Jetzt noch mal das Gleiche mit dem ESP32. Dazu bauen wir erstmal den Arduino ab und dann benötigen wir ein Mikro-USB-Kabel, um den ESP am Computer anzuschließen und mit Strom zu versorgen. Außerdem müssen wir die Kabel auf dem Breadboard umstecken, sodass die LED jetzt mit dem Pin 4 des ESPs verbunden ist. Und wir müssen natürlich auch noch Ground verbinden.
Wenn man die ESPs das erste Mal in der Arduino IDE verwendet, muss man diese zunächst zum sog. Boardmanager hinzufügen, damit die Arduino IDE die ESPs korrekt ansprechen kann. Dafür gibt es im Menü unter Arduino > Einstellungen das Feld Additional Board Manager URLs. Hier müssen wir zwei Adressen hinzufügen. Eine Adresse für die ESP32 Boards und eine Adresse für die ESP8266 Boards.
Beide URLs dann mit einem Komma getrennt in das Feld eintragen:
https://dl.espressif.com/dl/package_esp32_index.json,https://arduino.esp8266.com/stable/package_esp8266com_index.json
Mit OK bestätigen und dann stehen im Menü unter Tools > Board diverse ESP Boards zur Verfügung.
Außerdem müssen wir darauf achten, dass der richtige USB-Port gesetzt ist. Unter Mac OS ist das in der Regel SLAB_USBtoUART und unter Windows ist das ein COM Port.
Wenn wir jetzt den Code auf den Mikrocontroller laden, sollte die LED wieder blinken – aber diesmal gesteuert vom ESP32.
Fazit
Wie ihr seht, man muss nur die ESPs einmal zum Boardmanager hinzugefügt haben. Danach läuft das Programmieren genauso ab, wie mit einem Arduino.
Was man noch wissen sollte ist, dadurch dass wir das Programm über die Arduino IDE hinzugefügt haben, haben wir auch das Arduino Framework auf den ESP gespielt. Das heißt, wir nutzen jetzt das Arduino Framework auf dem ESP. Der Hersteller Espressif bietet ein eigenes Framework an, dass sich ESP-IDF nennt. Da das Arduino Framework aber so populär ist, wurde es für die ESPs portiert.
Übrigens, ich entwickle fast gar nicht mehr in der Arduino IDE, da mir die Entwicklungsumgebung zu wenig Funktionen bietet. Und bei größeren Projekten wird es schnell unübersichtlich. Hier habe ich einen Artikel darüber geschrieben, welche alternative IDE ich verwende und wie man mit dort Programme auf den Arduino und ESP lädt.
Aber natürlich haben wir die Arduino IDE auch ganz doll lieb 😉
Links & Produktempfehlungen
Links zum Thema
Jetzt anmelden
und kostenloses eBook bekommen!