ESP32 | Voraussetzung für meine Projekte
Der ESP32 WROOM ist ein beliebtes Entwicklungsmodul, das auf dem ESP32-Chip basiert. Der ESP32-Chip wurde von Espressif Systems entwickelt und ist ein leistungsstarker Mikrocontroller mit integriertem WLAN und Bluetooth-Funktionalität.
Der ESP32 WROOM-Modul verfügt über eine Vielzahl von Funktionen, darunter einen leistungsstarken 32-Bit-Dual-Core-Prozessor, eine große Menge an integriertem Flash-Speicher, einen integrierten 2,4-GHz-WLAN-Chip mit Unterstützung für 802.11 b/g/n, einen Bluetooth 4.2-BLE-Chip, eine Vielzahl von Schnittstellen wie UART, SPI, I2C und PWM, sowie ADC- und DAC-Kanäle.
Das ESP32 WROOM-Modul wird häufig für IoT-Projekte (Internet der Dinge) eingesetzt, bei denen eine drahtlose Kommunikation erforderlich ist. Es ist sehr beliebt bei Entwicklern aufgrund seiner hohen Leistungsfähigkeit, seiner umfangreichen Funktionalität und seiner geringen Kosten.
Der ESP32 WROOM kann mit der Arduino-Entwicklungsumgebung programmiert werden, was die Entwicklung von Projekten erleichtert. Es gibt auch eine umfangreiche Community und eine Vielzahl von Ressourcen, die für den ESP32 verfügbar sind, was die Entwicklung weiter unterstützt.
Insgesamt ist der ESP32 WROOM ein leistungsstarkes und vielseitiges Entwicklungsmodul, das eine gute Wahl für Projekte ist, die drahtlose Kommunikation erfordern.
Auf der Webseite gibt es die Möglichkeit de installation für Windows, Linux oder MacOS. Die installation hier erfolgt für zwei Versionen.
Arduino 1.x installieren
In diesem Projekt werden ein paar Dateien auf den ESP32 hochgeladen. Hierfür braucht man ein Tool-Plugin, welches aber im Moment nur auf der IDE 1.x läuft.
In Arduino-IDE zu Arduino > Einstellungen und füge unter “Additional Board Manager URLs” folgenden Link ins Feld.
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
Öffne den "Boards Manager" und dann Tools > Board > Boards Manager

Suche nach ESP32 und selektiere “ESP32 by Espressif Systems“ und klicke auf Install.
Die installation kann wie bei version 2.c getestet werden.
Arduino 2.x installieren
Zurzeit werden noch nicht soviele Plugins für den ESP32 angeboten!
Gehe in die Arduino IDE 2.0 zu Datei > Einstellungen.

Zusätzliche Boards hinzufügen.
Folgende URL ins Feld eintragen.
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

... und klick OK.
Neues Board hinzufügen
Öffne den Board-Manager. Dazu auf „Extras“ > „Board“ > „Boards-Manager“ gehen oder einfach auf das Boards-Manager-Symbol in der linken Ecke klicken.

Suche nach ESP32 und klicken auf die Schaltfläche „Installieren“ für esp32 von Espressif Systems.

Bei meiner Verison steht "Update", da ich schon eine vorinstallierte Version hatte.
Die Installation testen
Um die ESP32-Add-on-Installation zu testen, laden wir einen einfachen Code hoch, der die integrierte LED (GPIO 2) blinken lässt.
Folgenden Sketch ins IDE kopieren
#include <Arduino.h>
#define LED 2
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
pinMode(LED, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(LED, HIGH);
Serial.println("LED is on");
delay(1000);
digitalWrite(LED, LOW);
Serial.println("LED is off");
delay(1000);
}Das Board und das Port wählen...

... dann kompilieren

... und dann noch hochladen.

