ESP32 und Arduino Nano unterscheiden sich in der Hardware erheblich. Insbesondere was die Kommunikationsmöglichkeiten angeht, ist der ESP32 den verschiedenen Arduino-Modellen mit Bluetooth und WiFi weit voraus. Dazu bietet er einen leistungsfähigeren (Zweikern-)Prozessor, größeren Hauptspeicher und mehr GPIO-Pins.
Auch preislich ist der ESP32 zumindest gegenüber den Original-Arduinos im Vorteil: Ein einfaches ESP32 Developer-Board ist bei deutschen Versendern derzeit ab 8 € erhältlich, während ein originaler Arduino Uno R3 oder der kompaktere Arduino Nano etwa beim Doppelten liegen. Da der Arduino von Anfang an als offene Plattform angelegt war, gibt es aber eine große Auswahl an (legalen) Nachbauten, die ab ca. 4-5 € für einen Uno- oder Nano-Klon preislich interessanter sind als die Originale und sich etwa auf dem Niveau des ESP32-Vorgängers ESP8266 bewegen – aber auch der (oft unter dem Namen NodeMCU im Handel) bietet WiFi-Funktionalität inklusive.
Ich bin noch günstiger an meinen ersten Nano gekommen – der Versandhändler AZ-Delivery bietet neuen Kunden im Rahmen einer Aktion ein kostenloses Gerät an – natürlich in der Hoffnung, dass es zu weiteren Bestellungen von Zubehör kommt. [1]Versandkosten fallen trotzdem an, oder man macht eine etwas größere versandkostenfreie Bestellung und bestellt den kostenfreien Nano zusätzlich. Das Aktionsangebot gilt im Mai 2021 immer noch … Continue reading
Vieles, was ich für die ersten Schritte mit dem ESP32 geschrieben hatte, gilt auch für den Nano (oder andere Arduino-Nachbauten), z.B. die Installation und Einrichtung der Arduino-IDE oder der Umgang mit der Arduino-Bibliotheksverwaltung. Im folgenden erwähne ich nur ein paar Besonderheiten.
USB-Kabel
Auch der Nano wird per USB-Kabel an den PC angeschlossen. Allerdings benötigt man ein Kabel mit einem Mini-USB-Anschluss. Oft werden passende, kurze Anschlusskabel mitgeliefert.[2]Meine drei Anschlusskabel sind alle in transparent-blauer Kunststoffumantelung, egal wo ich die Geräte gekauft habe. Ich habe die auch auf den Seiten anderer Händler noch nie in Schwarz oder Grau … Continue reading Deren Länge ist mit 25 cm aber recht knapp, sodass ein USB-Verlängerungskabel von 1 bis 2 Metern hilfreich sein dürfte. Wie beim ESP32 gilt: Die verwendeten Kabel müssen Datenkabel sein – reine Ladekabel übertragen die zum Programmieren nötigen Daten nicht.
Treiber

Die Arduino-Nachbauten nutzen den CH340-Chip für die serielle Kommunikation mit dem Mikrocontroller-Board über USB. Wie beim CP2102-Chip auf den ESP32-Developer-Boards muss dazu ein Treiber installiert werden – ohne wird der Nano nach dem Einstecken des USB-Kabels als „Anderes Gerät” im Gerätemanager angezeigt, das Ausrufungszeichen im Gerätesymbol weist auf den fehlenden Treiber hin (siehe Bild rechts).
Unter Windows 10 kann man die automatische Treibersuche verwenden. Nach Rechtsklick auf das unbekannte Gerät und Auswahl von „Treiber aktualisieren” kann man im folgenden Dialog die Option „Automatisch nach aktualisierter Treibersoftware suchen” wählen. Windows lädt den passenden Treiber aus dem Internet und installiert ihn. Detaillierte Bilder finden sich in dieser Bilderstrecke.

