Arduino Nano ESP32 - HTTP-Anfrage

Dieses Tutorial gibt Anleitungen dazu, wie man den Arduino Nano ESP32 verwendet, um HTTP-Anfragen an einen Webserver, eine API oder einen Webdienst zu senden. Im Detail erfahren Sie:

Arduino Nano ESP32 Web-Client

Erforderliche Hardware

1×Arduino Nano ESP32
1×USB-Kabel Typ-A zu Typ-C (für USB-A PC)
1×USB-Kabel Typ-C zu Typ-C (für USB-C PC)
1×Breadboard
1×Verbindungskabel
1×(Optional) DC-Stromanschluss
1×(Empfohlen) Schraubklemmen-Erweiterungsboard für Arduino Nano
1×(Empfohlen) Breakout-Erweiterungsboard für Arduino Nano
1×(Empfohlen) Stromverteiler für Arduino Nano ESP32

Oder Sie können die folgenden Kits kaufen:

1×DIYables Sensor-Kit (30 Sensoren/Displays)
1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Grundlegende Konzepte von Web-Client und Web-Server

Es gibt einige grundlegende Konzepte des Webs, wie zum Beispiel: Webadresse (URL), Hostname, Pfadname, Abfragezeichenfolge, HTTP-Anfrage... Detaillierte Informationen dazu finden Sie im HTTP-Tutorial.

Wie man eine HTTP-Anfrage stellt

  • Bibliotheken einbinden
#include <WiFi.h> #include <HTTPClient.h>
  • WLAN-SSID und Passwort deklarieren
const char WIFI_SSID[] = "YOUR_WIFI_SSID"; // BITTE ANPASSEN const char WIFI_PASSWORD[] = "YOUR_WIFI_PASSWORD"; // BITTE ANPASSEN
  • Deklariere Hostname, Pfadname, Abfragezeichenfolge
String HOST_NAME = "http://YOUR_DOMAIN.com"; // BITTE ANPASSEN String PATH_NAME = "/products/arduino"; // BITTE ANPASSEN //String PATH_NAME = "/products/arduino.php"; // BITTE ANPASSEN String queryString = "temperature=26&humidity=70"; // OPTIONAL (wahlweise)
  • Deklariere ein HTTP-Client-Objekt
HTTPClient http;
  • Wenn eine Verbindung zum Server besteht, sende eine HTTP-Anfrage. Zum Beispiel HTTP GET
http.begin(HOST_NAME + PATH_NAME); //Hypertext-Übertragungsprotokoll int httpCode = http.GET();
  • Lese die Antwortdaten vom Webserver
// httpCode wird bei Fehlern negativ sein if (httpCode > 0) { // Datei auf dem Server gefunden if (httpCode == HTTP_CODE_OK) { String payload = http.getString(); Serial.println(payload); } else { // HTTP-Header wurde gesendet und der Server-Antwort-Header wurde verarbeitet Serial.printf("[HTTP] GET... code: %d\n", httpCode); } } else { Serial.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str()); } http.end();

Wie man Daten in eine HTTP-Anfrage einfügt

Wir können Daten an den Webserver senden, indem wir sie in die HTTP-Anfrage aufnehmen. Das Datenformat hängt von der HTTP-Anforderungsmethode ab:

  • Für HTTP-GET-Anfragen können Daten nur in der Abfragezeichenfolge des Pfads gesendet werden.
    • Daten können NICHT NUR in der Form der Abfragezeichenfolge gesendet werden, sondern auch in allen anderen Formaten wie JSON, XML, Bilddaten ...
    • Daten werden im HTTP-Request-Body übertragen.

    Lernen wir, wie man Daten im Query-String-Format sowohl für HTTP GET als auch für POST sendet.

    • Erstelle eine Abfragezeichenfolge
    int temp = // vom Sensor int humi = // vom Sensor String queryString = String("temperature=") + String(temp) + String("&humidity=") + String(humi);
    • HTTP GET: füge Abfragezeichenfolge zum Pfad hinzu
    http.begin(HOST_NAME + PATH_NAME + "?" + queryString); http.addHeader("Content-Type", "application/x-www-form-urlencoded"); int httpCode = http.GET();
    • HTTP POST: lege die Abfragezeichenfolge in den HTTP-Body
    http.begin(HOST_NAME + PATH_NAME); http.addHeader("Content-Type", "application/x-www-form-urlencoded"); int httpCode = http.POST(queryString);
    • Für GET und POST lesen Sie die Antwortdaten vom Webserver.
    // httpCode wird bei einem Fehler negativ sein if (httpCode > 0) { // Datei auf dem Server gefunden if (httpCode == HTTP_CODE_OK) { String payload = http.getString(); Serial.println(payload); } else { // HTTP-Header wurde gesendet und der Server-Antwort-Header wurde verarbeitet Serial.printf("[HTTP] GET/POST... code: %d\n", httpCode); } } else { Serial.printf("[HTTP] GET/POST... failed, error: %s\n", http.errorToString(httpCode).c_str()); } http.end();

