ESP32 Dev Kit C V4 - AZ-Delivery

3x ESP32 Dev Kit CV 4 (unverlötet)

Wir sind schon bei Nummer 21. Viel fehlt nicht mehr bis zum letzten Türchen. Hier finden Sie das Entwicklungsboard ESP32 Dev Kit CV 4 gleich in dreifacher Ausführung in der Variante ohne angelötete Headerpins (Stiftleisten).

Der Vorteil hierbei ist, dass Sie nur die benötigten Komponenten verlöten müssen. Dadurch fällt die Einbaugröße in Gehäusen noch einmal etwas kleiner aus. Sie können die Headerpins natürlich trotzdem selbst verlöten. Eine kleine Anleitung dazu befand sich hinter Türchen Nummer zwei des AZ-Adventskalenders. Meine persönlichen Tipps zum Löten:

  • verwenden Sie einen brauchbaren Lötkolben
  • verwenden Sie Flussmittel
  • zum Fixieren der Komponente (für das Anlöten von Headerpins) eignet sich ein Breadboard
  • Lötkolben und Lötzinn an die Lötstelle halten und das Lötzinn fließen lassen

Wenn Sie eine Komponente wie dieses ESP32 Entwicklungsboard verwenden möchten, empfiehlt sich der Blick in das Datenblatt und das Pinout-Diagramm. Dadurch erfahren Sie, um welchen Prozessor es sich handelt und welche Peripherie Ihnen zur Verfügung steht. In diesem Fall sind die wichtigsten Fakten die integrierten WLAN- und Bluetooth-Verbindungsmöglichkeiten. Die CPU taktet mit maximal 240 MHz. Als Schnittstellen haben wir u.a. I²C, SPI, UART und 1-Wire zur Verfügung. Nahezu alle Pins können für PWM (Pulsweitenmodulation, z.B. zum Dimmen von LEDs) verwendet werden.

Es ist ein Hall-Effect-Sensor (nicht zu verwechseln mit einem Echo) für die Erkennung der Änderung eines Magnetfeldes integriert. Ein Temperatursensor, der die CPU-Temperatur überwachen kann, ist auf diesen neueren ESP-Boards nicht mehr enthalten. 16 Pins sind an integrierte Analog-Digital-Wandler angeschlossen, zwei Pins jeweils an Digital-Analog-Wandler. Hier eine kleine Pin-Übersicht als Ergänzung zum Pinout:

Pins (GPIO)

Funktion

21, 22

I²C (SDA, SCL)

5, 18, 19, 23

SPI (SS, SCK, MISO, MOSI)

1, 3 / 9, 10 / 16, 17

UART (TX0, RX0) / RX1, TX1 / RX2, TX2)

0, 2, 4, 12, 14, 15, 25, 26, 27, 32, 33, 34, 35, 36, 39

Analog-Digital-Konverter

25, 26

Digital-Analog-Konverter

Für die Verwendung der Pins sind noch einige Dinge zu beachten:

  • GPIO1 sollte nicht als Eingang und GPIO3 nicht als Ausgang verwendet werden
  • GPIO6 bis GPIO11 sollten weder als Eingang noch als Ausgang verwendet werden
  • GPIO34, GPIO35, GPIO36 und GPIO39 können nur als Eingänge verwendet werden
  • GPIO12 auf HIGH verhindert das Booten
  • GPIO0, GPIO1 und GPIO3 können unvorhergesehenes Verhalten zeigen, da sie anderweitig vom System (z.B. beim Bootvorgang) verwendet werden

An dieser Stelle möchte ich auf den sehr detaillierten Blogbeitrag ESP32 - das Multitalent von Gerald Lechner verweisen. Dort finden Sie einen umfangreichen Vergleich mit anderen ESP32 Boards, Anschlussmöglichkeiten, Installation in der Arduino IDE und einiges mehr. Es lohnt sich, den Artikel zu lesen, bevor Sie loslegen.

Wenn Sie alles installiert und in der Arduino IDE als Board das ESP32 Dev Module eingestellt haben, wollen Sie natürlich Ihren ersten Sketch hochladen. Zahlreiche Beispielprogramme werden mitgeliefert. Da in diesem Paket drei ESP32 enthalten sind, möchte ich gern Daten zwischen den einzelnen Boards austauschen. Dafür nutze ich die ESPNow Sketches Master und Slave. Vom Uno oder Nano sind Sie es gewohnt, den Upload zu starten und alles läuft, bis das Programm übertragen wurde. Eventuell sehen Sie aber auch diese Fehlermeldung:


Sie müssen das Board in den Bootloader-Modus bringen. Dafür müssen Sie die Boot-Taste auf dem Board betätigen und eventuell gedrückt halten, bis die Verbindung hergestellt wurde:


Da mich das immer ein wenig gestört hat, habe ich nach dieser Anleitung einen 10 nF Kondensator angeschlossen (+ an EN und - an GND). Damit ist das Drücken des Tasters nicht mehr notwendig.

Tipp: Wenn nach dem Upload eines Programms nichts im Seriellen Monitor erscheinen sollte, betätigen Sie kurz die Reset-Taste am Mikrocontroller.

Damit wir zwei Mikrocontroller gleichzeitig an einem Rechner nutzen können, starten wir zwei getrennte Prozesse der Arduino IDE (im Moment nur getestet unter Windows). Das heißt, Sie müssen lediglich noch einmal das Programm starten. Wenn zwei ESP32 angeschlossen sind, sollten unter Werkzeuge->Port auch zwei COM-Geräte angezeigt werden:

Die Nummern der virtuellen COM-Ports können bei Ihnen anders lauten

Wir öffnen die beiden Beispiele Master und Slave aus den Beispielen ESP32 -> ESPNow -> Basic. Achten Sie darauf, dass Sie sie jeweils in den unterschiedlich geöffneten Arduino-Instanzen starten und das jeweils der andere Port eingestellt ist. Laden Sie die beiden Sketches auf die Mikrocontroller und öffnen jeweils den Seriellen Monitor (STRG+UMSCH+M). Es werden dann Daten zwischen beiden Geräten ausgetauscht:


In diesem Beispiel werden Daten vom Typ uint8_t also 1 Byte (8 Bit) übertragen. Per Callback wird beim Empfänger automatisch erkannt, dass ein Datenblock eingetroffen ist. Daher ist auch die loop()-Funktion im Slave-Quellcode leer.

Möchten Sie nun eigene Daten übertragen, z.B. die eines Sensors, dann suchen Sie im Quellcode des Masters nach der Funktion sendData(). Die Variable data wird außerhalb deklariert mit:

uint8_t data = 0;

und dann mit

data++;

nach jedem Durchlauf hochgezählt. Die Ausgabe beider Monitore zeigt diese Werte an. Weisen Sie dieser Variablen ihre eigenen Werten zu z.B. mit:

data = sensorRead();

Der Funktionsaufruf sensorRead() ist fiktiv!

Für mehr als zwei Mikrocontroller können Sie die Beispiele Master und Slave unter ESP32 -> ESPNow -> Multi-Slave verwenden.

Ich möchte Ihnen nun noch zeigen, wie Sie einen kleinen Textchat mit mehreren Mikrocontrollern einrichten. Dafür benötigen wir einen Server, der zentral die Nachrichten verteilt. Außerdem natürlich noch weitere Teilnehmer, die Clients. Als Basis für den Server nutzen wir den Beispielsketch AsyncUDPServer, den Sie unter "ESP Async UDP" finden.

Für die Clients nutzen wir unter "Wifi" den Sketch WiFiUDPClient. Der Server "hört" auf einem festgelegten Port nach eintreffenden Nachrichten, die von den Clients über den gleichen Port verschickt werden. Wenn der Server gestartet wird, wird im Seriellen Monitor die IP-Adresse angezeigt, sobald eine Verbindung zum WLAN-Netzwerk hergestellt wurde. Diese muss dann im Quellcode für die Clients eingetragen werden. Außerdem müssen dort auch der Name Ihres Netzwerkes (SSID) und das dazugehörige Passwort angegeben werden.

Den Async Server laden Sie auf einen der ESP32, den Client auf die anderen beiden. Wenn Sie dreimal die Arduino IDE gesondert starten, können Sie für einen Test auch alle drei Teilnehmer auf einem Rechner ausführen. Der Server kann ebenso am Chat teilnehmen:

 

UDP ist eine verbindungslose Übertragung. Das heißt, dass Datenpakete verschickt werden, ohne zu kontrollieren, ob sie beim Empfänger angekommen sind. Man kann damit eigene Protokolle erzeugen und die Übertragung selbst absichern. Es braucht dafür weniger Overhead, also Kontrollcode, als für z.B. TCP. UDP wird z.B. zur Übertragung von Video- oder Audiodaten verwendet.