Nach der Installation wird das Nano-Board als „USB SERIAL CH340”-Anschluss im Gerätemanager angezeigt (siehe Bild rechts). Den zugewiesenen (virtuellen) COM-Port – hier COM4 – benötigt man später, um ihn in den Einstellungen der Arduino-IDE einzutragen.
Will oder muss man den Treiber manuell installieren, kann man ihn von einer der folgenden Seiten herunterladen:
- www.wch.cn/download/CH341SER_EXE.html – die Seite des Herstellers WCH ist zwar zum größten Teil auf Chinesisch (Mandarin?), aber man erkennt die Links zu den Treibern für Windows, Linux und Mac (siehe Screenshot); ist diese Seite nicht erreichbar, kann man hier Kopien der Treiber finden.
- github.com/HobbyComponents/CH340-Drivers – Windows-Treiber
- github.com/juliagoda/CH341SER – Linux-Treiber; normalerweise sollte aber die jeweilige Distribution bereits einen passenden Treiber bereitstellen
Einrichtung der Arduino-IDE
Download und Installation der Arduino-IDE sind im Beitrag zum ESP32 beschrieben. Da die IDE die verschiedenen Arduino-Modelle (und Nachbauten) von Haus aus unterstützt, muss man keine zusätzlichen Pakete herunterladen. Nach der Installation stellt man in der IDE bei angeschlossenem Board im Menü Werkzeuge
den korrekten COM-Port ein, wählt als Board den „Arduino Nano” aus und als Prozessor den „ATmega 328P (Old Bootloader)”. Mit der Einstellung „ATmega 328P” (ohne „Old Bootloader”) kommt bei den Nano-Clones keine Kommunikation über die USB-Schnittstelle zustande.
Mehrere Instanzen der IDE

Mich hat es gestört, dass ich jedesmal, wenn ich zwischen ESP32 und Nano wechseln will, Anschluss (Port) und Board in der IDE ändern muss. Das nervt vor allem bei der Fehlersuche, wenn man häufig hin- und herwechselt, um verschiedene Dinge auszuprobieren.
Die Arduino-IDE erlaubt es aber, mehrere Instanzen parallel zu starten, indem man z.B. ein zweites Mal auf das Programmsymbol doppelklickt – unter Windows erscheinen dann mehrere Symbole der IDE in der Taskleiste. In jeder Instanz kann man individuell Board und COM-Port einstellen, eigene Sketches (Programme) und jeweils einen seriellen Monitor öffnen.
Will man dauerhaft zwei verschiedene Umgebungen einrichten, kann man die IDE mehrfach installieren, z.B. einmal über den Windows-Installer und einmal (oder mehrfach) als portable Version. Dann kann jede Installation die eigenen Einstellungen nutzen und man kann z.B. je nach Umgebung (Nano oder ESP) verschiedene Bibliotheken oder Bibliotheksversionen installieren.

Damit die individuellen Einstellungen des Boards usw. für jede einzelne IDE-Installation beibehalten werden, muss man in den portablen Installationen eine eigene Datei zum Speichern der Einstellungen anlegen. Standardmäßig werden diese unter Windows im Benutzerverzeichnis in der Datei C:\Users\<benutzername>\AppData\Local\Arduino15\preferences.txt gesichert; man findet die Angabe unten im Einstellungs-Dialog, den man über das Menü Datei → Voreinstellungen
aufrufen kann. Diese Datei wird von allen Installationen der IDE gemeinsam genutzt – egal ob Standard-Installation oder portabel.

