Meine eBooks
Der Arduino kann nix und ist viel zu teuer! Was meine Lieblings-Alternative ist und warum wir den Arduino trotzdem ganz lieb haben müssen, erzähl ich euch im Video oder lest selbst. Außerdem zeige ich, wie man in der Arduino-IDE ein Programm auf einen Arduino UNO und auf einen ESP32 lädt.
Wenn ich behaupte, der Arduino kann nix, dann ist das natürlich völlig übertrieben. Nur im Vergleich zu anderen Microcontrollern 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. Gut, man muss auch sagen, der Arduino UNO hat sicher auch ein paar Tage mehr auf dem Buckel. Aber selbst wenn wir ein Arduino Modell zum Vergleich rauspicken, das ähnliche Features wie der ESP32 hat … aber seht selbst.
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 Microcontroller, 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 Microcontroller-Programmierung angefangen haben und unter den Hobby-Elektronikern aber auch in der Schule inzwischen völlig normal geworden ist.
Arduino UNO
So hier haben wir einen Arduino UNO. Man sieht hier den Prozessor von ATMEL. Über die Pinleisten und Kabeln werden Sensoren oder LEDs oder andere Bauteile auf dem Breadboard verbunden. Das Ganze wird dann ü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.
ESP32 & ESP8266
Im Vergleich dazu haben wir hier die ESPs. Man sieht sofort, dass die wesentlich kleiner sind. Hier haben wir einen ESP8266 und das ist ein ESP32. Die Bauteile für WLAN, Bluetooth und Microcontroller ist unter diesen Metalldeckel versteckt. Beim ESP8266 dann eben ohne Bluetooth. Man sieht auch die ganzen Pinszum Anschließem vopn Bauteilen. Dieser hier hat noch keine Stiftleiste aufgelötet, während dieser ESP hier schon eine Stiftleiste darauf hat.
Durch die Stiftleisten kann der ESP auf einem Breadboard verwendet werden. So kann man die Pins des ESPSs 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 aber das Board auch über den 3 Volt Pin mit Strom versorgen. In einem eigenen Artikel erkläre ich, wie man den ESP mit Batterien betreibt.
Ok, nun haben wir uns einen Überblick über die Arduino und ESP Hardware gemacht. Jetzt vergleichen wir mal, die „inneren Werte“. Dafür habe ich eine kleine Tabelle erstellt. In der Tabelle habe ich aufgelistet welche Features die verschiedenen Arduino Boards und ESP8266 und ESP32 haben. Ich habe jetzt nicht alle Arduino Boards aufgeführt, da es inzwischen so viele verschiedene Arduino Boards gibt. Ich habe einfach mal den Klassiker Arduino UNO und Arduino Nano rausgepickt. Und dann habe ich noch einen Arduino rausgepickt, der von den features her den ESP Boards nahe kommt, nämlich mit WLAN und Bluetooth drauf – den Arduino MKR WiFi 1010.
Gehen wir mal die Tabelle durch.
WiFi und Bluetooth, da können wir schnell sehen, das haben nur der Arduino MKR WiFi 1010 und der ESP32. Der ESP8266 hat WiFi aber kein Bluetooth.
Speicher – da wird’s interessant! Der Speicher ist dann wichtig, wenn es um die maximale Größe des Programms geht, das man auf dem Microcontroller laden kann. Sobald eure Programme größer werden, ist der Speicher immens wichtig.
GPIO – das ist die Anzahl der Pins, die auf jedem Board drauf 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 Microcontroller Boards zu. Von daher ist die Tendenz schon richtig, dass der ESP32 mehr Pins hat als der ESP8266 oder der Arduino MKR.
Bei CPU sehen wir welcher Prozessor die höchste Taktrate hat. Je höher die Taktrate, desto schneller können Berechnungen durchgeführt werden. Besonderheit beim ESP32: dieser hat einen Dual Core Prozessor. Das heißt, der kann 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 rauskommt 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.
Und letztlich noch der Preis und da 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 Ausnahm: wenn man Shields verwenden möchte, die im Arduino UNO Formfaktor gebaut sind, dann passen die natürlich nur auf den Arduino UNO.
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. Da hatte ich mir 5 Stück geholt, konnte aber keinen davon verwenden. Ich konnte auf keinem ein Programm hochladen, der Vorgang ist dabei immer abgebrochen – möglicherweise bin ich da auch auf billige Imitate reingefallen. Von daher bin ich glücklich bei den ESP32 hängen geblieben.
Praxis-Vergleich
Nach dem Feature-Vergleich machen wir jetzt noch einen kleinen Praxis-Vergleich. Schauen wir uns mal an, wie man die Geräte 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 Microcontroller.
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 rausgeben soll. Der Pin soll nicht auf Eingaben achten, wie z.B. bei einem Schalter. Und im Loop 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 ausmachen gar nicht sehen würden.
Oben der Schalter mit dem Pfeil lädt das Programm schließlich auf den Microcontroller. Wenn alles geklappt hat, erscheint am Ende in der Konsole eine entsprechende Nachricht. Und 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. Ausserdem müssen wir die Kabel auf dem Breadboard umstecken, so dass 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 eine 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 jetzt 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 dieses SLAB_USBtoUART und unter Windows wäre das ein COM Port. Wenn wir jetzt den Code zum Microcontroller schicken, 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 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 ennet sich ESP-IDF. 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 😉