Serveur Web ESP32 : contrôle du moteur pas à pas

Serveur Web ESP32 : contrôle du moteur pas à pas

Dans ce tutoriel, vous apprendrez à créer un serveur web avec l’ESP32 pour contrôler à distance un moteur pas à pas. Le serveur Web affiche une page Web avec un formulaire HTML qui vous permet de sélectionner la direction et le nombre de pas que vous souhaitez que le moteur se déplace.

Contrôlez le moteur pas à pas avec le formulaire HTML du serveur Web ESP32 Arduino IDE

Table des matières

  1. Contrôler le moteur pas à pas avec le formulaire HTML (configuration minimale)
  2. Contrôlez le moteur pas à pas avec HTML Form + CSS (en utilisant SPIFFS)
  3. Contrôlez le moteur pas à pas avec WebSockets (HTML, CSS, JavaScript)

Dans l’image ci-dessous, vous pouvez voir les trois projets de serveur Web que nous allons construire (le numéro 3 est dans cet article).

Contrôlez le moteur pas à pas avec le formulaire HTML du serveur Web ESP32 Arduino IDE

Il s’agit d’un didacticiel didactique où vous en apprendrez plus sur la création de pages Web et l’interaction entre l’ESP32 et le client. Nous allons vous montrer comment créer la page Web étape par étape avec HTML et envoyer les résultats du formulaire à l’ESP32 via HTTP POST pour contrôler le moteur pas à pas.

Plus tard, vous ajouterez du CSS pour styliser la page Web afin d’améliorer son apparence.

Enfin, nous vous montrerons comment utiliser Websockets pour une communication bidirectionnelle entre le serveur et le client. Cela nous permettra de savoir sur l’interface web si le moteur tourne ou s’est arrêté. Cette section ajoutera du JavaScript pour gérer la communication WebSocket et ajoutera des animations sympas à la page Web.

Les articles suivants peuvent être utiles pour comprendre les concepts abordés tout au long de ce didacticiel :

Conditions préalables

Avant de poursuivre le didacticiel, assurez-vous de vérifier les prérequis suivants.

1) Pièces requises

Pour suivre ce tutoriel, vous avez besoin des pièces suivantes :

Vous pouvez utiliser les liens précédents ou accéder directement à MakerAdvisor.com/tools pour trouver toutes les pièces pour vos projets au meilleur prix !

Serveur Web ESP32 controle du moteur pas a pas

2) Complément pour les cartes Arduino IDE et ESP32

Nous allons programmer l’ESP32 à l’aide de l’IDE Arduino. Donc, vous devez avoir installé le module complémentaire ESP32. Suivez le tutoriel suivant si vous ne l’avez pas déjà fait :

Si vous souhaitez utiliser VS Code avec l’extension PlatformIO, suivez plutôt le tutoriel suivant pour apprendre à programmer l’ESP32 :

3) Plugin de téléchargement de système de fichiers

Pour télécharger les fichiers HTML, CSS et JavaScript nécessaires à la construction de ce projet sur le système de fichiers ESP32 (SPIFFS), nous utiliserons un plug-in pour Arduino IDE : SPIFFS Filesystem Uploader. Suivez le tutoriel suivant pour installer le plugin filesystem uploader si vous ne l’avez pas déjà fait :

Si vous utilisez VS Code avec l’extension PlatformIO, lisez le didacticiel suivant pour savoir comment télécharger des fichiers sur le système de fichiers :

4) Bibliothèques

Pour compiler ce projet, vous devez installer les bibliothèques suivantes :

Les bibliothèques ESPAsyncWebServer et AsynTCP ne peuvent pas être installées via le gestionnaire de bibliothèque Arduino. Vous devez cliquer sur les liens précédents pour télécharger les fichiers de la bibliothèque. Ensuite, dans votre IDE Arduino, allez dans Sketch> Inclure la bibliothèque> Ajouter une bibliothèque .zip et sélectionnez les bibliothèques que vous venez de télécharger.

Installation de bibliothèques (VS Code + PlatformIO)

Si vous programmez l’ESP32 à l’aide de PlatformIO, vous devez ajouter les lignes suivantes au fichier platformio.ini pour inclure les bibliothèques (modifiez également la vitesse du moniteur série à 115200) :

monitor_speed=115200
lib_deps = ESP Async WebServer
    arduino-libraries/Arduino_JSON @ 0.1.0
    arduino-libraries/Stepper @ ^1.1.3

5) Diagramme schématique

Le diagramme schématique suivant montre les connexions entre le moteur pas à pas et l’ESP32.

ESP32 avec moteur pas à pas 28BYJ-48 et schéma de câblage ULN2003A

Remarque : Vous devez alimenter le pilote de moteur à l’aide d’une alimentation externe de 5 V.

Pilote de moteur ESP32
EN 1 GPIO 19
EN 2 GPIO 18
IN3 GPIO 5
IN4 GPIO 17

1. Contrôlez le moteur pas à pas avec le formulaire HTML

Dans cette section, vous apprendrez à créer un formulaire HTML simple pour contrôler le moteur pas à pas.

Formulaire HTML du serveur Web de contrôle de moteur pas à pas ESP32 ESP8266

Voici comment cela fonctionne:

  • Sur la page Web, vous pouvez choisir si vous voulez que le moteur tourne dans le sens des aiguilles d’une montre ou dans le sens inverse des aiguilles d’une montre. Ce sont des boutons radio. Les boutons radio sont généralement affichés sous forme de petits cercles, qui sont remplis ou mis en surbrillance lorsqu’ils sont sélectionnés. Vous ne pouvez sélectionner qu’un seul bouton radio dans un groupe donné à la fois.
  • Il existe un champ de saisie de type nombre dans lequel l’utilisateur peut saisir un nombre, dans ce cas, le nombre d’étapes.
  • Enfin, un bouton appelé GO! de type submit envoie les données au serveur via une requête HTTP POST.

Formulaire HTML et champs de saisie

Dans cette section, nous allons examiner le code HTML pour créer le formulaire.

En HTML, la balise

est utilisée pour créer un formulaire HTML afin de collecter les entrées de l’utilisateur. L’entrée utilisateur est ensuite envoyée au serveur (ESP32 ou ESP8266) pour traitement. En fonction des valeurs recueillies sur le formulaire, votre carte ESP peut effectuer différentes actions – dans ce cas, faites tourner le moteur d’un nombre déterminé de pas.

Voici le code HTML que nous utiliserons pour ce projet.

<!DOCTYPE html>
<html>
<head>
  <title>Stepper Motor</title>
  <meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
  <h1>Stepper Motor Control</h1>
    <form action="/" method="POST">

      <input type="radio" name="direction" value="CW" checked>
      <label for="CW">Clockwise</label>

      <input type="radio" name="direction" value="CCW">
      <label for="CW">Counterclockwise</label><br><br><br>

      <label for="steps">Number of steps:</label>
      <input type="number" name="steps">

      <input type="submit" value="GO!">

    </form>
</body>
</html>

Un formulaire HTML contient différents éléments de formulaire. Tous les éléments du formulaire sont inclus dans la balise

. Il contient des contrôles (boutons radio et champ de saisie numérique) et des étiquettes pour ces contrôles (