Ad Code

Comment contrôler l'ESP8266 via Internet : Guide étape par étape

 Avec ce guide, vous êtes prêt à contrôler vos appareils via Internet avec l'ESP8266. Explorez cette nouvelle dimension de l'IoT et amusez-vous bien !


Dans ce projet, je vais vous montrer comment contrôler l'ESP8266 via Internet, ce qui vous permettra de prendre le contrôle de vos appareils depuis n'importe où dans le monde. Vous avez peut-être déjà vu comment contrôler un LED avec l'ESP8266 en utilisant le WiFi, mais cette fois-ci, nous allons le faire à travers Internet !

Aperçu

L'ESP8266 WiFi Module est souvent utilisé pour ajouter la connectivité Internet à nos projets DIY, mais nous n'avons pas encore pleinement exploité ses capacités. Ce projet nous permettra de créer un véritable projet IoT (Internet des Objets) en contrôlant l'ESP8266 via Internet.

Différences avec le projet précédent

Dans le projet précédent, nous avons contrôlé l'ESP8266 via le réseau WiFi local, mais cette fois, nous allons le contrôler depuis n'importe où dans le monde avec une connexion Internet. De plus, dans ce projet, nous allons charger le code directement dans le ROM de l'ESP8266, ce qui élimine la nécessité d'utiliser le firmware AT Commands.

Schéma de câblage

Le schéma de câblage est assez simple. Nous avons besoin d'un Arduino UNO comme convertisseur USB vers série, d'un ESP8266 (ESP-01), d'un interrupteur à glissière, d'un bouton poussoir, de résistances et d'une LED. Le schéma exact est disponible dans le projet "Getting Started with ESP8266 and Arduino".

Code

Le code que nous allons téléverser dans l'ESP8266 mettra en place une connexion WiFi et créera une page HTML simple que nous pourrons accéder via l'adresse IP de l'ESP8266.

cpp
#include <ESP8266WiFi.h> #include <WiFiClient.h> // Remplacez les valeurs suivantes par vos propres informations Wi-Fi const char* ssid = "VotreSSID"; const char* password = "VotreMotDePasse"; // Remplacez les valeurs suivantes par les informations de votre serveur const char* serverAddress = "adresse_du_serveur"; const int serverPort = 80; void setup() { Serial.begin(115200); delay(10); // Se connecter au réseau Wi-Fi Serial.println(); Serial.println(); Serial.print("Connexion au réseau Wi-Fi: "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connecté"); Serial.println("Adresse IP: "); Serial.println(WiFi.localIP()); } void loop() { // Établir une connexion TCP avec le serveur WiFiClient client; if (!client.connect(serverAddress, serverPort)) { Serial.println("Échec de la connexion au serveur"); return; } // Envoyer des données au serveur String data = "Donnees_a_envoyer"; Serial.print("Envoi des données au serveur: "); Serial.println(data); client.print("GET /sendData?"); client.print("data="); client.print(data); client.println(" HTTP/1.1"); client.print("Host: "); client.println(serverAddress); client.println("Connection: close"); client.println(); delay(5000); // Attendre 5 secondes avant d'envoyer la prochaine série de données }

Assurez-vous de remplacer "VotreSSID", "VotreMotDePasse", "adresse_du_serveur" et "Donnees_a_envoyer" par vos propres informations.

xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="16dp"> <TextView android:id="@+id/textViewStatus" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="État de la connexion:" android:textSize="18sp" android:textStyle="bold" /> <TextView android:id="@+id/textViewConnectionStatus" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/textViewStatus" android:text="Non connecté" android:textSize="16sp" android:layout_marginTop="8dp" /> <Button android:id="@+id/buttonConnect" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/textViewConnectionStatus" android:layout_marginTop="16dp" android:text="Connecter" /> <Button android:id="@+id/buttonDisconnect" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/buttonConnect" android:layout_marginTop="8dp" android:text="Déconnecter" android:visibility="gone" /> <EditText android:id="@+id/editTextData" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/buttonDisconnect" android:layout_marginTop="16dp" android:hint="Données à envoyer" android:inputType="text" /> <Button android:id="@+id/buttonSendData" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/editTextData" android:layout_marginTop="8dp" android:text="Envoyer" /> </RelativeLayout>

Cette interface comprend :

  • Un TextView pour afficher l'état de la connexion.
  • Deux boutons : un pour se connecter et un pour se déconnecter.
  • Un EditText pour saisir les données à envoyer.
  • Un bouton pour envoyer les données.

Fonctionnement

Après avoir téléversé le code, nous pourrons accéder à la page HTML à partir de n'importe quel navigateur Web connecté au même réseau WiFi que l'ESP8266. Nous pourrons contrôler la LED en cliquant sur des liens sur cette page.

Contrôle via Internet

Maintenant, la partie délicate est de contrôler l'ESP8266 via Internet. Nous utiliserons le transfert de port (Port Forwarding) dans ce projet. Cela implique de configurer votre routeur pour rediriger les requêtes Internet vers l'ESP8266. Une fois cette configuration terminée, vous pourrez contrôler l'ESP8266 depuis n'importe où dans le monde en utilisant l'adresse IP publique de votre routeur.

Conclusion

Bien que le transfert de port présente des risques de sécurité et que de nombreux FAI (Fournisseurs d'Accès à Internet) ne le permettent pas, cela reste une méthode populaire pour le contrôle à distance. Dans le prochain projet, je vous montrerai une alternative plus sécurisée en utilisant des services dédiés comme ThingSpeak ou aREST.

#ESP8266 #IoT #Arduino #contrôleàdistance #tutoriel

Enregistrer un commentaire

0 Commentaires

Close Menu