Code de recherche

Utiliser un ESP32 comme client HTTP pour envoyer des informations via WiFi à un serveur distant.

Utiliser un ESP32 comme client HTTP pour envoyer des informations via WiFi à un serveur distant.

Dans ce tutoriel, nous allons explorer comment utiliser le microcontrôleur ESP32 comme client HTTP pour envoyer des données à un serveur distant via WiFi. L'ESP32 est une carte de développement puissante qui combine des capacités WiFi et Bluetooth, ce qui la rend idéale pour les applications IoT. À la fin de ce tutoriel, vous serez en mesure d'envoyer des requêtes HTTP avec des paramètres définis par l'utilisateur et de recevoir des réponses d'un serveur.

ESP32-38pin-1

Nous allons utiliser l'IDE Arduino pour programmer l'ESP32, et je vais vous guider à travers les étapes nécessaires pour configurer votre environnement. Pour un guide visuel, je vous recommande de consulter la vidéo associée (dans la vidéo à :00).

Matériel expliqué

Le composant principal de ce projet est le microcontrôleur ESP32, spécifiquement le module WROOM32. Ce module dispose de 38 broches pouvant être utilisées pour diverses opérations d'entrée/sortie. Il fonctionne à 3,3 volts et inclut des capacités WiFi et Bluetooth intégrées. L'ESP32 est polyvalent et peut être utilisé dans de nombreuses applications, grâce à ses broches GPIO et ses protocoles de communication.

ESP32-3

En plus de l'ESP32, vous pourriez avoir besoin d'un convertisseur USB-vers-série pour la programmation et le débogage. Le module contient également un régulateur de tension, qui garantit que le microcontrôleur reçoit une alimentation stable de 3,3V d'une source de tension plus élevée. Dans l'ensemble, l'ESP32 est un microcontrôleur bien équipé, adapté à divers projets.

Détails de la fiche technique

Fabricant Espressif Systems
Numéro de pièce ESP32-WROOM-32
Tension Logic/IO 3,3 V
Tension d'alimentation 5 V (max)
Courant de sortie (par canal) 12 mA
Courant de pointe (par canal) 160 mA
Directives sur la fréquence PWM 1 kHz
Seuils de logique d'entrée 0,3 * VDD(bas), 0,7 * VDD(élevé)
Chute de tension / RDS(on)/ saturation 0,5 V
Limites thermiques 125 °C
Colis QFN
Notes / variantes Plusieurs tailles de flash disponibles
ESP32-2
  • Assurez-vous de niveaux de tension corrects (3,3V) pour éviter d'endommager l'ESP32.
  • Utilisez des condensateurs de découplage appropriés près des broches d'alimentation pour une opération stable.
  • Implémentez un dissipateur de chaleur si le module fonctionne près de ses valeurs de courant maximal.
  • Utilisez le WiFi intégré de l'ESP32 pour une connectivité réseau facile.
  • Soyez prudent avec les configurations des broches GPIO pour éviter les courts-circuits.
  • Testez avec des croquis simples pour confirmer la fonctionnalité avant des intégrations complexes.

Instructions de câblage

Pour câbler l'ESP32 pour ce projet, commencez par connecter la broche de mise à la terre de l'ESP32 à la mise à la terre de votre alimentation. Ensuite, connectez l'alimentation de 5V à la broche Vin ou V5 de l'ESP32, ce qui alimentera le régulateur de tension interne et fournira 3,3V au microcontrôleur.

Pour la fonctionnalité de client HTTP, assurez-vous que votre ESP32 est connecté à un réseau WiFi. Vous devrez connecter les broches appropriées pour tout composant supplémentaire que vous pourriez utiliser, comme des capteurs ou des LED. Par exemple, connectez une LED à la broche GPIO 2, avec une résistance en série pour limiter le courant. La jambe la plus longue (anode) de la LED doit être connectée à la broche 2, tandis que la jambe la plus courte (cathode) se connecte à la masse.

Exemples de code et guide étape par étape

Dans l'extrait de code fourni, nous initialisons le client HTTP et définissons des identifiants clés tels quemainURL, qui contient l'URL à laquelle nous envoyons la requête, etuser, qui contient des informations utilisateur. Le code configure également l'ESP32 pour se connecter à un réseau WiFi spécifié.

String mainURL ="http://ddas.cc/httpTest/?";
String user="user=ahmad22";

Ici,mainURLest le point de terminaison que nous visons, tandis queusercontient le paramètre utilisateur qui sera envoyé dans la requête HTTP.

Dans lesetup()fonction, nous commençons la communication série et établissons la connexion WiFi. Nous préparons également la requête HTTP en créant une instance du client HTTP.

void setup() {
  Serial.begin(115200);
  WiFi.mode(WIFI_STA);
  WiFiMulti.addAP("Robojax", "Your password");
}

Cette section initialise le moniteur série pour le débogage et se connecte au réseau WiFi. Les identifiants sont définis dans leaddAP()méthode.

Dans leloop()fonction, nous vérifions une connexion WiFi réussie et procédons à l'envoi de la requête HTTP GET. Les paramètres incluent les valeurs de l'utilisateur et de la température.

if (http.begin(client, mainURL+user+"&temp="+temperature+"&type="+type)) {
  int httpCode = http.GET();}

Ce code construit l'URL complète avec les paramètres de requête et exécute la requête GET. Si elle est réussie, elle récupère la réponse du serveur.

Démonstration / À quoi s'attendre

Lorsque l'ESP32 est alimenté et que le programme s'exécute, il doit se connecter au réseau WiFi spécifié et envoyer une requête HTTP GET au serveur. Vous pouvez surveiller la sortie dans le Moniteur Série, où vous verrez le code d'état HTTP et le chargement utile de la réponse du serveur. Les problèmes courants peuvent inclure des identifiants WiFi incorrects ou un serveur inaccessible (dans la vidéo à 12:30).

Horodatage vidéo

  • 00:00 Début
  • 00:53 Introduction
  • 05:04 broches 5V et 3,3V
  • 08:38 Caractéristiques expliquées
  • 14:03 Épingles sur la fiche technique
  • 17:00 Exemple de clignotement
  • 19:14 Exemples de clignotement avec LED externe
  • 21:00 Test du Client HTTP

Images

ESP32-1
ESP32-1
ESP32-2
ESP32-2
ESP32-3
ESP32-3
ESP32-38pin-1
ESP32-38pin-1
ESP32-38pin-2
ESP32-38pin-2
241-ESP32 HTTP Client code example
Langue: C++
/*
 * 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);
}

Ce dont vous pourriez avoir besoin

Ressources et références

Fichiers📁

Fiche technique (pdf)