Um in einer portablen Installationen eigene Einstellungen zu nutzen, muss man in dem Verzeichnis, in das man die portable Version installiert hat, einen Ordner portable
anlegen, in den man die Standard-Einstellungsdatei hineinkopiert. Dann speichert diese portable Installation ihre Einstallungen hier statt in der allgemeinen Einstellungsdatei.
(Anders als andere Pfadangaben ist dieser Wert nicht editierbar, sondern „fest verdrahtet”. An welchen Orten die Arduino-IDE nach ihren Einstellungen sucht, beschreibt der Beitrag Arduino Preferences in der Arduino-Dokumentation.)
Zum Starten kann man Verknüpfungen zu allen Installationen auf den Desktop legen (und sollte diese sinnvoll benennen).
Der Nachteil beim Verwenden mehrerer unabhängiger Installationen ist natürlich, dass man Bibliotheken in allen Umgebungen installieren und aktualisieren muss. Da Bibliotheks-Aktualisierungen weitgehend automatisch ablaufen [3]Die Arduino-IDE zeigt entsprechende Hinweise an und führt auf Wunsch die Downloads in der Bibliotheksverwaltung durch. Siehe die ausführliche Darstellung im Beitrag zur … Continue reading und Updates der Arduino-IDE selbst nur sehr selten vorkommen, ist das für mich verschmerzbar.
Läuft der Arduino Nano?
Zum Testen, ob Board und Software funktionieren, kann man eines der Standard-Beispiele verwenden, z.B. das Blink-Programm im Menü Datei → Beispiele → 01. Basics → Blink
, um die interne (rote) LED auf dem Nano-Board blinken zu lassen.
Unterschiede zwischen Arduino und ESP32
Zu Beginn hatte ich bereits etwas zu den Preisen geschrieben und erwähnt, dass der ESP32 (mit WiFi und Bluetooth; der ESP8266 besitzt „nur” WiFi) Kommunikationsmöglichkeiten bietet, die man beim Arduino erst nachrüsten muss. Gerade bei der Nutzung im Internet of Things (IoT, z.B. Heim-Automatisierung bzw. Smart Home) wird es ohne Kommunikation mit anderen Geräten schwierig. Die ESPs basieren zudem auf leistungsfähigeren Mikroprozessoren und bieten wesentlich mehr Hauptspeicher und mehr GPIOs. Manche Funktionen (wie Datum- und Zeit-Verarbeitung), die beim ESP32 in den Standard-Bibliotheken enthalten sind, muss man beim Arduino mit externen Bibliotheken nachrüsten (aber davon gibt es reichlich, das ist also kein Problem).
Generell lässt sich wohl sagen, dass es zum Arduino eine Unmenge an Websites und Blogs gibt, die die Programmierung und Einsatzmöglichkeiten von Sensoren zeigen. Der ESP32 ist rund 10 Jahre kürzer auf dem Markt (Markteinführung Arduino: 2005, ESP8266: 2014, ESP32: 2016), sodass die Auswahl nicht so groß ist. Aber mir ist bei meinen bisherigen Suchen nicht vorgekommen, dass ich zu irgendwelchen Themen keine Ergebnisse im Web gefunden hätte. Zudem laufen sehr viele Bibliotheken und Beispielanwendungen auf beiden Plattformen und man muss oft den Programmcode nur leicht ändern, um ihn vom Arduino an den ESP32 anzupassen (wenn überhaupt – häufig sind es nur andere Nummern der GPIO-Pins oder eine andere Baud-Rate für den seriellen Monitor).
Die Arduino-IDE unterstützt beide (und andere) Plattformen, sodass ein Umstieg da keine großen Probleme aufwirft. Was gedruckte Bücher angeht, ist der Arduino den ESPs weit voraus – nicht nur deswegen würde ich ihn als etwas anfängerfreundlicher einschätzen. Man kommt aber auch schneller an Grenzen.
Beim Basteln auf dem Breadboard finde ich den Nano etwas angenehmer, weil er deutlich schmaler ist – beim mittigen Einstecken bleiben auf einer Seite zwei, auf der anderen drei freie Reihen neben den Pins, während die meisten ESP32-Modelle nur auf einer Seite eine Reihe frei lassen. Es gibt auch ESP32-Boards, die etwas schmaler sind – wie das ESP32 Pico Kit – das ist aber die Ausnahme, und diese Boards sind auch ein paar Euro teurer.
Ein Vorteil der Arduinos sind die vielen Shields und Module – fertig bestückte Platinen insbes. für den Arduino Uno, die einfach auf die vorhandenen Buchsen- oder Pin-Leisten aufgesteckt werden. Ein Beispiel zeigt das Titelbild des Beitrags: einen Shield für den Nano mit einer Rundbuchse für die Spannungsversorgung durch ein externes Netzteil und Steckerleisten mit eigenem Masse- und Spannungs-Pin für sämtliche Digital- und Analog-Anschlüsse.
Die Arduinos arbeiten mit einer Versorgungsspannung von 5 Volt, die ESPs mit 3,3 V. Auch die GPIOs (Steuerleitungen) verwenden jeweils diese Spannungen. Die meisten Sensoren und Module arbeiten zwischen 3,3 und 5 V, können also problemlos mit beiden Mikrocontroller-Typen genutzt werden. Es gibt aber auch Bauteile, deren Steuerleitungen eine bestimmte Spannung benötigen – die beliebten Neopixel (LEDs vom Typ WS2812B, z.B. in LED-Streifen) setzen bspw. auf 5-Volt-Steuersignale. Mit etwas Glück und bestimmten Bibliotheken funktionieren sie auch mit den 3,3 V des ESP32. Stabiler ist es aber, mit sog. level shifter-ICs wie dem 74AHCT125N die Steuersignale auf 5 V anzupassen.
Ein weiterer Unterschied besteht bei den Analog-Digital-Konvertern (ADC). Der Arduino bietet eine Auflösung von 10 bit, also Messwerte zwischen 0 und 1023 bei 0-5 Volt. Der ESP32 löst zwar feiner auf (12 bit, also Werte von 0 bis 4095 bei 0-3,3 Volt). Allerdings sind gerade in den Randbereichen (ca. 0-0,1 V und 3,2-3,3 V) beim ESP32 die Messwerte sehr ungenau bzw. kaum zu gebrauchen, weil sie sich nicht linear ändern. [4]Siehe die Beschreibungen bei Random Nerd Tutorials (Abschnitt „ADC is Non-linear”) und im Repository von Blackneron. Beim Arduino sollen die Werte genauer und vor allem linear sein.
Nano | ESP32 Developer Board (DevKitC) | ESP8266 Developer Board (NodeMCU) | |
---|---|---|---|
Prozessor | ATmega 328P oder 328 (16 bit) | Tensilica Xtensa LX6 (32 bit dual core) | Tensilica Xtensa LX106 (32 bit single core) |
Takt | 16 MHz | 160 - 240 MHz | 80 - 160 MHz |
Speicher (RAM) | 32 KB | 520 KB | 160 KB |
Speicher (Flash) | - (aber 1 KB EEPROM) | 4 MB (Spezial-Boards mit bis zu 16 MB) | 4 MB |
Pins | 30 | 30 oder 38 | 30 |
GPIO-Pins analog / digital / PWM | 8 / 22 / 6 | 16 / 26 (34, nicht alle herausgeführt) / 16 | 1 / 16 (nur tlw. verfügbar) / alle verfügb. digit. GPIOs |
Touch-Sensoren | - | 10 | - |
WiFi | - | 802.11 b/g/n | 802.11 b/g/n |
Bluetooth | - | Bluetooth 4.2, BLE (Bluetooth Low Energy) | - |
Bus-Systeme zur Kommunikation mit Peripherie | 1 * I2C 1 * SPI | 2 * I2C 2 * I2S 4 * SPI CAN 2.0 | 1 * I2C 1 * I2S 3 * SPI |
Analog-Digital-Konverter (ADC) | 10 bit | 12 bit | 10 bit |
Betriebssspannung | 5 V | 3,3 V | 3,3 V |
Strom an den GPIO-Pins | je max. 40 mA; gesamt max. 200 mA | je max. 40 mA | je max. 12 mA (Quelle) |
Größe (Developer Board) | 18 mm * 45 mm | z.B. 27 mm * 55 mm (typisch für 30 und 38 Pins), 24 mm * 48 mm (38 Pins) | z.B. 24 mm * 48 mm |
Anmerkung zum Nano: Für den Strom, den die GPIO-Pins des Nano maximal liefern können, habe ich verschiedene Angaben gefunden: 40 mA nennt die Arduino-Homepage für den Original Nano, außerdem die meisten Datenblätter auch für die Nachbauten; an verschiedenen Stellen habe ich aber auch die Angabe von max. 20 mA je GPIO (für Original und Nachbauten) gefunden sowie unabhängig davon den Hinweis, dass alle Pins zusammen 200 mA nicht überschreiten sollen.
Die Größe der ESP-Developer Boards ist nur als Anhaltspunkt zu verstehen – insbes. die Länge variiert je nach Modell (30 oder 38 Pins, Platine mit oder ohne Montage-Bohrungen in den Ecken). Typischerweise sind die ESP32-Boards ein paar Millimeter breiter als die mit einem ESP8266, sodass sie auf dem Breadboard eine weitere Reihe Pins verdecken. Ein paar verschiedene Montagemöglichkeiten, bei denen mehr Platz auf dem Breadboard ist, sind hier zu sehen.
Datenblätter
- Nano Klon: AZ-Delivery: Nano V3 mit CH340, Joy IT: Nano
- Arduino Nano: store.arduino.cc/arduino-nano (Klick auf den Reiter „Tech Specs”)
- ESP32: espressif.com/sites/default/files/documentation/esp32_datasheet_en.pdf
- ESP8266: espressif.com/sites/default/files/documentation/esp8266-technical_reference_en.pdf
21./29.08.2019: kleinere Änderungen im Text; Abschnitt „Unterschiede zwischen Arduino und ESP32” mit Tabelle ergänzt
07.02.2021: kleinere Änderungen im Text
26.05.2021: Erweiterung des Abschnitts »Mehrere Instanzen der IDE«: Verwendung mehrerer
preferences.txt
-Dateien
Fußnoten
1↑ | Versandkosten fallen trotzdem an, oder man macht eine etwas größere versandkostenfreie Bestellung und bestellt den kostenfreien Nano zusätzlich. Das Aktionsangebot gilt im Mai 2021 immer noch – es scheint sich um eine „Dauer-Aktion” zu handeln. |
---|---|
2↑ | Meine drei Anschlusskabel sind alle in transparent-blauer Kunststoffumantelung, egal wo ich die Geräte gekauft habe. Ich habe die auch auf den Seiten anderer Händler noch nie in Schwarz oder Grau gesehen – warum auch immer. |
3↑ | Die Arduino-IDE zeigt entsprechende Hinweise an und führt auf Wunsch die Downloads in der Bibliotheksverwaltung durch. Siehe die ausführliche Darstellung im Beitrag zur Arduino-Bibliotheksverwaltung. |
4↑ | Siehe die Beschreibungen bei Random Nerd Tutorials (Abschnitt „ADC is Non-linear”) und im Repository von Blackneron. |
Themenverwandte Beiträge
Der ESP32 ist ein populärer Mikrocontroller, mit dem bspw. Sensoren abgefragt oder Motoren gesteuert...
Die Sensoren DS18B20, DHT22 und DHT11 sind drei Temperatur- (und Luftfeuchtigkeits-)Sensoren, die mi...
LittleFS ist ein Dateisystem für den Flash-Speicher verschiedener Mikrocontroller. Auf den ESP-Contr...
Der BH1750 ist ein Sensor zum Messen der Stärke des Umgebungslichts. Er misst die Beleuchtungsstärke...