Connectez votre ESP8266 à n'importe quel réseau Wi-Fi disponible
L' ESP8266 est un microcontrôleur développé par Espressif Systems . Connu comme module Wi-Fi , ce microcontrôleur permet de réaliser diverses applications liées au Wi-Fi, notamment dans la domotique. Disponibles en de nombreux modèles aux prix et fonctionnalités variés, les modules ESP8266 sont tous extrêmement utiles dans l' IoT ).
Quelle que soit l' IoT que vous avez développée, il existe deux façons de connecter votre ESP8266 au cloud. Premièrement, vous pouvez saisir vos identifiants Wi-Fi dans le firmware de l'ESP8266 pour établir la connexion et commencer à envoyer des données. Deuxièmement, et nous allons détailler cette méthode ci-dessous, vous pouvez intégrer votre propre point d'accès à la carte, en créant un firmware universel qui établira une connexion à n'importe quel réseau disponible d'une simple pression sur un bouton.
Exigences
- Module ESP8266
- Arduino IDE 1.8.2 ou version ultérieure
- Bibliothèque ConfigManager
- Bibliothèque PubSubClient
- Compte Ubidots
Étape 1. Configuration matérielle
Remarque : L' Ubidots a apporté quelques modifications à la bibliothèque ConfigManager afin d'implémenter une routine qui lance le mode AP en appuyant simplement sur un bouton de réinitialisation
Selon le module ESP8266 choisi, il peut être nécessaire d'assigner la broche de réinitialisation à l'aide de cette version de la bibliothèque . Par défaut, le bouton est assigné à la broche 5 ; si vous utilisez un NodeMCU , vous devez le connecter à la D1 .
Étape 2. Configurez l'IDE Arduino avec votre appareil
Avant d'utiliser un ESP8266 , vous devez installer la carte dans l'IDE Arduino. Suivez les étapes ci-dessous pour compiler la carte.
Si vous ne l'avez pas déjà fait, commencez par télécharger l' IDE Arduino .
- Ouvrez l'IDE Arduino. Sélectionnez Fichier -> Préférences et saisissez l'URL sous le URL supplémentaires du gestionnaire de cartes . Vous pouvez ajouter plusieurs URL, en les séparant par des virgules.
http://arduino.esp8266.com/stable/package_esp8266com_index.json
REMARQUE : Si vous utilisez un Mac , les menus déroulants Arduino et Fichier diffèrent de ceux disponibles pour les utilisateurs Windows. Vous devrez également installer le pilote pour téléverser le firmware sur votre NodeMCU.
2. Ouvrez le Gestionnaire de cartes via Outils -> Carte -> Gestionnaire de cartes et installez la plateforme ESP8266. Pour trouver le périphérique correspondant, saisissez « ESP8266 » dans la barre de recherche.
3. Sélectionnez le module ESP8266 que vous utilisez. Dans cet exemple, nous avons choisi le NodeMCU 1.0 (module ESP-12) . Pour sélectionner la carte, allez dans Outils > Carte > Sélectionner la carte .
De plus, pour communiquer avec le NodeMCU, il faudra également sélectionner le port COM. Allez dans Outils -> Port et sélectionnez le port approprié pour votre appareil.
Pour que tout fonctionne rapidement et sans problème, assurons-nous que la vitesse de chargement est optimisée à 115 200 bits/s. Allez dans Outils -> Vitesse de chargement -> 115 200 bits/s.
4. Rendez-vous sur GitHub et téléchargez la bibliothèque ConfigManager . Cliquez sur le bouton vert intitulé « Cloner ou télécharger » et sélectionnez « Télécharger le fichier ZIP ».
5. Maintenant, retournez dans l'IDE Arduino et cliquez sur Croquis -> Inclure une bibliothèque -> Ajouter une bibliothèque .ZIP .
6. Sélectionnez le fichier .ZIP de ConfigManager , puis cliquez sur « Accepter » ou « Choisir ».
En cas de succès, le message suivant s'affichera dans l'IDE Arduino : « Bibliothèque ajoutée à votre bibliothèque. Consultez le menu « Inclure la bibliothèque » . »
7. Ensuite, accédez à Sketch/Programme -> Inclure une bibliothèque -> Gestionnaire de bibliothèques et installez la PubSubClient . Pour trouver la bibliothèque appropriée, saisissez « PubSubClient » dans la barre de recherche.
8. Maintenant, redémarrez l'IDE Arduino avant de téléverser.
9. Une fois la plateforme ESP8266 et les bibliothèques requises installées, installez l' outil de téléversement de fichiers Arduino ESP8266 . Suivez toutes les étapes d'installation et revenez à ce guide.
10. Une fois votre programme de chargement installé, créez un nouveau programme et enregistrez-le. Notre exemple s'appelle AP_ESP8266 :
11. Ensuite, allez dans le répertoire du croquis et créez un nouveau dossier appelé data .
12. Une fois le répertoire créé, téléchargez ce fichier HTML et joignez-le au répertoire. Ce fichier sera utilisé dans le système de fichiers.
13. Ensuite, nous devons transférer le fichier vers le système de fichiers flash de l'ESP8266. Pour commencer, assurez-vous d'avoir sélectionné un port de la carte et fermé le moniteur série .
14. Sélectionnez Outils > Téléchargement de données de croquis ESP8266 pour commencer le téléchargement de fichiers vers le système de fichiers flash ESP8266.
Une fois terminé, la barre d'état de l'IDE devrait afficher « Image SPIFFS téléchargée » .
15. Collez maintenant le code ci-dessous dans l' IDE Arduino . Une fois collé, attribuez-lui les noms de périphérique et de variable souhaités, ainsi que votre Ubidots . Si vous ne connaissez pas votre Ubidots , vous trouverez ici comment en obtenir un .
Copiez et collez le code ci-dessous dans l'IDE Arduino, en incluant les paramètres spécifiques à votre appareil et à vos variables.
#inclure<ESP8266WiFi.h> #inclure<ConfigManager.h> #inclure<PubSubClient.h> /******* Définition des constantes **********/ namespace { const char * AP_NAME = " Point d'accèsUbidots "; // Nom du point d'accès const char * MQTT_SERVER = "ubidots"; const char * TOKEN = "..."; // Jeton Ubidots const char * DEVICE_LABEL = "my-device"; // Étiquette du périphérique const char * VARIABLE_LABEL = "my-variable"; // Étiquette de la variable int SENSOR = A0; } char topic[150]; char payload[50]; String clientMac = ""; unsigned char mac[6]; struct Config { char name[20]; bool enabled; int8 hour; } config; /******* Initialisation d'une instance globale **********/ WiFiClient espClient; PubSubClient client(espClient); ConfigManager configManager; /***************Fonctions auxiliaires ********************/ void callback(char* topic, byte* payload, unsigned int length){ } void reconnect() { while (!client.connected()){ Serial.print("Tentative de connexion MQTT..."); // Tentative de connexion if (client.connect(clientMac.c_str(), TOKEN, NULL)) { Serial.println("connecté"); break; } else { configManager.reset(); Serial.print("échec, rc="); Serial.print(client.state()); Serial.println(" réessayer dans 3 secondes"); for(uint8_t Blink=0; Blink<=3; Blink++){ digitalWrite(LED, LOW); delay(500); digitalWrite(LED, HIGH); delay(500); } } } } String macToStr(const uint8_t* mac) { String result; for (int i = 0; i < 6; ++i) { result += String(mac[i], 16); if (i < 5)result += ':'; } return result; } /********* Fonctions principales *************/ void setup() { Serial.begin(115200); /* Déclarer les broches comme entrées/sorties */ pinMode(SENSOR, INPUT); pinMode(PIN_RESET, INPUT); pinMode(LED, OUTPUT); /* Attribuer l'adresse MAC WiFi comme nom de client MQTT */ WiFi.macAddress(mac); clientMac += macToStr(mac); /* Configuration du point d'accès */ configManager.setAPName(AP_NAME); configManager.addParameter("name", config.name, 20); configManager.addParameter("enabled", &config.enabled); configManager.addParameter("hour", &config.hour); configManager.begin(config); /* Configuration du serveur */ client.setServer(MQTT_SERVER, 1883); client.setCallback(callback); /* Construction de la requête du sujet */ sprintf(topic, "%s%s", "/v1.6/devices/", DEVICE_LABEL); } void loop() { configManager.reset(); configManager.loop(); /* Reconnexion du client MQTT */ if (!client.connected()) { reconnect(); } /* Lecture du capteur */ int value = analogRead(SENSOR); /* Construction de la requête de charge utile */ sprintf(payload, "{\"%s\": %d}", VARIABLE_LABEL, value); /* Publier la valeur du capteur sur Ubidots */ client.publish(topic, payload); client.loop(); delay(5000); }
16. Après avoir saisi vos paramètres, vérifiez le code dans l'IDE Arduino. Pour ce faire, cliquez sur l' de validation (coche) en haut à gauche de l'IDE Arduino.
Ensuite, téléchargez votre code sur votre NodeMCU . Choisissez l' de flèche vers la droite à côté de la coche.
Une fois le code téléchargé, vous verrez le message suivant dans l'IDE Arduino :
Votre module ESP8266 est maintenant prêt à établir une connexion avec n'importe quel réseau disponible en appuyant simplement sur le bouton !
17. Pour vérifier l'état de la connexion, ouvrez le moniteur série , appuyez sur le bouton connecté à votre module ESP et maintenez-le enfoncé pendant 5 secondes jusqu'à ce que le message « Démarrage du point d'accès » s'affiche dans votre moniteur série :
18. Une fois le point d'accès créé, vous pouvez vous y connecter depuis votre téléphone. Dans les réseaux Wi-Fi, sélectionnez Point d'accès Ubidots .
Une fois la connexion établie, vous serez redirigé vers la page ci-dessous. Saisissez vos paramètres Wi-Fi et cliquez sur Enregistrer .
19. Pour vérifier que la connexion est établie, accédez au moniteur série :
Maintenant, retournez sur vos comptes Ubidots pour visualiser les données reçues de votre nouvel appareil :
Résultats
En suivant ce guide, vous configurerez un point d'accès qui connectera votre appareil à n'importe quel réseau disponible sans avoir à configurer les identifiants dans le firmware – créant ainsi un firmware universel utilisable partout !