Hier können Sie noch meine veränderten Quellcodes herunterladen.

Die ESP32 bieten natürlich noch mehr Möglichkeiten. Für Kalendertürchen Nummer 11 hatte ich Ihnen bereits gezeigt, wie Sie die Daten der BME280-Sensoren mit einem ESP8266 im Browser anzeigen lassen können. Das geht natürlich auch mit einem ESP32. Testen Sie dafür den Sketch AdvancedWebServer unter "WebServer". Tragen Sie dort auch Ihre WLAN-Daten ein. Nach dem Upload starten Sie den Seriellen Monitor in der Arduino IDE. Dort wird Ihnen die IP-Adresse angezeigt. Öffnen Sie auf einem Gerät, das sich im gleichen Netzwerk befindet, einen Internetbrowser und geben dort die IP-Adresse ein. Es grüßt dann der ESP32 mit einem Diagramm. Der Advanced Server aktualisiert die Seite automatisch in festgelegten Intervallen, was auch für Ihre eigenen Projekte nützlich sein kann.

Wenn Sie nicht über ein eigenes WLAN-Netzwerk verfügen und trotzdem die Mikrocontroller oder andere Geräte per Wifi verbinden möchten, können Sie einen ESP32 als WLAN-Accesspoint verwenden. Schauen Sie dafür in den Beispielen unter "WiFi" in den Sketch WiFiAccessPoint. Vergeben Sie dort eigene Zugangsdaten und laden das Programm auf den Mikrocontroller hoch. Die anderen Geräte können dann das neu erzeugte WLAN-Netzwerk für ihre Kommunikation nutzen:

 

Der ESP32 hat gegenüber dem ESP8266 noch einen Vorteil: die Bluetooth-Verbindung (LowEnergy und Classic). Auch dafür finden Sie Beispiel-Sketches in der Arduino-IDE. Für einen Test können Sie auf Ihrem Smartphone die App "Serial Bluetooth Terminal" installieren. Suchen Sie in den Beispielen in der Arduino IDE den Punkt "BluetoothSerial" und öffnen dort den Sketch SerialToSerialBT. Nach dem erfolgreichen Upload sollte der ESP32 als Bluetooth-Gerät verfügbar sein. Öffnen Sie zuerst den Seriellen Monitor in der Arduino IDE. Verbinden Sie dann Ihr Smartphone mit "ESP32test" via Bluetooth und öffnen anschließend die oben genannte App. Dort tippen Sie links oben auf das Menü (drei Striche) und wählen "Devices". Sie müssten in der nun erscheinenden Liste ebenfalls "ESP32test" sehen. Wählen Sie den Punkt aus und warten kurz, bis die Verbindung hergestellt wurde. Sie können dann zwischen Smartphone und PC (über den Seriellen Monitor) Textnachrichten austauschen.

Die anderen Beispielsketches zeigen Ihnen noch weitere Möglichkeiten für die Umsetzung Ihrer eigenen Projekte. Sie können ebenso Sensoren anschließen, LEDs, oder Displays. Die ESPs verfügen über einen DeepSleep-Modus, der für batteriebetriebene Projekte interessant ist.

Wenn Sie ein Potentiometer (veränderbarer Widerstand) an einen der Pins mit Analog-Digital-Konverter anschließen (siehe Tabelle oben), erhalten Sie mit der Funktion analogRead(PINNUMMER) einen Wertebereich von 0 und 4095. Im Gegensatz zu den Uno oder Nano Mikrocontrollern, die nicht über 1023 hinaus kommen.

Wichtig: Nutzen Sie für den Anschluss des Potentiometers den 3.3V-Pin, NICHT den 5V-Pin!

 

void setup() {
  Serial.begin(115200);
}

void loop() {
  Serial.println(analogRead(33));
  delay(30);
}

 

 

Ich wünsche Ihnen ein frohes Weihnachtsfest.

Andreas Wolter

für AZ-Delivery Blog

Specials

2 commenti

Gerald Lechner

Gerald Lechner

ESP32 kann nicht über ESP_Easy geflasht werden. Das Tool von ESPRESSIF sollte funktionieren. https://www.espressif.com/en/support/download/other-tools

Reinhardt Schiffke

Reinhardt Schiffke

Kann man den ESP-32 Dev Kit C V4 über esp_easy flashen ? habe alles versucht ,bekomme es nicht hin.

Lascia un commento

Tutti i commenti vengono moderati prima della pubblicazione