ESP32 Basic Starter
Bausatz
Packliste
ESP32-Einführung
Neu bei ESP32? Fangen Sie hier an! ESP32 ist eine Reihe kostengünstiger und stromsparender System-on-a-Chip-Mikrocontroller (SoC) von Espressif, die über WLAN- und Bluetooth-Funktionen sowie einen Dual-Core-Prozessor verfügen. Wenn Sie mit dem ESP8266 vertraut sind, ist der ESP32 sein Nachfolger, der mit vielen neuen Funktionen ausgestattet ist.ESP32-Spezifikationen
Wer es etwas technischer und spezifischer haben möchte, kann sich die folgenden detaillierten Spezifikationen des ESP32 anschauen (Quelle: http://esp32.net/) – weitere Einzelheiten finden Sie unter Überprüfen Sie das Datenblatt):
- Drahtlose Konnektivität WiFi: 150.0 Mbit/s Datenrate mit HT40
- Bluetooth: BLE (Bluetooth Low Energy) und Bluetooth Classic
- Prozessor: Tensilica Xtensa Dual-Core 32-Bit LX6 Mikroprozessor, läuft mit 160 oder 240 MHz
- Erinnerung:
- ROM: 448 KB (für Booten und Kernfunktionen)
- SRAM: 520 KB (für Daten und Anweisungen)
- RTC fas SRAM: 8 KB (für Datenspeicherung und Haupt-CPU während des RTC-Boots aus dem Tiefschlafmodus)
- RTC langsames SRAM: 8 KB (für Co-Prozessor-Zugriffe im Deep-Sleep-Modus) eFuse: 1 Kbit (davon werden 256 Bit für das System verwendet (MAC-Adresse und Chip-Konfiguration) und die restlichen 768 Bit sind für Kundenanwendungen reserviert, einschließlich Flash-Verschlüsselung und Chip-ID)
Eingebetteter Flash: Flash intern über IO16, IO17, SD_CMD, SD_CLK, SD_DATA_0 und SD_DATA_1 auf ESP32-D2WD und ESP32-PICO-D4 verbunden.
- 0 MiB (ESP32-D0WDQ6-, ESP32-D0WD- und ESP32-S0WD-Chips)
- 2 MiB (ESP32-D2WD-Chip)
- 4 MiB (ESP32-PICO-D4 SiP-Modul)
Low Power: sorgt dafür, dass Sie weiterhin ADC-Konvertierungen verwenden können, z. B.ample, während des Tiefschlafs.
Peripherie-Ein-/Ausgabe:
- Peripherieschnittstelle mit DMA, einschließlich kapazitiver Berührung
- ADCs (Analog-Digital-Umsetzer)
- DACs (Digital-Analog-Umsetzer)
- I²C (Inter-Integrated Circuit)
- UART (Universaler asynchroner Empfänger/Sender)
- SPI (Serielle Peripherieschnittstelle)
- I²S (Integrierter Interchip-Sound)
- RMII (Reduzierte medienunabhängige Schnittstelle)
- PWM (Pulsweitenmodulation)
Sicherheit: Hardwarebeschleuniger für AES und SSL/TLS
ESP32-Entwicklungsplatinen
ESP32 bezieht sich auf den nackten ESP32-Chip. Der Begriff „ESP32“ wird jedoch auch für ESP32-Entwicklungsplatinen verwendet. Die Verwendung von ESP32-Bare-Chips ist weder einfach noch praktisch, insbesondere beim Lernen, Testen und Prototyping. In den meisten Fällen werden Sie eine ESP32-Entwicklungsplatine verwenden wollen.
Wir verwenden die ESP32 DEVKIT V1-Platine als Referenz. Das Bild unten zeigt die ESP32 DEVKIT V1-Platine, Version mit 30 GPIO-Pins.Spezifikationen – ESP32 DEVKIT V1
Die folgende Tabelle zeigt eine Zusammenfassung der Funktionen und Spezifikationen des ESP32 DEVKIT V1 DOIT-Boards:
Anzahl der Kerne | 2 (Dual-Core) |
W-lan | 2.4 GHz bis zu 150 Mbit/s |
Bluetooth | BLE (Bluetooth Low Energy) und älteres Bluetooth |
Architektur | 32 Bit |
Taktfrequenz | Bis zu 240 MHz |
RAM | 512 KB |
Pins | 30 (je nach Modell) |
Peripheriegeräte | Kapazitive Berührung, ADC (Analog-Digital-Umsetzer), DAC (Digital-Analog-Umsetzer), 12C (Inter-Integrated Circuit), UART (Universal Asynchronous Receiver/Transmitter), CAN 2.0 (Controller Area Network), SPI (Serial Peripheral Interface), 12S (Integrated Inter-IC Sound), RMII (Reduced Media-Independent Interface), PWM (Pulsweitenmodulation) und mehr. |
Integrierte Tasten | RESET- und BOOT-Tasten |
Eingebaute LEDs | integrierte blaue LED, verbunden mit GPIO2; integrierte rote LED, die anzeigt, dass die Karte mit Strom versorgt wird |
USB zu UART Brücke |
CP2102 |
Es verfügt über eine MicroUSB-Schnittstelle, über die Sie die Platine an Ihren Computer anschließen können, um Code hochzuladen oder Strom zuzuführen.
Es verwendet den CP2102-Chip (USB zu UART), um über einen COM-Port mit einer seriellen Schnittstelle mit Ihrem Computer zu kommunizieren. Ein weiterer beliebter Chip ist der CH340. Überprüfen Sie, welcher USB-zu-UART-Chipkonverter auf Ihrer Platine vorhanden ist, da Sie die erforderlichen Treiber installieren müssen, damit Ihr Computer mit der Platine kommunizieren kann (weitere Informationen dazu finden Sie weiter unten in diesem Handbuch).
Diese Platine verfügt außerdem über eine RESET-Taste (möglicherweise mit der Bezeichnung EN), um die Platine neu zu starten, und eine BOOT-Taste, um die Platine in den Blinkmodus zu versetzen (verfügbar zum Empfangen von Code). Beachten Sie, dass einige Platinen möglicherweise keine BOOT-Taste haben.
Es verfügt außerdem über eine integrierte blaue LED, die intern mit GPIO 2 verbunden ist. Diese LED ist beim Debuggen nützlich, um eine Art visuelle physische Ausgabe zu liefern. Es gibt auch eine rote LED, die aufleuchtet, wenn Sie die Platine mit Strom versorgen.ESP32-Pinbelegung
Zu den ESP32-Peripheriegeräten gehören:
- 18 Analog-Digital-Wandler (ADC)-Kanäle
- 3 SPI-Schnittstellen
- 3 UART-Schnittstellen
- 2 I2C-Schnittstellen
- 16 PWM-Ausgangskanäle
- 2 Digital-Analog-Wandler (DAC)
- 2 I2S-Schnittstellen
- 10 kapazitive Sensor-GPIOs
Die Funktionen ADC (Analog-Digital-Umsetzer) und DAC (Digital-Analog-Umsetzer) sind bestimmten statischen Pins zugewiesen. Sie können jedoch entscheiden, welche Pins UART, I2C, SPI, PWM usw. sind – Sie müssen sie nur im Code zuweisen. Dies ist dank der Multiplexing-Funktion des ESP32-Chips möglich.
Obwohl Sie die Pin-Eigenschaften in der Software definieren können, gibt es standardmäßig zugewiesene Pins, wie in der folgenden Abbildung gezeigtDarüber hinaus gibt es Pins mit bestimmten Eigenschaften, die sie für ein bestimmtes Projekt geeignet machen oder nicht. Die folgende Tabelle zeigt, welche Pins sich am besten als Eingänge und Ausgänge eignen und bei welchen Sie vorsichtig sein müssen.
Die grün markierten Pins können verwendet werden. Die gelb markierten Pins können verwendet werden, aber Sie müssen aufpassen, da sie vor allem beim Booten ein unerwartetes Verhalten zeigen können. Die rot markierten Pins sollten nicht als Ein- oder Ausgänge verwendet werden.
GP-IO | Eingang | Ausgabe | Hinweise |
0 | hochgezogen | OK | gibt beim Booten ein PWM-Signal aus, muss LOW sein, um in den Blinkmodus zu wechseln |
1 | TX-Pin | OK | Debug-Ausgabe beim Booten |
2 | OK | OK | verbunden mit integrierter LED, muss schwebend oder auf LOW gelassen werden, um in den Blinkmodus zu wechseln |
3 | OK | RX-Pin | HIGH beim Booten |
4 | OK | OK | |
5 | OK | OK | gibt PWM-Signal beim Booten aus, Strapping-Pin |
12 | OK | OK | Stiefel versagt, wenn hochgezogen, Umreifungsstift |
13 | OK | OK | |
14 | OK | OK | gibt beim Booten ein PWM-Signal aus |
15 | OK | OK | gibt PWM-Signal beim Booten aus, Strapping-Pin |
16 | OK | OK | |
17 | OK | OK | |
18 | OK | OK | |
19 | OK | OK | |
21 | OK | OK | |
22 | OK | OK | |
23 | OK | OK | |
25 | OK | OK | |
26 | OK | OK | |
27 | OK | OK | |
32 | OK | OK | |
33 | OK | OK | |
34 | OK | nur Eingabe | |
35 | OK | nur Eingabe | |
36 | OK | nur Eingabe | |
39 | OK | nur Eingabe |
Lesen Sie weiter für eine detailliertere und eingehendere Analyse der ESP32-GPIOs und ihrer Funktionen.
Nur Eingabe-Pins
GPIOs 34 bis 39 sind GPIs – reine Eingabepins. Diese Pins haben keine internen Pull-Up- oder Pull-Down-Widerstände. Sie können nicht als Ausgänge verwendet werden, verwenden Sie diese Pins also nur als Eingänge:
- GPIO34
- GPIO35
- GPIO36
- GPIO39
SPI-Flash auf dem ESP-WROOM-32 integriert
GPIO 6 bis GPIO 11 sind in einigen ESP32-Entwicklungsboards verfügbar. Diese Pins sind jedoch mit dem integrierten SPI-Flash auf dem ESP-WROOM-32-Chip verbunden und werden für andere Zwecke nicht empfohlen. Verwenden Sie diese Pins daher nicht in Ihren Projekten:
- GPIO 6 (SCK/CLK)
- GPIO 7 (SDO/SD0)
- GPIO 8 (SDI/SD1)
- GPIO 9 (SHD/SD2)
- GPIO 10 (SWP/SD3)
- GPIO 11 (CSC/CMD)
Kapazitive Touch-GPIOs
Der ESP32 verfügt über 10 interne kapazitive Berührungssensoren. Diese können Veränderungen in allem wahrnehmen, was eine elektrische Ladung enthält, wie zum Beispiel die menschliche Haut. So können sie Veränderungen erkennen, die durch Berühren der GPIOs mit einem Finger verursacht werden. Diese Pins können problemlos in kapazitive Pads integriert werden und mechanische Tasten ersetzen. Die kapazitiven Berührungspins können auch verwendet werden, um den ESP32 aus dem Tiefschlaf zu wecken. Diese internen Berührungssensoren sind mit diesen GPIOs verbunden:
- T0 (GPIO 4)
- T1 (GPIO 0)
- T2 (GPIO 2)
- T3 (GPIO 15)
- T4 (GPIO 13)
- T5 (GPIO 12)
- T6 (GPIO 14)
- T7 (GPIO 27)
- T8 (GPIO 33)
- T9 (GPIO 32)
Analog-Digital-Wandler (ADC)
Der ESP32 hat 18 x 12 Bit ADC-Eingangskanäle (während der ESP8266 nur 1 x 10 Bit ADC hat). Dies sind die GPIOs, die als ADC und entsprechende Kanäle verwendet werden können:
- ADC1_CH0 (GPIO 36)
- ADC1_CH1 (GPIO 37)
- ADC1_CH2 (GPIO 38)
- ADC1_CH3 (GPIO 39)
- ADC1_CH4 (GPIO 32)
- ADC1_CH5 (GPIO 33)
- ADC1_CH6 (GPIO 34)
- ADC1_CH7 (GPIO 35)
- ADC2_CH0 (GPIO 4)
- ADC2_CH1 (GPIO 0)
- ADC2_CH2 (GPIO 2)
- ADC2_CH3 (GPIO 15)
- ADC2_CH4 (GPIO 13)
- ADC2_CH5 (GPIO 12)
- ADC2_CH6 (GPIO 14)
- ADC2_CH7 (GPIO 27)
- ADC2_CH8 (GPIO 25)
- ADC2_CH9 (GPIO 26)
Notiz: ADC2-Pins können nicht verwendet werden, wenn Wi-Fi verwendet wird. Wenn Sie also Wi-Fi verwenden und Probleme haben, den Wert von einem ADC2-GPIO abzurufen, können Sie stattdessen die Verwendung eines ADC1-GPIO in Betracht ziehen. Damit sollte Ihr Problem gelöst sein.
Die ADC-Eingangskanäle haben eine Auflösung von 12 Bit. Das bedeutet, dass Sie analoge Messwerte im Bereich von 0 bis 4095 erhalten können, wobei 0 0 V und 4095 3.3 V entspricht. Sie können die Auflösung Ihrer Kanäle auch auf den Code und den ADC-Bereich einstellen.
Die ESP32-ADC-Pins haben kein lineares Verhalten. Sie werden wahrscheinlich nicht zwischen 0 und 0.1 V oder zwischen 3.2 und 3.3 V unterscheiden können. Das müssen Sie bei der Verwendung der ADC-Pins berücksichtigen. Sie erhalten ein Verhalten ähnlich dem in der folgenden Abbildung gezeigten.Digital-Analog-Wandler (DAC)
Es gibt 2 x 8 Bit DAC-Kanäle auf dem ESP32, um digitale Signale in analoge Lautstärke umzuwandeln.tage Signalausgänge. Dies sind die DAC-Kanäle:
- DAC1 (GPIO25)
- DAC2 (GPIO26)
RTC-GPIOs
Es gibt RTC GPIO-Unterstützung auf dem ESP32. Die GPIOs, die an das RTC Low-Power-Subsystem weitergeleitet werden, können verwendet werden, wenn sich der ESP32 im Tiefschlaf befindet. Diese RTC GPIOs können verwendet werden, um den ESP32 aus dem Tiefschlaf zu wecken, wenn der Ultra Low
Power (ULP)-Coprozessor läuft. Die folgenden GPIOs können als externe Wakeup-Quelle verwendet werden.
- RTC_GPIO0 (GPIO36)
- RTC_GPIO3 (GPIO39)
- RTC_GPIO4 (GPIO34)
- RTC_GPIO5 (GPIO35)
- RTC_GPIO6 (GPIO25)
- RTC_GPIO7 (GPIO26)
- RTC_GPIO8 (GPIO33)
- RTC_GPIO9 (GPIO32)
- RTC_GPIO10 (GPIO4)
- RTC_GPIO11 (GPIO0)
- RTC_GPIO12 (GPIO2)
- RTC_GPIO13 (GPIO15)
- RTC_GPIO14 (GPIO13)
- RTC_GPIO15 (GPIO12)
- RTC_GPIO16 (GPIO14)
- RTC_GPIO17 (GPIO27)
PWM
Der ESP32 LED PWM-Controller verfügt über 16 unabhängige Kanäle, die so konfiguriert werden können, dass sie PWM-Signale mit unterschiedlichen Eigenschaften erzeugen. Alle Pins, die als Ausgänge fungieren können, können als PWM-Pins verwendet werden (GPIOs 34 bis 39 können kein PWM erzeugen).
Um ein PWM-Signal einzustellen, müssen Sie diese Parameter im Code definieren:
- Signalfrequenz;
- Arbeitszyklus;
- PWM-Kanal;
- GPIO, wo Sie das Signal ausgeben möchten.
I2C
Der ESP32 hat zwei I2C-Kanäle und jeder Pin kann als SDA oder SCL eingestellt werden. Bei Verwendung des ESP32 mit der Arduino IDE sind die Standard-I2C-Pins:
- GPIO 21 (SDA)
- GPIO 22 (SCL)
Wenn Sie bei der Verwendung der Wire-Bibliothek andere Pins verwenden möchten, müssen Sie lediglich Folgendes aufrufen:
Wire.begin(SDA, SCL);
SPI
Standardmäßig ist die Pinbelegung für SPI:
SPI | MOSI | MISO | CLK | CS |
VSPI | GPIO23 | GPIO19 | GPIO18 | GPIO5 |
HSPI | GPIO13 | GPIO12 | GPIO14 | GPIO15 |
Unterbricht
Alle GPIOs können als Interrupts konfiguriert werden.
Umreifungsstifte
Der ESP32-Chip verfügt über die folgenden Strapping-Pins:
- GPIO 0 (muss LOW sein, um in den Boot-Modus zu wechseln)
- GPIO 2 (muss während des Bootvorgangs schwebend oder LOW sein)
- GPIO4
- GPIO 5 (muss während des Bootvorgangs HIGH sein)
- GPIO 12 (muss während des Bootens LOW sein)
- GPIO 15 (muss während des Bootvorgangs HIGH sein)
Diese werden verwendet, um den ESP32 in den Bootloader- oder Flashmodus zu versetzen. Bei den meisten Entwicklungsboards mit integriertem USB/Seriellem Anschluss müssen Sie sich keine Gedanken über den Zustand dieser Pins machen. Das Board versetzt die Pins in den richtigen Zustand für den Flash- oder Bootmodus. Weitere Informationen zur Auswahl des ESP32-Bootmodus finden Sie hier.
Wenn Sie jedoch Peripheriegeräte an diese Pins angeschlossen haben, kann es beim Hochladen von neuem Code, beim Flashen des ESP32 mit neuer Firmware oder beim Zurücksetzen der Platine zu Problemen kommen. Wenn Sie Peripheriegeräte an die Strapping-Pins angeschlossen haben und beim Hochladen von Code oder beim Flashen des ESP32 Probleme haben, liegt dies möglicherweise daran, dass diese Peripheriegeräte den ESP32 daran hindern, in den richtigen Modus zu wechseln. Lesen Sie die Dokumentation zur Auswahl des Startmodus, um die richtige Anleitung zu erhalten. Nach dem Zurücksetzen, Flashen oder Booten funktionieren diese Pins wie erwartet.
Pins HIGH beim Booten
Einige GPIOs ändern beim Booten oder Zurücksetzen ihren Zustand auf HIGH oder geben PWM-Signale aus.
Dies bedeutet, dass Sie beim Zurücksetzen oder Booten des ESP32 unerwartete Ergebnisse erhalten können, wenn Sie Ausgänge an diese GPIOs angeschlossen haben.
- GPIO1
- GPIO3
- GPIO5
- GPIO 6 bis GPIO 11 (verbunden mit dem integrierten SPI-Flash-Speicher des ESP32 – Verwendung nicht empfohlen).
- GPIO14
- GPIO15
Aktivieren (DE)
Enable (EN) ist der Enable-Pin des 3.3-V-Reglers. Er ist hochgezogen, also verbinden Sie ihn mit Masse, um den 3.3-V-Regler zu deaktivieren. Das bedeutet, dass Sie diesen Pin, verbunden mit einem Druckknopf, verwenden können, um Ihren ESP32 neu zu starten, z. B.ample.
GPIO-Stromaufnahme
Der absolut maximale Strombedarf pro GPIO beträgt gemäß dem Abschnitt „Empfohlene Betriebsbedingungen“ im ESP40-Datenblatt 32 mA.
Eingebauter Hall-Effekt-Sensor ESP32
Der ESP32 verfügt außerdem über einen eingebauten Hall-Effekt-Sensor, der Änderungen im Magnetfeld in seiner Umgebung erkennt
ESP32 Arduino IDE
Es gibt ein Add-on für die Arduino IDE, mit dem Sie den ESP32 mithilfe der Arduino IDE und ihrer Programmiersprache programmieren können. In diesem Tutorial zeigen wir Ihnen, wie Sie die ESP32-Platine in der Arduino IDE installieren, unabhängig davon, ob Sie Windows, Mac OS X oder Linux verwenden.
Voraussetzungen: Arduino IDE installiert
Bevor Sie mit diesem Installationsvorgang beginnen, müssen Sie Arduino IDE auf Ihrem Computer installiert haben. Sie können zwei Versionen von Arduino IDE installieren: Version 1 und Version 2.
Sie können Arduino IDE herunterladen und installieren, indem Sie auf den folgenden Link klicken: arduino.cc/en/Main/Software
Welche Arduino IDE Version empfehlen wir? Momentan gibt es einige plugins für den ESP32 (wie den SPIFFS FileSystem-Uploader-Plugin), die auf Arduino 2 noch nicht unterstützt werden. Wenn Sie also in Zukunft das SPIFFS-Plugin verwenden möchten, empfehlen wir Ihnen, die ältere Version 1.8.X zu installieren. Sie müssen nur auf der Arduino-Softwareseite nach unten scrollen, um sie zu finden.
Installieren des ESP32-Add-ons in der Arduino IDE
Um die ESP32-Platine in Ihrer Arduino IDE zu installieren, folgen Sie diesen Anweisungen:
- Gehen Sie in Ihrer Arduino IDE zu File> Einstellungen
- Geben Sie im Feld „Zusätzlicher Boardmanager“ Folgendes ein URLs“-Feld:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
Klicken Sie dann auf die Schaltfläche „OK“:Notiz: wenn Sie bereits die ESP8266-Boards haben URL, können Sie die trennen URLs mit einem Komma wie folgt:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json,
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Öffnen Sie den Boards Manager. Gehen Sie zu Tools > Board > Boards Manager…Suchen Sie nach ESP32 und drücken Sie die Schaltfläche „Installieren“ für „ESP32 von Espressif Systems“:
Das ist alles. Nach ein paar Sekunden sollte die Installation abgeschlossen sein.
Testcode hochladen
Schließen Sie die ESP32-Platine an Ihren Computer an. Führen Sie bei geöffneter Arduino IDE die folgenden Schritte aus:
- Wählen Sie Ihr Board im Menü Tools > Board aus (in meinem Fall ist es das ESP32 DEV-Modul)
- Wählen Sie den Port (wenn der COM-Port in Ihrer Arduino IDE nicht angezeigt wird, müssen Sie die CP210x USB-zu-UART-Bridge-VCP-Treiber installieren):
- Öffnen Sie das folgende Beispielample unter File > Beispielamples > WLAN
(ESP32) > WiFiScan - In Ihrer Arduino IDE wird eine neue Skizze geöffnet:
- Klicken Sie in der Arduino IDE auf die Schaltfläche „Hochladen“. Warten Sie einige Sekunden, während der Code kompiliert und auf Ihr Board hochgeladen wird.
- Wenn alles wie erwartet verlaufen ist, sollte die Meldung „Hochladen abgeschlossen“ angezeigt werden.
- Öffnen Sie den Arduino IDE Serial Monitor mit einer Baudrate von 115200:
- Drücken Sie die integrierte ESP32-Aktivierungstaste und Sie sollten die in der Nähe Ihres ESP32 verfügbaren Netzwerke sehen:
Fehlerbehebung
Wenn Sie versuchen, eine neue Skizze auf Ihren ESP32 hochzuladen, erhalten Sie die Fehlermeldung „Ein schwerwiegender Fehler ist aufgetreten: Verbindung zum ESP32 fehlgeschlagen: Zeitüberschreitung… Verbindung wird hergestellt…“. Dies bedeutet, dass sich Ihr ESP32 nicht im Flash-/Upload-Modus befindet.
Nachdem Sie den richtigen Boardnamen und COM-Port ausgewählt haben, führen Sie diese Schritte aus:
Halten Sie die „BOOT“-Taste auf Ihrem ESP32-Board gedrückt
- Klicken Sie in der Arduino IDE auf die Schaltfläche „Hochladen“, um Ihren Sketch hochzuladen:
- Wenn in Ihrer Arduino IDE die Meldung „Verbinden….“ angezeigt wird, nehmen Sie den Finger von der Schaltfläche „BOOT“:
- Danach sollte die Meldung „Hochladen abgeschlossen“ angezeigt werden.
Das war’s. Auf Ihrem ESP32 sollte die neue Skizze laufen. Drücken Sie die Schaltfläche „ENABLE“, um den ESP32 neu zu starten und die neu hochgeladene Skizze auszuführen.
Sie müssen diese Tastenfolge auch jedes Mal wiederholen, wenn Sie eine neue Skizze hochladen möchten.
Projekt 1 ESP32 Eingänge Ausgänge
In dieser Anleitung für den Einstieg erfahren Sie, wie Sie mit ESP32 und Arduino IDE digitale Eingänge wie einen Druckschalter lesen und digitale Ausgänge wie eine LED steuern.
Voraussetzungen
Wir programmieren den ESP32 mit Arduino IDE. Stellen Sie also sicher, dass Sie das ESP32-Board-Add-on installiert haben, bevor Sie fortfahren:
- Installieren des ESP32-Add-ons in der Arduino IDE
ESP32-Steuerung digitaler Ausgänge
Zuerst müssen Sie den GPIO festlegen, den Sie als OUTPUT steuern möchten. Verwenden Sie die Funktion pinMode() wie folgt:
PinMode(GPIO, AUSGANG);
Um einen digitalen Ausgang zu steuern, müssen Sie nur die Funktion digitalWrite() verwenden, die als Argumente den GPIO (int-Nummer) akzeptiert, auf den Sie sich beziehen, und den Status, entweder HIGH oder LOW.
digitalWrite(GPIO, ZUSTAND);
Alle GPIOs können als Ausgänge verwendet werden, außer den GPIOs 6 bis 11 (verbunden mit dem integrierten SPI-Flash) und den GPIOs 34, 35, 36 und 39 (nur Eingangs-GPIOs).
Erfahren Sie mehr über die ESP32 GPIOs: ESP32 GPIO-Referenzhandbuch
ESP32 Digitale Eingänge lesen
Legen Sie zunächst den GPIO, den Sie lesen möchten, als INPUT fest. Verwenden Sie dazu die Funktion pinMode() wie folgt:
PinMode(GPIO, EINGANG);
Um einen digitalen Eingang wie beispielsweise eine Schaltfläche zu lesen, verwenden Sie die Funktion digitalRead(), die als Argument den GPIO (int-Nummer) akzeptiert, auf den Sie sich beziehen.
digitalRead(GPIO);
Alle ESP32-GPIOs können als Eingänge verwendet werden, außer den GPIOs 6 bis 11 (verbunden mit dem integrierten SPI-Flash).
Erfahren Sie mehr über die ESP32 GPIOs: ESP32 GPIO-Referenzhandbuch
Projekt-Example
Um Ihnen zu zeigen, wie Sie digitale Eingänge und digitale Ausgänge verwenden, erstellen wir ein einfaches Projekt, z. B.ampDatei mit einem Druckknopf und einer LED. Wir lesen den Zustand des Druckknopfs und lassen die LED entsprechend aufleuchten, wie in der folgenden Abbildung dargestellt.
Erforderliche Teile
Hier ist eine Liste der Teile, die Sie zum Aufbau der Schaltung benötigen:
- ESP32 DEVKIT V1
- 5-mm-LED
- 220 Ohm Widerstand
- Drucktaster
- 10 kOhm Widerstand
- Steckplatine
- Überbrückungsdrähte
Schematische Darstellung
Bevor Sie fortfahren, müssen Sie einen Schaltkreis mit einer LED und einem Druckknopf zusammenbauen.
Wir verbinden die LED mit GPIO 5 und den Druckknopf mit GPIO 4.Code
Öffnen Sie den Code Project_1_ESP32_Inputs_Outputs.ino in der Arduino IDEFunktionsweise des Codes
In den folgenden zwei Zeilen erstellen Sie Variablen zum Zuweisen von Pins:
Der Taster ist mit GPIO 4 verbunden und die LED mit GPIO 5. Bei Verwendung der Arduino IDE mit dem ESP32 entspricht 4 GPIO 4 und 5 GPIO 5.
Als Nächstes erstellen Sie eine Variable, um den Status der Schaltfläche zu speichern. Standardmäßig ist dies 0 (nicht gedrückt).
int Schaltflächenstatus = 0;
Im setup() initialisieren Sie den Button als INPUT und die LED als OUTPUT.
Dazu verwenden Sie die Funktion pinMode(), die den Pin akzeptiert, auf den Sie sich beziehen, und den Modus: INPUT oder OUTPUT.
PinMode(SchaltflächenPin, EINGABE);
PinMode(LED-Pin, AUSGANG);
In der Schleife () lesen Sie den Tastenzustand und stellen die LED entsprechend ein.
In der nächsten Zeile liest du den Buttonstatus aus und speicherst ihn in der Variable buttonState.
Wie wir zuvor gesehen haben, verwenden Sie die Funktion digitalRead().
Schaltflächenstatus = digitalRead(Schaltflächenpin);
Die folgende if-Anweisung prüft, ob der Tastenzustand HIGH ist. Wenn dies der Fall ist, wird die LED mithilfe der Funktion digitalWrite() eingeschaltet, die als Argument den LEDPin und den Zustand HIGH akzeptiert.
wenn (Schaltflächenstatus == HOCH)Wenn der Tastenstatus nicht HIGH ist, schalten Sie die LED aus. Setzen Sie einfach LOW als zweites Argument in der Funktion digitalWrite().
Hochladen des Codes
Bevor Sie auf die Schaltfläche „Hochladen“ klicken, gehen Sie zu Tools > Board und wählen Sie das Board: DOIT ESP32 DEVKIT V1 Board.
Gehen Sie zu Tools > Port und wählen Sie den COM-Port aus, an den der ESP32 angeschlossen ist. Drücken Sie dann die Upload-Schaltfläche und warten Sie auf die Meldung „Hochladen abgeschlossen“.Hinweis: Wenn Sie im Debugging-Fenster viele Punkte (Verbinden…__…__) und die Meldung „Verbindung zu ESP32 fehlgeschlagen: Zeitüberschreitung beim Warten auf Paketheader“ sehen, bedeutet dies, dass Sie nach den Punkten die integrierte BOOT-Taste des ESP32 drücken müssen.
beginnen zu erscheinen.Fehlerbehebung
Demonstration
Nachdem Sie den Code hochgeladen haben, testen Sie Ihre Schaltung. Ihre LED sollte aufleuchten, wenn Sie den Druckknopf drücken:Und schalten Sie es aus, wenn Sie es loslassen:
Projekt 2 ESP32 Analoge Eingänge
Dieses Projekt zeigt, wie man mit dem ESP32 unter Verwendung der Arduino IDE analoge Eingänge liest.
Die analoge Anzeige ist nützlich, um Werte von variablen Widerständen wie Potentiometern oder analogen Sensoren abzulesen.
Analoge Eingänge (ADC)
Das Lesen eines analogen Wertes mit dem ESP32 bedeutet, dass Sie unterschiedliche Lautstärken messen können.tagDie Pegel liegen zwischen 0 V und 3.3 V.
Die voltagDer gemessene Wert wird dann einem Wert zwischen 0 und 4095 zugewiesen, wobei 0 V 0 und 3.3 V 4095 entsprechen. Jede SpannungtagBei Werten zwischen 0 V und 3.3 V wird der entsprechende Zwischenwert ausgegeben.ADC ist nicht linear
Idealerweise würden Sie bei Verwendung der ESP32-ADC-Pins ein lineares Verhalten erwarten.
Dies geschieht jedoch nicht. Sie erhalten ein Verhalten wie in der folgenden Grafik dargestellt:Dieses Verhalten bedeutet, dass Ihr ESP32 nicht in der Lage ist, 3.3 V von 3.2 V zu unterscheiden.
Sie erhalten den gleichen Wert für beide Voltages: 4095.
Dasselbe gilt für sehr niedrige Lautstärketage-Werte: Für 0 V und 0.1 V erhalten Sie den gleichen Wert: 0. Dies müssen Sie bei der Verwendung der ESP32-ADC-Pins beachten.
analogRead()-Funktion
Das Lesen eines analogen Eingangs mit dem ESP32 über die Arduino IDE ist so einfach wie die Verwendung der Funktion analogRead(). Sie akzeptiert als Argument den GPIO, den Sie lesen möchten:
analogRead(GPIO);
Im DEVKIT V15board (Version mit 1 GPIOs) sind nur 30 verfügbar.
Nehmen Sie die Pinbelegung Ihrer ESP32-Platine zur Hand und suchen Sie die ADC-Pins. Diese sind in der Abbildung unten mit einem roten Rand hervorgehoben.Diese analogen Eingangspins haben eine Auflösung von 12 Bit. Das bedeutet, dass beim Lesen eines analogen Eingangs dessen Bereich zwischen 0 und 4095 variieren kann.
Hinweis: ADC2-Pins können nicht verwendet werden, wenn Wi-Fi verwendet wird. Wenn Sie also Wi-Fi verwenden und Probleme haben, den Wert von einem ADC2-GPIO abzurufen, können Sie stattdessen die Verwendung eines ADC1-GPIO in Betracht ziehen. Damit sollte Ihr Problem gelöst sein.
Um zu sehen, wie alles zusammenhängt, machen wir ein einfaches Beispielample, um einen analogen Wert von einem Potentiometer abzulesen.
Erforderliche Teile
Für dieses BeispielampZum Schluss benötigst du folgende Teile:
- ESP32 DEVKIT V1-Platine
- Potentiometer
- Steckplatine
- Überbrückungsdrähte
schematisch
Schließen Sie ein Potentiometer an Ihren ESP32 an. Der mittlere Pin des Potentiometers sollte mit GPIO 4 verbunden werden. Sie können das folgende schematische Diagramm als Referenz verwenden.Code
Wir programmieren den ESP32 mit Arduino IDE. Stellen Sie daher sicher, dass Sie das ESP32-Add-on installiert haben, bevor Sie fortfahren: (Wenn Sie diesen Schritt bereits ausgeführt haben, können Sie mit dem nächsten Schritt fortfahren.)
Installieren des ESP32-Add-ons in der Arduino IDE
Öffnen Sie den Code Project_2_ESP32_Inputs_Outputs.ino in der Arduino IDEDieser Code liest einfach die Werte vom Potentiometer und druckt diese Werte im seriellen Monitor.
Im Code definieren Sie zunächst den GPIO, an den das Potentiometer angeschlossen ist. In diesem Beispielample, GPIO 4.Initialisieren Sie im Setup() eine serielle Kommunikation mit einer Baudrate von 115200.
Verwenden Sie in der Schleife () die Funktion analogRead(), um den analogen Eingang vom PotPin zu lesen.
Drucken Sie abschließend die vom Potentiometer abgelesenen Werte im seriellen Monitor aus.
Laden Sie den bereitgestellten Code auf Ihren ESP32 hoch. Stellen Sie sicher, dass Sie im Menü „Tools“ die richtige Platine und den richtigen COM-Port ausgewählt haben.
Den Ex testenample
Öffnen Sie nach dem Hochladen des Codes und Drücken der ESP32-Reset-Taste den seriellen Monitor mit einer Baudrate von 115200. Drehen Sie das Potentiometer und beobachten Sie, wie sich die Werte ändern.Der Maximalwert, den Sie erhalten, ist 4095 und der Minimalwert ist 0.
Einpacken
In diesem Artikel haben Sie gelernt, wie Sie mit dem ESP32 und der Arduino IDE analoge Eingänge lesen können. Zusammengefasst:
- Das ESP32 DEVKIT V1 DOIT-Board (Version mit 30 Pins) verfügt über 15 ADC-Pins, die Sie zum Lesen analoger Eingänge verwenden können.
- Diese Pins haben eine Auflösung von 12 Bit, was bedeutet, dass Sie Werte von 0 bis 4095 erhalten können.
- Um einen Wert in der Arduino IDE zu lesen, verwenden Sie einfach die Funktion analogRead().
- Die ADC-Pins des ESP32 haben kein lineares Verhalten. Sie werden wahrscheinlich nicht zwischen 0 und 0.1 V oder zwischen 3.2 und 3.3 V unterscheiden können. Das müssen Sie bei der Verwendung der ADC-Pins berücksichtigen.
Projekt 3 ESP32 PWM (Analogausgang)
In diesem Tutorial zeigen wir Ihnen, wie Sie mit dem ESP32 PWM-Signale mithilfe der Arduino IDE erzeugen. Als ExampNun bauen wir eine einfache Schaltung, die eine LED mit dem LED-PWM-Controller des ESP32 dimmt.ESP32 LED PWM Controller
Der ESP32 verfügt über einen LED-PWM-Controller mit 16 unabhängigen Kanälen, die so konfiguriert werden können, dass sie PWM-Signale mit unterschiedlichen Eigenschaften erzeugen.
Hier sind die Schritte, die Sie befolgen müssen, um eine LED mit PWM unter Verwendung der Arduino IDE zu dimmen:
- Zuerst müssen Sie einen PWM-Kanal auswählen. Es gibt 16 Kanäle von 0 bis 15.
- Anschließend müssen Sie die PWM-Signalfrequenz einstellen. Für eine LED ist eine Frequenz von 5000 Hz kein Problem.
- Sie müssen auch die Auflösung des Arbeitszyklus des Signals einstellen: Sie haben Auflösungen von 1 bis 16 Bit. Wir verwenden eine 8-Bit-Auflösung, was bedeutet, dass Sie die LED-Helligkeit mit einem Wert von 0 bis 255 steuern können.
- Als nächstes müssen Sie angeben, an welchem GPIO oder welchen GPIOs das Signal erscheinen soll. Dazu verwenden Sie die folgende Funktion:
ledcAttachPin(GPIO, Kanal)
Diese Funktion akzeptiert zwei Argumente. Das erste ist der GPIO, der das Signal ausgibt, und das zweite ist der Kanal, der das Signal generiert. - Um die LED-Helligkeit mittels PWM zu regeln, verwenden Sie schließlich die folgende Funktion:
ledcWrite(Kanal, Arbeitszyklus)
Diese Funktion akzeptiert als Argumente den Kanal, der das PWM-Signal generiert, und den Arbeitszyklus.
Erforderliche Teile
Um diesem Tutorial folgen zu können, benötigen Sie diese Teile:
- ESP32 DEVKIT V1-Platine
- 5mm LED
- 220 Ohm Widerstand
- Steckplatine
- Überbrückungsdrähte
schematisch
Verdrahten Sie eine LED mit Ihrem ESP32 wie im folgenden Schaltplan dargestellt. Die LED sollte mit GPIO verbunden sein. 4.Notiz: Sie können jeden beliebigen Pin verwenden, solange er als Ausgang fungieren kann. Alle Pins, die als Ausgänge fungieren können, können als PWM-Pins verwendet werden. Weitere Informationen zu den ESP32-GPIOs finden Sie unter: ESP32-Pinbelegungsreferenz: Welche GPIO-Pins sollten Sie verwenden?
Code
Wir programmieren den ESP32 mit Arduino IDE. Stellen Sie daher sicher, dass Sie das ESP32-Add-on installiert haben, bevor Sie fortfahren: (Wenn Sie diesen Schritt bereits ausgeführt haben, können Sie mit dem nächsten Schritt fortfahren.)
Installieren des ESP32-Add-ons in der Arduino IDE
Öffnen Sie den Code Project_3_ESP32_PWM.ino in der Arduino IDESie beginnen mit der Definition des Pins, an den die LED angeschlossen ist. In diesem Fall ist die LED an GPIO 4 angeschlossen.
Anschließend legen Sie die PWM-Signaleigenschaften fest. Sie definieren eine Frequenz von 5000 Hz, wählen Kanal 0 zur Signalerzeugung und legen eine Auflösung von 8 Bit fest. Sie können andere Eigenschaften als diese auswählen, um unterschiedliche PWM-Signale zu erzeugen.
Im Setup() müssen Sie LED PWM mit den Eigenschaften konfigurieren, die Sie zuvor definiert haben. Verwenden Sie dazu die Funktion ledcSetup(), die als Argumente den LED-Kanal, die Frequenz und die Auflösung wie folgt akzeptiert:
Als nächstes müssen Sie den GPIO auswählen, von dem Sie das Signal erhalten möchten. Verwenden Sie dazu die Funktion ledcAttachPin(), die als Argumente den GPIO akzeptiert, von dem Sie das Signal erhalten möchten, und den Kanal, der das Signal generiert. In diesem Beispielample, wir erhalten das Signal im ledPin GPIO, das entspricht GPIO 4. Der Kanal, der das Signal generiert, ist der ledChannel, der Kanal 0 entspricht.
In der Schleife variieren Sie den Arbeitszyklus zwischen 0 und 255, um die Helligkeit der LED zu erhöhen.
Und dann zwischen 255 und 0, um die Helligkeit zu verringern.
Um die Helligkeit der LED einzustellen, müssen Sie nur die Funktion ledcWrite() verwenden, die als Argumente den Kanal akzeptiert, der das Signal generiert, und den Arbeitszyklus.
Da wir eine 8-Bit-Auflösung verwenden, wird der Arbeitszyklus mit einem Wert zwischen 0 und 255 gesteuert. Beachten Sie, dass wir in der Funktion ledcWrite() den Kanal verwenden, der das Signal generiert, und nicht den GPIO.
Den Ex testenample
Laden Sie den Code auf Ihren ESP32 hoch. Stellen Sie sicher, dass Sie die richtige Platine und den richtigen COM-Port ausgewählt haben. Sehen Sie sich Ihren Schaltkreis an. Sie sollten eine Dimmer-LED haben, die die Helligkeit erhöht und verringert.
Projekt 4 ESP32 PIR-Bewegungssensor
Dieses Projekt zeigt, wie man mit dem ESP32 mithilfe eines PIR-Bewegungssensors Bewegungen erkennt. Der Summer gibt einen Alarm aus, wenn eine Bewegung erkannt wird, und stoppt den Alarm, wenn für eine voreingestellte Zeit (z. B. 4 Sekunden) keine Bewegung erkannt wird.
Funktionsweise des Bewegungssensors HC-SR501
.Das Funktionsprinzip des HC-SR501-Sensors basiert auf der Änderung der Infrarotstrahlung auf dem sich bewegenden Objekt. Um vom HC-SR501-Sensor erkannt zu werden, muss das Objekt zwei Anforderungen erfüllen:
- Das Objekt strahlt Infrarot aus.
- Das Objekt bewegt sich oder wackelt
Also:
Wenn ein Objekt Infrarotstrahlen aussendet, sich jedoch nicht bewegt (z. B. eine Person steht still und bewegt sich nicht), wird es vom Sensor nicht erkannt.
Wenn sich ein Objekt bewegt, aber KEINE Infrarotstrahlen aussendet (z. B. ein Roboter oder ein Fahrzeug), wird es NICHT vom Sensor erkannt.
Einführung in Timer
In diesem BeispielampWir werden auch Timer einführen. Wir möchten, dass die LED für eine vorbestimmte Anzahl von Sekunden leuchtet, nachdem eine Bewegung erkannt wurde. Anstatt eine delay()-Funktion zu verwenden, die Ihren Code blockiert und Ihnen für eine bestimmte Anzahl von Sekunden nicht erlaubt, etwas anderes zu tun, sollten wir einen Timer verwenden.Die Funktion delay()
Sie sollten mit der Funktion delay() vertraut sein, da sie häufig verwendet wird. Diese Funktion ist ziemlich einfach zu verwenden. Sie akzeptiert eine einzelne int-Zahl als Argument.
Diese Zahl gibt die Zeit in Millisekunden an, die das Programm warten muss, bis es mit der nächsten Codezeile fortfahren kann.Wenn Sie delay(1000) eingeben, wird Ihr Programm in dieser Zeile für 1 Sekunde angehalten.
delay() ist eine blockierende Funktion. Blockierende Funktionen verhindern, dass ein Programm irgendetwas anderes tut, bis die jeweilige Aufgabe abgeschlossen ist. Wenn mehrere Aufgaben gleichzeitig ausgeführt werden müssen, können Sie delay() nicht verwenden.
Bei den meisten Projekten sollten Sie auf Verzögerungen verzichten und stattdessen Timer verwenden.
Die Funktion millis()
Mit einer Funktion namens millis() können Sie die Anzahl der Millisekunden zurückgeben, die seit dem ersten Start des Programms vergangen sind.Warum ist diese Funktion nützlich? Weil Sie mithilfe einiger mathematischer Berechnungen leicht überprüfen können, wie viel Zeit vergangen ist, ohne Ihren Code zu blockieren.
Erforderliche Teile
Um diesem Tutorial folgen zu können, benötigen Sie die folgenden Teile
- ESP32 DEVKIT V1-Platine
- PIR-Bewegungssensor (HC-SR501)
- Aktiver Summer
- Überbrückungsdrähte
- Steckplatine
schematischNotiz: Das ArbeitsvolumentagDie Spannung des HC-SR501 beträgt 5 V. Verwenden Sie den Vin-Pin zur Stromversorgung.
Code
Bevor Sie mit diesem Tutorial fortfahren, sollten Sie das ESP32-Add-on in Ihrer Arduino IDE installiert haben. Folgen Sie einem der folgenden Tutorials, um ESP32 in der Arduino IDE zu installieren, falls Sie dies noch nicht getan haben. (Wenn Sie diesen Schritt bereits durchgeführt haben, können Sie mit dem nächsten Schritt fortfahren.)
Installieren des ESP32-Add-ons in der Arduino IDE
Öffnen Sie den Code Project_4_ESP32_PIR_Motion_Sensor.ino in der Arduino IDE.
Demonstration
Laden Sie den Code auf Ihre ESP32-Platine hoch. Stellen Sie sicher, dass Sie die richtige Platine und den richtigen COM-Port ausgewählt haben. Laden Sie die Referenzschritte für den Code hoch.
Öffnen Sie den seriellen Monitor mit einer Baudrate von 115200.Bewegen Sie Ihre Hand vor den PIR-Sensor. Der Summer sollte angehen und die Meldung „Bewegung erkannt! Summeralarm“ wird im seriellen Monitor angezeigt.
Nach 4 Sekunden sollte der Summer verstummen.
Projekt 5 ESP32-Schalter Web Server
In diesem Projekt erstellen Sie ein eigenständiges web Server mit einem ESP32, der Ausgänge (zwei LEDs) über die Arduino IDE-Programmierumgebung steuert. Der web Server ist mobil responsive und kann mit jedem Gerät, das einen Browser im lokalen Netzwerk hat, aufgerufen werden. Wir zeigen Ihnen, wie Sie den web Server und wie der Code Schritt für Schritt funktioniert.
Projektendeview
Bevor wir direkt zum Projekt übergehen, ist es wichtig, zu skizzieren, was unsere web Server reicht aus, damit die Schritte später leichter nachvollzogen werden können.
- Der web Der von Ihnen erstellte Server steuert zwei LEDs, die mit dem ESP32 GPIO 26 und GPIO 27 verbunden sind.
- Sie können auf den ESP32 zugreifen web Server, indem Sie die ESP32-IP-Adresse in einen Browser im lokalen Netzwerk eingeben;
- Klicken Sie auf die Schaltflächen auf Ihrem web Server können Sie den Status jeder LED sofort ändern.
Erforderliche Teile
Für dieses Tutorial benötigen Sie die folgenden Teile:
- ESP32 DEVKIT V1-Platine
- 2x 5mm LED
- 2x 200 Ohm Widerstand
- Steckplatine
- Überbrückungsdrähte
schematisch
Beginnen Sie mit dem Aufbau der Schaltung. Verbinden Sie zwei LEDs mit dem ESP32, wie im folgenden Schaltplan gezeigt – eine LED mit GPIO 26 und die andere mit GPIO 27.
Notiz: Wir verwenden die ESP32 DEVKIT DOIT-Platine mit 36 Pins. Bevor Sie die Schaltung zusammenbauen, überprüfen Sie unbedingt die Pinbelegung der von Ihnen verwendeten Platine.Code
Hier stellen wir den Code zur Verfügung, der den ESP32 erstellt web Server. Öffnen Sie den Code Project_5_ESP32_Switch _Web_Server.ino in Arduino IDE, aber laden Sie es noch nicht hoch. Sie müssen einige Änderungen vornehmen, damit es für Sie funktioniert.
Wir programmieren den ESP32 mit Arduino IDE. Stellen Sie daher sicher, dass Sie das ESP32-Add-on installiert haben, bevor Sie fortfahren: (Wenn Sie diesen Schritt bereits ausgeführt haben, können Sie mit dem nächsten Schritt fortfahren.)
Installieren des ESP32-Add-ons in der Arduino IDE
Festlegen Ihrer Netzwerkanmeldeinformationen
Sie müssen die folgenden Zeilen mit Ihren Netzwerkanmeldeinformationen ändern: SSID und Passwort. Der Code enthält ausführliche Kommentare, wo Sie die Änderungen vornehmen sollten.Hochladen des Codes
Jetzt können Sie den Code hochladen und die web Der Server wird sofort funktionieren.
Befolgen Sie die nächsten Schritte, um Code auf den ESP32 hochzuladen:
- Schließen Sie Ihre ESP32-Platine an Ihren Computer an;
- Wählen Sie in der Arduino IDE Ihr Board unter Tools > Board aus (in unserem Fall verwenden wir das ESP32 DEVKIT DOIT-Board);
- Wählen Sie den COM-Port unter Extras > Port.
- Drücken Sie die Schaltfläche „Hochladen“ in der Arduino IDE und warten Sie einige Sekunden, während der Code kompiliert und auf Ihre Platine hochgeladen wird.
- Warten Sie auf die Meldung „Hochladen abgeschlossen“.
Suchen der ESP-IP-Adresse
Öffnen Sie nach dem Hochladen des Codes den seriellen Monitor mit einer Baudrate von 115200.Drücken Sie die ESP32 EN-Taste (Reset). Der ESP32 verbindet sich mit dem WLAN und gibt die ESP-IP-Adresse auf dem seriellen Monitor aus. Kopieren Sie diese IP-Adresse, da Sie sie für den Zugriff auf den ESP32 benötigen. web Server.
Zugriff auf die Web Server
Für den Zugriff auf die web Server, öffnen Sie Ihren Browser, fügen Sie die ESP32-IP-Adresse ein und Sie sehen die folgende Seite.
Notiz: Ihr Browser und ESP32 sollten mit demselben LAN verbunden sein.Wenn Sie einen Blick auf den Serial Monitor werfen, können Sie sehen, was im Hintergrund passiert. Der ESP empfängt eine HTTP-Anfrage von einem neuen Client (in diesem Fall Ihrem Browser).
Darüber hinaus können Sie weitere Informationen zur HTTP-Anfrage sehen.
Demonstration
Jetzt können Sie testen, ob Ihre web Server funktioniert ordnungsgemäß. Klicken Sie auf die Schaltflächen, um die LEDs zu steuern.Gleichzeitig können Sie einen Blick auf den seriellen Monitor werfen, um zu sehen, was im Hintergrund passiert. Zum BeispielampWenn Sie also auf die Schaltfläche klicken, um GPIO 26 einzuschalten, empfängt ESP32 eine Anfrage auf /26/on URL.
Wenn der ESP32 diese Anfrage empfängt, schaltet er die an GPIO 26 angeschlossene LED ein und aktualisiert ihren Status auf dem web Seite.
Ähnlich funktioniert auch der Button für GPIO 27. Testen Sie, ob er richtig funktioniert.
Funktionsweise des Codes
In diesem Abschnitt werden wir uns den Code genauer ansehen, um zu sehen, wie er funktioniert.
Als Erstes müssen Sie die WiFi-Bibliothek einbinden.Wie bereits erwähnt, müssen Sie Ihre SSID und Ihr Passwort in den folgenden Zeilen in Anführungszeichen einfügen.
Dann legen Sie Ihre web Server auf Port 80.
Die folgende Zeile erstellt eine Variable zum Speichern des Headers der HTTP-Anfrage:
Als Nächstes erstellen Sie zusätzliche Variablen, um den aktuellen Status Ihrer Ausgaben zu speichern. Wenn Sie weitere Ausgaben hinzufügen und deren Status speichern möchten, müssen Sie weitere Variablen erstellen.
Außerdem müssen Sie jedem Ihrer Ausgänge einen GPIO zuweisen. Hier verwenden wir GPIO 26 und GPIO 27. Sie können auch beliebige andere geeignete GPIOs verwenden.
aufstellen()
Kommen wir nun zum Setup(). Zunächst starten wir zu Debugzwecken eine serielle Kommunikation mit einer Baudrate von 115200.Sie definieren Ihre GPIOs auch als OUTPUTs und setzen sie auf LOW.
Die folgenden Zeilen starten die Wi-Fi-Verbindung mit WiFi.begin(ssid, password), warten auf eine erfolgreiche Verbindung und drucken die ESP-IP-Adresse im seriellen Monitor.
Schleife()
In der Schleife () programmieren wir, was passiert, wenn ein neuer Client eine Verbindung mit dem web Server.
Der ESP32 wartet immer auf eingehende Clients mit der folgenden Zeile:Wenn eine Anfrage von einem Client eingeht, speichern wir die eingehenden Daten. Die folgende While-Schleife läuft, solange der Client verbunden bleibt. Wir empfehlen nicht, den folgenden Teil des Codes zu ändern, es sei denn, Sie wissen genau, was Sie tun.
Der nächste Abschnitt mit if- und else-Anweisungen prüft, welche Taste in Ihrem web Seite und steuert die Ausgaben entsprechend. Wie wir bereits gesehen haben, stellen wir eine Anfrage an verschiedene URLs abhängig von der gedrückten Taste.
Zum BeispielampWenn Sie also die GPIO 26 ON-Taste drücken, erhält der ESP32 eine Anfrage auf der /26/ON URL (Wir können diese Information im HTTP-Header auf dem seriellen Monitor sehen). So können wir prüfen, ob der Header den Ausdruck GET /26/on enthält. Wenn dies der Fall ist, ändern wir die Variable output26state auf ON und der ESP32 schaltet die LED ein.
Dies funktioniert ähnlich für die anderen Schaltflächen. Wenn Sie also weitere Ausgaben hinzufügen möchten, sollten Sie diesen Teil des Codes ändern, um sie einzuschließen.
Anzeige des HTML web Seite
Als nächstes müssen Sie die web Seite. Der ESP32 sendet eine Antwort an Ihren Browser mit etwas HTML-Code, um die web Seite.
Der web Die Seite wird mit diesem Ausdruck client.println() an den Client gesendet. Sie sollten als Argument eingeben, was Sie an den Client senden möchten.
Das erste, was wir senden sollten, ist immer die folgende Zeile, die angibt, dass wir HTML senden.Dann macht die folgende Zeile die web Seite reagiert in jedem web Browser.
Und um Anfragen an das Favicon zu unterbinden, wird folgendes verwendet. – Um diese Zeile musst du dir keine Gedanken machen.
Styling der Web Seite
Als nächstes haben wir CSS-Text, um die Schaltflächen und die web das Erscheinungsbild der Seite.
Wir wählen die Schriftart Helvetica aus, legen fest, dass der Inhalt als Block angezeigt und zentriert werden soll.Wir gestalten unsere Schaltflächen mit der Farbe #4CAF50, ohne Rahmen, mit weißem Text und folgender Polsterung: 16px 40px. Außerdem setzen wir die Textdekoration auf „keine“, definieren die Schriftgröße, den Rand und den Cursor als Zeiger.
Wir definieren außerdem den Stil für eine zweite Schaltfläche mit allen Eigenschaften der Schaltfläche, die wir zuvor definiert haben, jedoch mit einer anderen Farbe. Dies wird der Stil für die Aus-Schaltfläche sein.
Einstellen der Web Erste Seite Überschrift
In der nächsten Zeile können Sie die erste Überschrift Ihres web Seite. Hier haben wir „ESP32 Web Server“, Sie können diesen Text jedoch beliebig ändern.Anzeigen der Schaltflächen und des entsprechenden Status
Anschließend schreiben Sie einen Absatz, um den aktuellen Status von GPIO 26 anzuzeigen. Wie Sie sehen, verwenden wir die Variable output26State, sodass der Status sofort aktualisiert wird, wenn sich diese Variable ändert.Dann zeigen wir je nach aktuellem Zustand des GPIO die Ein- oder Aus-Schaltfläche an. Wenn der aktuelle Zustand des GPIO ausgeschaltet ist, zeigen wir die Ein-Schaltfläche an, andernfalls die Aus-Schaltfläche.
Dasselbe Vorgehen verwenden wir auch für GPIO 27.
Schließen der Verbindung
Wenn die Antwort endet, löschen wir schließlich die Header-Variable und beenden die Verbindung mit dem Client mit client.stop().
Einpacken
In diesem Tutorial haben wir Ihnen gezeigt, wie Sie ein web Server mit dem ESP32. Wir haben euch ein einfaches Beispiel gezeigtample, das zwei LEDs steuert, aber die Idee besteht darin, diese LEDs durch ein Relais oder einen anderen Ausgang zu ersetzen, den Sie steuern möchten.
Projekt 6 RGB LED Web Server
In diesem Projekt zeigen wir Ihnen, wie Sie eine RGB-LED mit einem ESP32-Board fernsteuern können. Dazu verwenden wir ein web Server mit einem Farbwähler.
Projektendeview
Bevor wir beginnen, sehen wir uns an, wie dieses Projekt funktioniert:
- Der ESP32 web Der Server zeigt eine Farbauswahl an.
- Wenn Sie eine Farbe auswählen, stellt Ihr Browser eine Anfrage an eine URL das die R-, G- und B-Parameter der ausgewählten Farbe enthält.
- Ihr ESP32 empfängt die Anfrage und teilt den Wert für jeden Farbparameter auf.
- Anschließend sendet es ein PWM-Signal mit dem entsprechenden Wert an die GPIOs, die die RGB-LED steuern.
Wie funktionieren RGB-LEDs?
Bei einer RGB-LED mit gemeinsamer Kathode teilen sich alle drei LEDs einen negativen Anschluss (Kathode). Alle im Kit enthaltenen LEDs sind RGB-LEDs mit gemeinsamer Kathode.Wie erstelle ich unterschiedliche Farben?
Mit einer RGB-LED können Sie natürlich rotes, grünes und blaues Licht erzeugen und durch Konfigurieren der Intensität jeder einzelnen LED können Sie auch andere Farben erzeugen.
Zum BeispielampUm beispielsweise rein blaues Licht zu erzeugen, stellen Sie die blaue LED auf die höchste Intensität und die grünen und roten LEDs auf die niedrigste Intensität ein. Für weißes Licht stellen Sie alle drei LEDs auf die höchste Intensität ein.
Farben mischen
Um andere Farben zu erzeugen, können Sie die drei Farben in unterschiedlichen Intensitäten kombinieren. Um die Intensität jeder einzelnen LED anzupassen, können Sie ein PWM-Signal verwenden.
Da die LEDs sehr nahe beieinander liegen, sehen unsere Augen das Ergebnis der Farbkombination und nicht die drei Farben einzeln.
Um eine Vorstellung davon zu bekommen, wie Sie die Farben kombinieren können, werfen Sie einen Blick auf die folgende Tabelle.
Dies ist die einfachste Farbmischtabelle, vermittelt Ihnen aber eine Vorstellung davon, wie es funktioniert und wie verschiedene Farben erzeugt werden.Erforderliche Teile
Für dieses Projekt benötigen Sie folgende Teile:
- ESP32 DEVKIT V1-Platine
- RGB-LEDs
- 3x 220 Ohm Widerstände
- Überbrückungsdrähte
- Steckplatine
schematischCode
Wir programmieren den ESP32 mit Arduino IDE. Stellen Sie daher sicher, dass Sie das ESP32-Add-on installiert haben, bevor Sie fortfahren: (Wenn Sie diesen Schritt bereits ausgeführt haben, können Sie mit dem nächsten Schritt fortfahren.)
- Installieren des ESP32-Add-ons in der Arduino IDE
Nach dem Zusammenbau der Schaltung öffnen Sie den Code
Projekt_6_RGB_LED_Web_Server.ino in der Arduino IDE.
Vergessen Sie nicht, vor dem Hochladen des Codes Ihre Netzwerkanmeldeinformationen einzugeben, damit sich der ESP mit Ihrem lokalen Netzwerk verbinden kann.So funktioniert der Code
Die ESP32-Skizze verwendet die WiFi.h-Bibliothek.Die folgenden Zeilen definieren Zeichenfolgenvariablen zur Aufnahme der R-, G- und B-Parameter aus der Anforderung.
Die nächsten vier Variablen werden später zum Dekodieren der HTTP-Anfrage verwendet.
Erstellen Sie drei Variablen für die GPIOs, die die Streifenparameter R, G und B steuern. In diesem Fall verwenden wir GPIO 13, GPIO 12 und GPIO 14.
Diese GPIOs müssen PWM-Signale ausgeben, daher müssen wir zuerst die PWM-Eigenschaften konfigurieren. Stellen Sie die PWM-Signalfrequenz auf 5000 Hz ein. Ordnen Sie dann jeder Farbe einen PWM-Kanal zu.
Und schließlich stellen Sie die Auflösung der PWM-Kanäle auf 8-Bit ein
Im setup() die PWM Eigenschaften den PWM Kanälen zuweisen
Verbinden Sie die PWM-Kanäle mit den entsprechenden GPIOs
Der folgende Codeabschnitt zeigt den Farbwähler in Ihrem web Seite und stellt eine Anfrage basierend auf der von Ihnen ausgewählten Farbe.
Wenn Sie eine Farbe auswählen, erhalten Sie eine Anfrage im folgenden Format.
Daher müssen wir diesen String aufteilen, um die Parameter R, G und B zu erhalten. Die Parameter werden in den Variablen redString, greenString und blueString gespeichert und können Werte zwischen 0 und 255 haben.Um den Streifen mit dem ESP32 zu steuern, verwenden Sie die Funktion ledcWrite(), um PWM-Signale mit den aus dem HTTP dekodierten Werten zu generieren Anfrage.
Notiz: Erfahren Sie mehr über PWM mit ESP32: Projekt 3 ESP32 PWM (Analogausgang)
Um den Streifen mit dem ESP8266 zu steuern, brauchen wir nur
die Funktion analogWrite() zum Generieren von PWM-Signalen mit den aus der HTPP-Anfrage dekodierten Werten.
analogWrite(redPin, redString.toInt());
analogWrite(greenPin, greenString.toInt());
analogWrite(bluePin, blueString.toInt())
Da wir die Werte in einer Zeichenfolgenvariable erhalten, müssen wir sie mit der Methode toInt() in Ganzzahlen umwandeln.
Demonstration
Wählen Sie nach der Eingabe Ihrer Netzwerkanmeldeinformationen die richtige Platine und den richtigen COM-Port aus und laden Sie den Code auf Ihren ESP32 hoch. Schritte zum Hochladen der Codereferenz.
Öffnen Sie nach dem Hochladen den seriellen Monitor mit einer Baudrate von 115200 und drücken Sie die ESP-Aktivierungs-/Reset-Taste. Sie sollten die IP-Adresse der Platine erhalten.Öffnen Sie Ihren Browser und geben Sie die ESP-IP-Adresse ein. Wählen Sie nun mit der Farbauswahl eine Farbe für die RGB-LED aus.
Anschließend müssen Sie die Schaltfläche „Farbe ändern“ drücken, damit die Farbe wirksam wird.Um die RGB-LED auszuschalten, wählen Sie die schwarze Farbe.
Die kräftigsten Farben (oben in der Farbauswahl) sind diejenigen, die die besten Ergebnisse erzielen.
Projekt 7 ESP32 Relais Web Server
Die Verwendung eines Relais mit dem ESP32 ist eine großartige Möglichkeit, AC-Haushaltsgeräte fernzusteuern. In diesem Tutorial wird erklärt, wie man ein Relaismodul mit dem ESP32 steuert.
Wir werden uns ansehen, wie ein Relaismodul funktioniert, wie man das Relais an den ESP32 anschließt und ein web Server zur Fernsteuerung eines Relais.
Einführung in Relais
Ein Relais ist ein elektrisch betriebener Schalter und kann wie jeder andere Schalter ein- oder ausgeschaltet werden, sodass der Strom durchfließt oder nicht. Es kann mit geringer Spannung gesteuert werden.tages, wie die 3.3 V, die von den ESP32 GPIOs bereitgestellt werden und ermöglicht uns die Steuerung hoher Lautstärketagwie 12V, 24V oder Netzspannungtage (230 V in Europa und 120 V in den USA).Auf der linken Seite befinden sich zwei Sätze von drei Buchsen zum Anschluss von Hochtonlautsprechern.tagund die Pins auf der rechten Seite (Low-Voltage) Verbindung zu den ESP32-GPIOs herstellen.
Netzlautstärketage AnschlüsseDas im vorherigen Foto gezeigte Relaismodul verfügt über zwei Anschlüsse mit jeweils drei Buchsen: gemeinsam (COM), normalerweise geschlossen (NC) und normalerweise offen (NO).
- COM: Verbinden Sie den Strom, den Sie steuern möchten (NetzspannungtagUnd).
- NC (Normally Closed): Die normalerweise geschlossene Konfiguration wird verwendet, wenn das Relais standardmäßig geschlossen sein soll. Die NC-COM-Pins sind verbunden, was bedeutet, dass der Strom fließt, es sei denn, Sie senden ein Signal vom ESP32 an das Relaismodul, um den Stromkreis zu öffnen und den Stromfluss zu stoppen.
- NO (Normally Open): Die normalerweise offene Konfiguration funktioniert umgekehrt: Es besteht keine Verbindung zwischen den NO- und COM-Pins, sodass der Stromkreis unterbrochen ist, sofern Sie nicht ein Signal vom ESP32 senden, um den Stromkreis zu schließen.
SteuerstifteDie niedrige LautstärketagAuf der Seite befinden sich ein Satz mit vier und ein Satz mit drei Pins. Der erste Satz besteht aus VCC und GND zum Einschalten des Moduls sowie Eingang 1 (IN1) und Eingang 2 (IN2) zum Steuern der unteren bzw. oberen Relais.
Wenn Ihr Relaismodul nur einen Kanal hat, haben Sie nur einen IN-Pin. Wenn Sie vier Kanäle haben, haben Sie vier IN-Pins und so weiter.
Das Signal, das Sie an die IN-Pins senden, bestimmt, ob das Relais aktiv ist oder nicht. Das Relais wird ausgelöst, wenn der Eingang unter etwa 2 V fällt. Dies bedeutet, dass Sie die folgenden Szenarien haben:
- Normalerweise geschlossene Konfiguration (NC):
- HIGH-Signal – Strom fließt
- LOW-Signal – es fließt kein Strom
- Normalerweise geöffnete Konfiguration (NO):
- HIGH-Signal – es fließt kein Strom
- LOW-Signal – Strom fließt
Sie sollten eine normalerweise geschlossene Konfiguration verwenden, wenn der Strom die meiste Zeit fließen soll und Sie ihn nur gelegentlich unterbrechen möchten.
Verwenden Sie eine normalerweise offene Konfiguration, wenn der Strom gelegentlich fließen soll (z. B.ample, schalte al einamp gelegentlich).
Auswahl der StromversorgungDer zweite Pin-Satz besteht aus den Pins GND, VCC und JD-VCC.
Der JD-VCC-Pin versorgt den Elektromagneten des Relais mit Strom. Beachten Sie, dass das Modul eine Überbrückungskappe hat, die die VCC- und JD-VCC-Pins verbindet. Die hier gezeigte ist gelb, Ihre kann jedoch eine andere Farbe haben.
Mit aufgesetzter Jumperkappe sind die VCC- und JD-VCC-Pins verbunden. Das bedeutet, dass der Relais-Elektromagnet direkt vom ESP32-Stromanschluss mit Strom versorgt wird, sodass das Relaismodul und die ESP32-Schaltkreise nicht physisch voneinander isoliert sind.
Ohne die Überbrückungskappe müssen Sie eine unabhängige Stromquelle bereitstellen, um den Elektromagneten des Relais über den JD-VCC-Pin mit Strom zu versorgen. Diese Konfiguration isoliert die Relais physisch vom ESP32 mit dem integrierten Optokoppler des Moduls, was Schäden am ESP32 im Falle von Spannungsspitzen verhindert.
schematischWarnung: Einsatz von hoher LautstärketagDie Netzteile können schwere Verletzungen verursachen.
Daher werden 5mm LEDs anstelle von Hochleistungs-LEDs verwendet.tage Glühbirnen im Experiment. Wenn Sie mit Netzspannung nicht vertraut sindtagBitten Sie jemanden, der Ihnen helfen kann. Stellen Sie beim Programmieren des ESP oder beim Verdrahten Ihrer Schaltung sicher, dass alles vom Netz getrennt ist.tage.Installieren der Bibliothek für ESP32
Um dies zu bauen web Server verwenden wir den ESPAsyncWebServerbibliothek und AsyncTCP-Bibliothek.
Installieren von ESPAsyncWebServerbibliothek
Folgen Sie den nächsten Schritten zur Installation des ESPAsyncWebServer Bibliothek:
- Klicken Sie hier, um ESPAsync herunterzuladenWebServer-Bibliothek. Sie sollten
ein .zip-Ordner in Ihrem Download-Ordner - Entpacken Sie den .zip-Ordner und Sie sollten ESPAsync erhalten.WebServer-Masterordner
- Benennen Sie Ihren Ordner von ESPAsync umWebServer-Master zu ESPAsyncWebServer
- Verschieben Sie den ESPAsyncWebServer-Ordner in den Ordner mit den Arduino IDE-Installationsbibliotheken
Alternativ können Sie in Ihrer Arduino IDE zu Sketch > Include gehen
Bibliothek > .ZIP-Bibliothek hinzufügen… und wählen Sie die Bibliothek aus, die Sie gerade heruntergeladen haben.
Installieren der AsyncTCP-Bibliothek für ESP32
Der ESPAsyncWebServer Bibliothek erfordert die AsyncTCP Bibliothek zum Arbeiten. Folgen
Die nächsten Schritte zum Installieren dieser Bibliothek:
- Klicken Sie hier, um die AsyncTCP-Bibliothek herunterzuladen. Sie sollten einen .zip-Ordner in Ihrem Download-Ordner haben
- Entpacken Sie den .zip-Ordner und Sie sollten den AsyncTCP-Master-Ordner erhalten.
1. Benennen Sie Ihren Ordner von AsyncTCP-master in AsyncTCP um
3. Verschieben Sie den Ordner AsyncTCP in den Ordner mit den Arduino IDE-Installationsbibliotheken
4. Öffnen Sie abschließend Ihre Arduino IDE erneut
Alternativ können Sie in Ihrer Arduino IDE zu Sketch > Include gehen
Bibliothek > .ZIP-Bibliothek hinzufügen… und wählen Sie die Bibliothek aus, die Sie gerade heruntergeladen haben.
Code
Wir programmieren den ESP32 mit Arduino IDE. Stellen Sie daher sicher, dass Sie das ESP32-Add-on installiert haben, bevor Sie fortfahren: (Wenn Sie diesen Schritt bereits ausgeführt haben, können Sie mit dem nächsten Schritt fortfahren.)
Installieren des ESP32-Add-ons in der Arduino IDE
Öffnen Sie nach der Installation der erforderlichen Bibliotheken den Code Project_7_ESP32_Relay_Web_Server.ino in der Arduino IDE.
Vergessen Sie nicht, vor dem Hochladen des Codes Ihre Netzwerkanmeldeinformationen einzugeben, damit sich der ESP mit Ihrem lokalen Netzwerk verbinden kann.Demonstration
Nachdem Sie die erforderlichen Änderungen vorgenommen haben, laden Sie den Code in Ihren ESP32 hoch. Führen Sie die Schritte zum Hochladen des Codereferenzcodes aus.
Öffnen Sie den Serial Monitor mit einer Baudrate von 115200 und drücken Sie die ESP32 EN-Taste, um seine IP-Adresse abzurufen. Öffnen Sie dann einen Browser in Ihrem lokalen Netzwerk und geben Sie die ESP32-IP-Adresse ein, um Zugriff auf den web Server.
Öffnen Sie den Serial Monitor mit einer Baudrate von 115200 und drücken Sie die ESP32 EN-Taste, um seine IP-Adresse abzurufen. Öffnen Sie dann einen Browser in Ihrem lokalen Netzwerk und geben Sie die ESP32-IP-Adresse ein, um Zugriff auf den web Server.Notiz: Ihr Browser und ESP32 sollten mit demselben LAN verbunden sein.
Sie sollten ungefähr das Folgende erhalten, mit so vielen Schaltflächen wie der Anzahl der Relais, die Sie in Ihrem Code definiert haben.Ab sofort können Sie Ihre Relais über die Tasten auch mit Ihrem Smartphone steuern.
Projekt_8_Ausgabestatus-Synchronisierung_ Web_Server
Dieses Projekt zeigt, wie man die ESP32- oder ESP8266-Ausgänge mit einem web Server und eine physische Taste gleichzeitig. Der Ausgabezustand wird auf dem web Seite, ob sie über eine physische Taste geändert wird oder web Server.
Projektendeview
Werfen wir einen kurzen Blick darauf, wie das Projekt funktioniert.Der ESP32 bzw. ESP8266 beherbergt einen web Server, der Ihnen die Steuerung des Status einer Ausgabe ermöglicht;
- Der aktuelle Ausgangszustand wird angezeigt auf dem web Server;
- Das ESP ist außerdem mit einem physischen Druckknopf verbunden, der denselben Ausgang steuert.
- Wenn Sie den Ausgangszustand mit dem physischen Druckknopf ändern, wird sein aktueller Zustand auch auf dem web Server.
Zusammenfassend lässt sich sagen, dass dieses Projekt Ihnen ermöglicht, denselben Ausgang mit einem web Server und Taster gleichzeitig. Bei jeder Zustandsänderung des Ausgangs wird der web Server wird aktualisiert.
Erforderliche Teile
Hier ist eine Liste der Teile, die Sie zum Aufbau der Schaltung benötigen:
- ESP32 DEVKIT V1-Platine
- 5-mm-LED
- 220Ohm Widerstand
- Drucktaster
- 10 kOhm Widerstand
- Steckplatine
- Überbrückungsdrähte
schematischInstallieren der Bibliothek für ESP32
Um dies zu bauen web Server verwenden wir den ESPAsyncWebServerbibliothek und AsyncTCP-Bibliothek. (Wenn Sie diesen Schritt bereits ausgeführt haben, können Sie mit dem nächsten Schritt fortfahren.)
Installieren von ESPAsyncWebServerbibliothek
Befolgen Sie die nächsten Schritte, um ESPAsync zu installierenWebServerbibliothek:
- Klicken Sie hier, um ESPAsync herunterzuladenWebServer-Bibliothek. Sie sollten
ein .zip-Ordner in Ihrem Download-Ordner - Entpacken Sie den .zip-Ordner und Sie sollten ESPAsync erhalten.WebServer-Masterordner
- Benennen Sie Ihren Ordner von ESPAsync umWebServer-Master zu ESPAsyncWebServer
- Verschieben Sie den ESPAsyncWebServer-Ordner in den Ordner mit den Arduino IDE-Installationsbibliotheken
Alternativ können Sie in Ihrer Arduino IDE zu Sketch > Include gehen
Bibliothek > .ZIP-Bibliothek hinzufügen… und wählen Sie die Bibliothek aus, die Sie gerade heruntergeladen haben.
Installieren der AsyncTCP-Bibliothek für ESP32
Der ESPAsyncWebDamit die Serverbibliothek funktioniert, ist die AsyncTCP-Bibliothek erforderlich. Befolgen Sie die nächsten Schritte, um diese Bibliothek zu installieren:
- Klicken Sie hier, um die AsyncTCP-Bibliothek herunterzuladen. Sie sollten einen .zip-Ordner in Ihrem Download-Ordner haben
- Entpacken Sie den .zip-Ordner und Sie sollten den AsyncTCP-Master-Ordner erhalten.
- Benennen Sie Ihren Ordner von AsyncTCP-master in AsyncTCP um
- Verschieben Sie den Ordner AsyncTCP in den Ordner mit den Arduino IDE-Installationsbibliotheken
- Öffnen Sie abschließend Ihre Arduino IDE erneut
Alternativ können Sie in Ihrer Arduino IDE zu Sketch > Include gehen
Bibliothek > .ZIP-Bibliothek hinzufügen… und wählen Sie die Bibliothek aus, die Sie gerade heruntergeladen haben.
Code
Wir programmieren den ESP32 mit Arduino IDE. Stellen Sie daher sicher, dass Sie das ESP32-Add-on installiert haben, bevor Sie fortfahren: (Wenn Sie diesen Schritt bereits ausgeführt haben, können Sie mit dem nächsten Schritt fortfahren.)
Installieren des ESP32-Add-ons in der Arduino IDE
Öffnen Sie nach der Installation der erforderlichen Bibliotheken den Code
Projekt_8_Ausgabestatus-Synchronisierung_Web_Server.ino in der Arduino IDE.
Vergessen Sie nicht, vor dem Hochladen des Codes Ihre Netzwerkanmeldeinformationen einzugeben, damit sich der ESP mit Ihrem lokalen Netzwerk verbinden kann.
Funktionsweise des Codes
Schaltflächenzustand und Ausgabezustand
Die Variable ledState enthält den Status der LED-Ausgabe. Standardmäßig wird bei web Server startet, ist er NIEDRIG.
Anhand der Parameter buttonState und lastButtonState lässt sich erkennen, ob der Druckknopf gedrückt wurde oder nicht.Taste (web Server)
Wir haben das HTML zum Erstellen der Schaltfläche nicht in die Variable „index_html“ eingebunden.
Denn wir wollen eine Änderung abhängig vom aktuellen LED-Zustand ermöglichen, der sich auch mit dem Taster ändern lässt.
Daher haben wir einen Platzhalter für die Schaltfläche %BUTTONPLACEHOLDER% erstellt, der später im Code durch HTML-Text ersetzt wird, um die Schaltfläche zu erstellen (dies erfolgt in der Funktion processor()).Prozessor()
Die Funktion processor() ersetzt alle Platzhalter im HTML-Text durch tatsächliche Werte. Zunächst prüft sie, ob der HTML-Text
Platzhalter %BUTTONPLACEHOLDER%.Rufen Sie dann die Funktion outputState() auf, die den aktuellen Ausgabestatus zurückgibt. Wir speichern ihn in der Variable outputStateValue.
Verwenden Sie anschließend diesen Wert, um den HTML-Text zu erstellen, der die Schaltfläche mit dem richtigen Status anzeigt:
HTTP-GET-Anforderung zum Ändern des Ausgabestatus (JavaScript)
Wenn Sie die Schaltfläche drücken, wird die Funktion „toggleCheckbox()“ aufgerufen. Diese Funktion stellt eine Anfrage an verschiedene URLs zum Ein- bzw. Ausschalten der LED.Um die LED einzuschalten, wird eine Anfrage an /update?state=1 gestellt. URL:
Andernfalls wird eine Anfrage an /update?state=0 gestellt. URL.
HTTP-GET-Anforderung zum Aktualisieren des Status (JavaScript)
Um den Ausgabestatus auf dem aktuellen Stand zu halten, web Server, rufen wir die folgende Funktion auf, die eine neue Anfrage an den /state stellt URL jede Sekunde.Behandeln Sie Anfragen
Dann müssen wir behandeln, was passiert, wenn der ESP32 oder ESP8266 Anfragen auf diesen erhält URLs.
Wenn eine Anfrage auf dem Stamm-/URL, wir versenden sowohl die HTML-Seite als auch den Prozessor.Die folgenden Zeilen prüfen, ob Sie eine Anfrage zum /update?state=1 oder /update?state=0 erhalten haben. URL und ändert den LED-Status entsprechend.
Wenn eine Anfrage auf /state eingeht URLsenden wir den aktuellen Ausgabestatus:
Schleife()
In der Schleife () entprellen wir den Taster und schalten die LED je nach Wert des ledState ein oder aus. Variable.Demonstration
Laden Sie den Code auf Ihre ESP32-Platine hoch. Laden Sie die Codereferenzschritte hoch.
Öffnen Sie dann den seriellen Monitor mit einer Baudrate von 115200. Drücken Sie die integrierte EN/RST-Taste, um die IP-Adresse zu erhalten.Öffnen Sie einen Browser in Ihrem lokalen Netzwerk und geben Sie die ESP-IP-Adresse ein. Sie sollten Zugriff auf die web Server, wie unten gezeigt.
Notiz: Ihr Browser und ESP32 sollten mit demselben LAN verbunden sein.Sie können die Schaltfläche auf der web Server, um die LED einzuschalten.
Sie können dieselbe LED auch mit dem physischen Druckknopf steuern. Ihr Status wird immer automatisch auf dem web Server.
Projekt 9 ESP32 DHT11 Web Server
In diesem Projekt lernen Sie, wie Sie einen asynchronen ESP32 bauen web Server mit dem DHT11, der Temperatur und Luftfeuchtigkeit mithilfe der Arduino IDE anzeigt.
Voraussetzungen
Der web Server, den wir bauen, aktualisiert die Messwerte automatisch, ohne dass die web Seite.
Mit diesem Projekt lernen Sie:
- So lesen Sie Temperatur und Luftfeuchtigkeit von DHT-Sensoren ab;
- Erstellen Sie eine asynchrone web Server mit dem ESPAsyncWebServerbibliothek;
- Aktualisieren Sie die Sensorwerte automatisch, ohne dass Sie die web Seite.
Asynchron Web Server
Zum Aufbau der web Server verwenden wir den ESPAsyncWebServerbibliothek das eine einfache Möglichkeit bietet, eine asynchrone web Server. Aufbau einer asynchronen web Server verfügt über mehrere Vorteiletages, wie auf der GitHub-Seite der Bibliothek erwähnt, wie etwa:
- „Mehr als eine Verbindung gleichzeitig handhaben“;
- „Wenn Sie die Antwort senden, sind Sie sofort bereit, andere Verbindungen zu verarbeiten, während der Server sich im Hintergrund um das Senden der Antwort kümmert“;
- „Einfache Vorlagenverarbeitungs-Engine zum Umgang mit Vorlagen“;
Erforderliche Teile
Zum Abschließen dieses Tutorials benötigen Sie die folgenden Teile:
- ESP32-Entwicklungsboard
- DHT11-Modul
- Steckplatine
- Überbrückungsdrähte
schematischInstallieren von Bibliotheken
Für dieses Projekt müssen Sie einige Bibliotheken installieren:
- Der DHT und die Adafruit Unified Sensor Treiberbibliotheken zum Lesen vom DHT-Sensor.
- ESPAsyncWebServer Und Asynchrones TCP Bibliotheken zum Erstellen der asynchronen web Server.
Befolgen Sie die nächsten Anweisungen, um diese Bibliotheken zu installieren:
Installieren der DHT-Sensorbibliothek
Um den DHT-Sensor mit Arduino IDE auszulesen, müssen Sie die DHT-SensorbibliothekBefolgen Sie die nächsten Schritte, um die Bibliothek zu installieren.
- Klicken Sie hier, um die DHT-Sensorbibliothek herunterzuladen. Sie sollten einen .zip-Ordner in Ihrem Download-Ordner haben
- Entpacken Sie den .zip-Ordner und Sie sollten den Ordner DHT-sensor-library-master erhalten.
- Benennen Sie Ihren Ordner von DHT-sensor-library-master in DHT_sensor um
- Verschieben Sie den Ordner DHT_sensor in den Ordner mit den Installationsbibliotheken der Arduino IDE.
- Öffnen Sie abschließend Ihre Arduino IDE erneut
Installieren des Adafruit Unified Sensor-Treibers
Sie müssen außerdem die Adafruit Unified Sensor Driver-Bibliothek um mit dem DHT-Sensor zu arbeiten. Folgen Sie den nächsten Schritten, um die Bibliothek zu installieren.
- Klicken Sie hier, um die Adafruit Unified Sensor-Bibliothek herunterzuladen. Sie sollten einen .zip-Ordner in Ihrem Download-Ordner haben
- Entpacken Sie den .zip-Ordner und Sie sollten den Ordner Adafruit_sensor-master erhalten.
- Benennen Sie Ihren Ordner von Adafruit_sensor-master in Adafruit_sensor um.
- Verschieben Sie den Ordner Adafruit_sensor in den Ordner mit den Installationsbibliotheken von Arduino IDE.
- Öffnen Sie abschließend Ihre Arduino IDE erneut
Installieren von ESPAsyncWebServerbibliothek
Folgen Sie den nächsten Schritten zur Installation des ESPAsyncWebServer Bibliothek:
- Klicken Sie hier, um ESPAsync herunterzuladenWebServer-Bibliothek. Sie sollten
ein .zip-Ordner in Ihrem Download-Ordner - Entpacken Sie den .zip-Ordner und Sie sollten
ESPAsync erhaltenWebServer-Masterordner - Benennen Sie Ihren Ordner von ESPAsync umWebServer-Master zu ESPAsyncWebServer
- Verschieben Sie den ESPAsyncWebServer-Ordner in den Ordner mit den Arduino IDE-Installationsbibliotheken
Installieren der Async TCP-Bibliothek für ESP32
Der ESPAsyncWebServer Bibliothek erfordert die AsyncTCP Bibliothek funktioniert. Befolgen Sie die nächsten Schritte, um diese Bibliothek zu installieren:
- Klicken Sie hier, um die AsyncTCP-Bibliothek herunterzuladen. Sie sollten einen .zip-Ordner in Ihrem Download-Ordner haben
- Entpacken Sie den .zip-Ordner und Sie sollten den AsyncTCP-Master-Ordner erhalten.
- Benennen Sie Ihren Ordner von AsyncTCP-master in AsyncTCP um
- Verschieben Sie den Ordner AsyncTCP in den Ordner mit den Arduino IDE-Installationsbibliotheken
- Öffnen Sie abschließend Ihre Arduino IDE erneut
Code
Wir programmieren den ESP32 mit Arduino IDE. Stellen Sie daher sicher, dass Sie das ESP32-Add-on installiert haben, bevor Sie fortfahren: (Wenn Sie diesen Schritt bereits ausgeführt haben, können Sie mit dem nächsten Schritt fortfahren.)
Installieren des ESP32-Add-ons in der Arduino IDE
Öffnen Sie nach der Installation der erforderlichen Bibliotheken den Code
Projekt_9_ESP32_DHT11_Web_Server.ino in der Arduino IDE.
Vergessen Sie nicht, vor dem Hochladen des Codes Ihre Netzwerkanmeldeinformationen einzugeben, damit sich der ESP mit Ihrem lokalen Netzwerk verbinden kann.Funktionsweise des Codes
In den folgenden Abschnitten erklären wir, wie der Code funktioniert. Lesen Sie weiter, wenn Sie mehr erfahren möchten, oder springen Sie zum Abschnitt „Demonstration“, um das Endergebnis zu sehen.
Bibliotheken importieren
Importieren Sie zunächst die benötigten Bibliotheken. Die WiFi-, ESPAsync-WebServer und ESPAsyncTCP werden benötigt zum Aufbau der web Server. Die Bibliotheken Adafruit_Sensor und DHT werden zum Lesen der Sensoren DHT11 oder DHT22 benötigt.Variablendefinition
Definieren Sie den GPIO, mit dem der DHT-Datenpin verbunden ist. In diesem Fall ist er mit GPIO 4 verbunden.Wählen Sie dann den von Ihnen verwendeten DHT-Sensortyp aus. In unserem Beispielample, wir verwenden den DHT22. Wenn Sie einen anderen Typ verwenden, müssen Sie nur Ihren Sensor auskommentieren und alle anderen auskommentieren.
Instanziieren Sie ein DHT-Objekt mit dem Typ und Pin, die wir zuvor definiert haben.Erstellen Sie ein AsyncWebServerobjekt auf Port 80.
Temperatur- und Feuchtigkeitsfunktionen lesen
Wir haben zwei Funktionen erstellt: eine zum Ablesen der Temperatur. Wir haben zwei Funktionen erstellt: eine zum Ablesen der Temperatur (readDHTTemperature()) und die andere zum Ablesen der Luftfeuchtigkeit (readDHTHumidity()).Das Abrufen von Sensorwerten ist so einfach wie die Verwendung der Methoden readTemperature() und readHumidity() für das dht-Objekt.
Wir haben auch eine Bedingung, die zwei Bindestriche (–) zurückgibt, falls der Sensor keine Messwerte erfassen kann.
Die Messwerte werden als Zeichenfolge zurückgegeben. Um einen Float in eine Zeichenfolge umzuwandeln, verwenden Sie die Funktion String()
Standardmäßig wird die Temperatur in Grad Celsius angegeben. Um die Temperatur in Grad Fahrenheit zu erhalten, kommentieren Sie die Temperatur in Celsius aus und heben Sie die Auskommentierung der Temperatur in Fahrenheit auf, sodass Sie Folgendes erhalten:
Laden Sie den Code hoch
Laden Sie nun den Code auf Ihren ESP32 hoch. Stellen Sie sicher, dass Sie die richtige Platine und den richtigen COM-Port ausgewählt haben. Schritte zum Hochladen des Codes.
Öffnen Sie nach dem Hochladen den seriellen Monitor mit einer Baudrate von 115200. Drücken Sie die ESP32-Reset-Taste. Die ESP32-IP-Adresse sollte im seriellen Monitor gedruckt werden. Monitor.Demonstration
Öffnen Sie einen Browser und geben Sie die ESP32-IP-Adresse ein. Ihre web Der Server sollte die neuesten Sensorwerte anzeigen.
Notiz: Ihr Browser und ESP32 sollten mit demselben LAN verbunden sein.
Beachten Sie, dass die Temperatur- und Feuchtigkeitswerte automatisch aktualisiert werden, ohne dass Sie die web Seite.
Projekt_10_ESP32_OLED_Display
Dieses Projekt zeigt, wie man das 0.96-Zoll-OLED-Display SSD1306 mit ESP32 unter Verwendung der Arduino IDE verwendet.
Einführung des 0.96-Zoll-OLED-Displays
Der OLED-Bildschirm das wir in diesem Tutorial verwenden, ist das Modell SSD1306: ein einfarbiges 0.96-Zoll-Display mit 128 x 64 Pixeln, wie in der folgenden Abbildung dargestellt.Das OLED-Display benötigt keine Hintergrundbeleuchtung, was in dunklen Umgebungen einen sehr schönen Kontrast ergibt. Darüber hinaus verbrauchen die Pixel nur dann Energie, wenn sie eingeschaltet sind, sodass das OLED-Display im Vergleich zu anderen Displays weniger Strom verbraucht.
Da das OLED-Display das Kommunikationsprotokoll I2C verwendet, ist die Verkabelung sehr einfach. Sie können die folgende Tabelle als Referenz verwenden.
OLED-Pin | ESP32 |
Vin | 3.3 V |
Masse | Masse |
SCL | GPIO22 |
SDA | GPIO21 |
schematischInstallieren der SSD1306 OLED-Bibliothek – ESP32
Zur Steuerung des OLED-Displays mit dem ESP32 stehen mehrere Bibliotheken zur Verfügung.
In diesem Tutorial verwenden wir zwei Adafruit-Bibliotheken: Adafruit_SSD1306-Bibliothek Und Adafruit_GFX-Bibliothek.
Befolgen Sie die nächsten Schritte, um diese Bibliotheken zu installieren.
- Öffnen Sie Ihre Arduino IDE und gehen Sie zu Sketch > Include Library > Manage Libraries. Der Bibliotheksmanager sollte sich öffnen.
- Geben Sie „SSD1306“ in das Suchfeld ein und installieren Sie die SSD1306-Bibliothek von Adafruit.
- Geben Sie nach der Installation der SSD1306-Bibliothek von Adafruit „GFX“ in das Suchfeld ein und installieren Sie die Bibliothek.
- Starten Sie Ihre Arduino IDE nach der Installation der Bibliotheken neu.
Code
Öffnen Sie nach der Installation der erforderlichen Bibliotheken die Datei Project_10_ESP32_OLED_Display.ino in der Arduino IDE. Code
Wir programmieren den ESP32 mit Arduino IDE. Stellen Sie daher sicher, dass Sie das ESP32-Add-on installiert haben, bevor Sie fortfahren: (Wenn Sie diesen Schritt bereits ausgeführt haben, können Sie mit dem nächsten Schritt fortfahren.)
Installieren des ESP32-Add-ons in der Arduino IDEFunktionsweise des Codes
Bibliotheken importieren
Zuerst müssen Sie die erforderlichen Bibliotheken importieren. Die Wire-Bibliothek zur Verwendung von I2C und die Adafruit-Bibliotheken zum Schreiben auf das Display: Adafruit_GFX und Adafruit_SSD1306.Initialisieren des OLED-Displays
Anschließend definieren Sie Breite und Höhe Ihres OLEDs. In diesem BeispielampWir verwenden ein 128×64 OLED-Display. Wenn Sie andere Größen verwenden, können Sie diese in den Variablen SCREEN_WIDTH und SCREEN_HEIGHT ändern.Initialisieren Sie dann mit dem I2C-Kommunikationsprotokoll (&Wire) ein Anzeigeobjekt mit der zuvor definierten Breite und Höhe.
Der Parameter (-1) bedeutet, dass Ihr OLED-Display keinen RESET-Pin hat. Wenn Ihr OLED-Display einen RESET-Pin hat, sollte dieser mit einem GPIO verbunden sein. In diesem Fall sollten Sie die GPIO-Nummer als Parameter übergeben.
Initialisieren Sie im Setup() den seriellen Monitor zu Debugzwecken mit einer Baudrate von 115200.Initialisieren Sie das OLED-Display mit der Methode begin() wie folgt:
Dieser Codeausschnitt druckt auch eine Meldung auf dem seriellen Monitor, falls wir keine Verbindung zum Display herstellen können.
Falls Sie ein anderes OLED-Display verwenden, müssen Sie möglicherweise die OLED-Adresse ändern. In unserem Fall lautet die Adresse 0x3C.
Fügen Sie nach der Initialisierung des Displays eine Verzögerung von zwei Sekunden hinzu, damit das OLED-Display genügend Zeit zur Initialisierung hat, bevor Text geschrieben wird:
Display übersichtlich gestalten, Schriftgröße und Farbe einstellen und Text schreiben
Nachdem Sie die Anzeige initialisiert haben, löschen Sie den Anzeigepuffer mit der Methode clearDisplay():
Bevor Sie Text schreiben, müssen Sie die Textgröße und -farbe festlegen und bestimmen, wo der Text auf dem OLED-Display angezeigt werden soll.
Legen Sie die Schriftgröße mit der Methode setTextSize() fest:Legen Sie die Schriftfarbe mit der Methode setTextColor() fest:
WHITE legt die weiße Schrift und den schwarzen Hintergrund fest.
Definieren Sie die Position, an der der Text beginnt, mit der Methode setCursor(x,y). In diesem Fall legen wir fest, dass der Text bei den Koordinaten (0,0) beginnt – in der oberen linken Ecke.Schließlich können Sie den Text mit der Methode println() wie folgt an das Display senden
Dann müssen Sie die Methode display() aufrufen, um den Text tatsächlich auf dem Bildschirm anzuzeigen.
Die Adafruit OLED-Bibliothek bietet nützliche Methoden zum einfachen Scrollen von Text.
- startscrollright(0x00, 0x0F): Text von links nach rechts scrollen
- startscrollleft(0x00, 0x0F): Text von rechts nach links scrollen
- startscrolldiagright(0x00, 0x07): Text von der linken unteren Ecke zur rechten oberen Ecke scrollen startscrolldiagleft(0x00, 0x07): Text von der rechten unteren Ecke zur linken oberen Ecke scrollen
Laden Sie den Code hoch
Laden Sie jetzt den Code auf Ihren ESP32 hoch. Führen Sie die Schritte zum Hochladen des Code-Referenzcodes durch.
Nach dem Hochladen des Codes wird auf dem OLED-Display ein Lauftext angezeigt.
Dokumente / Ressourcen
![]() |
LAFVIN ESP32 Basis-Starterkit [pdf] Bedienungsanleitung ESP32 Basis-Starterkit, ESP32, Basis-Starterkit, Starterkit |