Comment créer votre propre bouton de connexion Wi-Fi avec ESP8266
Publicité
L'Internet des objets a un vaste potentiel de bricolage. Avec suffisamment de savoir-faire et quelques composants bon marché, vous pourriez construire un système complexe d’appareils connectés.
Parfois, cependant, vous voulez quelque chose de simple. Pas de cloches ou de sifflets, juste un bouton qui effectue une seule tâche. Vous connaissez peut-être déjà quelque chose comme ceci si vous avez déjà utilisé un bouton Amazon Dash pour réorganiser les articles ménagers quotidiens.
Aujourd'hui, nous allons créer un bouton compatible Wi-Fi à l'aide d'un NodeMCU et le programmer pour qu'il utilise IFTTT pour… enfin, n'importe quoi! Des instructions écrites après la vidéo, si vous préférez.
Ce dont vous aurez besoin
Tu auras besoin de:
- 1 x carte NodeMCU (ESP8266), disponible pour 2 ou 3 dollars sur AliExpress
- 1 x bouton poussoir
- 1 x LED (optionnel)
- 1 x résistance de 220 Ohm (facultatif)
- Planche à pain et fils de connexion
- Micro USB pour la programmation
- Ordinateur avec l'IDE Arduino installé
En plus du NodeMCU, vous devriez pouvoir trouver la plupart de ces pièces dans n’importe quel kit de démarrage Arduino. 4 meilleurs kits de démarrage pour les débutants Arduino. 4 meilleurs kits de démarrage pour les débutants Arduino. mais vous aurez d'abord besoin d'un Arduino et de certains composants. Voici notre sélection de 4 des meilleurs kits de démarrage pour ... Lire la suite. Ce didacticiel supposera que vous utilisez la DEL et la résistance en option, mais elles ne sont pas essentielles.
Étape 1: Configuration du circuit
La configuration matérielle est très simple pour ce projet. Configurez votre tableau selon ce schéma.
Le fil violet attache la goupille D0 sur un côté du bouton. Le fil vert relie l’autre côté du bouton à la broche RST . Le fil bleu va de la broche D1 à la résistance et à la LED. Le bras négatif de la LED se fixe à la broche GND du NodeMCU.
Lorsque la planche à pain est configurée, elle devrait ressembler à ceci:
Si vous vous demandez comment j’ai ma LED allumée sur la broche de terre en utilisant seulement ces minuscules morceaux de câble, notre rapide cours intensif sur la planche à pain Qu'est-ce qu’une planche à pain et comment ça marche? Un cours accéléré Qu'est-ce qu'une planche à pain et comment ça marche? Un cours accéléré Vous souhaitez apprendre le bricolage électronique? Vous avez peut-être reçu une planche à pain dans votre kit de démarrage. Mais qu'est-ce qu'une planche à pain et comment ça marche? Lire la suite devrait aider à éclaircir! Vérifiez votre configuration et connectez votre NodeMCU à l’ordinateur via USB.
Étape 2: Configuration de l'EDI
Avant de commencer à coder, vous devez vous préparer. 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 forums via Fichier> Préférences .
Vous trouverez une explication plus détaillée de cette étape dans notre article d’introduction à NodeMCU.
Deux bibliothèques sont requises pour ce projet. Naviguez jusqu'à Esquisse> Inclure la bibliothèque> Gérer les bibliothèques . Recherchez ESP8266WIFI de Ivan Grokhotkov et installez-le. Cette bibliothèque est conçue pour établir des connexions Wi-Fi avec la carte NodeMCU.
Recherchez ensuite IFTTTWebhook 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 toute la préparation dont nous avons besoin, codons!
Comment le code fonctionnera
Nous utiliserons la bibliothèque ESP8266WIFI pour établir une connexion Wi-Fi. La bibliothèque IFTTTWebhooks demande à IFTTT - dans ce cas, de publier 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 le bouton est enfoncé, il liera les broches D0 et RST . Cela réinitialise le tableau et le processus se répète.
La plupart du code de ce tutoriel est assez simple pour les débutants. Cela dit, si vous débutez, il vous sera beaucoup plus facile à comprendre après avoir suivi notre guide pour débutants Arduino.
Ce tutoriel passe en revue le code en morceaux pour aider à la compréhension. Si vous voulez passer directement aux affaires, vous pouvez trouver le code complet sur Pastebin. Notez que vous aurez toujours besoin de renseigner vos identifiants Wi-Fi et IFTTT dans ce code pour qu'il fonctionne!
Étape 3: Test du sommeil profond
Pour commencer, nous allons créer un test simple pour montrer comment fonctionne le sommeil profond. Ouvrez une nouvelle esquisse dans l'IDE Arduino. Entrez les deux fragments de code suivants.
#include #include #define ledPin 5 #define wakePin 16 #define ssid "YOUR_WIFI_SSID" #define password "YOUR_WIFI_PASSWORD" #define IFTTT_API_KEY "IFTTT_KEY_GOES_HERE" #define IFTTT_EVENT_NAME "IFTTT_EVENT_NAME_HERE"
Nous incluons ici nos bibliothèques et définissons quelques variables dont nous aurons besoin dans notre esquisse. Vous remarquerez que ledPin et wakePin sont numérotés différemment ici par rapport au diagramme de Fritzing ci-dessus. Le NodeMCU a un brochage différent des cartes Arduino. Ce n’est pas un problème, grâce à ce diagramme pratique:
Maintenant, créez une fonction d'installation:
void setup() { Serial.begin(115200); while(!Serial) { } Serial.println(" ");// print an empty line before and after Button Press Serial.println("Button Pressed"); Serial.println(" ");// print an empty line ESP.deepSleep(wakePin); }
Ici, nous configurons notre port série et utilisons une boucle while pour attendre son début. Comme ce code va se déclencher après avoir appuyé sur le bouton de réinitialisation, nous imprimons «Bouton enfoncé » sur le moniteur série. Ensuite, nous demandons à NodeMCU de passer en veille profonde jusqu'à ce que le bouton reliant le réveil à la broche RST soit enfoncé.
Enfin, pour tester, ajoutez ceci à votre méthode loop () :
void loop(){ //if deep sleep is working, this code will never run. Serial.println("This shouldn't get printed"); }
Habituellement, les croquis Arduino exécutent la fonction de boucle en continu après l’installation. Puisque nous envoyons la carte en veille avant la fin de l'installation, la boucle ne s'exécute jamais.
Enregistrez votre croquis et téléchargez-le sur le tableau. Ouvrez le moniteur série et vous devriez voir «Bouton enfoncé ». Chaque fois que le bouton se déclenchera, le tableau se réinitialisera et le message sera imprimé à nouveau. Ça marche!
Une note sur le moniteur de série
Vous avez peut-être remarqué des caractères absurdes sur le moniteur série lors de certains de vos projets. Cela est généralement dû au fait que le moniteur série n'a pas été réglé sur le même débit en bauds que le débit Serial.begin (XXXX) .
De nombreux guides suggèrent de démarrer la connexion série à un débit de 115200 bauds pour un projet de ce type. J'ai essayé de nombreuses combinaisons et elles comportaient toutes un degré variable de charabia avant et après les messages série. Selon plusieurs publications du forum, cela pourrait être dû à un problème de compatibilité de carte ou de logiciel. Comme cela n’affecte pas trop le projet, je choisis de prétendre que cela ne se produit pas.
Si vous rencontrez des problèmes avec le moniteur série, essayez différentes vitesses de transmission et choisissez celle qui vous convient le mieux.
Étape 4: Connexion au Wi-Fi
Créez maintenant une fonction pour vous connecter à votre réseau Wi-Fi.
void connectToWifi() { Serial.print("Connecting to: SSID NAME"); //uncomment next line to show SSID name //Serial.print(ssid); WiFi.begin(ssid, password); Serial.println(" ");// print an empty line Serial.print("Attempting to connect: "); //try to connect for 10 seconds int i = 10; while(WiFi.status() != WL_CONNECTED && i >=0) { delay(1000); Serial.print(i); Serial.print(", "); i--; } Serial.println(" ");// print an empty line //print connection result if(WiFi.status() == WL_CONNECTED){ Serial.print("Connected."); Serial.println(" ");// print an empty line Serial.print("NodeMCU ip address: "); Serial.println(WiFi.localIP()); } else { Serial.println("Connection failed - check your credentials or connection"); } }
Cette méthode tente de se connecter à votre réseau dix fois avec une seconde entre les deux. Le succès ou l’échec de la connexion est imprimé sur le moniteur série.
Étape 5: appel de la méthode de connexion
À l'heure actuelle, connectToWifi () n'est jamais appelé. Ajoutez un appel à votre fonction de configuration entre le message «Bouton enfoncé» et l'envoi de la carte en veille.
connectToWifi();
Si vous vous demandez où cela correspond, cela devrait ressembler à ceci:
En haut de l'esquisse, remplacez les variables ssid et password par vos informations d'identification Wi-Fi. Enregistrez votre croquis et téléchargez-le sur le tableau.
Maintenant, lorsque la carte démarrera, elle tentera de se connecter à votre réseau Wi-Fi avant de revenir à la fonction de configuration. Maintenant, permet de configurer l’intégration IFTTT.
Étape 6: Configuration de l'intégration IFTTT
IFTTT permet l'intégration avec une vaste gamme de services Web. Nous l'avons utilisé dans notre tutoriel LED tour Wi-Fi PC Tower pour envoyer une alerte chaque fois qu'un nouveau courrier électronique est reçu. Aujourd'hui, nous allons l'utiliser pour envoyer un tweet en appuyant sur un bouton.
Accédez à la page Mes applets, puis sélectionnez Nouvelle applet.
Cliquez sur + this et connectez-vous à Webhooks . Sélectionnez «Recevoir une demande Web» et nommez votre événement. Gardez 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» .
Maintenant, sélectionnez + ça . Recherchez le service Twitter et connectez-vous. Vous devrez l'autoriser à publier sur votre compte Twitter. Sélectionnez «Poster un tweet» et choisissez votre message.
L'écran suivant vous demandera de revoir l'applet. Cliquez sur Terminer. C'est ça!
Étape 7: Ajout d'informations d'identification IFTTT au code
De retour dans l'EDI Arduino, vous devrez ajouter votre clé d'API IFTTT et votre nom d'événement à vos variables définies. Pour trouver la clé d'API, accédez à Mes applets et sélectionnez Webhooks sous l'onglet Services . Sélectionnez Documentation pour accéder à votre clé.
Copiez la clé et le nom de l'événement dans votre code, en remplaçant les noms temporaires définis pour eux.
#define IFTTT_API_KEY "IFTTT_KEY_GOES_HERE" #define IFTTT_EVENT_NAME "IFTTT_EVENT_NAME_HERE"
Remarque, les guillemets doivent rester, ne remplace que le texte.
Entre l'appel de connectToWifi () et l'envoi de la carte en veille, créez une instance de l'objet de bibliothèque IFTTTWebhook. Le voyant signale que la tâche est terminée avant que le sommeil profond ne recommence.
//just connected to Wi-Fi IFTTTWebhook hook(IFTTT_API_KEY, IFTTT_EVENT_NAME); hook.trigger(); pinMode(ledPin, OUTPUT); digitalWrite(ledPin, HIGH); delay(200); digitalWrite(ledPin, LOW); //now sending board to sleep
L'appel de trigger sur l'objet hook déclenche l'applet IFTTT et doit être publié sur votre compte Twitter. Enregistrez votre dessin et téléchargez-le. Vous devriez maintenant avoir un bouton de tweet entièrement fonctionnel.
Si cela ne semble pas fonctionner, vérifiez soigneusement votre code et vos informations d'identification afin de détecter d'éventuelles erreurs. Si vous êtes vraiment bloqué, récupérez le code complet ci-dessus et comparez-le au vôtre.
Terminé! Comment pourriez-vous l'améliorer davantage?
Il s'agit d'une version de base d'un bouton Wi-Fi, mais il existe de nombreuses façons de l'améliorer. Pour plus de simplicité, la connexion USB est utilisée ici pour le pouvoir. Une batterie le rendrait entièrement mobile, et un boîtier contenant le circuit constituerait le projet d'impression 3D parfait pour débutant.
Malgré le sommeil profond, il est possible que la batterie s’épuise assez rapidement. Il existe de nombreux conseils d’économie d’énergie Arduino qui peuvent vous aider dans ce type de projet. Bien que plus difficile que ce tutoriel, si vous créez votre propre Arduino économe en énergie, un bouton Wi-Fi alimenté par une pile peut durer des mois!
Ce projet ferait le parfait pour une télécommande pour les applications de maison intelligente. Il existe déjà une quantité considérable d'applets pour la domotique. 10 des meilleures recettes IFTTT pour la domotique intelligente. 10 des meilleures recettes IFTTT pour la domotique intelligente. Les bonnes recettes IFTTT pour votre maison intelligente peuvent vous faire gagner du temps, de l'effort et de l'énergie. Voici dix de nos favoris pour vous aider à démarrer. Lire la suite disponible sur IFTTT. Une fois que vous avez acquis les bases, vous pouvez utiliser presque tous les capteurs ou commutateurs pour déclencher pratiquement tous les services imaginables.
Crédit d'image: Vadmary / Depositphotos
Explorez plus sur: Arduino, Tutoriels pour les projets DIY.