Vollständiger Arduino Nano ESP32-Code zum Senden einer HTTP-Anfrage

Das Folgende ist der vollständige Arduino Nano ESP32-Code zur Ausführung von HTTP-GET/POST-Anfragen.

/* * Dieser Arduino Nano ESP32 Code wurde von newbiely.de entwickelt * Dieser Arduino Nano ESP32 Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-nano-esp32/arduino-nano-esp32-http-request */ #include <WiFi.h> #include <HTTPClient.h> const char WIFI_SSID[] = "YOUR_WIFI_SSID"; // CHANGE IT // CHANGE IT const char WIFI_PASSWORD[] = "YOUR_WIFI_PASSWORD"; // CHANGE IT String HOST_NAME = "http://YOUR_DOMAIN.com"; // CHANGE IT String HOST_NAME = "http://YOUR_DOMAIN.com"; // CHANGE IT //String PATH_NAME = "/products/arduino.php"; // CHANGE IT void setup() { Serial.begin(9600); WiFi.begin(WIFI_SSID, WIFI_PASSWORD); Serial.println("Connecting"); while(WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.print("Connected to WiFi network with IP Address: "); Serial.println(WiFi.localIP()); HTTPClient http; http.begin(HOST_NAME + PATH_NAME); //HTTP int httpCode = http.GET(); // httpCode will be negative on error if(httpCode > 0) { // file found at server if(httpCode == HTTP_CODE_OK) { String payload = http.getString(); Serial.println(payload); } else { // HTTP header has been send and Server response header has been handled Serial.printf("[HTTP] GET... code: %d\n", httpCode); } } else { Serial.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str()); } http.end(); } void loop() { }

Vollständiger Arduino Nano ESP32-Code zum Erstellen einer HTTP-GET-Anfrage mit Daten

/* * Dieser Arduino Nano ESP32 Code wurde von newbiely.de entwickelt * Dieser Arduino Nano ESP32 Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-nano-esp32/arduino-nano-esp32-http-request */ #include <WiFi.h> #include <HTTPClient.h> const char WIFI_SSID[] = "YOUR_WIFI_SSID"; // CHANGE IT const char WIFI_PASSWORD[] = "YOUR_WIFI_PASSWORD"; // CHANGE IT String HOST_NAME = "http://YOUR_DOMAIN.com"; // CHANGE IT String PATH_NAME = "/products/arduino"; // CHANGE IT //String PATH_NAME = "/products/arduino.php"; // CHANGE IT String queryString = "temperature=26&humidity=70"; void setup() { Serial.begin(9600); WiFi.begin(WIFI_SSID, WIFI_PASSWORD); Serial.println("Connecting"); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.print("Connected to WiFi network with IP Address: "); Serial.println(WiFi.localIP()); HTTPClient http; http.begin(HOST_NAME + PATH_NAME + "?" + queryString); http.addHeader("Content-Type", "application/x-www-form-urlencoded"); int httpCode = http.GET(); // httpCode will be negative on error if (httpCode > 0) { // file found at server if (httpCode == HTTP_CODE_OK) { String payload = http.getString(); Serial.println(payload); } else { // HTTP header has been send and Server response header has been handled Serial.printf("[HTTP] GET... code: %d\n", httpCode); } } else { Serial.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str()); } http.end(); } void loop() { }

Vollständiger Arduino Nano ESP32-Code zum Senden einer HTTP-POST-Anfrage mit Daten

/* * Dieser Arduino Nano ESP32 Code wurde von newbiely.de entwickelt * Dieser Arduino Nano ESP32 Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-nano-esp32/arduino-nano-esp32-http-request */ #include <WiFi.h> #include <HTTPClient.h> const char WIFI_SSID[] = "YOUR_WIFI_SSID"; // CHANGE IT const char WIFI_PASSWORD[] = "YOUR_WIFI_PASSWORD"; // CHANGE IT String HOST_NAME = "http://YOUR_DOMAIN.com"; // CHANGE IT String PATH_NAME = "/products/arduino"; // CHANGE IT //String PATH_NAME = "/products/arduino.php"; // CHANGE IT String queryString = "temperature=26&humidity=70"; void setup() { Serial.begin(9600); WiFi.begin(WIFI_SSID, WIFI_PASSWORD); Serial.println("Connecting"); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.print("Connected to WiFi network with IP Address: "); Serial.println(WiFi.localIP()); HTTPClient http; http.begin(HOST_NAME + PATH_NAME); http.addHeader("Content-Type", "application/x-www-form-urlencoded"); int httpCode = http.POST(queryString); // httpCode will be negative on error if (httpCode > 0) { // file found at server if (httpCode == HTTP_CODE_OK) { String payload = http.getString(); Serial.println(payload); } else { // HTTP header has been send and Server response header has been handled Serial.printf("[HTTP] POST... code: %d\n", httpCode); } } else { Serial.printf("[HTTP] POST... failed, error: %s\n", http.errorToString(httpCode).c_str()); } http.end(); } void loop() { }

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!