Table des matières:

Comment utiliser ESP8266 en tant que serveur Web : 5 étapes
Comment utiliser ESP8266 en tant que serveur Web : 5 étapes

Vidéo: Comment utiliser ESP8266 en tant que serveur Web : 5 étapes

Vidéo: Comment utiliser ESP8266 en tant que serveur Web : 5 étapes
Vidéo: #4 Utiliser l'ESP32 comme serveur web 2024, Novembre
Anonim
Comment utiliser ESP8266 comme serveur Web
Comment utiliser ESP8266 comme serveur Web

Bonjour, j'utilise actuellement Windows 10, NodeMCU 1.0 et voici la liste des logiciels que j'ai utilisés et les guides d'installation que j'ai suivis:

  • IDE Arduino
  • Cartes supplémentaires pour esp8266
  • Spiff

Bibliothèque utilisée:

Websocket

J'ai utilisé NodeMCU comme serveur pour servir un fichier HTML que j'ai créé à partir de ce tutoriel. Pour servir ce fichier, j'ai téléchargé le fichier sur le système de fichiers nodemcu à l'aide de Spiffs. Le fichier HTML envoie des données au nodemcu à l'aide de Websockets à imprimer sur le moniteur série pour cela. La communication bidirectionnelle rapide via les Websockets du serveur et du client a permis de l'utiliser comme télécommande. Sur les étapes suivantes, je vais expliquer comment fonctionne mon code

Fournitures

NodeMCU

Étape 1: Faites en sorte que cela fonctionne

Fais-le fonctionner
Fais-le fonctionner
Fais-le fonctionner
Fais-le fonctionner
Fais-le fonctionner
Fais-le fonctionner

Voici les étapes sur la façon dont cela fonctionne

  1. Téléchargez le fichier joint et ouvrez le fichier mousebot.ino
  2. Allez dans sketch> show sketch folder et créez un nouveau dossier nommé data
  3. Enregistrez le fichier html de ce tutoriel dans le dossier nommé. J'ai nommé le mien comme " Joystick"
  4. Assurez-vous que votre spiff est déjà fonctionnel en allant dans les outils et en voyant le "téléchargement de données de croquis esp8266"
  5. Téléchargez le fichier html sur nodemcu en cliquant sur "esp8266 sketch data upload"
  6. Après le téléchargement du fichier, téléchargez sur le nodemcu le fichier mousebot.ino en vous connectant à l'IDE arduino et en appuyant sur ctrl U

Étape 2: Comment fonctionne le code

Tout d'abord, nous incluons les bibliothèques que ce code utilisera

//pour permettre à l'ESP8266 de se connecter au WIFI

#include #include #include //Permet à l'ESP8266 d'agir en tant que serveur #include //permet la communication avec le serveur et le client (votre appareil connecté) #include #include //Pour ouvrir le fichier téléchargé sur le nodemcu #include

Définissez l'esp8266 en tant que serveur Web ouvert sur le port 80. Les ports sont les chemins par lesquels les données passeront. En tant que port de serveur, il enverra le fichier HTML au client (les appareils qui y sont connectés).

Ajoute une connexion Websocket utilisant le port 81 pour écouter les messages du client

Les websockets ont le paramètre num, WStype_t, payload et size. Le num détermine le numéro du client, la charge utile est le message qu'il envoie, la taille est la longueur du message et WStype_t est pour différents événements tels que

  • WStype_DISCONNECTED - lors de la déconnexion d'un client.
  • WStype_CONNECTED: - lorsqu'un client se connecte
  • WStype_TEXT - Données reçues du client

Selon le type d'événement, différentes actions sont effectuées et sont commentées ici

