Skip to main content

ESP32 Tutorial – Eine EinfĂŒhrung

In meinem ESP32 Tutorial erklĂ€re ich dir die Grundlagen mit dem NodeMCU ESP32 – Ă€hnlich wie schon in meinem NodeMCU ESP8266 EinfĂŒhrungstutorial. Dazu zeige ich dir, wie du mit der Arduino IDE den ESP32 programmieren kannst und stelle dir ein kleines Programm vor. In diesem simplen Programm werden die beiden Kerne des ESP 32 genutzt, um zwei LED in unterschiedlichen Intervallen Blinken zu lassen.

Auf die Bluetooth-FĂ€higkeiten des ESP32 wird in einem eigenen Tutorial eingegangen.

Der ESP32 unterscheidet sich vom ESP8266 darin, dass er neben WLAN bzw. WiFi unter anderem zusÀtzlich Bluetooth und einen weiteren Prozessorkern besitzt. Dieser Dual Core ermöglicht es, zwei parallele Prozesse zu implementieren.

Alle Unterschiede und Gemeinsamkeiten habe ich bereits in meinem Artikel ESP32 vs ESP8266 erlÀutert.

Dank seiner geringen Kosten und dem geringen Stromverbrauch eignet sich der ESP 32 also genau wie der ESP 8266 fĂŒr Smart Home Projekte! In Verbindung mit einem Raspberry Pi lassen sich so fĂŒr wenig Geld schon einige smarten Funktionen selbst bauen!

Der NodeMCU ESP32.

Der NodeMCU ESP32.

Im Vergleich zum ESP8266 ist der ESP32 etwas teurer, jedoch immer noch sehr gĂŒnstig.

Amazon Prime8,99 €
Stand: 23. Juli 2021 17:25 Uhr
Auf Amazon ansehen

ESP32: Arduino IDE vorbereiten

Damit du den ESP32 mit der Arduino IDE programmieren kannst, muss die Arduino IDE erst einmal vorbereitet werden. Falls du die Arduino IDE noch nicht installiert hast, kannst du sie hier herunterladen.

Wenn du die Arduino IDE gestartet hast, kannst du unter dem MenĂŒpunkt „Datei“ die Voreinstellungen öffnen.

Als erstes öffnest du die Voreinstellungen.

Als erstes öffnest du die Voreinstellungen.

Hier muss nun die Boardverwalter-URL fĂŒr den ESP32 eingetragen werden, damit du ihn mit der Arduino IDE programmieren kannst.

Hier muss der ESP32 hinzugefĂŒgt werden.

Hier muss der ESP32 hinzugefĂŒgt werden.

Bei „ZusĂ€tzliche Boardverwalter-URLs“ klickst du nun rechts auf den Button und trĂ€gst die folgende Adresse ein:

https://dl.espressif.com/dl/package_esp32_index.json
FĂŒr das ESP32 Tutorial muss hier die URL eingetragen werden.

FĂŒr das ESP32 Tutorial muss hier die URL eingetragen werden.

FĂŒge die URL einfach in das Textfeld ein und klicke auf „Ok“.

Um den NodeMCU ESP32 nun endgĂŒltig hinzuzufĂŒgen, klickst du unter „Werkzeuge“ -> „Board“ auf Bordverwalter und suchst dort nach „ESP32“. Klicke bei „ESP32“ auf installieren.

Jetzt kann die Plattform des ESP32 installiert werden.

Jetzt kann die Plattform des ESP32 installiert werden.

Um den ESP32 programmieren zu können, muss das entsprechende GerĂ€t in der Arduino IDE ausgewĂ€hlt werden. Klicke dazu auf „Werkzeuge“ und gehe mit der Maus auf „Board“. Dort kannst du dann „ESP32 Dev Module“ auswĂ€hlen.

Um den ESP32 programmieren zu können, muss er hier ausgewÀhlt werden.

Um den ESP32 programmieren zu können, muss er hier ausgewÀhlt werden.

ESP32 Tutorial: Die Schaltung

In dem Programm, das im nĂ€chsten Schritt erstellt wird, werden die beiden Prozessorkerne des ESP32 dazu genutzt, zwei LEDs in unterschiedlichen Intervallen blinken zu lassen. Das wĂ€re zwar auch mit nur einem Prozessorkern möglich, jedoch möchte ich dir damit zeigen, wie du den zweiten Prozessorkern fĂŒr eigene Programme nutzen kannst.

Im folgenden Bild siehst du den Schaltplan fĂŒr das Tutorial. Zwei farbige LEDs werden an den ESP32 angeschlossen. Ich habe eine rote und eine grĂŒne LED verwendet. Zwischen die Anoden der LEDs und den entsprechenden GPIO-Pin wird jeweils ein 100 Ohm-Widerstand geschaltet, damit die LEDs nicht beschĂ€digt werden. Die LEDs vertragen die 3,3 Volt der GPIO-Pins nĂ€mlich nicht – daher die WiderstĂ€nde.

Die grĂŒne LED liegt bei mir an GPIO22 und die rote an GPIO21.

FĂŒr das ESP32 Tutorial werden zwei LEDs an das Board angeschlossen.

FĂŒr das ESP32 Tutorial werden zwei LEDs an das Board angeschlossen.

Ich habe die LEDs mit Jumper-Kabeln verlötet und die WiderstÀnde mit SchrumpfschlÀuchen versteckt. Das ganze sieht bei mir so aus:

So sieht die Schaltung bei mir aus.

So sieht die Schaltung bei mir aus.

ESP32 Tutorial-Programm

Jetzt wird das Programm erstellt, um die beiden LEDs unterschiedlich blinken zu lassen. FĂŒge dazu den folgenden Code in die Arduino IDE ein:[/vc_column_text][vc_column_text]

const int greenLedPin = 22;
const int redLedPin = 21;

TaskHandle_t blinkTask;

int counter = 0;

void setup() {
	pinMode(redLedPin, OUTPUT);
	pinMode(greenLedPin, OUTPUT);

	xTaskCreatePinnedToCore(blink, "blink", 500, NULL, 1, &blinkTask, 0);
}

void loop() {
	digitalWrite(greenLedPin, HIGH);
	delay(1000);
	digitalWrite(greenLedPin, LOW);
	delay(1000);

	if(counter == 10){
		vTaskDelete(blinkTask);
	}

	counter++;
}

void blink(void* parameter){
	while(true){
		digitalWrite(redLedPin, HIGH);
		delay(750);
		digitalWrite(redLedPin, LOW);
		delay(750);
	}
}

Zu beginn des Programms werden die GPIO-Pins fĂŒr die LEDs gesetzt – GPIO22 fĂŒr die grĂŒne LED und GPIO21 fĂŒr die rote. Außerdem wird ein Objekt fĂŒr den Task deklariert. Mit diesem Objekt lĂ€sst sich der Task beispielsweise stoppen. ZusĂ€tzlich dazu wird eine Integer-Variable namens „counter“ mit dem Wert 0 initialisiert.

In der Setup-Funktion werden die Pin-Modi fĂŒr die genannten GPIOs auf „OUTPUT“ gesetzt. Anschließend wird mit der Funktion „xTaskCreatePinnedToCore()“ ein zweiter Prozess erstellt. Als ersten Parameter erhĂ€lt diese Funktion den Namen der Funktion, die der Prozess ausfĂŒhren soll (in diesem Fall „blink“). Der zweite Parameter ist ein Name zum Debugging des Tasks. Ich nenne diesen Task einfach „blink“. Anschließend wird die Stack-Tiefe in Bytes angegeben. Hier habe ich den Wert 500 gewĂ€hlt. Der nĂ€chste Parameter gibt die Parameter an, die an die auszufĂŒhrende Methode ĂŒbergeben werden sollen. In meinem Fall ist das „NULL“, da die Methode „blink()“ keine Parameter annimmt. Danach wird die PrioritĂ€t des Tasks angegeben – in meinem Fall „1“. Damit der Task auch wieder gestoppt werden kann, wird nun ein Zeiger auf das Task-Objekt ĂŒbergeben („&blinkTask“). Der letzte Parameter gibt an, auf welchem Kern der Task ausgefĂŒhrt werden soll. Ich lasse den Task auf Kern 0 laufen. Das Hauptprogramm wird standardmĂ€ĂŸig auf Kern 1 ausgefĂŒhrt. Wenn hier der Wert „tskNO_AFFINITY“ angegeben wird, entscheidet der Scheduler des Systems, auf welchem CPU-Kern der Task ausgefĂŒhrt wird.

In der Loop-Funktion wird die grĂŒne LED eingeschaltet und nach einer Sekunde wieder ausgeschaltet. Danach wird eine Sekunde gewartet und danach geprĂŒft, ob der Counter den Wert 10 hat. Falls ja, wird der Task zum Blinken der roten LED gestoppt. Danach wird der Counter inkrementiert.

Außerdem muss noch die Methode „blink()“ erstellt werden, mit der die rote LED zum blinken gebracht wird. Die Methode gibt nichts zurĂŒck und erhĂ€lt keine Eingabeparameter. Innerhalb der Methode wird eine while-Schleife endlos durchlaufen. In der Schleife wird der GPIO-Pin der roten LED eingeschaltet, 750 Millisekunden gewartet und der GPIO-Pin wieder ausgeschaltet. Danach wird wieder 750 Millisekunden gewartet und dann die Schleife erneut durchlaufen.

Code auf den ESP32 flashen

Jetzt kannst du den ESP32 flashen. Dazu klickst du in der Arduino IDE in der Leiste oben auf den Pfeil nach rechts.

Klicke auf den Pfeil um den Flashvorgang zu starten.

Klicke auf den Pfeil um den Flashvorgang zu starten.

Der Flashvorgang sollte jetzt starten. Dabei wird der Code kompiliert und anschließend auf den ESP32 geschrieben.

WĂ€hrend dem Flashvorgang gibt die die Arduino IDE am unteren Rand einige Meldungen aus. Damit der ESP32 programmiert werden kann, musst du einen Knopf drĂŒcken, wenn die Arduino IDE die Meldung „Connecting…“ anzeigt, wie im folgenden Bild zu sehen.

Die Arduino IDE zeigt dir einige Meldungen an.

Wenn die Meldung „Connecting…“ angezeigt wird, musst du den Boot-Knopf auf deinem ESP32-Board gedrĂŒckt halten. Kurz darauf sollte der Flashvorgang erfolgreich abgeschlossen sein. Wo du den Boot-Knopf findest, sieht du in der Abbildung.

Der Boot-Knopf befindet sich neben dem microUSB-Anschluss.

Der Boot-Knopf befindet sich neben dem microUSB-Anschluss.

Jetzt sollten die LEDs am ESP32 in ungleichen Intervallen blinken und nach dem 10. Leuchten der grĂŒnen LED sollte die rote LED mit dem blinken aufhören.

Nachdem du dieses Tutorial abgeschlossen hast, solltest du wissen, wie man einen Prozess auf dem ESP32 startet, ihn auf einem Prozessorkern ausfĂŒhrt und den Prozess gegebenenfalls wieder beendet.

Dieser Beitrag hat dir gefallen?

Dann abonniere doch unseren Newsletter!



Ähnliche BeitrĂ€ge