Im Tab sollte folgender "Output" stehen.
Sketch uses 260989 bytes (19%) of program storage space. Maximum is 1310720 bytes.
Global variables use 22352 bytes (6%) of dynamic memory, leaving 305328 bytes for local variables. Maximum is 327680 bytes.
esptool.py v4.5.1
Serial port /dev/cu.usbserial-01DAB850
Connecting.....
Chip is ESP32-D0WD (revision v1.0)
Features: WiFi, BT, Dual Core, Coding Scheme None
Crystal is 40MHz
MAC: 24:0a:c4:17:81:04
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 921600
Changed.
Configuring flash size...
Flash will be erased from 0x00001000 to 0x00005fff...
Flash will be erased from 0x00008000 to 0x00008fff...
Flash will be erased from 0x0000e000 to 0x0000ffff...
Flash will be erased from 0x00010000 to 0x0004ffff...
Compressed 18960 bytes to 13073...
Writing at 0x00001000... (100 %)
Wrote 18960 bytes (13073 compressed) at 0x00001000 in 0.4 seconds (effective 354.4 kbit/s)...
Hash of data verified.
Compressed 3072 bytes to 146...
Writing at 0x00008000... (100 %)
Wrote 3072 bytes (146 compressed) at 0x00008000 in 0.1 seconds (effective 450.9 kbit/s)...
Hash of data verified.
Compressed 8192 bytes to 47...
Writing at 0x0000e000... (100 %)
Wrote 8192 bytes (47 compressed) at 0x0000e000 in 0.1 seconds (effective 655.5 kbit/s)...
Hash of data verified.
Compressed 261360 bytes to 145079...
Writing at 0x00010000... (11 %)
Writing at 0x0001d7d5... (22 %)
Writing at 0x00024f5a... (33 %)
Writing at 0x0002a1ca... (44 %)
Writing at 0x0002f604... (55 %)
Writing at 0x000357b9... (66 %)
Writing at 0x0003fd13... (77 %)
Writing at 0x00045a35... (88 %)
Writing at 0x0004af7d... (100 %)
Wrote 261360 bytes (145079 compressed) at 0x00010000 in 2.4 seconds (effective 871.6 kbit/s)...
Hash of data verified.
Leaving...
Hard resetting via RTS pin...Die Installation ist soweit abgeschlossen.
Installation von benötigten Bibliotheken.
ESPAsyncWebServer ist eine Open-Source-Bibliothek, die speziell für die Verwendung mit ESP8266- und ESP32-Mikrocontrollern entwickelt wurde. Sie ermöglicht die Erstellung von Webservern und das Bereitstellen von Webinhalten auf diesen Plattformen. Die Bibliothek baut auf der Arduino Core for ESP8266 und Arduino Core for ESP32 auf und bietet eine asynchrone Implementierung eines HTTP-Servers. Das bedeutet, dass sie den Non-Blocking-Ansatz verwendet, um die Verarbeitung von HTTP-Anfragen effizient zu gestalten. Dadurch können mehrere gleichzeitige Anfragen behandelt werden, ohne dass der Server blockiert wird. Einige der Funktionen von ESPAsyncWebServer sind: 1. Routen und Handler: Die Bibliothek ermöglicht das Definieren von Routen für verschiedene URLs und das Zuweisen von Handlern, die aufgerufen werden, wenn eine Anfrage für eine bestimmte URL empfangen wird. Dies ermöglicht die Implementierung von REST-APIs oder die Bereitstellung von Webseiten. 2. Dateiserver: ESPAsyncWebServer bietet die Möglichkeit, Dateien vom Mikrocontroller bereitzustellen. Dies kann nützlich sein, um beispielsweise Webseiten oder andere statische Ressourcen wie CSS- oder JavaScript-Dateien zu hosten. 3. WebSockets: Die Bibliothek unterstützt auch die Verwendung von WebSockets, einem Kommunikationsprotokoll, das eine bidirektionale Kommunikation zwischen dem Server und einem Webbrowser ermöglicht. Dies eröffnet Möglichkeiten für echtzeitfähige Anwendungen, bei denen der Server Daten an den Browser senden kann, ohne dass dieser explizit eine Anfrage stellen muss. 4. Authentifizierung und SSL: ESPAsyncWebServer unterstützt auch die Implementierung von Authentifizierungsfunktionen, um den Zugriff auf bestimmte Ressourcen zu schützen. Darüber hinaus kann die Bibliothek auch mit SSL/TLS (Secure Sockets Layer/Transport Layer Security) verwendet werden, um eine sichere Kommunikation über HTTPS zu ermöglichen. ESPAsyncWebServer ist eine beliebte Wahl für die Entwicklung von IoT-Projekten und anderen Anwendungen, bei denen die ESP8266- oder ESP32-Plattform als Webserver fungieren soll. Durch die asynchrone Natur der Bibliothek kann der Mikrocontroller effizienter arbeiten und gleichzeitig komplexe Webanwendungen hosten. | |
AsyncTCP ist eine Open-Source-Bibliothek, die speziell für die Verwendung mit ESP8266- und ESP32-Mikrocontrollern entwickelt wurde. Sie bietet eine asynchrone TCP/IP-Kommunikation für diese Plattformen. Die Bibliothek wurde entwickelt, um die Kommunikation über TCP-Verbindungen zu ermöglichen, ohne dass der Mikrocontroller blockiert wird. Dies ist besonders wichtig, um die Ressourcen des Mikrocontrollers effizient zu nutzen und gleichzeitig die Fähigkeit zur Behandlung mehrerer gleichzeitiger Verbindungen zu gewährleisten. Einige der Funktionen von AsyncTCP sind: 1. Asynchrone Kommunikation: Die Bibliothek verwendet eine asynchrone Implementierung, bei der die TCP-Kommunikation in Hintergrundthreads abgewickelt wird. Dadurch kann der Hauptprogrammablauf fortgesetzt werden, während auf Netzwerknachrichten gewartet wird oder während Daten übertragen werden. Dies ermöglicht eine effiziente Nutzung der CPU-Zeit und eine schnellere Reaktion auf eingehende Netzwerkanfragen. 2. Mehrfachverbindungen: AsyncTCP ermöglicht die Behandlung mehrerer gleichzeitiger TCP-Verbindungen. Dies ist besonders nützlich, wenn der Mikrocontroller als Server fungiert und mehrere Clients gleichzeitig bedienen muss. Die Bibliothek verwaltet automatisch die einzelnen Verbindungen und stellt sicher, dass sie nicht blockiert werden. 3. Pufferung und Datenflusskontrolle: AsyncTCP bietet eine Pufferungsfunktionalität, um Daten zu puffern, während sie auf die Übertragung warten. Dadurch kann der Mikrocontroller die empfangenen Daten in seinem eigenen Tempo verarbeiten, ohne dass Datenpakete verloren gehen. Die Bibliothek implementiert auch eine Datenflusskontrolle, um den Datenstrom zu steuern und sicherzustellen, dass der Empfänger nicht überlastet wird. 4. Ereignisbasierte Programmierung: AsyncTCP basiert auf einem ereignisbasierten Modell, bei dem der Benutzer Ereignisse wie den Empfang von Daten oder das Schließen einer Verbindung abfangen und darauf reagieren kann. Dies ermöglicht die Implementierung von spezifischer Logik basierend auf Netzwerkergebnissen, ohne dass eine kontinuierliche Überprüfung erforderlich ist. AsyncTCP ist eine wichtige Komponente bei der Entwicklung von Netzwerkanwendungen auf ESP8266- und ESP32-Mikrocontrollern. Durch die asynchrone Natur der Bibliothek können TCP-Verbindungen effizient gehandhabt und mehrere Verbindungen gleichzeitig bedient werden, wodurch leistungsstarke Netzwerkanwendungen erstellt werden können. | |
SPIFFS | |
DNSServer | Der DNSServer ist eine Klasse der Arduino Core-Bibliothek, die die DNS-Serverfunktionalität auf ESP8266- und ESP32-Mikrocontrollern bereitstellt. Es ermöglicht die Umwandlung von Domänennamen in IP-Adressen und umgekehrt, ähnlich wie ein DNS-Server in einem Netzwerk. Der DNSServer arbeitet als eigenständiger DNS-Server auf dem Mikrocontroller und kann Anfragen von anderen Geräten im Netzwerk beantworten. Hier sind einige wichtige Merkmale des DNSServers: 1. DNS-Anfragen beantworten: Der DNSServer kann DNS-Anfragen von Clients im Netzwerk empfangen und die entsprechenden Antworten bereitstellen. Das bedeutet, dass er Domänennamen in IP-Adressen auflösen kann, um die Kommunikation zwischen Geräten im Netzwerk zu ermöglichen. 2. Statische und dynamische Einträge: Der DNSServer unterstützt sowohl statische als auch dynamische Einträge. Statische Einträge können vom Benutzer festgelegt werden und ermöglichen die Zuordnung bestimmter Domänennamen zu festen IP-Adressen. Dynamische Einträge ermöglichen die Aktualisierung der IP-Adressen basierend auf bestimmten Ereignissen oder Konfigurationen. 3. Einfache Konfiguration: Der DNSServer kann einfach konfiguriert werden, um den gewünschten Domänennamen und die IP-Adresszuordnungen festzulegen. Es ermöglicht auch die Konfiguration der DNS-Serveradresse, an die der DNSServer Weiterleitungsanfragen senden soll, wenn er den gewünschten Eintrag nicht kennt. 4. Blocking und Non-Blocking-Modus: Der DNSServer unterstützt sowohl den Blocking- als auch den Non-Blocking-Modus. Im Blocking-Modus blockiert der Server während der Verarbeitung von DNS-Anfragen den Hauptprogrammablauf. Im Non-Blocking-Modus kann der Server asynchron arbeiten und ermöglicht die parallele Ausführung von anderen Aufgaben während der DNS-Verarbeitung. Der DNSServer ist besonders nützlich, wenn ein ESP8266- oder ESP32-Mikrocontroller als DNS-Server in einem Netzwerk fungieren soll. Er ermöglicht die einfache Auflösung von Domänennamen und erleichtert die Kommunikation zwischen Geräten im Netzwerk. |
SPIFFS | |
WiFiManager |
Kommentare
Kommentar veröffentlichen