Verwendung eines ESP32 als HTTP-Client, um Informationen über WiFi an einen entfernten Server zu senden
In diesem Tutorial werden wir erkunden, wie man den ESP32-Mikrocontroller als HTTP-Client verwendet, um Daten über WiFi an einen entfernten Server zu senden. Der ESP32 ist eine leistungsstarke Entwicklungsplatine, die WiFi- und Bluetooth-Funktionen kombiniert und sich ideal für IoT-Anwendungen eignet. Am Ende dieses Tutorials werden Sie in der Lage sein, HTTP-Anfragen mit benutzerdefinierten Parametern zu senden und Antworten von einem Server zu empfangen.
Wir werden die Arduino IDE zur Programmierung des ESP32 verwenden, und ich werde Sie durch die notwendigen Schritte führen, um Ihre Umgebung einzurichten. Für eine visuelle Anleitung empfehle ich, das zugehörige Video anzusehen (im Video bei 00:00).
Hardware erklärt
Die Hauptkomponente dieses Projekts ist der ESP32-Mikrocontroller, speziell das WROOM32-Modul. Dieses Modul verfügt über 38 Pins, die für verschiedene Eingabe-/Ausgabeoperationen verwendet werden können. Es arbeitet mit 3,3 Volt und umfasst integrierte WiFi- und Bluetooth-Funktionen. Der ESP32 ist vielseitig einsetzbar und kann dank seiner GPIO-Pins und Kommunikationsprotokolle in vielen Anwendungen verwendet werden.
Zusätzlich zum ESP32 benötigen Sie möglicherweise einen USB-zu-Seriell-Converter zum Programmieren und Debuggen. Das Modul enthält auch einen Spannungsregler, der sicherstellt, dass der Mikrocontroller eine stabile 3,3 V Versorgung aus einer höheren Spannungsquelle erhält. Insgesamt ist der ESP32 ein gut ausgestatteter Mikrocontroller, der sich für verschiedene Projekte eignet.
Datenblattdetails
| Hersteller | Espressif Systems |
|---|---|
| Teilnummer | ESP32-WROOM-32 |
| Logik/I/O-Spannung | 3,3 V |
| Versorgungsspannung | 5 V (max) |
| Ausgangsstrom (pro Kanal) | 12 mA |
| Spitzenstrom (pro Kanal) | 160 mA |
| PWM-Frequenzrichtlinien | 1 kHz |
| Eingangslogikschwellen | 0,3 * VDD(niedrig), 0,7 * VDD(hoc) |
| Spannungsabfall / RDS(on)/ Sättigung | 0,5 V |
| Thermische Grenzen | 125 °C |
| Paket | QFN |
| Hinweise / Varianten | Mehrere Blitzgrößen verfügbar |
- Stellen Sie sicher, dass die Spannungspegel korrekt sind (3,3 V), um eine Beschädigung des ESP32 zu vermeiden.
- Verwenden Sie geeignete Entkopplungskondensatoren in der Nähe der Stromanschlüsse für einen stabilen Betrieb.
- Implementieren Sie eine Wärmeableitung, wenn das Modul nahe seiner maximalen Strombelastung betrieben wird.
- Nutzen Sie das integrierte WiFi des ESP32 für eine einfache Netzwerkverbindung.
- Seien Sie vorsichtig mit den GPIO-Pin-Konfigurationen, um Kurzschlüsse zu vermeiden.
- Teste mit einfachen Skizzen, um die Funktionalität vor komplexen Integrationen zu bestätigen.
Verdrahtungsanweisungen
Um das ESP32 für dieses Projekt zu verdrahten, beginnen Sie damit, den Massepin des ESP32 mit der Masse Ihrer Stromversorgung zu verbinden. Verbinden Sie anschließend die 5V-Stromversorgung mit dem Vin- oder V5-Pin des ESP32, der den internen Spannungsregler speist und 3,3V an den Mikrocontroller liefert.
Für die HTTP-Client-Funktionalität stellen Sie sicher, dass Ihr ESP32 mit einem WLAN-Netzwerk verbunden ist. Sie müssen die entsprechenden Pins für alle zusätzlichen Komponenten anschließen, die Sie möglicherweise verwenden, wie Sensoren oder LEDs. Schließen Sie beispielsweise eine LED an GPIO-Pin 2 an, mit einem Widerstand in Reihe, um den Strom zu begrenzen. Der längere Bein (Anode) der LED sollte mit Pin 2 verbunden werden, während das kürzere Bein (Kathode) mit Masse verbunden wird.
Codebeispiele & Anleitung
Im bereitgestellten Codeausschnitt initialisieren wir den HTTP-Client und definieren wichtige Kennzeichen wiemainURL, die die URL enthält, an die wir die Anfrage senden, unduser, das Benutzerdaten enthält. Der Code richtet außerdem den ESP32 ein, um sich mit einem bestimmten WLAN-Netzwerk zu verbinden.
String mainURL ="http://ddas.cc/httpTest/?";
String user="user=ahmad22";Hier,mainURList der Endpoint, den wir anvisieren, währenduserhält den Benutzerparameter, der in der HTTP-Anfrage gesendet wird.
In dersetup()Funktion, wir beginnen die serielle Kommunikation und richten die WiFi-Verbindung ein. Wir bereiten auch die HTTP-Anfrage vor, indem wir eine Instanz des HTTP-Clients erstellen.
void setup() {
Serial.begin(115200);
WiFi.mode(WIFI_STA);
WiFiMulti.addAP("Robojax", "Your password");
}Dieser Abschnitt initialisiert den seriellen Monitor zur Fehlerbehebung und verbindet sich mit dem WiFi-Netzwerk. Die Anmeldedaten sind definiert in deraddAP()Methode.
In derloop()Funktion überprüfen wir eine erfolgreiche WiFi-Verbindung und fahren fort, die HTTP GET-Anfrage zu senden. Die Parameter umfassen die Benutzer- und Temperaturwerte.
if (http.begin(client, mainURL+user+"&temp="+temperature+"&type="+type)) {
int httpCode = http.GET();}Dieser Code erstellt die vollständige URL mit den Abfrageparametern und führt die GET-Anfrage aus. Bei Erfolg wird die Antwort des Servers abgerufen.
Demonstration / Was Sie erwarten können
Wenn der ESP32 eingeschaltet wird und das Programm läuft, sollte es sich mit dem angegebenen WiFi-Netzwerk verbinden und eine HTTP GET-Anfrage an den Server senden. Sie können die Ausgabe im Serial Monitor überwachen, wo Sie den HTTP-Statuscode und die Antwortpayload vom Server sehen werden. Häufige Probleme können falsche WiFi-Anmeldeinformationen oder ein unerreichbarer Server sein (im Video um 12:30).
Video-Zeiten
- 00:00 Start
- 00:53 Einführung
- 05:04 5V- und 3,3V-Pins
- 08:38 Funktionen erklärt
- 14:03 Pins auf dem Datenblatt
- 17:00 Blink Beispiel
- 19:14 Blink-Beispiel mit externem LED
- 21:00 HTTP-Client-Test
/*
* ESP32 HTTP Client example
* This example is part of Introduction to ESP32 WiFi, Bluetooth Microcontroller board
📚⬇️ Download and resource page https://robojax.com/RJT211
watch full video https://youtu.be/--Fj8QDlGuQ
*
* Updated/Written by Ahmad Shamshiri
* On August 25, 2019 in Ajax, Ontario, Canada
* Watch video instruction for this code:
* https://youtu.be/--Fj8QDlGuQ
*
*
Get this code and other Arduino codes from Robojax.com
Learn Arduino step by step in a structured course with all material, wiring diagrams, and libraries
all in one place.
If you found this tutorial helpful, please support me so I can continue creating
content like this.
or make a donation using PayPal http://robojax.com/L/?id=64
* * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.*
* This code has been downloaded from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>
#include <ESP8266HTTPClient.h>
#include <WiFiClient.h>
ESP8266WiFiMulti WiFiMulti;
String mainURL ="http://ddas.cc/httpTest/?";
String user="user=ahmad22";
float temperature=45.3;
char type='j';
void setup() {
Serial.begin(115200);
// Serial.setDebugOutput(true);
Serial.println();
Serial.println();
Serial.println();
for (uint8_t t = 4; t > 0; t--) {
Serial.printf("[SETUP] WAIT %d...\n", t);
Serial.flush();
delay(1000);
}
WiFi.mode(WIFI_STA);
WiFiMulti.addAP("Robojax", "YOur password");
}
void loop() {
// wait for WiFi connection
if ((WiFiMulti.run() == WL_CONNECTED)) {
WiFiClient client;
HTTPClient http;
Serial.print("[HTTP] begin...\n");
if (http.begin(client, mainURL+user+"&temp="+temperature+"&type="+type)) { // HTTP
Serial.print("[HTTP] GET...\n");
// start connection and send HTTP header
int httpCode = http.GET();
// httpCode will be negative on error
if (httpCode > 0) {
// HTTP header has been send and Server response header has been handled
Serial.printf("[HTTP] GET... code: %d\n", httpCode);
// file found at server
if (httpCode == HTTP_CODE_OK || httpCode == HTTP_CODE_MOVED_PERMANENTLY) {
String payload = http.getString();
Serial.println(payload);
}
} else {
Serial.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str());
}
http.end();
} else {
Serial.printf("[HTTP} Unable to connect\n");
}
}
delay(10000);
}
Dinge, die Sie vielleicht brauchen
-
AliExpressESP32-Kamera von AliExpress kaufen 2s.click.aliexpress.com
Ressourcen & Referenzen
-
DokumentationESP32 offizielle Dokumentationsseitedocs.espressif.com
Dateien📁
Datenblatt (pdf)
-
esp32_datasheet_en
esp32_datasheet_en.pdf0.94 MB