Utilizzare un ESP32 come Client HTTP per inviare informazioni via WiFi a un server remoto
In questo tutorial esploreremo come utilizzare il microcontrollore ESP32 come client HTTP per inviare dati a un server remoto tramite WiFi. L'ESP32 è una potente scheda di sviluppo che combina capacità WiFi e Bluetooth, rendendola ideale per applicazioni IoT. Alla fine di questo tutorial, sarai in grado di inviare richieste HTTP con parametri definiti dall'utente e ricevere risposte da un server.
Utilizzeremo l'IDE di Arduino per programmare l'ESP32 e ti guiderò attraverso i passaggi necessari per impostare il tuo ambiente. Per una passeggiata visiva, ti consiglio di dare un'occhiata al video associato (nel video a :00).
Hardware spiegato
Il componente principale di questo progetto è il microcontrollore ESP32, specificamente il modulo WROOM32. Questo modulo dispone di 38 pin che possono essere utilizzati per varie operazioni di input/output. Funziona a 3,3 volt e include capacità WiFi e Bluetooth integrate. L'ESP32 è versatile e può essere utilizzato in molte applicazioni, grazie ai suoi pin GPIO e ai protocolli di comunicazione.
Oltre all'ESP32, potresti avere bisogno di un convertitore USB-seriale per la programmazione e il debugging. Il modulo contiene anche un regolatore di tensione, che garantisce che il microcontrollore riceva un'alimentazione stabile di 3.3V da una sorgente di tensione più alta. In generale, l'ESP32 è un microcontrollore ben equipaggiato adatto a vari progetti.
Dettagli della scheda tecnica
| Produttore | Espressif Systems |
|---|---|
| Numero di parte | ESP32-WROOM-32 |
| Tensione logica/IO | 3,3 V |
| Tensione di alimentazione | 5 V (max) |
| Corrente di uscita (per canale) | 12 mA |
| Corrente di picco (per canale) | 160 mA |
| Guida sulla frequenza PWM | 1 kHz |
| Soglie logiche di ingresso | 0,3 * VDD(basso), 0,7 * VDD(alto) |
| Caduta di tensione / RDS(on)/ saturazione | 0,5 V |
| Limiti termici | 125 °C |
| Pacchetto | QFN |
| Note / varianti | Disponibile in varie dimensioni di flash. |
- Assicurati di avere livelli di tensione corretti (3.3V) per evitare di danneggiare l'ESP32.
- Utilizzare condensatori di accoppiamento appropriati vicino ai pin di alimentazione per un funzionamento stabile.
- Implementa il raffreddamento se il modulo opera vicino ai suoi valori nominali di corrente massima.
- Utilizza il WiFi integrato dell'ESP32 per una facile connettività di rete.
- Fai attenzione alle configurazioni dei pin GPIO per prevenire i cortocircuiti.
- Testa con schizzi semplici per confermare la funzionalità prima di integrazioni complesse.
Istruzioni di cablaggio
Per cablare l'ESP32 per questo progetto, inizia collegando il pin di terra dell'ESP32 alla terra della tua alimentazione. Successivamente, collega l'alimentazione 5V al pin Vin o V5 sull'ESP32, che alimenterà il regolatore di tensione interno e fornirà 3,3V al microcontrollore.
Per la funzionalità del client HTTP, assicurati che il tuo ESP32 sia connesso a una rete WiFi. Dovrai collegare i pin appropriati per eventuali componenti aggiuntivi che potresti utilizzare, come sensori o LED. Ad esempio, collega un LED al pin GPIO 2, con una resistenza in serie per limitare la corrente. Il gambo più lungo (anodo) del LED dovrebbe collegarsi al pin 2, mentre il gambo più corto (catodo) si collega a terra.
Esempi di codice e guida passo-passo
Nel frammento di codice fornito, inizializziamo il client HTTP e definiamo identificatori chiave comemainURL, che contiene l'URL a cui stiamo inviando la richiesta, euser, che contiene informazioni sugli utenti. Il codice configura anche l'ESP32 per connettersi a una rete WiFi specificata.
String mainURL ="http://ddas.cc/httpTest/?";
String user="user=ahmad22";Qui,mainURLè il punto finale che stiamo mirando, mentreusercontiene il parametro utente che verrà inviato nella richiesta HTTP.
Nellasetup()funzione, iniziamo la comunicazione seriale e impostiamo la connessione WiFi. Prepariamo anche la richiesta HTTP creando un'istanza del client HTTP.
void setup() {
Serial.begin(115200);
WiFi.mode(WIFI_STA);
WiFiMulti.addAP("Robojax", "Your password");
}Questa sezione inizializza il monitor seriale per il debug e si connette alla rete WiFi. Le credenziali sono definite neladdAP()metodo.
Nellaloop()funzione, verifichiamo una connessione WiFi riuscita e procediamo a inviare la richiesta HTTP GET. I parametri includono l'utente e i valori di temperatura.
if (http.begin(client, mainURL+user+"&temp="+temperature+"&type="+type)) {
int httpCode = http.GET();}Questo codice costruisce l'URL completo con i parametri di query ed esegue la richiesta GET. Se ha successo, recupera la risposta del server.
Dimostrazione / Cosa Aspettarsi
Quando l'ESP32 è acceso e il programma è in esecuzione, dovrebbe connettersi alla rete WiFi specificata e inviare una richiesta HTTP GET al server. Puoi monitorare l'output nel Monitor Seriale, dove vedrai il codice di stato HTTP e il payload della risposta dal server. I problemi comuni potrebbero includere credenziali WiFi errate o un server non raggiungibile (nel video alle 12:30).
Timestamp video
- 00:00 Inizio
- 00:53 Introduzione
- 05:04 pin 5V e 3.3V
- 08:38 Caratteristiche spiegate
- 14:03 Pin su Datasheet
- 17:00 Esempio Blink
- 19:14 Esempio di lampeggio con LED esterno
- 21:00 Test del Client HTTP
/*
* 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);
}
Cose di cui potresti avere bisogno
-
AliExpressAcquista la Camera ESP32 da AliExpress 2s.click.aliexpress.com
Risorse e riferimenti
-
DocumentazionePagina ufficiale della documentazione ESP32docs.espressif.com
File📁
Scheda tecnica (pdf)
-
esp32_datasheet_en
esp32_datasheet_en.pdf0.94 MB