Comment créer votre propre bouton de connexion Wi-Fi à l’aide de l’ESP8266
L’IoT a un énorme potentiel de bricolage. Avec suffisamment d’expertise et quelques composants peu coûteux, vous pouvez créer un système complexe d’appareils connectés.
Cependant, parfois, vous voulez quelque chose de simple. Pas de cloches et de sifflets, juste un bouton pour effectuer une seule tâche. Si vous avez déjà utilisé le bouton Amazon Dash pour réorganiser des articles ménagers de tous les jours, vous connaissez probablement déjà quelque chose de similaire.
Aujourd’hui, nous allons créer un bouton compatible Wi-Fi à l’aide d’un NodeMCU et le programmer pour utiliser IFTTT pour faire… eh bien, n’importe quoi ! Si vous préférez, vous pouvez fournir des instructions écrites après la vidéo.
de quoi avez-vous besoin
Tu auras besoin de:
- 1 carte NodeMCU (ESP8266), 2 à 3 $ sur AliExpress
- 1 bouton
- 1 LED (en option)
- 1 résistance de 220 ohms (en option)
- Planche à pain et fils de raccordement
- Micro USB pour la programmation
- Ordinateur avec Arduino IDE installé
En dehors de NodeMCU, vous devriez pouvoir trouver la plupart de ces pièces dans n’importe quel kit de démarrage Arduino. Ce didacticiel suppose que vous utilisez les LED et les résistances en option, mais elles ne sont pas obligatoires.
Étape 1 : configurer le circuit
La configuration matérielle de ce projet est très simple. Configurez votre tableau selon ce schéma.
connexion fil violet broche D0 à côté du bouton.Le fil vert relie l’autre côté du bouton à Broche RST. la ligne bleue de broche D1 aux résistances et aux LED. La borne négative de la LED est reliée à broche de terre NodeMCU.
Faire une vidéo du jour
Après avoir configuré la planche à pain, elle devrait ressembler à ceci :
Si vous vous demandez comment j’ai connecté la LED à la broche de terre en utilisant uniquement ces minuscules câbles, notre cours intensif rapide sur la planche à pain devrait vous aider ! Vérifiez vos paramètres et connectez votre NodeMCU à l’ordinateur via USB.
Étape 2 : Configurer l’IDE
Avant de commencer à coder, vous devez faire quelques préparatifs. Si vous ne l’avez pas déjà fait, configurez l’IDE Arduino pour qu’il reconnaisse votre carte NodeMCU.Vous pouvez l’ajouter à votre liste de tableaux en Fichier > Préférences.
Vous pouvez trouver une explication plus détaillée de cette étape dans notre article d’introduction NodeMCU.
Ce projet nécessite deux bibliothèques.la navigation Esquisse > Inclure les bibliothèques > Gérer les bibliothèques. chercher ESP8266WIFI Passez par Ivan Grokhotkov et installez-le. Cette bibliothèque est écrite pour établir une connexion Wi-Fi avec la carte NodeMCU.
rechercher ensuite Webhook IFTTT Installé par John Romkey et installez la dernière version. Cette bibliothèque est conçue pour simplifier le processus d’envoi de webhooks à IFTTT.
C’est tout le travail de préparation dont nous avons besoin, écrivons le code !
Comment le code fonctionnera
nous utiliserons ESP8266WIFI bibliothèque pour établir une connexion Wi-Fi.cette Webhook IFTTT La bibliothèque fait une demande à IFTTT — dans ce cas, une publication sur Twitter. Ensuite, demandez à la carte NodeMCU de se mettre en veille lorsqu’elle n’est pas utilisée pour économiser de l’énergie.
Lorsque vous appuyez sur le bouton, il établira un lien D0 et TVD broche. Cela réinitialise la carte et le processus se reproduit.
La plupart du code de ce didacticiel est simple pour les débutants. Cela dit, si vous débutez, vous comprendrez plus facilement après avoir suivi notre guide du débutant sur Arduino.
Ce tutoriel présente le code en morceaux pour faciliter la compréhension. Si vous souhaitez faire des affaires directement, vous pouvez trouver le code complet sur Pastebin. Notez que vous devez toujours renseigner vos identifiants Wi-Fi et IFTTT dans ce code pour que cela fonctionne !
Étape 3 : testez le sommeil profond
Tout d’abord, nous allons créer un test simple pour démontrer le fonctionnement du sommeil profond. Ouvrez une nouvelle esquisse dans l’IDE Arduino. Entrez les deux blocs de code suivants.
#inclure
#inclure
#define ledPin 5
#définir la broche de réveil 16
#define ssid « VOTRE_WIFI_SSID »
#Définir le mot de passe « YOUR_WIFI_PASSWORD »
#define IFTTT_API_KEY « IFTTT_KEY_GOES_HERE »
#define IFTTT_EVENT_NAME « IFTTT_EVENT_NAME_HERE »
Ici, nous incluons notre bibliothèque et définissons certaines variables dont nous avons besoin dans l’esquisse. Vous remarquerez que le ledPin et le wakePin sont numérotés différemment ici par rapport au diagramme de Fritzing ci-dessus. Les cartes NodeMCU et Arduino ont des brochages différents. Mais ce n’est pas un problème grâce à ce schéma pratique :
Créez maintenant une fonction de configuration :
void set() {
série.start(115200);
tandis que(!série){
}
Serial.println( » « );//Imprimer une ligne vierge avant et après l’appui sur le bouton
Serial.println(« Bouton enfoncé »);
Serial.println( » « );// imprimer une ligne vide
ESP.deepSleep(wakePin);
}
Ici, nous configurons notre port série et utilisons une boucle while pour attendre qu’il démarre.Étant donné que ce code se déclenche après avoir appuyé sur le bouton de réinitialisation, nous imprimons « Appuyez sur le bouton » au moniteur série.Ensuite, nous disons au NodeMCU de passer en veille profonde jusqu’à ce que le bouton se connecte broche de réveil arriver TVD la broche est enfoncée.
Enfin, pour les tests, ajoutez ceci à votre anneau() méthode:
boucle vide() {
// Si la veille profonde fonctionne, ce code ne s’exécutera jamais.
Serial.println(« Ceci ne devrait pas être imprimé »);
}
Habituellement, l’esquisse Arduino exécutera la fonction de boucle en continu après la configuration. Comme nous avons mis la carte en veille avant la fin de la configuration, la boucle ne s’exécute jamais.
Enregistrez votre croquis et téléchargez-le sur le tableau.Ouvrez Serial Monitor et vous devriez voir « Appuyez sur le bouton. » Chaque fois que le bouton est déclenché, la carte se réinitialise et imprime à nouveau le message. Ça marche!
Remarques sur le moniteur série
Dans certains de vos projets, vous avez peut-être remarqué des caractères absurdes dans le moniteur série.Cela est généralement dû au fait que le moniteur série n’est pas réglé sur Série.begin(XXXX) la vitesse.
Pour des projets comme celui-ci, de nombreux guides recommandent de démarrer la connexion série à 115 200 bauds. J’ai essayé de nombreuses combinaisons et elles ont toutes des degrés divers de charabia avant et après le message série. Selon divers messages du forum, cela pourrait être dû à une carte mère défectueuse ou à un problème de compatibilité logicielle. Comme cela n’affecte pas beaucoup le projet, j’ai choisi de prétendre que cela ne s’est pas produit.
Si vous rencontrez des difficultés pour utiliser le moniteur série, essayez différents débits en bauds pour voir ce qui vous convient le mieux.
Étape 4 : Connectez-vous au Wi-Fi
Créez maintenant une fonction pour vous connecter au réseau Wi-Fi.
annuler la connexion au Wifi() {
Serial.print(« Connexion à : NOM SSID »); // Décommentez la ligne suivante pour afficher le nom SSID
//Serial.print(ssid);
WiFi.begin(ssid, mot de passe);
Serial.println( » « );// imprimer une ligne vide
Serial.print(« Tentative de connexion : « );
// essayez de vous connecter pendant 10 secondes
entier je = 10 ;
tandis que (WiFi.status() != WL_CONNECTED && je >= 0) {
retard(1000);
numéro de série.print(i);
Numéro de série.print(« , « );
Une génération- ;
}
Serial.println( » « );// imprimer une ligne vide
// imprime le résultat de la connexion
si (WiFi.status() == WL_CONNECTED) {
Serial.print(« Connecté. »);
Serial.println( » « );// imprimer une ligne vide
Serial.print(« Adresse IP NodeMCU : « );
Serial.println(WiFi.localIP());
}
autre {
Serial.println(« La connexion a échoué – vérifiez vos informations d’identification ou votre connexion »);
}
}
Cette méthode tente de se connecter à votre réseau dix fois, avec des intervalles d’une seconde entre les deux. Le succès ou l’échec de la connexion sera imprimé sur le moniteur série.
Étape 5 : appeler la méthode de connexion
à l’heure actuelle, se connecter au Wi-Fi() ne sera jamais appelé. Ajouter un appel à la fonction setup entre le message « bouton appuyé » et la mise en veille de la carte.
se connecter au wifi();
Si vous vous demandez où cela se situe, cela devrait ressembler à ceci:
Remplacer en haut de l’esquisse ssid et le mot de passe Utilisez des variables pour vos informations d’identification Wi-Fi. Enregistrez votre croquis et téléchargez-le sur le tableau.
Maintenant, lorsque la carte démarre, elle essaie de se connecter à votre réseau Wi-Fi, puis revient à la fonction de configuration. Maintenant, configurons l’intégration IFTTT.
Étape 6 : Configurer l’intégration IFTTT
IFTTT permet l’intégration avec un grand nombre de services Web. Nous l’utilisons dans notre tutoriel Wi-Fi PC Tower LED pour envoyer des alertes lorsque de nouveaux e-mails arrivent. Aujourd’hui, nous allons l’utiliser pour envoyer des tweets en appuyant sur un bouton.
aller vers mon applet page, puis sélectionnez nouvelle applet
Cliquez sur + ça et connectez-vous à crochet de toile. choisir « Recevoir une demande de réseau » et nommez votre événement. garder les choses simples! Notez le nom de l’événement, vous devrez l’ajouter ultérieurement à votre code NodeMCU.Cliquez sur « Créer un déclencheur ».
choisissez maintenant +ça. chercher Twitter service et vous y connecter – vous devez l’autoriser à publier sur votre compte Twitter.choisir « Publier un Tweet » et sélectionnez vos informations.
L’écran suivant vous demandera de visualiser l’applet. Cliquez sur Terminer. C’est ça!
Étape 7 : Ajouter les informations d’identification IFTTT au code
De retour dans l’IDE Arduino, vous devez ajouter la clé API IFTTT et le nom de l’événement aux variables définies.Pour trouver votre clé API, accédez à mon applet et sélectionnez crochet de toile en dessous de Servir Étiqueter.choisir Documentation Accédez à votre clé.
Copiez les noms de clé et d’événement dans votre code, en les remplaçant par les noms temporaires qu’ils ont définis.
#define IFTTT_API_KEY « IFTTT_KEY_GOES_HERE »
#define IFTTT_EVENT_NAME « IFTTT_EVENT_NAME_HERE »
Notez que les guillemets doivent être conservés, seul le texte est remplacé.
entre les appels se connecter au Wi-Fi() Et mettez le tableau en veille, en créant une instance de l’objet de bibliothèque IFTTTWebhook. La LED signale l’achèvement de la tâche avant que le sommeil profond ne recommence.
// juste connecté au Wi-Fi
Hook IFTTTWebhook (IFTTT_API_KEY, IFTTT_EVENT_NAME);
hook.trigger();
pinMode(ledPin, sortie);
digitalWrite(ledPin, haut);
retard(200);
digitalWrite(ledPin, BAS);
// maintenant envoyer la carte en veille
déclencheur d’appel crochet L’objet déclenche l’applet IFTTT et doit être publié sur votre compte Twitter. Enregistrez votre croquis et téléchargez-le. Vous devriez maintenant avoir un bouton Tweet entièrement fonctionnel.
Si cela ne semble pas fonctionner, vérifiez votre code et vos informations d’identification pour les erreurs. Si vous êtes vraiment bloqué, récupérez le code complet ci-dessus et comparez-le au vôtre.
Achevée! Comment pouvez-vous l’améliorer davantage?
Il s’agit de la version de base du bouton Wi-Fi, mais elle peut être améliorée de plusieurs façons. Pour plus de simplicité, la connexion USB est utilisée ici pour l’alimentation. La batterie le rendra entièrement mobile, et le boîtier avec le circuit sera le parfait projet d’impression 3D pour débutant.
Malgré l’utilisation du sommeil profond, vous constaterez peut-être que la batterie se décharge rapidement. Il existe de nombreux conseils d’économie d’énergie Arduino qui peuvent aider avec ces types de projets. Bien que plus difficile que ce didacticiel, si vous créez votre propre Arduino économe en énergie à partir de zéro, un bouton Wi-Fi alimenté par batterie pourrait durer des mois !
Ce projet sera idéal pour une télécommande pour les applications de maison intelligente. Un bon nombre d’applets domotiques sont déjà disponibles sur IFTTT. Une fois que vous maîtrisez les bases, vous pouvez utiliser presque n’importe quel capteur ou interrupteur pour déclencher presque tous les services que vous pouvez imaginer.
Crédit image : Vadmary/Depositphotos
…