void webSocketEvent(uint8_t num, type WStype_t, uint8_t * charge utile, longueur size_t) {

switch (type) { case WStype_DISCONNECTED: Serial.printf("[%u] Déconnecté !\n", num); //imprime les données sur le moniteur série break; case WStype_CONNECTED: { IPAddress ip = webSocket.remoteIP(num); // obtient l'IP du client Serial.printf("[%u] Connecté depuis %d.%d.%d.%d url: %s\n", num, ip[0], ip[1], ip[2], ip[3], charge utile); webSocket.sendTXT(num, "Connecté"); //envoie "connecté" à la console du navigateur } break; case WStype_TEXT: Serial.printf("[%u] Data: %s\n", num, payload); //imprime le numéro de client dans %u et les données reçues sous forme de chaînes dans %s\n break;}}

Étape 3: Définir le NODEMCU en tant que serveur

définit le ssid et le mot de passe que vous utiliserez pour vous y connecter plus tard

const char *ssid = "Essayer";

const char *mot de passe = "12345678";

lors de la configuration, nous spécifions la vitesse à laquelle notre nodemcu et pc communiqueront, qui est de 115200.

configuration vide (void){

Serial.begin(115200); Serial.print("\n");

mis à vrai aussi voir la sortie de diagnostic wifi sur le terminal Serila

Serial.setDebugOutput(true);

initialiser le système de fichiers

SPIFFS.begin();

Configurez le nodemcu en tant que point d'accès avec ssid et mot de passe defiend plus tôt et imprime l'adresse IP du nodemcu avec lequel vous vous connecterez plus tôt. par défaut c'est 192.168.4.1

Serial.print("Configuration du point d'accès…");

WiFi.mode(WIFI_AP); WiFi.softAP(ssid, mot de passe); Adresse IP monIP = WiFi.softAPIP(); Serial.print("Adresse IP AP: "); Serial.println(monIP);

Initialiser le websocket sur le nodemcu, qui est pur serveur

webSocket.begin();

Appelle la fonction webSocketEvent lorsqu'un événement websocket se produit.

webSocket.onEvent(webSocketEvent);

Pour le débogage, imprimez " Serveur WebSocket démarré" sur une nouvelle ligne. Il s'agit de déterminer la ligne de code que le nodemcu traite

Serial.println("Serveur WebSocket démarré.");

lorsqu'un client visite 192.168.4.1, il appellera la fonction handleFileRead et enverra avec lui l'URI du serveur de paramètres qui dans ce cas est notre information nodemcu. La fonction handleFileRead servira le fichier html du système de fichiers nodemcu

server.onNotFound((){

if(!handleFileRead(server.uri()))

s'il ne peut pas être trouvé, il affichera "FileNotFound"

server.send(404, "text/plain", "FileNotFound");

});

Démarre le serveur et le serveur HTTP d'impression démarre.

serveur.begin(); Serial.println("Serveur HTTP démarré");

Sur notre boucle void, nous permettons au serveur de gérer en continu le client et ses communications Websockets comme suit:

boucle vide (vide){

server.handleClient(); webSocket.loop();}

Étape 4: Charger le fichier HTML

nous utiliserons une fonction nommée handleFileRead pour ouvrir et le fichier html du système de fichiers nodemcu. il renverra un booléen de valeur pour déterminer s'il est chargé ou non.

Lorsque "192.168.4.1/" est ouvert par le client, nous définissons le chemin du fichier sur "/Joystick.html, le nom de notre fichier dans le dossier de données

bool handleFileRead(String path){

Serial.println("handleFileRead: " + chemin); if(path.endsWith("/")) path += "Joystick.html"; if(SPIFFS.exists(chemin)){ Fichier fichier = SPIFFS.open(chemin, "r"); size_t envoyé = server.streamFile(fichier, "text/html"); fichier.close(); renvoie vrai; } renvoie faux; }

Vérifiez si le chemin du fichier "/Joystick.html" existe

if(SPIFFS.existe(chemin)){

S'il existe, ouvrez le chemin dans le but de le lire qui est spécifié par le "r". Allez ici pour plus d'objectifs.

Fichier fichier = SPIFFS.open(chemin, "r");

Envoie le fichier au serveur comme avec un type de contenu "text/html"

size_t envoyé = server.streamFile(fichier, "text/html");

fermer le fichier

fichier.close();

la fonction handleFileRead renvoie true

renvoie vrai;}

si le chemin du fichier n'existe pas, la fonction handleFileRead renvoie false

renvoie vrai; }

Étape 5: Essayez-le

Image
Image

Connectez-vous au nodeMCU et accédez à "192.168.4.1" et essayez-le !:)

Conseillé: